熱狂的な ctags を使用してタグ ファイル (emacs 形式) を生成しています。次の追加フラグを渡します。
--regex-PHP=/do\_action\(\ '([a-zA-Z0-9\_]+)'/\1/a,actions/
問題は、emacs lisp を使用して、"a" としてマークされたすべてのタグをリストの形式で返したいことです。
残念ながら、etags.el のすべてが対話型の使用に合わせて調整されているようです。find-tag-in-order
非対話型の方法しか考えられませんでしたが、何かが一致するかどうかに関係なく、私のコードはエラー メッセージを返します。
(find-tag-in-order
"test_string"
find-tag-regexp-search-function
find-tag-regexp-tag-order
find-tag-regexp-next-line-after-failure-p
"matching"
t)
インタラクティブな Mx find-tag test_string を実行すると、ファイルとそれが定義されているポイントに移動します。
理想的な使用法は次のようなものです:
(tags-of-type "a")
または(tags-matching "do_action")
. タグの名前は、正規表現の括弧で囲まれたグループに一致するものであることは理解していますが。
何か案は?
更新:
これは emacs lisp リストの形式でタグを取得する問題を解決しませんが、--PHP-kinds
パラメーターを使用すると、タイプごとに複数のタグ ファイルを維持できることがわかります。
この方法では、アプローチは(機能していませんが)次のようになります。
(let ((tags-table-list '("tag-file-1")))
(tags-search "specific-to-tag-file-1"))