从某次更新开始,paredit的回车被绑定成了(paredit-newline)
。这样一来,在minibuffer中用paredit就很不方便。比如在M-:
中输入回车就不是执行命令,而是变成了换行。有什么办法在minibuffer中去掉回车键的这种绑定吗?
在网上抄了以下配置,基本能用但又产生另一个问题。以M-:
为例,如果直接输入某个命令,比如(forward-char)
然后回车,确实会正常执行这个命令。但是,如果先输入(forward-)
然后用Tab在弹出的菜单中补全剩下的char,这个时候再回车,就又变成换行了。
(use-package paredit
:hook
(minibuffer-setup . my/conditionally-enable-paredit-mode)
(minibuffer-exit . my/restore-paredit-key)
:config
(defun my/conditionally-enable-paredit-mode ()
"Enable paredit during lisp-related minibuffer commands."
(when (memq this-command paredit-minibuffer-commands)
(enable-paredit-mode)
(unbind-key (kbd "RET") paredit-mode-map)))
(defun my/restore-paredit-key ()
"Restore the RET binding that was disabled by
my/conditionally-enable-paredit-mode."
(bind-key (kbd "RET") #'paredit-newline paredit-mode-map)))