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 set
em classe Field
retorna 165 referências na minha base de código, apenas uma das quais é realmente uma referência aField::set
A pesquisa de referências set
no 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-complete
para 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.
clang-indexer
não houve nenhum desenvolvimento recente, e o próprio autor diz que é "difícil" - então não vou tentar isso nos outros doisrtags
parece ser o mais popular dos três listadosRespostas:
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)
fonte