1

熱狂的な 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"))
4

1 に答える 1

2

あなたが欲しいのは、私が思うに、です(tags-completion-table)。現在の TAGS テーブルのエントリであるシンボルのオブジェクト配列を返します。

tags-completion-tableいずれにせよ、あなたが求めているものに応じて、同じ名前の関数とそのキャッシュ変数が出発点だと思います。どちらも library で定義されていますetags.el

(シンボルのオブジェクト配列ではなく文字列のリストが必要な場合は、 and を使用mapatomsしてsymbol-nameください。)

于 2014-03-25T22:35:06.080 に答える