2009-06-07 8 views
7

J'utilise le mode Clojure d'Emacs avec SLIME et swank-clojure. J'ai un problème avec l'indentation. La plupart du temps l'indentation fait ce que je veux: elle indente avec 2 espaces quand j'appuie sur TAB. Mais, par exemple, dans le cas d'un proxy, l'indentation que je reçois avec TAB est énorme: 10 espaces. Exemple:Emacs mode Clojure onglet-indentation énorme dans certains cas

(defn- create-frame [] 
    (let [frame (JFrame. "Hello Swing") 
     button (JButton. "Click Me")] 
    (.addActionListener button 
       (proxy [ActionListener] [] 
         (actionPerformed [evt] 

...

va de même avec les méthodes de substitution, par exemple actionPerformed ci-dessus.

Où est ce paramètre et comment puis-je le changer? À ma connaissance, cela doit être le problème du mode Clojure.

+1

L'indentation que je reçois est différent de votre exemple, et a fait plus d'espaces (les « (proxy » lignes avec « bouton » et « [ActionListner] » et « (ActionPerformed » aligner aussi bien. Pourriez-vous pointer vers le clojure.el que vous utilisez? –

+0

Je vois ça aussi ... indentation massive en faisant des commentaires J'utilise clojure-mode 1.71 via ELPA – justinhj

Répondre

15

L'indentation de Clojure est basée sur une indentation Lisp qui, sauf indication contraire, indente la deuxième ligne à s'aligner sur le premier argument de la fonction. Les lignes suivantes sont indentées sous la ligne précédente (en supposant que l'imbrication ne change pas).

Par exemple

(some-function arg1 arg2 arg3 
       arg4-on-second-line) 

Ou, lorsque le premier argument est sur la deuxième ligne:

(some-function 
arg1 
arg2 
arg3 ...) 

Cependant, si vous modifiez la lisp-indent-offset variable Prioritaire sur le schéma d'indentation expliqué ci-dessus et les forces la deuxième ligne d'expressions à indenter lisp-indent-offset plus de colonnes que le début de l'appel de fonction.

Alors, peut-être la suivante auriez-vous obtenir l'indentation que vous cherchez:

(setq lisp-indent-offset 2) 
+2

+1 encore utile 3 ans plus tard – doda

8

Il y a option "Toujours 2 espaces" en clojure mode. Vous pouvez le définir en ajoutant la ligne suivante dans votre .emacs ou init.el.

(setq clojure-defun-style-default-indent t) 
Questions connexes