我正在使用Exuberant ctags来索引Erlang文件。
“tags”文件包含函数,但它们没有模块限定符;所以 我不能搜索“模块:功能”,只能搜索“功能”,这可能会给出几个 结果
您是否知道如何让ctags在标记文件中包含模块限定符?
感谢。
答案 0 :(得分:3)
Excolrant ctags已经为Erlang支持tag field“module”。
$ /usr/bin/ctags --version
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Aug 17 2010, 17:33:33
Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
Optional compiled features: +wildcards, +regex
$ /usr/bin/ctags xref_parser.erl
带有名为“module”的标记字段的典型标记行如下所示:
yeccgoto_const xref_parser.erl /^yeccgoto_const(24=_S, Cat, Ss, Stack, T, Ts, Tzr) ->$/;" f module:xref_parser
实际上,VIM现在不支持这个标记字段。来自VIM doc:
{field} .. A list of optional fields. Each field has the form:
<Tab>{fieldname}:{value}
The {fieldname} identifies the field, and can only contain
alphabetical characters [a-zA-Z].
The {value} is any string, but cannot contain a <Tab>.
There is one field that doesn't have a ':'. This is the kind
of the tag. It is handled like it was preceded with "kind:".
See the documentation of ctags for the kinds it produces.
The only other field currently recognized by Vim is "file:"
(with an empty value). It is used for a static tag.
就是这样。只有“kind”和“file”支持标记字段名称。
答案 1 :(得分:3)
像lht写的那样,Exuberant Ctags 5.8已经将该函数的模块存储在tags文件中。至少在最新版本的Vim(7.4)中,可以访问此信息。然后可以使用自定义“标签”功能查找“module:function”,例如:
function! ErlangTag()
let isk_orig = &isk
set isk+=:
let keyword = expand('<cword>')
let &isk = isk_orig
let parts = split(keyword, ':')
if len(parts) == 1
execute 'tag' parts[0]
elseif len(parts) == 2
let [mod, fun] = parts
let i = 1
let fun_taglist = taglist('^' . fun . '$')
for item in fun_taglist
if item.kind == 'f' && item.module == mod
silent execute i . 'tag' fnameescape(item.name)
break
endif
let i += 1
endfor
endif
endfunction
nnoremap <buffer> <c-]> :call ErlangTag()<cr>
答案 2 :(得分:1)
听起来你没有使用Erlang etags模块:Generate Emacs TAGS file from Erlang source files。
答案 3 :(得分:0)
我是一个崇高的2文本用户,并发现ctags在我的计算机中正常工作。我使用ctags plugin
作为崇高2。
- &gt; ctags --version
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Jul 24 2012, 11:45:55
Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
Optional compiled features: +wildcards, +regex