我正在使用来自ELPA的Clojure模式包。除此之外一切都很好,但是我就是受不了paredit模式。我似乎无法轻松地关闭它,现在我只能为每个打开的缓冲区禁用它。我尝试将此变量设置为nil:
(setq clojure-enable-paredit nil)
但是 paredit 仍然出现了。有什么想法吗?
我正在使用来自ELPA的Clojure模式包。除此之外一切都很好,但是我就是受不了paredit模式。我似乎无法轻松地关闭它,现在我只能为每个打开的缓冲区禁用它。我尝试将此变量设置为nil:
(setq clojure-enable-paredit nil)
这并不是对您实际问题的回答,但请给paredit模式一个机会。我也曾非常烦恼它自动关闭我的括号,并且拒绝为我删除单个右括号。
但使用它可以确保缓冲区始终是一个平衡的S表达式,因此它可以为您执行许多有用的S表达式操作而不仅仅是文本操作。例如,我经常使用以下内容:
(map f some-list)
转换为 (doto (map f some-list) println)
(let [x 10]) (println x)
转换为 (let [x 10] (println x))
(first (map f some-list))
转换为 (map f some-list)
或 (first some-list)
还有无数像这样有用的功能,可让您开始编辑代码而不是文本。虽然有许多优秀的Lisp黑客不喜欢paredit模式,但在您意识到它可以为您提供的强大功能之前,请不要决定不使用它。
M-(
用于paredit-wrap-round
,将以下表达式括在括号中。大多数编程语言模式都有该语言表达式和标记的sexps概念,因此paredit函数通常会做正确的事情。 - sanityincC-d
)前添加 C-u
前缀可以使其跳过 paredit 平衡规则,而在任何字符之前添加 C-q
将插入该字符,忽略任何可能使其执行其他操作的键绑定。 - amalloy我发现了一个有效的技巧。在init.el
加载elpa包之前,向clojure模式添加此hook:
(add-hook 'clojure-mode-hook (lambda () (paredit-mode nil)))
说句题外话,我也通过ELPA使用clojure-mode,它并不意味着需要paredit。也许只需卸载它?我发现在一个干净的EMACS上安装clojure-mode、slime和slime-repl三个包就足以让clojure/swank/slime正常工作。
我只测试了这个:
http://www.learningclojure.com/2010/08/clojure-emacs-swank-slime-maven-maven.html
几周前,它仍然正常工作。