在某些情况下,Emacs Clojure模式tab-indentation很大

时间:2009-06-07 16:26:11

标签: emacs clojure

我正在使用Emacs的Clojure模式与SLIME和swank-clojure。我有缩进问题。大多数时候缩进都是我想要的:当我按TAB时,它会缩进2个空格。但是,例如,在代理的情况下,我用TAB获得的缩进是巨大的:10个空格。例如:

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

...

代理方法也是如此,例如: actionPerformed above。

此设置在哪里?如何更改?根据我的理解,它必须是Clojure模式的问题。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:9)

clojure mode中有“始终为2个空格”选项。您可以通过在.emacsinit.el

中添加以下行来进行设置
(setq clojure-defun-style-default-indent t)