Question

J'utilise le mode js2-pour travailler avec javascript emacs et pour la plupart, il est très utile. Cependant, les méthodes sont terriblement frustrant indenter lorsque vous travaillez avec jQuery, fermetures et JSON ... par exemple, le code que je veux être en retrait comme ceci:

var foo = jQuery('#mycontainer ul li').each(function(el){
    var bar = el.html();
});

Transforme comme:

var foo = jQuery('#mycontainer ul li').each(function(el){
                                          var bar = el.html();
                                       });

Est-il possible que je peux éteindre tous les « aides indentation » et juste qu'Emacs insérer N espaces quand je frappe la touche de tabulation? Je sais-indentation manuel est un pas en arrière, mais ayant un code lisible est, à mon humble avis, plus utile qu'un outil qui ne fonctionne pas comme prévu.

Était-ce utile?

La solution

Je suppose que je vais faire une réponse complète au lieu d'un commentaire; espresso-mode est inclus avec Emacs, et est conçu pour être un mode Javascript pour Emacs (au lieu d'un mode Javascript qui arrive à courir à l'intérieur d'Emacs). Il fonctionne comme modes de programmation réguliers, et arrive aussi à des choses indent la façon dont vous le souhaitez.

Autres conseils

Pas une réponse directe à votre question, mais ici est une fourchette de js2-mode qui a amélioré indenter.

L'une des améliorations est que votre exemple de code est indenté la façon dont vous demandez ici.

Découvrez cette solution, cartes fonction indentation dans js2 mode à utiliser partiellement en retrait de esresso mode (maintenant connu sous le nom mode js inclus dans emacs 23.2 et plus récents):

http://mihai.bazon.net/projects/ montage-javascript-à-emacs-JS2 mode

fonctionne exactement comme je l'attends indentation dans emacs au travail et vous obtenez toujours la génialité de l'analyse syntaxique du js2 mode.

Avez-vous essayé de nouvelles versions de js2 mode? On dirait qu'il ya une solution à: http: // code. google.com/p/js2-mode/issues/detail?id=94

JS2-mode prend en charge "rebond" indentation; vous pouvez appuyer sur l'onglet plusieurs fois pour choisir différents niveaux indentations probablement, de sorte que vous pourriez être en mesure d'obtenir l'effet que vous voulez de cette façon:

(setq js2-bounce-indent-p t)

Vous pouvez simplement lier TAB pour s'insérer:

(add-hook 'js2-mode-hook 'my-js2-mode-hook)
(defun my-js2-mode-hook ()
  (define-key js2-mode-map [tab] 'self-insert-command))

(Mais la meilleure solution serait, bien entendu, de savoir pourquoi le mode pense qu'il a besoin indentation tant pour les fonctions anonymes, et le fixer.)

Une autre alternative est JS3 mode . Il indente comme celui-ci par défaut, mais il semble y avoir quelques options qui pourraient vous permettre de le tordre à votre goût.

var foo = jQuery('#mycontainer ul li').each(function(el){
            var bar = el.html();
          });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top