2013-08-22 5 views
9

quando si utilizzano gli spazi dei nomi PHP, il codice su cui lavoro utilizza un numero elevato di alias di spazi dei nomi, ad es.Come posso configurare ctags per indicizzare gli spazi dei nomi PHP e i loro alias?

<?php 
namespace foo; 

use bar\baz\qux as bazQux; 

... 

$a = new bazQux(); 

E 'possibile configurare esuberante Ctags per indicizzare l'uso di questi alias namespace in modo che possa saltare da una linea in cui viene utilizzato l'alias (l'istanza di cui sopra) direttamente alla classe reale? Se ciò non è possibile, qual è il miglior compromesso che si possa ottenere?

Ho visto da qualche parte una patch non ancora integrata per ctags per utilizzare un tokenizzatore PHP per il supporto PHP invece dell'attuale implementazione basata su regex; Mi piacerebbe continuare a usare un ctags di riserva, se possibile, invece di dover applicare patch e compilare una versione da solo.

+1

Essa non risponde alla tua domanda (che non aiuta la navigazione inter-classe) ma di recente ho trovato phpctags , che è molto utile se si utilizza anche il plug-in della barra di tag vim: http://stackoverflow.com/questions/11290352/vim-hack-ctags-or-tweak-tagbar-for-better-php-support – Lambart

+0

@Lambart Grazie per quelle informazioni; phpctags sembra interessante. –

risposta

3

Questo il changelog ufficiale: http://ctags.sourceforge.net/news.html

Loro non sembrano fuse ancora questa patch:

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

Quindi non credo che si può trovare un pacchetto precompilato con php namespace supporto.

+0

Ho il sospetto che tu abbia ragione, ed è un peccato. Sembra che i ctag non vengano più mantenuti attivamente; l'ultimo impegno è stato 11 mesi fa. E 'un peccato che questa patch del parser PHP sia rimasta in attesa nel limbo per così tanto tempo. –

+0

https://github.com/fishman/ctags è un fork che ha aggiornato il parser php. Potrebbe funzionare. – JaredMcAteer

0

Per coloro, che non aspettano nel limbo, non c'è soluzione:

Si può provare migliorate omni PHP completi per ViM: https://github.com/shawncplus/phpcomplete.vim.

Questo progetto supporta anche cose come "utilizzare" parole chiave e spazi dei nomi, ma purtroppo dipende dalla versione patch di CTags.

Qui trovi le istruzioni per preparare la versione ctags, che namespace di supporto: https://github.com/shawncplus/phpcomplete.vim/wiki/Patched-ctags

io so che non è una soluzione cerebroleso, e richiede rendendo le mani sporche con il proprio compilazione di ctags, ma ha funzionato per me perfettamente :)

1

non so bene di php ma immagino

use bar/baz/qux as bazQux; 

dovrebbe essere

use bar\baz\qux as bazQux; 

Dopo la sostituzione/con \ Universal-ctags (https://ctags.io) può catturare bazQux bene:

[[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

Grazie per aver catturato l'errore di sintassi con i separatori dei nomi. –