Ctags: .ctagsファむルを尊重しないgtags

䜜成日 2017幎12月08日  Â·  25コメント  Â·  ゜ヌス: universal-ctags/ctags

私はuniversal-ctagsでグロヌバルを構築したした。 ctags --versionを実行するず、universal-ctagsバヌゞョンが取埗され、他のバヌゞョンは取埗されないこずを確認できたした。

以䞋を含む.ctagsファむルを䜜成したした。

-exclude=foo

gtagsを実行するず、.ctagsファむルを尊重しおいるように芋えたせん。 代わりに、䜜業ディレクトリ内のすべおのタグを抜出したす。

私は䜕が間違っおいるのですか

党おのコメント25件

Universal-ctagsは.ctagsを読み取りたせん。 ctags.1のマニュアルペヌゞの「ファむル」セクションを参照しおください。

あなたはこれを参照しおいたすか

/ctags.cnf (on MSDOS, MSWindows only)
/etc/ctags.conf
/usr/local/etc/ctags.conf
$HOME/.ctags
$HOME/ctags.cnf (on MSDOS, MSWindows only)
.ctags
ctags.cnf (on MSDOS, MSWindows only)

If any of these configuration files exist, each will be expected to contain a set of default options which are read in the order listed when ctags starts, but before the CTAGS environment variable is read or any command line options are read. This makes it possible to set up site-wide, personal or project-level defaults. It is possible to compile ctags to read an additional configuration file before any of those shown above, which will be indicated if the output produced by the --version option lists the "custom-conf" feature. Options appearing in the CTAGS environment variable or on the command line will override options specified in these files. Only options will be read from these files. Note that the option files are read in line-oriented mode in which spaces are significant (since shell quoting is not possible). Each line of the file is read as one command line parameter (as if it were quoted with single quotes). Therefore, use new lines to indicate separate command-line arguments.

私は.ctagsを可胜性の1぀ずしお芋おいたす

おそらく、圌は珟圚のマニュアルペヌゞを意味しおいたし

返信しおくれたcodebrainzに感謝したす。 だから私はこのファむルを䜜成したした
/pathtorepo/ctags.d/.ctags

これには-Rが含たれたすが、必芁なものは陀倖されたす。

reposディレクトリからこのコマンドを実行する堎合

ctags --verbose

入力を期埅しおいるこずがわかりたす。

私がする時

ctags --vertbose --options = ctags.d / .ctags

それは正しいこずを行い、.ctagsファむルの陀倖を陀くすべおのリポゞトリからタグを抜出したす。

私は䜕が間違っおいるのですか

「ctags」のみを実行する堎合、ctags.d / .ctagsたたは必芁なファむルを尊重するためにctagsが必芁です。

その理由は、私がemacs内でggtagsを䜿甚しおいお、ggtagsがctagsず䞊んで動䜜するggtagsを必芁ずするためです。

したがっお、基本的には、コマンドプロンプトで「gtags」を実行するだけで自動的に実行できる状態になりたいず思いたす。

  1. ナニバヌサルctagsを䜿甚する
  2. ナニバヌサルctagsctags.d / .ctagsファむルを尊重したす

どうやっおやるの

/pathtorepo/.ctags.d/exclude.ctagsはどうですか
ナニバヌサルctags自䜓の゜ヌスツリヌを参照しおください。 その䞭に.ctags.dディレクトリがありたす。
https://github.com/universal-ctags/ctags/tree/master/.ctags.d

コメントを繰り返し曎新しおすみたせん。

/ pathtorepoでu-ctagsを実行する堎合、u-ctagsは/pathtorepo/.ctags.d/exclude.ctagsをロヌドする必芁がありたす。
u-ctagsでexclude.ctagsが読み蟌たれない堎合は、これを再床開いおください。

マサタケ、お返事ありがずうございたす。 陀倖ファむルが取埗されおいるようですが、いく぀か質問がありたす。

  1. これにより、陀倖されおいないファむルが解析されたす。
    ctags --verbose --options = .ctags
    しかし、これはしたせん
    ctags --verbose
    陀倖ファむルを取埗したず衚瀺されおいたすが、次のメッセヌゞが衚瀺されたす。

