是否可以使“xrdb”忽略注释行上的单引号?

是否可以使“xrdb”忽略注释行上的单引号?

我使用rxvt-unicode版本9.22作为终端模拟器,并使用文件 对其进行配置~/.Xresources

当我修改配置文件时,为了立即看到效果我执行命令:

xrdb ~/.Xresources

man xrdb

以感叹号 (!) 开头的行将被忽略,并且可以用作注释。

在我的机器上,使用xrdbversion 时1.1.0,当注释行包含奇数个单引号时,例如! it's a commentxrdb会抱怨以下错误:

/home/user/.Xresources:1:5: warning: missing terminating ' character
 ! it's a comment
     ^

目前,我将单引号加倍以避免此错误:

! it''s a comment

我想我也可以使用/* */, 代替!, 因为它是 Vim 默认使用的注释字符串(在 中定义$VIMRUNTIME/ftplugin/xdefaults.vim)。但我更喜欢使用!,因为我发现用它来注释更具可读性。

有没有办法要求xrdb忽略注释行内的单引号~/.Xresources

答案1

这似乎是由于 GNU 用作默认预处理器的默认行为发生了cpp变化xrdb。具体来说,根据C 预处理器:10.1 传统词法分析

一般来说,在传统模式下,开盘报价不需要有匹配的收盘报价。

但是cpp提供了在传统模式下操作的命令行选项:

-traditional
-traditional-cpp
    Try to imitate the behavior of pre-standard C preprocessors, as opposed to ISO 
    C preprocessors. See Traditional Mode.

whilexrdb允许在命令行上显式定义预处理器:

-cpp filename
       This  option  specifies the pathname of the C preprocessor pro‐
       gram to be used.  Although xrdb was designed to  use  CPP,  any
       program  that  acts  as a filter and accepts the -D, -I, and -U
       options may be used.

因此应该可以通过使用来抑制警告

xrdb -cpp "/usr/bin/cpp -traditional-cpp"  ~/.Xresources

或者

xrdb -cpp "/usr/bin/cpp -traditional"  ~/.Xresources

答案2

我通过在 .Xresources 注释中将单引号 (') 替换为 Unicode 撇号 (') 来解决该错误。

其他Unicode 选项(如果撇号不适合您)。

相关内容