Ich habe kürzlich von Eclipse CDT auf Spacemacs mit der C ++ - Schicht als Entwicklungsumgebung umgestellt .
Bisher ... großartig! Eines der Dinge, die ich an Eclipse vermisse, ist der Indexer .
Im Moment verwende ich GNU Global mit der Ebene gtags . Das Problem mit gtags ist, dass es sich um ein Tagging- System handelt, nicht um einen Indexer.
Beispiel:
Wenn Sie nach Referenzen für eine set
in der Klasse aufgerufene Funktion Field
suchen, werden 165 Referenzen in meiner Codebasis zurückgegeben, von denen nur eine tatsächlich eine Referenz istField::set
Die Suche nach Verweisen auf set
in CDT liefert 1 Ergebnis.
Gibt es eine bessere Indizierungslösung, die ich in Emacs verwenden kann?
Online-Suche Ich habe diese Seite gefunden, auf der 3 klirrbasierte Indexer aufgelistet sind.
Fragen:
- Bietet eine dieser Funktionen eine bessere Indizierung?
- Irgendwelche Vorschläge, welche man verwenden soll?
- Gibt es eine bessere Alternative, die nicht aufgeführt ist?
Hinweis:
Ich habe auch clang-complete
für die Code-Vervollständigung verwendet, aber festgestellt, dass es sehr langsam ist. Ungewöhnlich langsam. ( Ich bin nicht der einzige, der dies erlebt. ) Wenn eine Indizierungslösung unter demselben Problem leiden würde, würde dies nicht funktionieren.
clang-indexer
letzter Zeit keine Entwicklung gegeben hat, und der Autor selbst sagt, es sei "rau" - also werde ich das bei den anderen beiden nicht versuchenrtags
scheint der beliebteste der 3 aufgelisteten zu seinAntworten:
Ich kann nur für rtags sagen, dass ich in den letzten 1-2 Jahren aktiv verwendet habe.
rtags funktioniert wie erwartet. Es basiert auf dem Compiler und bietet eine korrekte Code-Navigation. Etwas, nach dem ich in den letzten 10 Jahren als Emacs-Benutzer gesucht habe.
Das Setup kann etwas schwierig sein. Ich empfehle einen Blick auf cmake-ide, das einen Teil des Setups automatisch ausführt. https://github.com/atilaneves/cmake-ide
Dieser Blog-Beitrag kann auch https://vxlabs.com/2016/04/11/step-by-step-guide-to-c-navigation-and-completion-with-emacs-and-the-clang-based- helfen rtags /
Sie können auch meine eigene Konfiguration überprüfen (oder verwenden): https://github.com/jardon-u/dotfiles/blob/master/emacs.d/development/c/_init.el Ich verwende eine Kombination von cmake- ide (Projekterkennung), Ironie (zur Code-Vervollständigung) und rtags (zur Code-Navigation). Ich bin mir ziemlich sicher, dass dies vereinfacht werden könnte, da sich einige Funktionen zwischen den einzelnen Modi überschneiden, aber das Ergebnis liegt auf dem Niveau, das ich von einer modernen IDE erwarte.
rtags bietet auch Code-Refactoring-Funktionen, die jedoch recht begrenzt sind (meistens Umbenennen).
quelle