Eu recomendaria absolutamente tern. Eu o descobri na metade do meu estágio (trabalhando no Node.js) no último verão e funcionou maravilhosamente com company-mode
e js2-mode
.
js2-mode
por si só é bastante poderoso. Ele pode lidar com o M-.
salto usual em um arquivo na maioria das vezes e tern
complementa-o muito bem com o salto entre arquivos / módulo (especialmente no ecossistema de nós).
O primeiro passo para usar o tern é instalar o binário. Eu pessoalmente usei o npm para fazer isso:
$ sudo npm install -g tern
Em seguida, instale no Emacs. A seção relevante do meu init.el
é:
;;; tern
(package-require 'tern)
(add-hook 'js2-mode-hook (lambda () (tern-mode t)))
A etapa final é configurar um .tern-project
arquivo no diretório raiz do seu projeto . Para projetos Node.js, eu uso isso como ponto de partida:
{
"loadEagerly": [
"src/**.js"
],
"plugins": {
"node": {
}
}
}
Se você usar company-mode
, a instalação company-tern
também é altamente recomendada:
(package-require 'company-tern)
(eval-after-load 'company
'(add-to-list 'company-backends 'company-tern))
Como nota, tive alguns problemas com o servidor andorinha-do-mar que morre ocasionalmente no verão passado (2014). A execução do seguinte corrigiu-o consistentemente:
M-: (delete-process "Tern") RET
Eu não era capaz de descobrir exatamente o que estava causando isso, mas acontecia com pouca frequência para ser pouco mais que um incômodo.
Referências:
tern
página inicial, ele diz "O manual de referência deve ser sua primeira parada para descobrir como usar o Tern. " Pelo menos eles são honestos oO