首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >M4没有展开.m4文件中的所有宏

M4没有展开.m4文件中的所有宏
EN

Stack Overflow用户
提问于 2019-04-28 20:37:58
回答 1查看 336关注 0票数 1

我使用m4来替换i3wm配置文件中包含的文件中定义的颜色/etc宏。

代码语言:javascript
复制
$ m4 -I themes/gruvbox-dark config.m4 > config

这是(摘录)上述命令的目录结构。

代码语言:javascript
复制
$ tree .
.
├── config.m4
├── font.m4
├── themes
│   ├── gruvbox-dark
│   │   ├── color.m4
│   │   └── i3.m4
└── Xresources.m4

我定义了宏,如:

代码语言:javascript
复制
define(M4_COLOR_FG,`#a89984')
define(M4_I3_FG,`M4_COLOR_FG')
define(M4_I3_BG,`#3c3836')

m4的输出中,我仍然可以看到未展开的宏,例如:

代码语言:javascript
复制
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文件中的相同行:

代码语言:javascript
复制
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)。

代码语言:javascript
复制
$ m4 --version | head -1
m4 (GNU M4) 1.4.18
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-29 07:01:46

非常简单:如果您想要扩展M4_COLOR_3 M4_COLOR_3

  1. m4将第一个M4_COLOR_3替换为#colorcode
  2. m4不会展开下一个M4_COLOR_3,因为(展开的) #意味着注释。

你有解决办法:

  1. 您将用changecom更改(或禁用)注释字符。
  2. 您将在定义中使用双引号:定义(FOO,#aabbcc'')

第一个:changecom(XXX)将注释开始标记(当然只有在m4中)更改为XXX,最后将换行符改为换行符。changecom()' will disable the comments (so everything will parsed bym_4‘)。

第二部分:

代码语言:javascript
复制
define(FOO,``#aabbcc'')
FOO FOO FOO FOO FOO
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55894377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档