ctags

命令行

-R

recursive

-L

ctags -L flist 从flist文件中读入文件列表

目录名不能加/

如果针对目录生成tag, 则目录名最后必须去掉/ 或者\, 否则无法处理其下文件!

语言扩展

通过命令行

例如
1. 扩展已有的语言

--regex-verilog=/^[[:blank:]]*(\w+)[[:blank:]]+(#\([^)]+\)|)(\w+)[[:blank:]]*\([[:blank:]]*$/\3(\1)[\2]/i,instance/
--regex-verilog=/^[[:blank:]]*input[[:blank:]]+(\w+)[[:blank:]]*;/\1/x,input/
--regex-verilog=/^[[:blank:]]*input[[:blank:]]*\[(.+)\][[:blank:]]+(\w+)[[:blank:]]*;/\2[\1]/X,input-vector/
--regex-verilog=/^[[:blank:]]*output[[:blank:]]+(\w+)[[:blank:]]*;/\1/o,output/
--regex-verilog=/^[[:blank:]]*output[[:blank:]]*\[(.+)\][[:blank:]]+(\w+)[[:blank:]]*;/\2[\1]/O,output-vector/
--regex-verilog=/^[[:blank:]]*inout[[:blank:]]+(\w+)[[:blank:]]*;/\1/d,inout/
--regex-verilog=/^[[:blank:]]*inout[[:blank:]]*\[(.+)\][[:blank:]]+(\w+)[[:blank:]]*;/\2[\1]/D,inout-vector/

2. 定义新的语言
(没有测试过!)
--langdef=systemverilog
--langmap=systemverilog:.sv.svh.svi
--regex-systemverilog=/^[ \t]*(virtual)?[ \t]*class[ \t]*([a-zA-Z_0-9]+)/\2/c,class/
--regex-systemverilog=/^[ \t]*(virtual)?[ \t]*task[ \t]*.*[ \t]+([a-zA-Z_0-9]+)[ \t]*[(;]/\2/t,task/
--regex-systemverilog=/^[ \t]*(virtual)?[ \t]*function[ \t]*.*[ \t]+([a-zA-Z_0-9]+)[ \t]*[(;]/\2/f,function/
--regex-systemverilog=/^[ \t]*module[ \t]*([a-zA-Z_0-9]+)/\1/m,module/
--regex-systemverilog=/^[ \t]*program[ \t]*([a-zA-Z_0-9]+)/\1/p,program/
--regex-systemverilog=/^[ \t]*interface[ \t]*([a-zA-Z_0-9]+)/\1/i,interface/
--regex-systemverilog=/^[ \t]*typedef[ \t]+.*[ \t]+([a-zA-Z_0-9]+)[ \t]*;/\1/e,typedef/
--systemverilog-kinds=+ctfmpie

通过配置文件

可以将命令行写在文件当中, 可能的位置是:

/ctags.cnf (只在 MSDOS,MSWindows)
/etc/ctags.conf
/usr/local/etc/ctags.conf

$HOME/.ctags (在 MSDOS, MSWindows 上是 $HOME/ctags.cnf)
.ctags (在 MSDOS,MSWindows上是 ctags.cnf)

如果这些配置文件中任一个存在,每个都应该包含一个缺省的选项集合,
在 ctags 启动时会按列出的顺序读入这些选项,读入的时刻发生在读取 CTAGS 环境变量以及命令行选项之前。
这使得设置适用于整个系统、每个人或基于项目的缺省选项值成为可能。
在编译 ctags 时为它指定一个额外的配置文件是可能的,它会在上面列出文件被读入之前读取,
在 —version 选项输出中的"custom-conf" 指示这个特性可用。
CTAGS 环境变量及命令行中选项会覆盖这些文件中定义的选项。
只从这些文件中读入选项值。
注意,选项文件按行读入,行内的空格有效 (因为不能像 shell那样使用引号)。
文件的每行被当做一个命令行参数 (就像它们被单引号括起来一样)。
因此,使用换行符做为命令行参数的分隔标志。

自己写语言解析器

参考 [http://ctags.sourceforge.net/EXTENDING.html]

链接

[http://ctags.sourceforge.net]

评论

Add a New Comment
or Sign in as Wikidot user
(will not be published)
- +

相关话题

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.