Exuberant Ctags#
Program ctags#
W projekcie Exuberant Ctags indeksem jest zwykły plik tekstowy, gdzie w każdej linii znajduje się osobny tag. Do wygenerowania pliku indeksu pod systemem Windows służy binarny program ctags.exe
. Ostatnią jego wersję 5.8 pochodzącą z 9 lipca 2009 roku można pobrać ze strony domowej, choć w razie potrzeby wszystkie poprzednie wersje ulokowano także na stornie SourceForge.
W późniejszym czasie pojawiło się jeszcze kilka poprawek w kodzie źródłowym projektu (gałąź trunk), ale dla Windowsa nigdy nie wypuszczono nowego pliku binarnego. W przypadku Linuksa wciąż publikuje się nowsze wersje programu ctags dla różnych dystrybucji (Ubuntu, Debian). W razie potrzeby należy samodzielnie skompilować program z jakiegoś nowszego kodu źródłowego.
Istnieje oficjalna instrukcja dla programu ctags, ale zawiera bardzo ogólnikowe informacje (w dodatku po angielsku), co w pewnych sytuacjach może prowadzić do lekkiej konsternacji. Dla lepszego zrozumienia tematu przeanalizujmy raz jeszcze program ctags oraz każdy jego argument, ale tym razem w sposób bardziej szczegółowy.
Opis działania#
Prawidłowe użycie programu ctags można wyrazić ogólnym zapisem składniowym:
ctags [--argument | -argument] [path] etags [--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. - etags - jak wyżej, ale symbolizuje uruchomienie programu ctags w trybie etags.
- argument - jeden lub więcej opcjonalnych argumentów dostrajających działanie programu ctags. Argumenty występują w formie dłuższej (nazwa poprzedzona znakami
"--"
) lub skróconej (nazwa poprzedzona znakiem"-"
). - path - jedna lub więcej opcjonalnych ścieżek do plików/folderów, które będą analizowane przy generowaniu tagów (szczegóły).
Oto kilka dodatkowych uwag, o których warto pamiętać:
- W zależności od sposobu użycia i późniejszego przetwarzania istnieje kilka rodzajów argumentów.
- Argumenty można podawać bezpośrednio w wywołaniu programu ctags, jak i w różnych plikach konfiguracyjnych. Zwykle robi się to w identyczny sposób, ale istnieją też pewne różnice (szczegóły).
- Nazwy argumentów są czułe na wielkość znaków. W przypadku ich wartości wszystko zależy już od konkretnego argumentu.
- Kolejność występowania argumentów zwykle ma znaczenie. Większość argumentów może pojawić się w dowolnym miejscu wiersza poleceń, wpływając tylko na te pliki, które następują po tym argumencie. Kilka argumentów powinno umieścić się przed pierwszą nazwą pliku aby uzyskać spójny wynik dla wszystkich tych plików (np.
--format
czy-e
). - Niektóre argumenty mogą wystąpić tylko raz w danym wywołaniu (jeśli jest ich więcej to użyta zostanie wartość tego ostatniego), inne z kolei mogą występować wielokrotnie i dynamicznie wpływają na działanie programu.
- Niektóre argumenty są ignorowane lub przydatne tylko wtedy, gdy są używane podczas pracy w trybie etags.
- Skrócone argumenty nieposiadające żadnej wartości można wymieniać kolejno (bez spacji) za pojedynczym znakiem
"-"
. Dla przykładu użycie-VRa
jest równoważne z użyciem-V -R -a
. - Wartości w skróconych argumentach (jeśli występują) podaje się od razu za nazwą argumentu (bez dodatkowej spacji) lub po dodaniu dodatkowej spacji. Otoczenie wartości podwójnym cudzysłowem jest opcjonalne. Dla przykładu użycie
-fplik
lubf"plik"
jest równoważne z użyciem-f plik
lub-f "plik"
. - Wartości w dłuższych argumentach podaje się poprzez umieszczenie znaku
"="
za jego nazwą. Otoczenie wartości podwójnym cudzysłowem jest opcjonalne. Dla przykładu użycie--sort=yes
jest równoważne z użyciem--sort="yes"
. - Wartości logiczne typu
"=yes|no"
używane w dłuższych argumentach można pominąć, co jest równoznaczne z niejawnym użyciem wartości"=yes"
. Dla przykładu użycie--sort
lub--sort=
jest równoważne z niejawnym użyciem--sort=yes
. Warto podkreślić, że wartości"=1"
i"=on"
są synonimami dla wartości"=yes"
oraz wartości"=0"
i"=off"
są synonimami dla wartości"=no"
. - Wywołanie programu bez określenia chociaż jednego pliku do analizy zwróci komunikat:
ctags: No files specified. Try "ctags --help".