Ctagsでの通常のPHPサポート

私はctagsユーティリティにphpインデックス作成を完全にサポートしていることを誇りに思います。





カットの下の詳細。 最後にユーティリティへのリンクもあります。





歴史的に、ctagsは正規表現を解析することでPHPをサポートしていました。これにより、最初に新しい言語のサポートを迅速かつ少ない血で追加できるようになり、次に見つかった変数または関数のスコープに関する情報を使用できなくなりました。



その結果、VimやEmacsなどのツールを使用して多数のクラスを持つ複雑なプロジェクトを開発することは理想からはほど遠いものでした。 たとえば、各クラスには__constructメソッドがあり、コンストラクターを見つけるために、クラスをほとんど「ジャンプ」する必要がありました。同じ名前のタグは、すべてグローバルスコープにあるかのようにインデックス付けされるためです。



最初に、この問題を克服するために、PHPStormを試してみることにしましたが、解析とオートコンプリートの品質に数時間の賞賛を浴びた後、VimでのみEmacsを降りることができ、それでも長くはかからないことが再びわかりました。



そのため、現代の要件を満たすために、CtagsでのPHPサポートを最終的に終了することになりました。 他の言語とは異なり、クラスまたは名前空間の1つのメンバーに2つのタグを作成することは理にかなっているようです-クラシックClass ::メンバーは、メンバーとメンバー<クラス>だけを指定するのに十分なクラシックナビゲーションを提供します。 後者のオプションは、同じEmacsでタグによる自動補完を使用する場合に便利です。



両方のオプションは次のようになります。













このユーティリティはgithub.com/zargener/ctagsからダウンロードできます。 不要な依存関係をインストールすることなく、簡単に組み立てられます。 便宜上、システムユーティリティのctagsを置き換えることができます。 新しいパーサーは、目に見えるエラーなしで同じSymfony2のソースコードを完全に解析しますが、誤って解析されたファイルの例は大歓迎です。



残念ながら、これまでナビゲーションはEmacsによってのみ完全にサポートされています。または、いずれにしてもタグを追加する機能を提供するエディターでのみサポートされています。 探している文字を操作するという原則の制限により、カーソルの下で単語が検索されます。シンボルの直接名のみを転送することができます。これは、シンボル名だけでなくスコープも含むタグと完全には一致しません。




All Articles