Exuberant Ctags#

Program ctags#

--list−kinds#

Argument --list−kinds dla bieżącego wywołania programu ctags wyświetla wszystkie zaimplementowane rodzaje tagów dla konkretnego lub wszystkich obsługiwanych języków (zarówno tych pochodzących z wbudowanych parserów, jak i tych z własnych wyrażeń regularnych). Argument --list−kinds to jeden z przerywających argumentów.

Opis działania#

Prawidłowe użycie argumentu najlepiej objaśnić na zapisie składniowym:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
ctags --list−kinds[=value]

gdzie poszczególne człony oznaczają:

Przekazanie argumentu --list−kinds bez podania jakiejkolwiek wartości lub z pustą wartością "" jest równoważne z niejawnym użyciem wartości "all". Jeśli wartością będzie identyfikator nieobsługiwanego języka to zwrócony zostanie komunikat ctags: Unknown language "xxx" in "list-kinds" option.

W rozszerzonym formacie Exuberant Ctags kod odpowiedzialny za obsługę danego języka (tj. parser lub własne wyrażenia regularne) nadaje każdemu utworzonemu tagowi określony rodzaj # (kind), który jest opisywany trzema wartościami: skrótową nazwą (w postaci pojedynczej litery), pełną nazwą oraz dodatkowym opisem. Argument --list−kinds wyświetla skrótowe nazwy i dodatkowe opisy (posortowane w kierunku A-Z) dla wszystkich rodzajów tagów, jakie zostały zaimplementowane w kodzie odpowiedzialnym za obsługę danego języka. Niektóre z nich mogą być domyślnie wyłączone i nie biorą udziału w bieżącej generacji tagów, co zostaje zasygnalizowane dopiskiem "[off]" umieszczonym za dodatkowym opisem każdego z tagów. Po przetworzeniu wszystkich plików i wygenerowaniu dla nich tagów skrótowe nazwy (używane domyślnie) można potem wykorzystywać na różne sposoby, np. do przefiltrowania wyników generacji za pomocą argumentu <lang>-kinds lub do grupowania/wyświetlania tagów tego samego rodzaju wprost w edytorze tekstowym.

Implementowanie kolejnych języków i/lub rodzajów tagów poprzez własne wyrażenia regularne jest możliwe dopiero po dodaniu funkcji +regex w czasie kompilacji programu ctags, co można sprawdzić np. argumentem --version.

Warto nadmienić, że skrótowe nazwy i pełne nazwy nie są w żaden sposób ograniczane i każdy kod obsługujący dany język może definiować własne nazwy w dowolnych ilościach. To powoduje, że jedna nazwa może występować wielokrotnie w tym samym lub w wielu językach jednocześnie, i wskazywać na te same lub inne jego elementy, np. nazwa "p" w jednym języku może oznaczać właściwości (properties), a w innym procedury (procedures).

Prosty przykład:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
ctags --list−kinds=all
ctags --list−kinds=ALL
ctags --list−kinds=""
ctags --list−kinds=
ctags --list−kinds

ctags * --list−kinds=all	:: przetworzy pliki i wyświetli wszystkie rodzaje tagów dla wszystkich obsługiwanych języków
ctags --list−kinds=all *	:: wyświetli wszystkie rodzaje tagów dla wszystkich obsługiwanych języków, ale nie przetworzy plików

ctags -R --list−kinds=all	:: wyświetli wszystkie rodzaje tagów dla wszystkich obsługiwanych języków, ale nie przetworzy plików
ctags --list−kinds=all -R	:: wyświetli wszystkie rodzaje tagów dla wszystkich obsługiwanych języków, ale nie przetworzy plików

ctags --list−kinds=c++		:: wyświetli wszystkie rodzaje tagów dla języka C++
ctags --list−kinds=html		:: wyświetli wszystkie rodzaje tagów dla języka HTML
ctags --list−kinds=HTML		:: wyświetli wszystkie rodzaje tagów dla języka HTML

ctags --list−kinds=hTmL --list−kinds=c++ :: wyświetli identyfikator oraz skojarzone z nimi rozszerzenia tylko dla języka HTML

ctags --langdef=ZiZu --regex-ZiZu=/^def/\1/d,definition/ --regex-ZiZu=/^cos/\1/c,cos/ --list-kinds=zizu
ctags --langdef=ZiZu --regex-ZiZu=/^cos1/\1/c,cos/ --regex-ZiZu=/^cos2/\1/c,cos/ --list-kinds=zizu

ctags --list−kinds=all > tags.txt	:: przekierowanie wszystkich rodzajów tagów dla wszystkich obsługiwanych języków do pliku

:: Błędne przypadki

ctags -list−kinds
ctags --list−kinds=cos
ctags --list−kinds=" "
Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Exuberant Ctags (H1) Program ctags (H2) --list−kinds (H3) Opis działania (H4)