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
y js2-mode
.
js2-mode
Por sí mismo es bastante poderoso. Puede manejar el M-.
salto habitual dentro de un archivo la mayor parte del tiempo, y lo tern
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:
$ sudo npm install -g tern
Luego instale en Emacs. La sección relevante de mi init.el
es:
;;; tern
(package-require 'tern)
(add-hook 'js2-mode-hook (lambda () (tern-mode t)))
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:
{
"loadEagerly": [
"src/**.js"
],
"plugins": {
"node": {
}
}
}
Si lo usa company-mode
, la instalación company-tern
también es muy recomendable:
(package-require 'company-tern)
(eval-after-load 'company
'(add-to-list 'company-backends 'company-tern))
Como nota, tuve algunos problemas con el servidor tern muriendo ocasionalmente el verano pasado (2014). Ejecutar lo siguiente lo solucionó constantemente:
M-: (delete-process "Tern") RET
No pude averiguar exactamente qué lo estaba causando, pero sucedió con poca frecuencia como para ser poco más que una molestia.
Referencias
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 oO