Il miglior indicizzatore C ++?


11

Di recente sono passato da Eclipse CDT a Spacemacs con il livello C ++ come ambiente di sviluppo.

Finora ... fantastico! Tuttavia, una delle cose che mi mancano di Eclipse è il suo indicizzatore .

Al momento sto usando GNU Global con il livello gtags . Il problema con gtags è che si tratta di un sistema di tagging , non di un indicizzatore.

Esempio:

La ricerca di riferimenti per una funzione chiamata setnella classe Fieldrestituisce 165 riferimenti nella mia base di codice, solo uno dei quali è in realtà un riferimento aField::set

La ricerca di riferimenti a setin CDT restituisce 1 risultato.

Esiste una soluzione di indicizzazione migliore che posso utilizzare in emacs?

Cercando online ho trovato questa pagina in cui sono elencati 3 indicizzatori basati su clang.

Domande:

  • Qualcuno di questi offrirà una migliore esperienza di indicizzazione?
  • Qualche suggerimento su quale utilizzare?
  • Esiste un'alternativa migliore non elencata?

Nota:

Ho anche usato clang-completeper il completamento del codice, ma ho scoperto che è molto lento. Insolitamente lento. ( Non sono l'unico a sperimentarlo ) Se una qualsiasi soluzione di indicizzazione soffrisse dello stesso problema, non funzionerebbe.


Non che sto lavorando con progetti C ++, ma forse potresti trovare contenuti utili su emacs.zeef.com nella sezione C ++?
ReneFroger,

Ho notato che clang-indexernon ha avuto sviluppi recenti, e l'autore stesso dice che è "approssimativo" - quindi non lo proverò con gli altri due
Steve Lorimer,

rtagssembra essere il più popolare dei 3 elencati
Steve Lorimer,

1
A rigor di termini, questa domanda ha a che fare con Emacs?
PythonNut,

1
Come attualmente formulato, questa domanda è molto soggettiva e probabilmente darà risposte principalmente basate sull'opinione pubblica. Modifica il tuo post per rendere la domanda più concreta.
Dan

Risposte:


4

Posso solo dire per i tag che ho usato attivamente negli ultimi 1-2 anni.

rtags funziona come previsto. È basato sul compilatore e fornisce una corretta navigazione del codice. Qualcosa che stavo cercando da 10 anni come utente di Emacs.

L'installazione può essere un po 'complicata. Consiglio di dare un'occhiata a cmake-ide, che fa automaticamente parte dell'installazione. https://github.com/atilaneves/cmake-ide

Questo post sul blog può anche aiutare https://vxlabs.com/2016/04/11/step-by-step-guide-to-c-navigation-and-completion-with-emacs-and-the-clang-based- rtags /

Puoi anche dare un'occhiata (o usare) la mia configurazione: https://github.com/jardon-u/dotfiles/blob/master/emacs.d/development/c/_init.el Uso una combinazione di cmake- ide (scoperta del progetto), ironia (per il completamento del codice) e tag (per la navigazione del codice). Sono abbastanza sicuro che questo potrebbe essere semplificato poiché alcune funzionalità si sovrappongono tra ciascuna modalità, ma il risultato è al livello che mi aspetto da un IDE moderno.

rtags fornisce anche servizi di refactoring del codice, ma è abbastanza limitato (principalmente rinominando)


1
Sono passati due anni da quando questa risposta è stata accettata, stai ancora usando i tag? Sono curioso di sapere se la documentazione sull'installazione è stata modificata o se è stata introdotta un'installazione più semplice. Qualche informazione al riguardo? Potresti condividere il tuo file setup / config?
A_P

@A_P Per qualche motivo vedo solo il tuo commento ora. Sto ancora usando i tag. Dovresti controllare di nuovo la pagina di cmake-ide + la mia configurazione (link nella mia risposta). Ho anche automatizzato gran parte dell'installazione. Controlla: github.com/jardon-u/dotfiles/blob/master/install.sh (anche se la versione di emacs potrebbe non essere la più recente. Proverò ad aggiornarla)
log0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.