Melhor indexador C ++?

11

Recentemente, mudei do Eclipse CDT para o Spacemacs com a camada C ++ como meu ambiente de desenvolvimento.

Até agora ... incrível! No entanto, uma das coisas que sinto falta do Eclipse é seu indexador .

No momento, estou usando o GNU Global com a camada gtags . O problema com o gtags é que é um sistema de marcação , não um indexador.

Exemplo:

A pesquisa de referências para uma função chamada setem classe Fieldretorna 165 referências na minha base de código, apenas uma das quais é realmente uma referência aField::set

A pesquisa de referências setno CDT retorna 1 resultado.

Existe uma solução de indexação melhor que eu possa usar no emacs?

Pesquisando on-line, encontrei esta página na qual estão listados 3 indexadores baseados em clang.

Questões:

  • Algum deles oferecerá uma melhor experiência de indexação?
  • Alguma sugestão para usar?
  • Existe uma alternativa melhor não listada?

Nota:

Eu também tenho usado clang-completepara conclusão de código, mas achei muito lento. Inusitavelmente lento. ( Não sou o único a experimentar isso ) Se qualquer solução de indexação sofria do mesmo problema, não funcionaria.

Steve Lorimer
fonte
Não que eu esteja trabalhando com projetos C ++, mas talvez você possa encontrar conteúdos úteis no emacs.zeef.com na seção C ++?
ReneFroger
Notei que clang-indexernão houve nenhum desenvolvimento recente, e o próprio autor diz que é "difícil" - então não vou tentar isso nos outros dois
Steve Lorimer
rtagsparece ser o mais popular dos três listados
Steve Lorimer
11
A rigor, essa pergunta tem algo a ver com o Emacs?
PythonNut
11
Como atualmente formulada, essa pergunta é muito subjetiva e provavelmente produzirá respostas baseadas principalmente em opiniões. Edite sua postagem para tornar a pergunta mais concreta.
Dan

Respostas:

4

Só posso dizer pelas tags que tenho usado ativamente nos últimos 1-2 anos.

rtags funciona como esperado. É baseado em compilador e fornece navegação de código correta. Algo que tenho procurado nos últimos 10 anos como usuário do emacs.

A instalação pode ser um pouco complicada. Eu recomendo dar uma olhada no cmake-ide, que faz parte da instalação automaticamente. https://github.com/atilaneves/cmake-ide

Esta postagem no blog também pode ajudar https://vxlabs.com/2016/04/11/step-by-step-guide-to-c-navigation-and-completion-with-emacs-and-the-clang-based- rtags /

Você também pode dar uma olhada (ou usar) minha própria configuração: https://github.com/jardon-u/dotfiles/blob/master/emacs.d/development/c/_init.el Eu uso uma combinação de cmake- ide (descoberta do projeto), ironia (para conclusão do código) e rtags (para navegação no código). Tenho certeza de que isso poderia ser simplificado, pois algumas funcionalidades se sobrepõem entre cada modo, mas o resultado está no nível que estou esperando de um IDE moderno.

O rtags também fornece recursos de refatoração de código, mas é bastante limitado (principalmente renomeando)

log0
fonte
11
Faz dois anos desde que essa resposta foi aceita, você ainda está usando rtags? Estou curioso para saber se a documentação da instalação foi alterada ou se a instalação mais fácil foi introduzida. Alguma informação sobre isso? Você poderia compartilhar seu arquivo de instalação / configuração?
A_P 04/02/19
@A_P Por alguma razão, só estou vendo seu comentário agora. Eu ainda estou usando rtags. Você deve verificar novamente a página cmake-ide + minha configuração (link na minha resposta). Também automatizei a maior parte da instalação. Confira: github.com/jardon-u/dotfiles/blob/master/install.sh (embora a versão emacs pode não ser a mais recente Vou tentar atualizar isso.)
log0