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 set
w klasie Field
zwraca 165 referencji w mojej bazie kodu, z których tylko jedna jest w rzeczywistości referencjąField::set
Wyszukiwanie odniesień set
w 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-complete
do 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.
clang-indexer
nie ma żadnych ostatnich zmian, a sam autor mówi, że jest „szorstki” - więc nie spróbuję tego w pozostałych dwóchrtags
wydaje się być najbardziej popularnym z 3 wymienionychOdpowiedzi:
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)
źródło