Najlepszy indeksator C ++?

11

Niedawno przeszedłem z Eclipse CDT na Spacemacs z warstwą C ++ jako moim środowiskiem programistycznym.

Jak dotąd ... super! Jedną z rzeczy, za którymi tęsknię w Eclipse, jest indeksator .

Obecnie używam GNU Global z warstwą gtags . Problem z gtagami polega na tym, że jest to system znakowania , a nie indeksator.

Przykład:

Wyszukiwanie referencji dla funkcji wywoływanej setw klasie Fieldzwraca 165 referencji w mojej bazie kodu, z których tylko jedna jest w rzeczywistości referencjąField::set

Wyszukiwanie odniesień setw CDT zwraca 1 wynik.

Czy jest lepsze rozwiązanie indeksowania, którego można używać w emacsie?

Przeszukując online znalazłem tę stronę, na której wymieniono 3 indeksatory oparte na clang.

Pytania:

  • Czy któryś z nich zapewni lepszą funkcjonalność indeksowania?
  • Wszelkie sugestie, z których korzystać?
  • Czy jest lepsza alternatywa, której nie ma na liście?

Uwaga:

Używałem również clang-completedo uzupełniania kodu, ale odkryłem, że jest on bardzo wolny. Niezwykle wolny. ( Nie jestem jedynym, który tego doświadczył ) Jeśli jakiekolwiek rozwiązanie indeksujące miałoby ten sam problem, nie zadziałałoby.

Steve Lorimer
źródło
Nie dlatego, że pracuję z projektami w C ++, ale może możesz znaleźć przydatne treści na emacs.zeef.com w sekcji C ++?
ReneFroger
Zauważyłem, że clang-indexernie ma żadnych ostatnich zmian, a sam autor mówi, że jest „szorstki” - więc nie spróbuję tego w pozostałych dwóch
Steve Lorimer
rtagswydaje się być najbardziej popularnym z 3 wymienionych
Steve Lorimer
1
Ściśle mówiąc, czy to pytanie ma coś wspólnego z Emacsem?
PythonNut
1
Jak obecnie sformułowano, pytanie to jest bardzo subiektywne i prawdopodobnie przyniesie odpowiedzi oparte głównie na opiniach. Edytuj swój post, aby pytanie było bardziej konkretne.
Dan

Odpowiedzi:

4

Mogę tylko powiedzieć dla tagów, że używam aktywnie przez ostatnie 1-2 lata.

rtags działa zgodnie z oczekiwaniami. Jest oparty na kompilatorze i zapewnia poprawną nawigację po kodzie. Czego szukałem przez ostatnie 10 lat jako użytkownik emacsa.

Konfiguracja może być nieco trudna. Polecam przyjrzeć się cmake-ide, która automatycznie wykonuje część instalacji. https://github.com/atilaneves/cmake-ide

Ten post na blogu może również pomóc https://vxlabs.com/2016/04/11/step-by-step-guide-to-c-navigation-and-completion-with-emacs-and-the-clang-based- rtags /

Możesz także przejrzeć (lub użyć) moją własną konfigurację: https://github.com/jardon-u/dotfiles/blob/master/emacs.d/development/c/_init.el Używam kombinacji cmake- ide (odkrywanie projektu), ironia (do uzupełniania kodu) i rtags (do nawigacji po kodzie). Jestem prawie pewien, że można to uprościć, ponieważ niektóre funkcje pokrywają się między poszczególnymi trybami, ale wynik jest na poziomie, którego oczekuję od nowoczesnego IDE.

rtags zapewnia również funkcje refaktoryzacji kodu, ale jest dość ograniczony (głównie zmiana nazwy)

log0
źródło
1
Minęły dwa lata, odkąd ta odpowiedź została zaakceptowana, czy nadal używasz tagów rtag? Jestem ciekawy, czy zmieniono dokumentację dotyczącą konfiguracji lub wprowadzono łatwiejszą konfigurację. Wszelkie informacje na ten temat? Czy możesz udostępnić plik instalacyjny / konfiguracyjny?
A_P
@A_P Z jakiegoś powodu widzę tylko twój komentarz. Nadal używam tagów rtag. Powinieneś ponownie sprawdzić stronę cmake-ide + moja konfiguracja (link w mojej odpowiedzi). Zautomatyzowałem również większość instalacji. Sprawdź: github.com/jardon-u/dotfiles/blob/master/install.sh (chociaż wersja emacsa może nie być najnowsza. Spróbuję to zaktualizować)
log0