我有一个 ctags 生成的文件,想在 Emacs 中使用它。它不是使用 ctags
生成的(我知道 ctags 有一个创建 etags 文件的开关)。
最佳答案
转换可能是不可能的,因为标签文件没有 TAGS 文件所需的足够信息,例如名称的字节偏移量。相反,如果满足某些条件,您可以从标签文件重新生成一个 TAGS 文件。
作为 Universal ctags 软件包的一部分(或包含在 Universal ctags 源代码树中)的最新版本的 readtags 命令可能对您有所帮助。最新版本的 readtags 有 -F 选项。需要该选项才能将此答案应用于您的问题。
如果您拥有的标签文件格式遵循 https://docs.ctags.io/en/latest/man/tags.5.html 中解释的语法, 最新版本的 readtags ( https://docs.ctags.io/en/latest/man/readtags.1.html ) 可以提取所有源文件名:
$ readtags -F '(list $input "\n")' -t ~/.citre/upstream-linux.tags -l | sort -u > input-file.list
然后你可以将 input-file.list 传递给像 etags 或 ctags 这样的 TAGS 文件生成器:
$ cat input-file.list | xargs etags -a
或
$ ctags -L input-file.list -e
您可以简化步骤:
$ readtags -F '(list $input "\n")' -t ~/.citre/upstream-linux.tags -l | sort -u | xargs etags -a
或
$ readtags -F '(list $input "\n")' -t ~/.citre/upstream-linux.tags -l | sort -u | ctags -L - -e
etags(或 ctags)必须支持 input-file.list
中列出的文件中使用的语言。 etags --help
或 ctags --list-languages
列出支持的语言。
https://stackoverflow.com/questions/60971354/
相关文章:
javascript - mxgraph 避免边缘重叠节点或其他边缘
asp.net-core - 为什么 controllerbase.challenge 返回 200
unit-testing - 在 Racket 中使用模拟对象进行猴子修补
python - 计数没有。使用 dask 的大型 Parquet 文件中的行数没有内存错误
sql-server - 为什么我不能从我刚刚创建的 View 中选择 *?
javascript - Paypal 智能支付抛出错误但仍在处理付款
javascript - jsdoc如何描述返回SAME CLASS变量的静态类方法