我使用m4来替换i3wm配置文件中包含的文件中定义的颜色/etc宏。
$ m4 -I themes/gruvbox-dark config.m4 > config这是(摘录)上述命令的目录结构。
$ tree .
.
├── config.m4
├── font.m4
├── themes
│ ├── gruvbox-dark
│ │ ├── color.m4
│ │ └── i3.m4
└── Xresources.m4我定义了宏,如:
define(M4_COLOR_FG,`#a89984')
define(M4_I3_FG,`M4_COLOR_FG')
define(M4_I3_BG,`#3c3836')在m4的输出中,我仍然可以看到未展开的宏,例如:
client.focused #3c3836 M4_I3_BG M4_I3_ACTIVE_FG M4_I3_BG M4_I3_BG
client.focused_inactive #3c3836 M4_I3_BG M4_COLOR_FG M4_I3_BG M4_I3_BG
client.unfocused #3c3836 M4_I3_BG M4_COLOR_FG M4_I3_BG M4_I3_BG
client.urgent #fb4934 M4_I3_BG M4_COLOR_9 M4_COLOR_9 M4_I3_BG
client.placeholder #3c3836 M4_I3_BG M4_COLOR_FG M4_I3_BG M4_I3_BG
client.background #282828第一个宏已展开,但行上的其余宏未展开。下面是输入.m4文件中的相同行:
client.focused M4_I3_BG M4_I3_BG M4_I3_ACTIVE_FG M4_I3_BG M4_I3_BG
client.focused_inactive M4_I3_BG M4_I3_BG M4_COLOR_FG M4_I3_BG M4_I3_BG
client.unfocused M4_I3_BG M4_I3_BG M4_COLOR_FG M4_I3_BG M4_I3_BG
client.urgent M4_COLOR_9 M4_I3_BG M4_COLOR_9 M4_COLOR_9 M4_I3_BG
client.placeholder M4_I3_BG M4_I3_BG M4_COLOR_FG M4_I3_BG M4_I3_BG
client.background M4_COLOR_BG当我试着做一些MWEs时,它总是有效的.不确定这些特定文件/宏的问题是什么。
所有文件都在以下:https://github.com/tomocafe/dotfiles/tree/master/i3/.i3
我已经在工作中和家里尝试过了,我的家用电脑是Solus (Linux)。
$ m4 --version | head -1
m4 (GNU M4) 1.4.18发布于 2019-04-29 07:01:46
非常简单:如果您想要扩展M4_COLOR_3 M4_COLOR_3
m4将第一个M4_COLOR_3替换为#colorcode。m4不会展开下一个M4_COLOR_3,因为(展开的) #意味着注释。你有解决办法:
changecom更改(或禁用)注释字符。第一个:changecom(XXX)将注释开始标记(当然只有在m4中)更改为XXX,最后将换行符改为换行符。changecom()' will disable the comments (so everything will parsed bym_4‘)。
第二部分:
define(FOO,``#aabbcc'')
FOO FOO FOO FOO FOOhttps://stackoverflow.com/questions/55894377
复制相似问题