Emacs Clojure режим табуляции отступ в некоторых случаях огромный - PullRequest
7 голосов
/ 07 июня 2009

Я использую режим Emacs Clojure с SLIME и swank-clojure. У меня проблема с отступом. В большинстве случаев отступ делает то, что я хочу: он отступает на 2 пробела, когда я нажимаю TAB. Но, например, в случае прокси, отступ, который я получаю с помощью TAB, огромен: 10 пробелов. Пример:

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

...

То же самое относится и к прокси-методам, например, действие выполнено выше.

Где эта настройка и как я могу ее изменить? Насколько я понимаю, это проблема Clojure.

Ответы [ 2 ]

15 голосов
/ 08 июня 2009

Отступы 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)
9 голосов
/ 06 января 2014

Имеется опция «Всегда 2 пробела» в режиме Clojure . Вы можете установить его, добавив следующую строку в .emacs или init.el.

(setq clojure-defun-style-default-indent t)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...