2009-06-07 60 views
7

我正在使用Emacs的Clojure模式,SLIME和swank-clojure。我有一個縮進問題。大多數情況下縮進都是我想要的:按TAB時縮進2個空格。但是,例如,在代理的情況下,我用TAB獲得的縮進很大:10個空格。例如:Emacs Clojure模式tab-indentation在某些情況下很大

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

...

這同樣與代理的方法,例如actionPerformed上面。

這個設置在哪裏,我該如何改變它?據我的理解,它必須是Clojure模式的問題。

+1

我得到的縮進比你的例子不同,實際上有更多的空間(下稱「(代理」線與「按鈕」,並且「[ActionListner]」和「(爲actionPerformed」排隊爲好。非常喜歡lisp indentation。你可以指向你正在使用的clojure.el嗎? – 2009-06-08 03:59:26

+0

我也看到了這個...在做的時候有大量縮進;評論我使用clojure-mode 1.71。通過ELPA – justinhj 2010-12-05 19:08:25

回答

15

Clojure縮進基於lisp縮進,除非另有說明,否則縮進第二行以便與函數的第一個參數對齊。以下行在上一行下縮進(假設嵌套沒有更改)。

例如

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

或者,當第一個參數是在第二行:

(some-function 
arg1 
arg2 
arg3 ...) 

但是,如果修改變量lisp-indent-offset,這將覆蓋壓痕方案上述和力解釋第二行表達式要比函數調用的開始縮進lisp-indent-offset更多的列。

因此,或許下面會得到你要尋找的縮進:

(setq lisp-indent-offset 2) 
8

clojure mode「總是2位」選項。您可以在.emacs或​​中添加以下行來設置它。

(setq clojure-defun-style-default-indent t) 
相關問題