¿Tiene emacs una función o biblioteca que le permita al usuario ir a la declaración de función incluso si se definió en otro archivo?
Si es así, ¿para qué idiomas hay soporte?
La inspiración para esta pregunta proviene del siguiente artículo que habla sobre algunas de las razones por las cuales emacs nunca podrá competir con los IDE.
http://henrikwarne.com/2012/06/17/programmer-productivity-emacs-versus-intellij-idea/
irony-clang
a este fin. ¿Leíste los comentarios sobre el artículo?Respuestas:
Puede saltar a cualquier definición / referencia de un proyecto completo tan grande como el árbol fuente del kernel de Linux (más de 36k) en un instante. Vea mi guía C / C ++ para más detalles. Para C / C ++, sugiero usar GNU Global que sea compatible con C, C ++, Yacc, Java, PHP4 y ensamblaje.
La clave es que, si desea tener características IDE de un idioma, debe instalar el complemento de ese idioma. Aquí hay algunos paquetes para lenguajes dinámicos que conozco:
js2-mode
hace, ver la descripción ; pero, en esencia,js2-mode
es un completo analizador de Javascript que genera un AST para hacer las funciones IDE adecuadas. Si instalaskewer-mode
de lo que tendrájs2-mode
por defecto, ya queskewer-mode
depende de ello.También puede usar
ctags
para admitir muchos idiomas, como script de shell o Tcl ...fuente
j2-mode
mi respuesta.anaconda
puede ser una solución más específica para el salto de definición en Python.Me encontré con un problema similar con emacs, así que hice Dumb Jump . Probé muchas de las soluciones mencionadas en la respuesta aceptada, pero siempre me encontré con uno o más de los siguientes problemas:
Tenía muchas ganas de una solución que "simplemente funcionó" y no requirió personalización o configuración. Es decir, quería clonar un repositorio aleatorio en Github y navegar por él como cualquier otro de mis propios proyectos.
En este momento Dumb Jump tiene soporte básico para:
Está disponible a través de MELPA y GitHub. Los temas y relaciones públicas son más que bienvenidos.
fuente
La solución principal para esto en emacs es usar archivos TAGS, que son creados por programas como etags o gtags. Yo mismo uso (y recomiendo) etiquetas exuberantes y etags-select.el para ayudarlo a reducir los destinos cuando el símbolo de búsqueda se encuentra en varios destinos. Los idiomas admitidos son bastante numerosos, consulte los manuales de las herramientas individuales. Incluso hay soporte para agregar su propio idioma, por lo que puede proporcionar una expresión regular que instruya a los ctags cómo aislar las etiquetas que le interesan.
fuente
ctags -e -R *
desde el directorio raíz lo configurará para usted.