2011-12-22 27 views
9

Tôi đang sử dụng emacs 24 trên Windows 7 và đã cài đặt technomancy's clojure-mode cùng với paredit 23 beta. Tôi tải tập tin nguồn từ dự án leiningen của tôi và lấy một repl bằng cách sử dụng lệnh clojure-jack-in. Vấn đề là trong khi paredit được kích hoạt trong cả hai chế độ Clojure và repl, dấu ngoặc nhọn không khớp trong repl chỉ trong các tập tin nguồn.paredit khớp nối ngoặc nhọn trong swank-clojure repl

Làm thế nào tôi có thể làm cho nó phù hợp với niềng răng trong repl là tốt?

Trả lời

6

tôi đã thêm dòng sau vào file emacs của tôi, mà hiện các trick cho tôi (tôi không phát minh này bản thân mình, đó là một đoạn tôi thấy đâu đó trên mạng - nhưng tôi không thể nhớ ở đâu):

(defun setup-slime-repl-paredit() 
    (define-key slime-repl-mode-map 
    (kbd "DEL") 'paredit-backward-delete) 
    (define-key slime-repl-mode-map 
    (kbd "{") 'paredit-open-curly) 
    (define-key slime-repl-mode-map 
    (kbd "}") 'paredit-close-curly) 
    (modify-syntax-entry ?\{ "(}") 
    (modify-syntax-entry ?\} "){") 
    (modify-syntax-entry ?\[ "(]") 
    (modify-syntax-entry ?\] ")[") 
    (modify-syntax-entry ?~ "' ") 
    (modify-syntax-entry ?, " ") 
    (modify-syntax-entry ?^ "'") 
    (modify-syntax-entry ?= "'")) 

(add-hook 'slime-repl-mode-hook 'setup-slime-repl-paredit) 

(add-hook 'slime-repl-mode-hook  'enable-paredit-mode) 
+0

Điều đó có hiệu quả, cảm ơn! – pventura

1

Grab Phil Hagelberg của durendal package, mà cung cấp một số cải tiến clojure cụ thể để chất nhờn, sau đó thử đoạn này:

(require 'durendal) 
(durendal-enable t) 

(defun slime-clojure-repl-setup() 
    (when (string-equal (slime-lisp-implementation-name) "clojure") 
    (set-syntax-table clojure-mode-syntax-table) 
    (setq lisp-indent-function 'clojure-indent-function))) 

(add-hook 'slime-repl-mode-hook 'slime-clojure-repl-setup) 

trong tương lai, Phil có thể bao gồm các chức năng của durendal trong phô trương-clojure chính nó như là một tải trọng lisp thêm , tại thời điểm đó ở trên sẽ trở thành không cần thiết.

+0

Tôi đã thử cài đặt durendal, sau đó yêu cầu tôi cài đặt slime và slime-repl. Ngay cả sau khi cài đặt tất cả chúng và thêm mã ở trên nó vẫn không làm khớp với dấu ngoặc nhọn. – pventura

+0

Tỷ lệ cược. Tôi giả sử bạn khởi động lại Emacs của bạn? Durendal cung cấp chính xác cùng một chức năng móc mà @gertalot cung cấp ở trên. Nhưng kể từ khi bạn đã có giải pháp làm việc anyway, bạn đang tất cả các thiết lập. Đối với hồ sơ, đoạn đặc biệt Clojure của cấu hình emacs của tôi là ở đây: https://github.com/purcell/emacs.d/blob/master/init-clojure.el – sanityinc

+0

@sanityinc - là đoạn trích của tôi thực sự * từ * Durendal? Tôi không biết nơi tôi tìm thấy nó, nhưng nếu tôi sẽ sửa và thêm tín dụng. – Gert

Các vấn đề liên quan