2009-06-07 22 views
7

Tôi đang sử dụng chế độ Clojure Emacs với SLIME và swank-clojure. Tôi có một vấn đề với thụt đầu dòng. Hầu hết thời gian thụt lề làm những gì tôi muốn: nó thụt vào với 2 khoảng trắng khi tôi nhấn TAB. Nhưng, ví dụ, trong trường hợp của một proxy, indentation tôi nhận được với TAB là rất lớn: 10 không gian. Ví dụ:Emacs chế độ Clojure tab-indentation rất lớn trong một số trường hợp

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

...

Cũng vậy với các phương pháp proxy, ví dụ actionPerformed ở trên.

Cài đặt này ở đâu và làm cách nào để thay đổi cài đặt này? Theo sự hiểu biết của tôi, nó phải là vấn đề của chế độ Clojure.

+1

Thụt lề tôi nhận được khác với ví dụ của bạn và thực sự có nhiều khoảng trắng hơn (dòng "proxy" xếp hàng "nút" và "[ActionListner]" và "(actionPerformed"). Có thể bạn chỉ vào clojure.el bạn đang sử dụng? –

+0

Tôi thấy điều này quá ... thụt lề lớn khi làm, ý kiến ​​Tôi đang sử dụng chế độ clojure 1.71 thông qua ELPA – justinhj

Trả lời

15

thụt lề clojure dựa trên thụt đầu dòng lisp, trong đó, trừ khi được chỉ định khác, là thụt lề dòng thứ hai để xếp hàng với đối số đầu tiên cho hàm. Các dòng sau được thụt lề theo dòng trước (giả sử không có thay đổi trong lồng nhau).

Ví dụ

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

Hoặc, khi đối số đầu tiên là trên dòng thứ hai:

(some-function 
arg1 
arg2 
arg3 ...) 

Tuy nhiên, nếu bạn sửa đổi biến lisp-indent-offset, điều này sẽ ghi đè chương trình thụt đầu dòng giải thích ở trên và các lực lượng dòng thứ hai của biểu thức được thụt lề lisp-indent-offset nhiều cột hơn bắt đầu cuộc gọi hàm.

Vì vậy, có lẽ những điều sau đây sẽ giúp bạn có được thụt đầu dòng bạn đang tìm kiếm:

(setq lisp-indent-offset 2) 
+2

+1 vẫn hữu ích 3 năm sau – doda

8

"Luôn luôn 2 chỗ" tùy chọn trong clojure mode. Bạn có thể đặt nó bằng cách thêm dòng sau vào .emacs hoặc init.el.

(setq clojure-defun-style-default-indent t) 
Các vấn đề liên quan