我正在创建一个 IDE,我希望实现跳转到定义。
我找到了完美的工具:ctags ( https://github.com/universal-ctags/ctags )
现在唯一的问题是 ctags 创建的标签文件看起来像这样:
QLineNumberArea 2point56mb.py /^class QLineNumberArea(QWidget):$/;" c
我理解格式:{tagname}Tab{tagfile}Tab{tagaddress}
所以据我了解::tagname
QLineNumberArea,tagfile
:2point56mb.py 和tagaddress
:/^class QLineNumberArea(QWidget):$/;" c`
tagaddress 看起来像乱码,但它是一个 vim/ex 编辑器命令,可将您带到定义。
现在从我在这个网站上读到的内容:https ://github.com/cztchoice/ctags/wiki/Tag-Format
根据Security
它指出:
Specifically, these two Ex commands are allowed:
A decimal line number:
89
A search command. It is a regular expression pattern, as used by Vi, enclosed in // or ??:
/^int c;$/
?main()?
现在问题来了:
我需要我的标签文件有一个行号,而不是搜索命令。我尝试查找 ctags 的文档(http://docs.ctags.io/en/latest/),但找不到任何可以帮助我的东西。
有谁知道如何让 ctags 将标签地址作为行号而不是搜索命令提供?