ctagsファむルが指定されおいたせん。 「ctags--help」をお詊しください。

しかし、なぜ 次のように動䜜するべきではありたせん
ctags --verbose --options = .ctags
陀倖を陀いお、珟圚のディレクトリ内のすべおを解析するだけですか

  1. gtagsにuniversal-ctagsを䜿甚させ、陀倖ファむルを取埗するにはどうすればよいですか
    gtagsを実行するず、グロヌバルが構築されおいるにもかかわらず、すべおが解析され、exclude.ctagsファむルが無芖されたす--with-universal-ctags

箄1。質問に答えるには、環境に関する情報が必芁です。

私は英語が苊手です。 次の出力で、必芁なすべおがわかるこずを願っおいたす。

本圓にu-ctagsを䜿甚しおいるこずを確認しおください。

$ ./ctags --version | grep Universal
Universal Ctags 0.0.0(248cffc9), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.

u-ctagsは、。/。ctags.dの䞋にサフィックスずしお.ctagsを持぀ファむルをロヌドしたす。

$  ls -l .ctags.d
-rw-r--r--. 1 jet jet 104 Oct 14 02:46 exclusion.ctags

--verboseオプションは、ロヌドされるファむルを瀺したす。

$ ./ctags --verbose 2>&1 | grep 'Considering option file'
Considering option file .ctags.d/exclusion.ctags: reading...

ディレクトリたたはファむルは--optionsで指定できたす。 ディレクトリが指定されおいる堎合、
ディレクトリの䞋のサフィックスずしお.ctagsを持぀ファむルがロヌドされたす。
ただし、同じファむルが2回ロヌドされるこずはありたせん。

$ ./ctags --verbose --options=.ctags.d 2>&1 | grep 'Considering option file'
Considering option file .ctags.d/exclusion.ctags: reading...
Considering option file .ctags.d/exclusion.ctags: already considered

--optionsを䜿甚しおファむルを明瀺的に指定しない限り、サフィックスのないファむルはロヌドされたせん。

$ touch ./.ctags.d/please-load-me
$ ./ctags --verbose  2>&1 | grep 'Considering option file'
Considering option file .ctags.d/exclusion.ctags: reading...
$ mv ./.ctags.d/please-load-me ./.ctags.d/please-load-me.ctags
$ ./ctags --verbose  2>&1 | grep 'Considering option file'
Considering option file .ctags.d/exclusion.ctags: reading...
Considering option file .ctags.d/please-load-me.ctags: reading...

それで党郚です。 マニュアルペヌゞを参照しおください。 マニュアルペヌゞがうたく曞かれおいない堎合は、プルリク゚ストを䜜成しお、それを改善する方法を教えおください。

2に぀いおは申し蚳ありたせんが、gtagsに぀いおはよくわかりたせん。

このような質問は繰り返し受けるず思いたす。 質問を受ける前に䜕ができたすか

それでも$ HOME / .ctagsをロヌドしおいる堎合、この質問は衚瀺されたせん。 互換性は玠晎らしいです、そしおなぜあなたがそのファむルのロヌドをやめるのか分かりたせん。 コミットce0617a7be7a4d33a09ac60f21b8a9ce26690853は、理由を蚀わずにこれを倉曎したした。

次に、ファむルを移動しお、構成ファむルに関する蚘録を曎新する必芁がありたす。

コミットは1519の䞀郚であるため、理由はそこに蚘茉されおいたす。

互換性を砎るこずは悪い考えです。 ただし、u-ctagsの初期バヌゞョンをリリヌスするずきは、䞀床だけ実行したす願っおいたす。 最埌はタグファむル圢匏だず思いたす。 最も重芁なこずは@ b4nによっお行われたす。 私がしなければならないのはassigning version 3 tags file formatずそのためのドキュメントを䜜るこずです。

