Exuberant Ctags#
Program ctags#
--fields#
Argument --fields
dla bieżącego wywołania programu ctags kontroluje stanem włączenia/wyłączenia poszczególnych rozszerzających pól (tagfield
) w wygenerowanych tagach, które używają rozszerzonego formatu Exuberant Ctags (domyślnie włączonego). W celu zachowania spójnego wyniku dla wszystkich analizowanych plików najlepiej umieszczać argument --fields
jeszcze przed pierwszym analizowanym plikiem. Argument --fields
jest ignorowany po przełączeniu się na oryginalny format Ctags dla generowanych tagów poprzez argument --format=1
.
Opis działania#
Prawidłowe użycie argumentu najlepiej objaśnić na zapisie składniowym:
ctags --fields[=[+|-]value] [--argument | -argument] [path]
gdzie poszczególne człony oznaczają:
- ctags - ścieżka względna lub bezwzględna do pliku binarnego programu ctags (
ctags.exe
). Wszystko zależy od sposobu uruchamiania programu ctags, np. z systemowej konsoli, ze skrótu do programu czy z innego programu/skryptu. value - jedna z dwóch wartości tekstowych wpływająca na stan włączenia/wyłączenia poszczególnych rozszerzających pól w generowanych tagach (wielkość znaków ma znaczenie):
""
- specjalna pusta wartość oznaczająca wyłączenie wszystkich rozszerzających pól w generowanych tagach. Jest ona równoważna z przekazaniem pustego argumentu--fields
(tj. bez podania jakiejkolwiek wartości)."list"
- lista z flagami w postaci pojedynczych liter, gdzie każda flaga wskazuje na jedno z rozszerzających pól, które zostanie (zależnie od sposobu zapisu tych jednoliterowych flag) włączone lub wyłączone przy generowaniu tagów. Jednoliterowe flagi na liście podaje się bez rozdzielania ich dodatkowymi znakami spacji.W programie ctags dostępne są następujące jednoliterowe flagi dla poszczególnych rozszerzających pól # w generowanych tagach (początkowy opis w oryginalnej angielskiej postaci):
a
- Access (or export) of class members.f
- File-restricted scoping [domyślnie włączone]i
- Inheritance information.k
- Kind of tag as a single letter [domyślnie włączone]K
- Kind of tag as full name. Użycie tej flagi zawsze zdezaktywuje flagęk
.l
- Language of source file containing tag. Zwraca identyfikator języka, na podstawie którego został wygenerowany dany tag, np."language:C"
czy"language:JavaScript"
.m
- Implementation information.n
- Line number of tag definition. Zwraca numer linii, dla której wygenerowano dany tag, np."line:1"
czy"line:133"
.s
- Scope of tag definition [domyślnie włączone]S
- Signature of routine (e.g. prototype or parameter list).z
- Include the "kind:" key in kind field. Zawsze używa nazwy"kind:"
w polu z rodzajem taga.t
- Type and name of a variable or typedef as "typeref:" field [domyślnie włączone]
"+"
lub"-"
- dodatkowe prefiksy w postaci znaku plusa lub minusa umieszczane przed wartościami w argumencie--fields
, które kontrolują stanem włączenia/wyłączenia poszczególnych rozszerzających pól w generowanych tagach. Znak plusa włącza a znak minus wyłącza wszystkie te rozszerzające pola, które za nim występują. Jeśli pierwsza jednoliterowa flaga na przekazanej liście nie zostanie poprzedzona znakiem plusa lub minusa to wszystkie rozszerzające pola są wyłączone. Do momentu napotkania znaku minusa w przekazanej liście każde umieszczone w niej rozszerzające pole pozostaje włączone. W ten sposób łatwo jest włączać/wyłączać wszystkie rozszerzające pola za jednym zamachem, albo włączać/wyłączać tylko niektóre z nich. Oto kilka przykładowych wywołań programu ctags z wykorzystaniem lub pominięciem tych prefiksów:"ctags --fields"
lub"ctags --fields="
lub"ctags --fields="""
- wyłączenie wszystkich rozszerzających pól dla generowanych tagów."ctags --fields=n"
- wyłączenie wszystkich rozszerzających pól dla generowanych tagów, a potem włączenie pola 'n'."ctags --fields=+ln"
lub"ctags --fields=+l+n"
- włączenie rozszerzających pól 'l' i 'n', które domyślnie są wyłączone (reszta rozszerzających pól ma domyślny stan włączenia/wyłączenia)."ctags --fields=-fk"
lub"ctags --fields=-f-k"
- wyłączenie rozszerzających pól 'f' i 'k', (reszta rozszerzających pól ma domyślny stan włączenia/wyłączenia).
- argument - jeden lub więcej dodatkowych argumentów dostrajających działanie programu ctags.
- path - jedna lub więcej dodatkowych ścieżek do plików/folderów, które będą analizowane przy generowaniu tagów (szczegóły).
Kilka uwag odnośnie stosowania argumentu --fields
:
- Argument
--fields
można podawać wielokrotnie (separatorem jest spacja), i każdy kolejny będzie miał wpływ tylko na te pliki, które występują bezpośrednio po nim. - Jeśli wartość w argumencie
--fields
będzie zawierała nieobsługiwaną jednoliterową flagę to zwrócony zostanie komunikatctags: Warning: Unsupported parameter 'x' for "fields" option
. - Przekazanie argumentu
--fields
bez podania jakiejkolwiek wartości jest równoważne z niejawnym użyciem pustej wartości""
. - Domyślną wartością dla argumentu
--fields
jest lista jednoliterowy flag w postaci"fkst"
, co dla bieżącego wywołania programu ctags jest równoważne z brakiem przekazania argumentu--fields
.
Prosty przykład:
ctags --fields="" * :: wyłączenie wszystkich rozszerzających pól
ctags --fields= * :: wyłączenie wszystkich rozszerzających pól
ctags --fields * :: wyłączenie wszystkich rozszerzających pól
ctags *
ctags --fields=ln * :: włączenie rozszerzającego pola 'l' i 'n' (reszta wyłączona)
ctags --fields=nl * :: włączenie rozszerzającego pola 'l' i 'n' (reszta wyłączona)
ctags --fields=+ln * :: włączenie rozszerzającego pola 'l' i 'n' (reszta ma domyślny stan)
ctags --fields=+l+n * :: włączenie rozszerzającego pola 'l' i 'n' (reszta ma domyślny stan)
ctags --fields=-k * :: wyłączenie rozszerzającego pola 'k' (reszta ma domyślny stan)
ctags --fields=-fkst * :: wyłączenie wszystkich domyślnie włączonych rozszerzających pól 'f', 'k', 's' i 't'
ctags --fields=+kK * :: włączenie rozszerzającego pola 'K' (pole 'K' zawsze przesłoni pole 'k')
ctags --fields=+Kk * :: włączenie rozszerzającego pola 'K' (pole 'K' zawsze przesłoni pole 'k')
ctags --fields=-k+k * :: włączenie rozszerzającego pola 'k' (reszta ma domyślny stan)
ctags --fields=+ln-l * :: włączenie rozszerzającego pola 'l' (reszta ma domyślny stan)
ctags --fields=+ln --fields * :: wyłączenie wszystkich rozszerzających pól
ctags --fields=-k --fields=+k * :: włączenie rozszerzającego pola 'k' (reszta ma domyślny stan)
:: Błędne przypadki
ctags --fields=x