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 set
en la clase Field
devuelve 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 set
en 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-complete
para 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.
clang-indexer
no ha tenido ningún desarrollo reciente, y el autor mismo dice que es "duro", así que no lo intentaré en los otros dosrtags
parece ser el más popular de los 3 enumeradosRespuestas:
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)
fuente