丰富的Ctags在OSX上无法正常工作

时间:2014-12-24 11:33:05

标签: macos lua ctags exuberant-ctags

我想使用Ctags代替Lua。

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

2 个答案:

答案 0 :(得分:1)

您可以在https://github.com/fishman/ctags找到的充满活力的ctags版本似乎具有本机lua支持。你试过那个吗?

答案 1 :(得分:0)

最后,我修好了。

  1. ' \ W'我不能在这个正则表达式中使用(' \ w'也不行),我不知道为什么。我使用' [^ \ s:>]'而不是' \ w'。
  2. ' \ 1'或' \ 2'必须逃到' \\ 1'或' \\ 2',但' \ s'没关系也不知道为什么。
  3. 现在,命令变为

    ctags --langdef=MYLUA --langmap=MYLUA:.lua --regex-MYLUA="/^.*\s*function\s*([^\s:.]+):([^\s:.]+).*$/\\2/f/" --regex-MYLUA="/^\s*([^\s:.]+)\s*=\s*[0-9]+.*$/\\1/e/" --regex-MYLUA="/^.*\s*function\s*([^\s:.]+)\.([^\s:.]+).*$/\\2/f/" --regex-MYLUA="/^.*\s*function\s*([^\s:.]+)\s*\(.*$/\\1/f/" --regex-MYLUA="/^\s*([^\s:.]+)\s*=\s*\{.*$/\\1/e/" --regex-MYLUA="/^\s*module\s+\"([^\s:.]+)\".*$/\\1/m,module/" --regex-MYLUA="/^\s*module\s+\"[a-zA-Z0-9._]+\.([^\s:.]+)\".*$/\\1/m,module/" --languages=MYLUA --excmd=number -R .
    

    这没关系。