2011-05-21 44 views
5

有没有什么方法可以让ctags以某种方式支持PHP/Python提供的内置函数(或者当时我正在使用的任何内置函数),这样我也可以在vim中使用Source Explorer中的那些?在PHP/Python /其他内置函数的ctags信息

更新:

好了,所以与Python我就可以在源文件夹中运行ctags的获取与标签文件内置的功能,但用PHP它似乎并没有工作,但是源PHP的文件包含线,如下列:

/* {{{ proto resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]]) 

所以,如果我能以某种方式解析与ctags的,我会得到相应的功能在我的标签文件。我尝试使用--regex-C来拾取它,但以下似乎没有工作。

--regex-C='/\/\* \{\{\{ proto ([^ ]+) ([^ (]*)/\2/f/' 

任何想法如何让这个工作?

另外用python我似乎得到了“Class ClassName:”类的行,有没有什么办法可以让它包含init函数?

更新: 我将为PHP创建一个单独的问题,感谢您的答案。

+0

会运行'ctags -R'后跟'ctags --append -R/path/to/python-source'是否有诀窍? – sarnold 2011-05-21 22:28:56

+0

这不会使我最终得到python源文件(这是C)中定义的函数,而不是编写python代码时的内置函数吗? – 2011-05-22 00:24:00

+0

似乎与Python源文件中的Lib /文件夹一起工作,所以,是的,谢谢 – 2011-05-22 09:44:38

回答

2

ctags允许您使用--append选项递增地构建标签数据库;如果你想要一个为Python程序的C定义的(???多一些一点点是用C直接执行,一些Python本身),你可以运行:

ctags -R 
ctags --append -R /path/to/python-source 

如果你想了Python的只是一部分源代码包括在内,你可以给出这个部分;如您在您的评论说,Lib/是开始:)的地方

ctags -R 
ctags --append -R /path/to/python-source/Lib 

鉴于大多数解释型语言(甚至字节码编译语言)清盘实现他们的接口相当数量的用C的背后场景中,可能很难在源和您所依赖的API的源之间进行无缝转换。

我发现有多个数据库的源代码是有帮助的;有时问题最好用cscope回答,有时gid,有时ctagsctags非常适合集成到vim,但gid通常更容易编写脚本。

+1

这确实适用于python,但现在我仍然坚持PHP,仍然感谢您的帮助^^ – 2011-05-25 14:23:07

1

ctags在python语法方面有很多麻烦,因为它试图寻找大括号,python没有。

我会说看看this

+1

你检查了'ctags --list-languages'的输出吗?你有没有注意到你的链接实际上使用了'ctags'? – sarnold 2011-05-22 21:56:35

+0

我做了,我只是说python的支持可能不完整。 – 2011-05-22 22:20:59

+0

Python实际上工作,现在我只需要找出PHP的默认功能:/ – 2011-05-25 14:22:46