Фигурные скобки paredit в swank-clojure repl
Я использую emacs 24 в Windows 7 и установил clojure-mode от Technomancy вместе с бета-версией paredit 23. Я загружаю исходный файл из моего проекта leiningen и получаю ответ, используя clojure-jack-in. Проблема заключается в том, что, хотя paredit включен и в режиме Clojure, и в repl, фигурные скобки не совпадают в repl только в исходных файлах.
Как я могу сделать так, чтобы он соответствовал скобкам в репле?
2 ответа
Я добавил следующее в мой файл.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)
Возьмите пакет durendal Фила Хейгельберга, который предоставляет некоторые специфичные для 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)
В будущем Фил может включить функциональность durendal в саму swank-clojure в качестве дополнительной полезной нагрузки lisp, после чего вышеуказанное станет ненужным.