2012-05-24 26 views
5

Standardowy GNU etags nie obsługuje rekurencyjnego spaceru katalogów wykonanych przez bujny ctags -R. Jeśli mam tylko dostęp do etag GNU, w jaki sposób mogę użyć magii powłoki bash, aby uzyskać etagi do tworzenia tabeli TAGS dla wszystkich plików C++ *.cpp i *.h w bieżącym katalogu i wszystkich katalogów poniżej bieżącego rekursywnie w celu utworzenia TAGÓW tabela w bieżącym katalogu, która ma poprawną nazwę ścieżki dla emacs, aby rozwiązać wpisy tabeli TAGS.Jak używać magii powłoki do tworzenia etablów rekurencyjnych za pomocą etagów GNU?

+0

Jak to się robi? "masz tylko dostęp do etatów GNU"? Wyraźne ctags jest swobodnie dostępne na wielu platformach. Nie możesz go zainstalować? –

+0

Pracodawca nie chce zainstalować nieautoryzowanego oprogramowania, wolałby nie walczyć z tym, jeśli będę mógł pracować z wykorzystaniem dostarczonych "etagów". – WilliamKF

Odpowiedz

12

Urządzenie Emacs Wiki jest często dobrym źródłem odpowiedzi na typowe problemy lub najlepsze praktyki. Dla konkretnego problemu istnieje rozwiązanie dla systemów Windows i uniksach:

http://www.emacswiki.org/emacs/RecursiveTags#toc2

Zasadniczo uruchomić polecenie, aby znaleźć wszystkie .cpp i wszystkie .h plików (selektorów plików zmiana jeśli używasz różnych zakończeń plików, takich jak na przykład , .C) i potokuj wynik w etagach. Ponieważ Windows nie wydaje się mieć xargs, potrzebujesz nowszej wersji etagów, które można odczytać ze standardowego wejścia (zwróć uwagę na kreskę na końcu linii, która symbolizuje standardowe wejście). Oczywiście, jeśli używasz najnowszej wersji etagów, możesz również użyć parametru dash zamiast xargs.

Okna:

cd c:\source-root 
dir /b /s *.cpp *.h *.hpp | etags --your_options - 

Unix:

cd /path/to/source-root 
find . -name "*.cpp" -print -or -name "*.h" -print | xargs etags --append 
0

Użyj find. znaleźć człowieka, jeśli chcesz.

+1

i też człowiek xargs, założę się. . . . . lub po prostu zainstaluj żywiołowy i użyj jego etags ... – jthill

+0

Dlaczego warto używać xargs, gdy istnieje '-exec command +'? – jordanm

1

To polecenie tworzy plik etags z domyślną nazwę "tagów" dla .c, .cpp, .cpp, .hpp, Pliki .HPp .h rekursywnie

find . -regex ".*\.[cChH]\(pp\)?" -print | etags -