【问题标题】:Emacs Clojure mode tab-indentation huge in some cases在某些情况下,Emacs Clojure 模式制表符缩进很大
【发布时间】:2009-06-07 16:26:11
【问题描述】:

我将 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]

...

代理方法也是如此,例如上面执行的操作。

此设置在哪里,如何更改?据我了解,这一定是 Clojure 模式的问题。

【问题讨论】:

  • 我得到的缩进与您的示例不同,实际上有更多空格(“(代理”与“按钮”对齐,“[ActionListner]”和“(actionPerformed”对齐为嗯。很像 lisp 缩进。你能指出你正在使用的 clojure.el 吗?
  • 我也看到了这个......厘米。我正在使用 clojure-mode 1.71。通过 ELPA

标签: emacs clojure


【解决方案1】:

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)

【讨论】:

    【解决方案2】:

    clojure mode 中有“总是 2 个空格”选项。您可以通过在.emacsinit.el 中添加以下行来设置它。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-24
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多