Je recommanderais absolument la sterne. Je l'ai découvert à mi-chemin de mon stage (travaillant dans Node.js) l'été dernier, et cela a fonctionné à merveille avec company-mode
et js2-mode
.
js2-mode
en soi est assez puissant. Il peut gérer le M-.
saut habituel dans un fichier la plupart du temps, et le tern
complète bien avec le saut inter-fichier / module (en particulier dans l'écosystème de nœuds).
La première étape de l'utilisation de tern est l'installation du binaire. J'ai personnellement utilisé npm pour le faire:
$ sudo npm install -g tern
Installez ensuite dans Emacs. La section pertinente de mon init.el
est:
;;; tern
(package-require 'tern)
(add-hook 'js2-mode-hook (lambda () (tern-mode t)))
La dernière étape consiste à configurer un .tern-project
fichier dans le répertoire racine de votre projet . Pour les projets Node.js, je l'utilise comme point de départ:
{
"loadEagerly": [
"src/**.js"
],
"plugins": {
"node": {
}
}
}
Si vous utilisez company-mode
, l'installation company-tern
est également fortement recommandée:
(package-require 'company-tern)
(eval-after-load 'company
'(add-to-list 'company-backends 'company-tern))
Comme note, j'ai eu quelques problèmes avec le serveur sterne qui mourait occasionnellement l'été dernier (2014). L'exécution des éléments suivants l'a corrigé de manière cohérente:
M-: (delete-process "Tern") RET
Je n'étais pas en mesure de comprendre exactement ce qui en était la cause, mais cela arrivait assez rarement pour être un peu plus qu'une nuisance.
Références:
tern
page d'accueil, il est dit "Le manuel de référence devrait être votre premier arrêt pour comprendre comment utiliser Tern. " Au moins, ils sont honnêtes oO