¿El mejor indexador de C ++?

11

Recientemente me cambié de Eclipse CDT a Spacemacs con la capa C ++ como mi entorno de desarrollo.

Hasta ahora ... ¡increíble! Sin embargo, una de las cosas que extraño de Eclipse es su indexador .

Por el momento estoy usando GNU Global con la capa gtags . El problema con gtags es que es un sistema de etiquetado , no un indexador.

Ejemplo:

La búsqueda de referencias para una función llamada seten la clase Fielddevuelve 165 referencias en mi base de código, solo una de las cuales es en realidad una referencia aField::set

La búsqueda de referencias seten CDT devuelve 1 resultado.

¿Existe una mejor solución de indexación que pueda usar en emacs?

Buscando en línea encontré esta página donde se enumeran 3 indexadores basados ​​en clang.

Preguntas:

  • ¿Alguno de estos ofrecerá una mejor experiencia de indexación?
  • ¿Alguna sugerencia sobre cuál usar?
  • ¿Existe alguna alternativa mejor que no esté en la lista?

Nota:

También lo he estado usando clang-completepara completar el código, pero he descubierto que es muy lento. Inusualmente lento. ( No soy el único en experimentar esto ) Si alguna solución de indexación sufriera el mismo problema, no funcionaría.

Steve Lorimer
fuente
No es que esté trabajando con proyectos de C ++, pero ¿tal vez pueda encontrar contenidos útiles en emacs.zeef.com en la sección de C ++?
ReneFroger
Me he dado cuenta de que clang-indexerno ha tenido ningún desarrollo reciente, y el autor mismo dice que es "duro", así que no lo intentaré en los otros dos
Steve Lorimer,
rtagsparece ser el más popular de los 3 enumerados
Steve Lorimer
1
Hablando estrictamente, ¿esta pregunta tiene algo que ver con Emacs?
PythonNut
1
Como se formula actualmente, esta pregunta es muy subjetiva y es probable que produzca respuestas basadas principalmente en opiniones. Edite su publicación para hacer la pregunta más concreta.
Dan

Respuestas:

4

Solo puedo decir para rtags que he estado usando activamente durante los últimos 1-2 años.

rtags funciona como se esperaba. Está basado en el compilador y proporciona una navegación de código correcta. Algo que he estado buscando durante los últimos 10 años como usuario de emacs.

La configuración puede ser un poco complicada. Recomiendo echar un vistazo a cmake-ide, que hace parte de la configuración automáticamente. https://github.com/atilaneves/cmake-ide

Esta publicación de blog también puede ayudar https://vxlabs.com/2016/04/11/step-by-step-guide-to-c-navigation-and-completion-with-emacs-and-the-clang-based- rtags /

También puede echar un vistazo (o usar) mi propia configuración: https://github.com/jardon-u/dotfiles/blob/master/emacs.d/development/c/_init.el Uso una combinación de cmake- ide (descubrimiento del proyecto), ironía (para completar el código) y rtags (para la navegación del código). Estoy bastante seguro de que esto podría simplificarse ya que algunas funcionalidades se superponen entre cada modo, pero el resultado está en el nivel que espero de un IDE moderno.

rtags también proporciona funciones de refactorización de código, pero es bastante limitado (principalmente cambio de nombre)

log0
fuente
1
Han pasado dos años desde que se aceptó esta respuesta, ¿sigues usando rtags? Tengo curiosidad por saber si la documentación sobre la configuración se modificó o si se introdujo una configuración más fácil. ¿Alguna información sobre eso? ¿Podría compartir su archivo de instalación / configuración?
A_P
@A_P Por alguna razón, solo estoy viendo tu comentario ahora. Todavía estoy usando rtags. Debería verificar nuevamente la página cmake-ide + mi configuración (enlace en mi respuesta). También automaticé la mayor parte de la instalación. Compruebe: github.com/jardon-u/dotfiles/blob/master/install.sh (aunque la versión de emacs podría no ser la última. Intentaré actualizar esto)
log0