ddr*_*ian 5 regex ctags exuberant-ctags
我有一些Java代码
@Subscribe
public void catchEvent(SomeEvent
Run Code Online (Sandbox Code Playgroud)
我想将它与我的 ~/.ctags 中类似的东西相匹配
--langdef=javaspring
--langmap=javaspring:.java
--regex-javaspring=/@Subscribe(\s)*([a-z ]+)\s([a-zA-Z]*)\(([a-zA-Z]*)/\3-\4/
Run Code Online (Sandbox Code Playgroud)
这应该会生成类似“catchEvent-SomeEvent”的内容,但事实并非如此。如果我删除 @Subscribe 和 public void 之间的换行符,它就会得到它。
@Subscribe public void catchEvent(SomeEvent
rm -rf tags && ctags -R . && cat tags|grep Subs
catchEvent-SomeEvent PathToMyFile.java /^@Subscribe public void catchEvent(SomeEvent event) {$/;" r
Run Code Online (Sandbox Code Playgroud)
我什至尝试像这样使用行的开始/结束
--regex-javaspring=/^\s*@Subscribe[a-z \s]+\s([a-zA-Z]+)\(([a-zA-Z]+).*$/@Subscribe \1 \2*/
Run Code Online (Sandbox Code Playgroud)
您知道我是否可以使用当前的 ctag 实现来做到这一点吗?我是做错了什么还是 ctags 现在不支持多行正则表达式。
谢谢你!
--mline-regex-<LANG>
对于通用 Ctags,您可以通过以下选项使用该功能{mgroup=1}
:
--mline-regex-javaspring=/^\s*@Subscribe[a-z \s]+\s([a-zA-Z]+)\(([a-zA-Z]+).*$/@Subscribe \1 \2*/{mgroup=1}
Run Code Online (Sandbox Code Playgroud)
该mgroup
选项是告诉 Ctags 如何确定表达式的行号所必需的。