Actualmente estoy trabajando en un proyecto de JavaScript con Backbone.js y me pregunto cómo puedo navegar entre archivos, según las definiciones de métodos y objetos.
Por ejemplo, sigo referencias a algunos de mis puntos de vista en el objeto global App.Views
, y me gustaría ser capaz de navegar a cada definición individual ( App.Views.Home
, App.Views.SomePage
, etc.) si encuentro uno. Además, se utilizan muchos cierres para evitar fugas de espacio de nombres, y quiero saber cómo puedo seguir automáticamente estas definiciones.
Lo he visto tern
pero no hay muchos ejemplos sobre cómo configurarlo, por lo que no he podido hacer mucho.
¿Cuáles son algunas buenas herramientas para esto?
init-file
javascript
tern
caisah
fuente
fuente
tern
página de inicio dice "El manual de referencia debería ser su primera parada para descubrir cómo usar Tern. " Al menos son honestos oORespuestas:
Absolutamente recomendaría tern. Lo descubrí a mitad de mi pasantía (trabajando en Node.js) el verano pasado, y funcionó maravillosamente con
company-mode
yjs2-mode
.js2-mode
Por sí mismo es bastante poderoso. Puede manejar elM-.
salto habitual dentro de un archivo la mayor parte del tiempo, y lotern
complementa muy bien con el salto entre archivos / módulos (especialmente en el ecosistema de nodos).El primer paso para usar tern es instalar el binario. Yo personalmente usé npm para hacerlo:
Luego instale en Emacs. La sección relevante de mi
init.el
es:El paso final es configurar un
.tern-project
archivo en el directorio raíz de su proyecto . Para los proyectos de Node.js, uso esto como punto de partida:Si lo usa
company-mode
, la instalacióncompany-tern
también es muy recomendable:Como nota, tuve algunos problemas con el servidor tern muriendo ocasionalmente el verano pasado (2014). Ejecutar lo siguiente lo solucionó constantemente:
No pude averiguar exactamente qué lo estaba causando, pero sucedió con poca frecuencia como para ser poco más que una molestia.
Referencias
.tern-project
archivofuente
app.eventBus = _({}).extend(Backbone.Events);
y en otro que tengoapp.eventBus.trigger("changeURL","");
. Pero cuando lo hagotern-find-definition
para mi últimoeventBus
, no se encuentra ninguna definición . ¿Hay algo que hago mal, o simplementetern
no es compatible con el tipo de comportamiento que imagino?