2009-06-07 2 views
7

저는 SLIME과 swank-clojure에서 Emacs의 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"뿐만 아니라 일렬로. lisp 들여 쓰기와 매우 흡사합니다. 당신이 사용하고있는 클로저를 가리켜 주시겠습니까? –

+0

나는 이것을 너무 많이 들었습니다. 할 일이있을 때 들여 쓰기를 해봅시다. 나는 ELPA를 통해 clojure-mode 1.71을 사용하고 있습니다. – justinhj

답변

15

Clojure 들여 쓰기는 달리 지정되지 않는 한 함수에 대한 첫 번째 인수와 함께 두 번째 줄을 들여 쓰기 위해 들여 쓰기를하는 lisp 들여 쓰기를 기반으로합니다. 다음 행은 이전 행 아래로 들여 쓰기됩니다 (중첩 변경 없음 가정). 첫 번째 인수가 두 번째 줄에있을 때 예를

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

또는를 들어

: 당신이 변수 lisp-indent-offset을 수정하면

(some-function 
arg1 
arg2 
arg3 ...) 

그러나, 이것은 들여 쓰기 방식은 위의 힘 설명 오버라이드 (override) 표현식의 두 번째 행은 함수 호출의 시작보다 더 들여 쓰기 될 lisp-indent-offset 열입니다.

(setq lisp-indent-offset 2) 
+2

+1 3 년 후에도 도움이된다. – doda

8

clojure mode에서 "항상이 개 공간"옵션있다 :

그래서, 아마도 다음은 당신에게 당신이 찾고있는 들여 쓰기를 얻을 것입니다. .emacs 또는 init.el에 다음 줄을 추가하여 설정할 수 있습니다.

(setq clojure-defun-style-default-indent t) 
관련 문제