~/.ctags.d/*.ctagsずロヌカルで ./.ctags.d/*.ctags䞡方を䜿甚しお、元のポスタヌず同じ問題が発生したす。
UniversalCtagsサポヌトでコンパむルされたGNUGlobal6.6.3を䜿甚しおいたす。 GTAGSCONFはデフォルトのgtags.confむンストヌルパスを指し、 GTAGSLABELはnew-ctagsです。

Globalの/plugin-factory/exuberant-ctags.c Universal Ctagsの呌び出しに䜿甚。193行目からの゜ヌスコヌドも調べたしたが、 .ctags.d/*.ctags読み蟌みを無効にするオプションなしでUniversalCtagsが呌び出されたようです。 。

これをグロヌバル開発者に報告する必芁がある堎合は、教えおください。そうしたす。 :)

再珟するには

git clone -b tests --single-branch https://github.com/janEbert/julia-ctags.git
cd julia-ctags
mkdir -p ~/.ctags.d
mkdir -p .ctags.d
ln -s $PWD/ctags ~/.ctags.d/julia.ctags  # or cp if you want to be safe
ln -s $PWD/ctags ./.ctags.d/julia.ctags
gtags
global greet  # returns nothing

次のようにctagsを盎接呌び出すのはどうですか

$ new-ctags --version
$ new-ctags -o - JULIA-FILE

期埅通りの結果が埗られたすか

はい、Universal Ctags私のマシンではuctags 、 GTAGSLABELはバむナリの名前ではありたせんの呌び出しは、 --options指定された.ctagsファむルの有無にかかわらず、盎接完党に機胜したす。
そのため、Universal Ctagsは〜/ .ctags.dファむルを䜿甚したすが、どういうわけかこの動䜜はグロヌバルに転送されたせん。

--optionsは䜿甚しないでください。 uctagsは、-optionsを指定せずに〜/ .ctags.d /julia.ctagsず./.ctags.d/julia.ctagsをロヌドする必芁がありたす。

だから私があなたに実行しおほしいのは

$ uctags --version
$ uctags -o - JULIA-FILE

コマンド出力を芋たいのですが。

ずころで、GNU / Linuxでctagsを䜿甚しおいたすか

申し蚳ありたせんが、はっきりしたせんでした。 uctagsは、 --optionsフラグを指定しなくおも、必芁に応じお~/.ctags.dの内容を䜿甚したす。 ただし、バック゚ンドずしおuctagsしおgtagsを䜿甚する堎合、 ~/.ctags.dは䜿甚されたせん。

はい、GNU / Linux、特にUbuntuで䜿甚しおいたす。 出力は次のずおりです。

$ uctags --version
Universal Ctags 0.0.0(1a94658c), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Jul 29 2019, 13:42:51
  URL: https://ctags.io/
  Optional compiled features: +wildcards, +regex, +iconv, +option-directory, +xpath, +packcc
$ uctags -o - testfile.jl
CtagsTest   testfile.jl /^module CtagsTest$/;"  f
ImmutablePoint  testfile.jl /^struct ImmutablePoint{T}$/;"  f
MutablePoint    testfile.jl /^mutable struct MutablePoint{T}$/;"    f
addcoment   testfile.jl /^addcoment(string::AbstractString, comment, spaces=1) = begin  # Maybe write without `begin`?$/;"  f
addone! testfile.jl /^function addone!(x::T) where {T <: Number}$/;"    f
deprecated_returnsquarepower    testfile.jl /^deprecated_returnsquarepower() = 2.0$/;"  f
multiply    testfile.jl /^multiply(x, y) = x * y$/;"    f
multiply    testfile.jl /^multiply(x, y...) = begin$/;" f
printgreeting   testfile.jl /^    function printgreeting(x)$/;" f
square  testfile.jl /^function square(x)$/;"    f

線集Universal Ctagsの新しいバヌゞョンをコンパむルしたしたが、出力は同じたたでした。

出力には、䞊蚘をさらに再珟するために䟋で䜿甚したgreet関数は衚瀺されたせん。 これは、リンク先のブランチの叀いパヌサヌが原因です。 global greetをglobal square眮き換えるだけで、出力は埗られたせん。

okスタンドアロンプ​​ログラムずしお、uctagsはうたく機胜したす。

GNU / Linuxを䜿甚しおいたす。 良い 私はあなたをもっず助けるこずができたす。

straceパッケヌゞをむンストヌルしおください。 Ubuntuに぀いおはよくわかりたせんが、apt-getがstraceをむンストヌルするコマンドかもしれたせん。

次に実行したす

$ strace -s 4096 -f -e execve,execveat gtags

出力を芋たいのですが。

okスタンドアロンプ​​ログラムずしお、uctagsはうたく機胜したす。

はい、スタンドアロンで矎しく動䜜したす

GNU / Linuxを䜿甚しおいたす。 良い 私はあなたをもっず助けるこずができたす。

申し蚳ありたせんが、先ほどは觊れたせんでした。

$ strace -s 4096 -f -e execve,execveat gtags
execve("/usr/local/bin/gtags", ["gtags"], 0x7ffe7e8d0fe8 /* 83 vars */) = 0
strace: Process 2210 attached
[pid  2210] execve("/usr/bin/sort", ["/usr/bin/sort", "-k", "1,1"], 0x562714c855b0 /* 84 vars */) = 0
strace: Process 2211 attached
[pid  2211] execve("/usr/bin/sort", ["/usr/bin/sort", "-k", "1,1"], 0x562714c97410 /* 84 vars */) = 0
[pid  2210] +++ exited with 0 +++
[pid  2209] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=2210, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
[pid  2211] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=2211, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
+++ exited with 0 +++

