Exuberant Ctags#
Program ctags#
--tag−relative#
Argument --tag−relative
nakazuje programowi ctags, aby folderem odniesienia dla ścieżek względnych (tagfile
) w tagach z bieżącej generacji był bieżący folder roboczy (domyślnie w trybie ctags) lub folder zawierający plik indeksu (domyślnie w trybie etags). W celu zachowania spójnego wyniku dla wszystkich analizowanych plików najlepiej umieszczać argument --tag−relative
jeszcze przed pierwszym analizowanym plikiem.
Opis działania#
Prawidłowe użycie argumentu najlepiej objaśnić na zapisie składniowym:
ctags --tag−relative[=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 logicznych wpływająca na folder odniesienia dla ścieżek względnych (
tagfile
) w wygenerowanych tagach (wielkość znaków nie ma znaczenia):"yes"
,"on"
,"1"
lub""
- ścieżki względne w tagach z bieżącej generacji są tworzone w odniesieniu do folderu zawierającego domyślny plik indeksu (czyli bieżącego folderu roboczego) lub folderu zawierającego własny plik indeksu wskazanego argumentem-f
lub-o
. Jest to domyślne zachowanie w trybie etags i jest ono równoznaczne z brakiem przekazania argumentu--tag−relative
."no"
,"off"
lub"0"
- ścieżki względne w tagach z bieżącej generacji są tworzone w odniesieniu do bieżącego folderu roboczego. Jest to domyślne zachowanie w trybie ctags i jest ono równoznaczne z brakiem przekazania argumentu--tag−relative
.
- 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 --tag−relative
:
- Argument
--tag−relative
jest ignorowany we wszystkich plikach, które wskazano przy użyciu ścieżek bezwzględnych (gdyż ścieżki w tagach też będą bezwzględne), a w przypadku ścieżek względnych dokładne zachowanie zależy od kilku czynników (szczegóły). - Argument
--tag−relative
można podawać wielokrotnie (separatorem jest spacja), i każdy kolejny będzie miał wpływ tylko na te pliki (wskazane ścieżkami względnymi), które występują bezpośrednio po nim. Mieszanie tagów posiadających ścieżki w różnych postaciach (bezwzględnych lub/i względnych utworzonych w odniesieniu do różnych folderów) w tym samy wywołaniu programu ctags raczej większego sensu nie ma, ale warto wiedzieć o takiej możliwości. - Argument
--tag−relative
wpływa tylko na ścieżki względne w tagach i nie modyfikuje zachowania w kilku innych obszarach związanych ze ścieżkami względnymi, np. dla pojedynczego znaku"*"
, początkowego znaku"\"
lub znaków".\"
, czy argumentów--recurse
i-R
(użytych w sposób odroczony).
Prosty przykład:
ctags --tag−relative=yes * :: tagfile tworzony względem domyślnego pliku indeksu i ma względną postać "plik.js"
ctags --tag−relative=on *
ctags --tag−relative=1 *
ctags --tag−relative="" *
ctags --tag−relative= *
ctags --tag−relative *
ctags --tag−relative=no * :: tagfile tworzony względem folderu roboczego i ma względną postać "plik.js"
ctags --tag−relative=off *
ctags --tag−relative=0 *
ctags *
ctags --tag−relative=yes D:\test\* :: tagfile ma bezwzględną postać "D:\test\plik.js"
ctags --tag−relative=yes -R :: tagfile tworzony względem domyślnego pliku indeksu i ma względną postać "plik.js"
ctags -R --tag−relative=yes :: tagfile tworzony względem domyślnego pliku indeksu i ma względną postać "plik.js"
ctags --tag−relative=no -R :: tagfile tworzony względem folderu roboczego i ma względną postać ".\plik.js"
ctags -R --tag−relative=no :: tagfile tworzony względem folderu roboczego i ma względną postać ".\plik.js"
ctags -R :: tagfile tworzony względem folderu roboczego i ma względną postać ".\plik.js"
ctags --tag−relative=yes -R * :: tagfile tworzony względem domyślnego pliku indeksu i ma względną postać "plik.js"
ctags --tag−relative=no -R * :: tagfile tworzony względem folderu roboczego i ma względną postać "plik.js"
ctags -R * :: tagfile tworzony względem folderu roboczego i ma względną postać "plik.js"
ctags --tag−relative=yes test.js test.html
ctags --tag−relative=yes --tag−relative=no test.js test.html
ctags --tag−relative=no --tag−relative=yes test.js test.html
ctags --tag−relative=yes test.js --tag−relative=no test.html
ctags --tag−relative=no test.js --tag−relative=yes test.html
ctags --tag−relative=yes -f - -R :: tagfile tworzony względem domyślnego pliku indeksu i ma względną postać "plik.js"
ctags --tag−relative=no -f - -R :: tagfile tworzony względem folderu roboczego i ma względną postać ".\plik.js"
ctags --tag−relative=yes -f folder\tags -R :: tagfile tworzony względem własnego pliku indeksu `tags`
ctags --tag−relative=no -f folder\tags -R :: tagfile tworzony względem folderu roboczego i ma względną postać ".\plik.js"
:: Błędne przypadki
ctags --tag−relative
ctags --tag−relative=cos
ctags --tag−relative=" "