2

奇怪的是,虽然各种 paredit 备忘单显示M-?bound to paredit-convolute-sexp,但该paredit.el文件没有对该函数的任何绑定,尽管它确实定义了该函数。我编辑paredit.el在这里添加它:

 ....
("M-q"  paredit-reindent-defun)
("M-\?" paredit-convolute-sexp)

但是重启emacs后,还是没有绑定M-?. 我尝试"M-?"在没有反斜杠的绑定中使用,但没有任何区别。

我也尝试过这样做:

(defun my-clojure-hook ()
  (auto-complete-mode 1)
  (define-key clojure-mode-map
    (kbd "M-\?" 'paredit-convolute-sexp)))

(add-hook 'clojure-mode-hook 'my-clojure-hook)

还尝试使用和不使用反斜杠。

这也没有什么区别,即使它确实可以很好地打开自动完成模式。

谁能建议我应该把这个绑定放在哪里?

4

1 回答 1

2

您在调用 . 时缺少一个右括号kbd。您的钩子应如下所示(顺便说一句,我认为您不需要转义问号):

(defun my-clojure-hook ()
  (auto-complete-mode 1)
  (define-key clojure-mode-map
    (kbd "M-?") 'paredit-convolute-sexp))

实际上,define-key只需要进行一次调用(例如,在您的 .emacs 文件中),而不是每次打开新的 clojure 缓冲区时调用,因此您不需要将它本身放入钩子中。

于 2014-06-07T09:24:30.633 回答