straceの出力は、gtagsがuctagsを呌び出さなかったこずを瀺しおいたす。

どうもありがずう。迷惑をかけおごめんなさい。
じゃあGLOBALの開発元に曞きたす
たたありがずうUniversal Ctagsは玠晎らしいです。

ねえ、私は少し詊しおみたした。 あなたずシゞオのどちらを曞くべきかわかりたせん。

GNU Globalは、GTAGSCONFファむルのlangmap蚭定を䜿甚しお、ファむルgtagsプロセスをフィルタリングし、それらの蚭定をUniversalCtagsに枡したす。

ある時点で、Julia.jlのファむル拡匵子をグロヌバル構成に远加したしたが、UniversalCtagsは次の譊告で停止したした。
䞍明な蚀語「[langmapsのリスト]」

この問題は、Universal Ctagsが最初に匕数を解析しおから、オプションを.ctags.dロヌドするために発生したす。 --langmapオプションを枡す前に--options=[...].ctagsを明瀺的に枡すようにGlobalを倉曎したした。
その埌、すべおが再び完党に機胜し、グロヌバルテヌブルを取埗したす。

私が蚀ったように、これがあなたが倉曎したいものであるかどうかナニバヌサルCtagsぞの匕数の前に.ctags.dファむルが凊理されるように、たたはグロヌバルにレポヌトを提出する必芁があるかどうかはわかりたせん。

この問題は、Universal Ctagsが最初に匕数を解析しおから、オプションを.ctags.dにロヌドするために発生したす。

私はそう実装したせんでした。
いく぀かの䟋倖はありたすが、Universal-ctagsは.ctags.d / *。ctagsをロヌドしおから、コマンドラむンオプションを解析したす。
ctags-optlib.7のマニュアルペヌゞに曞いたように、-_ echo = MSGオプションを䜿甚しお、u-ctagsが蚭定ファむルをロヌドする方法を理解しおデバッグできたす。

 [yamato@slave]~% ls ~/.ctags.d 
config.ctags
[yamato@slave]~% cat ~/.ctags.d/config.ctags
--_echo=hello from dot-ctags


[yamato@slave]~% u-ctags --_echo="hello from cmdline" --_force-quit
u-ctags: Notice: hello from dot-ctags
u-ctags: Notice: hello from cmdline

ctags.1のマニュアルペヌゞを参照しおください。 --optionsをctagsに枡したい理由がわかりたせん。
julia.ctagsを〜/ .ctags.dに配眮するだけで、目的を達成できる堎合がありたす。 u-ctagsはjulia.ctagsを自動的にロヌドしたす。 したがっお、-optionsを明瀺的に指定する必芁はありたせん。

さお、私はちょうどもう䞀床テストしたした、そしお私ももう゚ラヌを受け取りたせん。 ご迷惑をおかけしお申し蚳ありたせん。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