2013-08-22 22 views
9

przy użyciu obszarów nazw PHP kod, nad którym pracuję, używa dużej liczby aliasów przestrzeni nazw, np.Jak skonfigurować ctags do indeksowania przestrzeni nazw PHP i ich aliasów?

<?php 
namespace foo; 

use bar\baz\qux as bazQux; 

... 

$a = new bazQux(); 

Czy jest możliwe aby skonfigurować Exuberant Ctags do wskaźnika wykorzystania tych aliasów przestrzeni nazw tak, że mogę skakać z linii, gdzie używany jest alias (konkretyzacją powyżej) prosto do rzeczywistej klasy? Jeśli nie jest to możliwe, jaki jest najlepszy kompromis, jaki można osiągnąć?

Widziałem gdzieś jeszcze niezintegrowaną łatkę dla ctags do używania tokenizera PHP do obsługi PHP zamiast aktualnej implementacji opartej na regex; Chciałbym jednak nadal używać ctagów giełdowych, jeśli to możliwe, zamiast konieczności samodzielnego poprawiania i kompilowania wersji.

+1

To nie jest odpowiedź na swoje pytanie (to nie pomaga inter-klasa nawigacja), ale niedawno znaleziono phpctags , co jest bardzo pomocne, jeśli używasz również wtyczki tagu vim: http://stackoverflow.com/questions/11290352/vim-hack-ctags-or-tweak-tagbar-for-better-php-support – Lambart

+0

@Lambart Dzięki za te informacje; phpctags wygląda interesująco. –

Odpowiedz

3

To jest oficjalna lista zmian: http://ctags.sourceforge.net/news.html

Oni zdają się nie połączyła się jeszcze tej poprawki:

http://sourceforge.net/mailarchive/message.php?msg_id=30749245

Więc nie sądzę, można znaleźć prekompilowany pakiet z nazw php wsparcie.

+0

Podejrzewam, że masz rację, a szkoda. Wygląda na to, że ctags nie jest już aktywnie konserwowany; ostatnie zatwierdzenie miało miejsce 11 miesięcy temu. Szkoda, że ​​ta łatka parsera PHP czekała tak długo w zawieszeniu. –

+0

https://github.com/fishman/ctags jest widelcem, który zaktualizował parser php. To może działać. – JaredMcAteer

0

Dla tych, którzy nie czekają w stanie zawieszenia, istnieje rozwiązanie:

Można spróbować ulepszonych Omni PHP kompletne dla vim: https://github.com/shawncplus/phpcomplete.vim.

Ten projekt obsługuje również słowa kluczowe "use" i przestrzenie nazw, ale niestety zależy to od poprawionej wersji CTag.

Oto instrukcje jak przygotować wersję ctags, obszary nazw wsparcia: https://github.com/shawncplus/phpcomplete.vim/wiki/Patched-ctags

wiem, że nie jest to braindead rozwiązanie, a to wymaga dokonania ręce brudne z własnego zestawiania ctags, ale pracował dla mnie doskonale :)

1

nie wiem dobrze o php ale myślę

use bar/baz/qux as bazQux; 

powinny być

use bar\baz\qux as bazQux; 

Po wymianie/z \ Universal-ctags (https://ctags.io) może przechwytywać bazQux dobrze:

[[email protected]]~/var/ctags% cat foo.php 
cat foo.php 
<?php 
namespace foo; 

use bar\baz\qux as bazQux; 

[[email protected]]~/var/ctags% ./ctags -o - foo.php 
./ctags -o - foo.php 
bazQux foo.php /^use bar\\baz\\qux as bazQux;$/;" a namespace:foo typeref:unknown:bar\\baz\\qux 
foo foo.php /^namespace foo;$/;" n 
+0

Dzięki za złapanie błędu składni w separatorach przestrzeni nazw. –