2013-08-22 17 views
9

khi sử dụng không gian tên PHP mã tôi làm việc trên sử dụng một số lượng lớn bí danh không gian tên, ví dụ:Làm cách nào để định cấu hình ctags để lập chỉ mục các không gian tên PHP và bí danh của chúng?

<?php 
namespace foo; 

use bar\baz\qux as bazQux; 

... 

$a = new bazQux(); 

Có thể cấu hình cởi mở Ctags để index việc sử dụng các bí danh namespace để tôi có thể nhảy từ một dòng nơi bí danh được sử dụng (instantiation trên) thẳng đến lớp thật không? Nếu điều đó là không thể, thỏa hiệp tốt nhất có thể đạt được là gì?

Tôi đã thấy một nơi nào đó một bản vá chưa được tích hợp cho các thẻ để sử dụng bộ mã thông báo PHP để hỗ trợ PHP thay vì thực thi dựa trên regex hiện tại; Tôi muốn tiếp tục sử dụng một ctags cổ phiếu nếu có thể mặc dù, thay vì phải vá và biên dịch một phiên bản bản thân mình.

+1

Nó không trả lời câu hỏi của bạn (nó không giúp liên lớp navigation) nhưng gần đây tôi phát hiện phpctags , rất hữu ích nếu bạn cũng sử dụng plugin tag vim: http://stackoverflow.com/questions/11290352/vim-hack-ctags-or-tweak-tagbar-for-better-php-support – Lambart

+0

@Lambart Cảm ơn bạn đã thông tin đó; phpctags trông thú vị. –

Trả lời

3

Đây là changelog chính thức: http://ctags.sourceforge.net/news.html

Họ không có vẻ sáp nhập chưa vá này:

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

Vì vậy, tôi không nghĩ rằng bạn có thể tìm thấy một gói phần mềm được xây dựng sẵn với namespace php ủng hộ.

+0

Tôi nghi ngờ bạn đúng, đó là một sự xấu hổ. Có vẻ như ctags không được duy trì tích cực nữa; cam kết cuối cùng là 11 tháng trước. Đó là một sự xấu hổ này bản vá lỗi phân tích cú pháp PHP đã được chờ đợi trong tình trạng lấp lửng quá lâu. –

+0

https://github.com/fishman/ctags là một ngã ba đã cập nhật trình phân tích cú pháp php. Nó có thể hoạt động. – JaredMcAteer

0

Đối với những người, những người không chờ đợi trong tình trạng lấp lửng, có giải pháp:

Bạn có thể thử cải thiện omni PHP hoàn chỉnh cho Vim: https://github.com/shawncplus/phpcomplete.vim.

Dự án này cũng hỗ trợ những thứ như "sử dụng" từ khóa và không gian tên, nhưng rất tiếc là phụ thuộc vào phiên bản CTags được vá.

Dưới đây là hướng dẫn làm thế nào để chuẩn bị ctags phiên bản, mà hỗ trợ namespace: https://github.com/shawncplus/phpcomplete.vim/wiki/Patched-ctags

Tôi biết nó không phải là một giải pháp braindead, và nó đòi hỏi làm cho bàn tay của bạn bẩn với biên soạn riêng của bạn về ctags, nhưng nó làm việc cho tôi một cách hoàn hảo :)

1

tôi không biết rõ về php nhưng tôi đoán

use bar/baz/qux as bazQux; 

nên

use bar\baz\qux as bazQux; 

Sau khi thay thế/với \ Universal-ctags (https://ctags.io) có thể chụp bazQux tốt:

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

Cảm ơn bạn đã đánh bắt lỗi cú pháp với các dấu phân cách không gian tên. –

Các vấn đề liên quan