如何将.vh文件纳入SystemVerilog的ctags标签生成范围?
以下是几个排查和解决的具体步骤:
确认配置文件是否被加载
运行ctags --verbose,查看输出日志里是否有加载~/.ctags的记录。如果没有,可能是配置文件路径不对:- 部分系统下universal-ctags默认读取
~/.config/ctags/config而非~/.ctags,可以把配置移到这个路径,或者用--options=~/.ctags手动指定配置文件路径。
- 部分系统下universal-ctags默认读取
验证langmap语法与优先级
老版本的Exuberant Ctags可能对langmap的解析有问题,试试两种调整方式:- 把.vh单独作为一条配置:
--langmap=systemverilog:.vh,和原有的langmap配置放在一起 - 直接在命令行测试:
ctags --langmap=systemverilog:.sv.svh.svi.vh -R ./,如果命令行能生成.vh的标签,说明配置文件的规则没生效,检查配置文件的格式是否有错误(比如多余的空格、注释格式问题)。
- 把.vh单独作为一条配置:
强制指定文件类型测试
对单个.vh文件运行ctags --language-force=systemverilog test.vh,查看生成的tags文件是否包含该文件的标签。如果成功,说明langmap的配置没被正确应用,继续排查配置加载问题;如果还是不行,可能是该.vh文件的语法不符合Ctags对SystemVerilog的识别规则,可以检查文件内容是否有特殊语法,或者升级universal-ctags到最新版本(新版本对SystemVerilog的支持更完善)。检查是否有冲突配置
运行ctags --list-conf查看所有生效的配置,确认langmap=systemverilog条目里确实包含.vh。如果有系统级配置(比如/etc/ctags)覆盖了用户配置,可以在用户配置里加上--options=-来忽略系统配置。universal-ctags专属配置写法
对于universal-ctags,除了langmap,还可以用更明确的映射规则:--map-systemverilog=.vh或者用正则匹配文件名:
--map-systemverilog=/\.vh$/
内容的提问来源于stack exchange,提问作者Chan Kim
相关产品推荐
相关产品推荐

