Ctags 5.6 for PHP5

May 19th, 2007 | Filed under Vim

TagsList 是个很好用的 Vim 插件,可以显示文件的结构信息,比如 PHP 的常量,函数,类定义等等,这个插件依赖于 ctags.exe。

可惜的是 CTags 对于 PHP5 的支持不够友好,比如无法识别 public / protected 等访问限制符,于是有人放出了针对 Ctags 的 Patch,这个 Patch 早在 ver 5.4 的时候就有了,现在已经是 ver 5.6 了,不过 CTags 的作者似乎并没有把它加进去的意思。

即使不用这个 Patch,CTags 也可以通过正则表达式来正确的匹配 PHP5 的语法,但这样也有很多缺点,比如速度慢,参数列表要写很长,正则容易出错等,始终不如原生支持的好。

以前我也自己编译了一个,不过今天才发现一个很尴尬的问题,在 cygwin 下面编译出来的 ctags.exe,依赖 cygwin1.dll。

于是稍微改了一下下,configure 的时候加上参数:

1
CC=gcc CFLAGS=-mno-cygwin ./configure

执行 make,会看到 gcc 加上了参数 -mno-cygwin:

1
2
3
4
5
6
7
8
9
10
11
gcc -mno-cygwin -I. -I. -DHAVE_CONFIG_H -g -O2 -c options.c
gcc -mno-cygwin -I. -I. -DHAVE_CONFIG_H -g -O2 -c parse.c
gcc -mno-cygwin -I. -I. -DHAVE_CONFIG_H -g -O2 -c pascal.c
gcc -mno-cygwin -I. -I. -DHAVE_CONFIG_H -g -O2 -c perl.c
gcc -mno-cygwin -I. -I. -DHAVE_CONFIG_H -g -O2 -c php.c
gcc -mno-cygwin -I. -I. -DHAVE_CONFIG_H -g -O2 -c python.c
gcc -mno-cygwin -I. -I. -DHAVE_CONFIG_H -g -O2 -c read.c
gcc -mno-cygwin -I. -I. -DHAVE_CONFIG_H -g -O2 -c rexx.c
gcc -mno-cygwin -I. -I. -DHAVE_CONFIG_H -g -O2 -c routines.c
gcc -mno-cygwin -I. -I. -DHAVE_CONFIG_H -g -O2 -c ruby.c
gcc -mno-cygwin -I. -I. -DHAVE_CONFIG_H -g -O2 -c scheme.c
Tags: , ,
Comments are closed.