我在Windows 7上使用emacs 24并安装了technomancy's clojure-mode以及paredit 23 beta。我从我的leiningen项目加载源文件并使用clojure-jack-in获取repl。问题是虽然在Clojure模式和repl中都启用了paredit,但仅在源文件中的repl中不匹配花括号。
我怎样才能让它与repl中的大括号相匹配?
答案 0 :(得分:6)
我在我的.emacs文件中添加了以下内容,这对我来说很有用(我没有自己发明这个,这是我在网上找到的一个片段 - 但我记不起来了):
(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)
答案 1 :(得分:1)
获得Phil Hagelberg的durendal package,其中 为slime提供一些特定于clojure的增强功能,然后尝试这个片段:
(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)
将来,Phil可能会将swure-clojure本身的durendal功能作为额外的lisp有效载荷包含在内,此时上述内容将变得不必要。