emacs - 如何将ctags格式文件转换为etags格式文件?

我有一个 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 --helpctags --list-languages 列出支持的语言。

https://stackoverflow.com/questions/60971354/

相关文章:

javascript - mxgraph 避免边缘重叠节点或其他边缘

asp.net-core - 为什么 controllerbase.challenge 返回 200

unit-testing - 在 Racket 中使用模拟对象进行猴子修补

python - 计数没有。使用 dask 的大型 Parquet 文件中的行数没有内存错误

sql-server - 为什么我不能从我刚刚创建的 View 中选择 *?

vue.js - 防止特定的 .vue 组件被捆绑

javascript - Paypal 智能支付抛出错误但仍在处理付款

javascript - jsdoc如何描述返回SAME CLASS变量的静态类方法

java - 删除后 Netty SslHandler 握手超时

laravel - 使用 Nuxt 前端实现 Laravel 7 Passport 身份验证