Exuberant Ctags#
Program ctags#
--extra#
Argument --extra
dla bieżącego wywołania programu ctags kontroluje stanem włączenia/wyłączenia poszczególnych specjalnych rodzajów tagów w niektórych językach obsługiwanych przez parser, które będą brane pod uwagę przy generowaniu tagów dla analizowanych plików. W celu zachowania spójnego wyniku dla wszystkich analizowanych plików najlepiej umieszczać argument --extra
jeszcze przed pierwszym analizowanym plikiem.
Opis działania#
Prawidłowe użycie argumentu najlepiej objaśnić na zapisie składniowym:
ctags --extra[=[+|-]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 specjalnych rodzajów tagów w niektórych językach (wielkość znaków ma znaczenie):
""
- specjalna pusta wartość oznaczająca wyłączenie wszystkich włączonych do tej pory specjalnych rodzajów tagów. Jest to domyślne zachowanie i jest ono równoważne z brakiem przekazania argumentu--extra
lub z jego przekazaniem bez jakiejkolwiek wartości."list"
- lista z flagami w postaci pojedynczych liter, gdzie każda flaga wskazuje na jeden ze specjalnych rodzajów tagów, który zostanie (zależnie od sposobu zapisu tych jednoliterowych flag) włączony lub wyłączony 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 specjalnych rodzajów tagów # (opisy w oryginalnej angielskiej postaci):
f
- Include an entry for the base file name of every source file (e.g. "example.c"), which addresses the first line of the file.q
- Include an extra class-qualified tag entry for each tag which is a member of a class (for languages for which this information is extracted; currently C++, Eiffel, and Java). The actual form of the qualified tag depends upon the language from which the tag was derived (using a form that is most natural for how qualified calls are specified in the language). For C++, it is in the form "class::member"; for Eiffel and Java, it is in the form "class.member". This may allow easier location of a specific tags when multiple occurrences of a tag name occur in the tag file. Note, however, that this could potentially more than double the size of the tag file.
"+"
lub"-"
- dodatkowe prefiksy w postaci znaku plusa lub minusa umieszczane przed wartościami w argumencie--extra
, które kontrolują stanem włączenia/wyłączenia poszczególnych specjalnych rodzajów tagów. Znak plusa włącza a znak minus wyłącza wszystkie te specjalne rodzaje tagów, które za nim występują. Jeśli pierwsza jednoliterowa flaga na przekazanej liście nie zostanie poprzedzona znakiem plusa lub minusa to wszystkie specjalne rodzajów tagów są wyłączony. Do momentu napotkania znaku minusa w przekazanej liście każdy umieszczony w niej specjalny rodzaj tagu pozostaje włączony. W ten sposób łatwo jest włączać/wyłączać wszystkie specjalne rodzajów tagów 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 --extra"
lub"ctags --extra="
lub"ctags --extra="""
- wyłączenie wszystkich specjalnych rodzajów tagów (jeśli wcześniej jakieś zostały włączone)."ctags --extra=f"
- wyłączenie wszystkich specjalnych rodzajów tagów (jeśli wcześniej jakieś zostały włączone), a potem włączenie tego wskazywanego flagą 'f'."ctags --extra=+fq"
lub"ctags --extra=+fq"
- włączenie specjalnych rodzajów tagów wskazywanych flagami 'f' i 'q' (domyślnie są one wyłączone)."ctags --extra=-fq"
lub"ctags --extra=-f-q"
- wyłączenie specjalnych rodzajów tagów wskazywanych flagami 'f' i 'q' (jeśli wcześniej zostały włączone).
- 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 --extra
:
- Argument
--extra
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
--extra
będzie zawierała nieobsługiwaną jednoliterową flagę to zwrócony zostanie komunikatctags: Warning: Unsupported parameter 'x' for ""extra"" option
. - Przekazanie argumentu
--extra
bez podania jakiejkolwiek wartości jest równoważne z niejawnym użyciem pustej wartości""
. Specjalne rodzaje tagów # kontrolowane przez argument
--extra
i skojarzone z nimi jednoliterowe flagi jako wartości to dodatkowe tagi generowane tylko dla niektórych języków obsługiwanych przez parser, które wyrażają sobą pewne specyficzne aspekty w kodzie źródłowym wąskiej grupy języków, których nie objęto w definicjach przypisanych do klasycznych rodzajów tagów.Niektóre specjalne rodzaje tagów mogą stanowić odrębny rodzaj, jak w przypadku tego wskazywanego flagą
"f"
, którego skrótową nazwą będzie"F"
, ale nie jest ona rozpoznawana w argumencie<lang>-kinds
. Inne z kolei stanowią dodatkowy wariant dla klasycznych rodzajów tagów, jak w przypadku tego wskazywanego flagą"q"
, którego skrótową nazwą będzie"m"
, i jest ona rozpoznawana w argumencie<lang>-kinds
, co oznacza, że wyłączenie tagów wskazywanych flagą"m"
w argumencie<lang>-kinds
ma wyższy priorytet i dla konkretnego języka z automatu pominie także te tagi, które włączono flagą"q"
w argumencie--extra
.
Prosty przykład:
ctags --extra="" * :: wyłączenie wszystkich specjalnych rodzajów tagów
ctags --extra= * :: wyłączenie wszystkich specjalnych rodzajów tagów
ctags --extra * :: wyłączenie wszystkich specjalnych rodzajów tagów
ctags *
ctags --extra=fq * :: włączenie specjalnych tagów z rodzajem 'f' i 'q' (reszta wyłączona)
ctags --extra=qf * :: włączenie specjalnych tagów z rodzajem 'f' i 'q' (reszta wyłączona)
ctags --extra=+fq * :: włączenie specjalnych tagów z rodzajem 'f' i 'q' (reszta ma domyślny stan)
ctags --extra=+f+q * :: włączenie specjalnych tagów z rodzajem 'f' i 'q' (reszta ma domyślny stan)
ctags --extra=-fq * :: wyłączenie specjalnych tagów z rodzajem 'f' i 'q' (reszta ma domyślny stan)
ctags --extra=-f-q * :: wyłączenie specjalnych tagów z rodzajem 'f' i 'q' (reszta ma domyślny stan)
ctags --extra=-f+f * :: włączenie specjalnego tagu z rodzajem 'f' (reszta ma domyślny stan)
ctags --extra=+fq-f * :: włączenie specjalnego tagu z rodzajem 'q' (reszta ma domyślny stan)
ctags --extra=+fq --extra * :: wyłączenie wszystkich specjalnych rodzajów tagów
ctags --extra=-f --extra=+f * :: włączenie specjalnego tagu z rodzajem 'f' (reszta ma domyślny stan)
ctags --extra=+q --c-kinds=-m * :: specjalny tag z rodzajem 'q' pozostaje wyłączony
ctags --c-kinds=-m --extra=+q * :: specjalny tag z rodzajem 'q' pozostaje wyłączony
:: Błędne przypadki
ctags --extra=x