我想为 Lua 使用 Ctags。
ctags不支持lua,所以找了个命令:
ctags --langdef=MYLUA --langmap=MYLUA:.lua --regex-MYLUA="/^.*\s*function\s*(\w+):(\w+).*$/\2/f/" --regex-MYLUA="/^\s*(\w+)\s*=\s*[0-9]+.*$/\1/e/" --regex-MYLUA="/^.*\s*function\s*(\w+)\.(\w+).*$/\2/f/" --regex-MYLUA="/^.*\s*function\s*(\w+)\s*\(.*$/\1/f/" --regex-MYLUA="/^\s*(\w+)\s*=\s*\{.*$/\1/e/" --regex-MYLUA="/^\s*module\s+\"(\w+)\".*$/\1/m,module/" --regex-MYLUA="/^\s*module\s+\"[a-zA-Z0-9._]+\.(\w+)\".*$/\1/m,module/" --languages=MYLUA --excmd=number -R .
它太长了,或者你只能看到一个更短的示例,只适用于 lua 函数。
ctags --langdef=MYLUA --langmap=MYLUA:.lua --regex-MYLUA="/^.*\s*function\s*(\w+)\s*\(.*$/\1/f/" --languages=MYLUA --excmd=number -R .
两者都可以在 Windows 上正常工作。
在 OSX 上,没有错误,但标签文件是空的。
PS:我使用 Exuberant Ctags v5.8,而不是 OSX 上的默认 ctags。
这是 ctags 的测试 Lua 代码。
function f1()
end
function c.f2()
end
function c:f3()
end