2009-06-07 7 views
7

私はEmacsのClojureモードでSLIMEとswank-clojureを使用しています。私はインデントに問題があります。たいていの場合、インデントは私が望むことを行います.TABを押すと、2つのスペースでインデントされます。しかし、たとえば、プロキシの場合、TABで取得したインデントは膨大です(10スペース)。例:Emacs Clojureモードのタブインデントが巨大な場合があります

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

...

同じことが、例えば、プロキシメソッドで行きます上記のactionPerformed。

この設定はどこにありますか、どのように変更できますか?私の理解には、Clojureモードの問題でなければなりません。

+1

私が手にインデントがあなたの例とは異なっている、そして実際に「ボタン」でより多くのスペース(「(プロキシ」のラインアップを持っており、「[ActionListner]」と同様に並ぶ「(のactionPerformed」。あなたが使用しているclojure.elを指すことができますか? –

+0

私はこれも見ています...大量のインデントを行うとき、コメント。私はclojure-mode 1.71を使用していますELPA経由 – justinhj

答えて

15

Clojureインデントは、特に指定しないかぎり、関数の最初の引数で2番目の行をインデントする行にインデントすることです。次の行は、前の行の下に字下げされています(入れ子に変更がないと仮定します)。

(some-function 
arg1 
arg2 
arg3 ...) 

あなたは変数lisp-indent-offsetを変更する場合は、これはインデントスキームは、上記と力に説明し上書きします:

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

あるいは、最初の引数が二行目にあるとき、例えば

インデントされる式の2行目は、関数呼び出しの開始よりも多くの列がlisp-indent-offsetです。

(setq lisp-indent-offset 2) 
+2

+1まだ3年後に役立つ – doda

8

clojure modeで「常に2つのスペース」オプションあります:

だから、おそらく以下は、あなたが探しているインデントになるだろう。 .emacsまたは​​に次の行を追加して設定できます。

(setq clojure-defun-style-default-indent t) 
関連する問題