【发布时间】:2013-12-21 08:13:12
【问题描述】:
我使用 vim 和 ctags (exuberant 5.7) 来导航我的源代码。然而,一些函数和变量添加了一些英特尔 C 扩展关键字,即:
__declspec(target(mic)) double calculate_gamma(int m, int n) { ... }
问题在于,由于 __declspec,ctags 忽略了对其进行索引,因此函数 calculate_gamma 不会被标记。
使用标识符列表选项 -I 可以使用 ctags 解决此类问题。但是,如果您的表达式中有括号,则此选项会讨厌您:
$ ctags *.c *.h -I __declspec(target(mic))
-bash: syntax error near unexpected token `('
我尝试在 __declspec 周围加上引号、转义字符 '\' 和 ansi-C 引用 $'',这些都阻止了 bash 抱怨,但是 ctags 仍然没有标记函数 calculate_gamma。如果没有括号,这将起作用。
我做错了什么还是有其他方法可以从 ctags 中获取我想要的内容?干杯。
【问题讨论】:
-
手册页说您可以附加
+使其忽略括号,但它对我不起作用...ctags *.[ch] -I __declspec+。 -
您可以尝试将异常放入文件中,然后将文件名提供给 -I 选项,例如:-I ./my_exceptions.txt .. 虽然我可以没有 ctags (exuberant ctags 5.8) 将函数名设置为 calculate_gamma .. 该函数在生成的标签文件中始终命名为 target。但生成的正则表达式是正确的。
标签: regex bash vim exuberant-ctags