Emacs Clojure模式没有paredit

aur*_*amo 6 emacs clojure paredit

我正在使用ELPA的Clojure模式包.否则一切都很好,但我无法忍受paredit模式.我似乎无法轻易将其关闭,现在我只是为我打开的每个缓冲区禁用它.我尝试将此变量设置为nil:

(setq clojure-enable-paredit nil)
Run Code Online (Sandbox Code Playgroud)

但paredit仍然出现.有任何想法吗?

ama*_*loy 28

不是你的实际问题的答案,但给paredit模式一个机会.我也非常生气,因为它自动关闭我的parens,拒绝为我删除一个paren.

但这样做可以让它始终确定缓冲区是一个均衡的sexp,因此它可以为您执行许多有用的针对性别的任务,而不仅仅是面向文本的任务.例如,我使用了下面所有的时间:

  • M-(用一个新的包裹性别,例如(map f some-list)变成(doto (map f some-list) println)
  • C-)将另一个性别"啜饮"成当前的性别,例如(let [x 10]) (println x)变成(let [x 10] (println x))
  • M- <UP>和/或Mr将性别点拉到源树中"更高"的水平,摧毁包裹它的东西,例如(first (map f some-list))变成(map f some-list)(first some-list)

像这样有数以万计的有用功能,让您开始编辑代码而不是文本.虽然有很多优秀的Lisp黑客不喜欢paredit模式,但我建议你在实现它可以为你做的很棒的事情之前不要反对它.

  • 删除操作(退格键或"Cd")之前的`Cu`前缀使其跳过paredit平衡规则,并在任何字符插入该字符之前跳过`Cq`,忽略任何会使其执行其他操作的键绑定. (3认同)

aur*_*amo 16

找到一个有效的技巧.在加载elpa包之前init.el,将此挂钩添加到clojure模式:

(add-hook 'clojure-mode-hook (lambda () (paredit-mode nil)))
Run Code Online (Sandbox Code Playgroud)