如何在执行表达式时获取paredit模式?

10

我喜欢Emacs的paredit模式,但是在执行 M-: 命令时,非常想念它。有没有办法使得在执行 M-: 命令时,也能够在迷你缓冲区中使用paredit呢?谢谢!

2个回答

13

添加一个函数到 minibuffer-setup-hook,像这样:

(add-hook 'minibuffer-setup-hook 'conditionally-enable-paredit-mode)
(defun conditionally-enable-paredit-mode ()
  "enable paredit-mode during eval-expression"
  (if (eq this-command 'eval-expression)
      (paredit-mode 1)))

还不错,但正如你所提到的,这适用于所有东西(例如shell-command/M-!),而不仅仅是在minibuffer中输入Emacs Lisp。我希望不是这种情况。我想知道是否最终需要用调用更特殊的读取函数的方式来替换eval-expression - draebek
1
它只在eval-expression中启用,但也许你在Trey编辑他的回答之前就写了你的评论... - Bozhidar Batsov
是的,我在 this-command 这个钩子出现之前就写过它了。我没有想到这样做。谢谢! - draebek
这将导致回车键被重新绑定到“paredit-newline”,非常令人沮丧。在(paredit-mode 1)之后,我尝试了(local-set-key [return] 'minibuffer-complete-and-exit)但是没有成功。该怎么办? - Nordlöw
1
@Nordlöw 啊...最新版本(我之前有测试版)的确设置了C-j的绑定 - 可能你已经将其绑定到了return。在纯净的Emacs 24.2中,C-j<return>是不同的绑定,因此C-j绑定到paredit-newline<return>绑定到'exit-minibuffer。我建议查看一下你的.emacs文件中是否绑定了这些键,或者尝试在没有你的配置的情况下运行Emacs,并加载paredit.el来查看其行为如何。 - Trey Jackson

2
将函数paredit-mode添加到eval-expression-minibuffer-setup-hook中,如下所示。
(add-hook 'eval-expression-minibuffer-setup-hook #'paredit-mode)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接