Ctags+Vim+PHP=Taglist

2011-05-28 , Papiewski Łukasz , Tips & Tricks / Tipy

W ~/.vim/ftplugin/php.vim należy przypisać klawiszowi f10 komende ctags

nmap <silent> <F10>
             :!ctags -f ~/.vim/tags/current_php
             -h ".php" -R
             --exclude=".svn"
             --totals=yes
             --tag-relative=yes
             --PHP-kinds=+cf
             --sort=no
             --regex-PHP='/abstract class ([^ ]*)/1/c/'
             --regex-PHP='/interface ([^ ]*)/1/c/' 
             --regex-PHP='/(public |static |abstract |protected |private )+function ([^ (]*)/2/f/' <cr>
set tags+=~/.vim/tags/current_php

Ostatnia linijka dodaje tagi w bezwzględnym miejscu i nie trzeba by koniecznie w katalogu root drzewa plików.

Ctags 5.8 wymaga patcha bo ktoś się pomylił w kodzie w regexach (standard :D). Plik php.c po rozpakowaniu źródeł.

75,80c75,79
< 	//addTagRegex(language, "(^|[ t])($|::$|$this->)([" ALPHA "_][" ALNUM "_]*)[ t]*=",
< 	//	"3", "v,variable,variables", NULL);
< 	//addTagRegex(language, "(^[ t]*)(var|public|protected|private|static)?[ t]+$([" ALPHA "_][" ALNUM "_]*)[ t]*[=;]",
< 	//	"3", "v,variable,variables", NULL);
< 	addTagRegex(language, "(^[ t]*)(var[ t]+|public[ t]+|protected[ t]+|private[ t]+)?(static[ t]+)?$([" ALPHA "_][" ALNUM "_]*)[ t]*[=;]",
<            "4", "v,variable,variables", NULL);
---
> 	addTagRegex(language, "(^|[ t])($|::$|$this->)([" ALPHA "_][" ALNUM "_]*)[ t]*=",
> 		"3", "v,variable,variables", NULL);
> 	addTagRegex(language, "(^|[ t])(var|public|protected|private|static)[ t]+$([" ALPHA "_][" ALNUM "_]*)[ t]*[=;]",
> 		"3", "v,variable,variables", NULL);
>

Update

W Vimie udogodniono niedawno parę rzeczy z tagami i tak dla PHP możemy wykonać zwykłe ctags -R --languages=PHP -R . aby wygenerować plik z tagami php.

Cytaty

- Simplicity is the ultimate sophistication. - Leonardo da Vinci,
- Popularny człowiek wzbudza zawiść potężnych - Thufir Hawat o Leto Atrydzie (na Kaladanie),
- Szczęście następuje po smutku, a smutek po szczęściu; człowiek jest naprawdę wolny, gdy przestaje rozróżniać między smutkiem a szczęściem, między dobrem a złem - Aforyzmy buddyjskie.