emacs - 找不到地方绑定(bind) paredit 的 convolute-sexp

标签 emacs clojure paredit

奇怪的是,虽然各种 paredit 备忘单显示 M-? 绑定(bind)到 paredit-convolute-sexp,但 paredit.el 文件却没有尽管它确实定义了该函数,但该函数没有任何绑定(bind)。我编辑了 paredit.el 将其添加到此处:

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

但是重启emacs后,仍然没有绑定(bind)到M-?。我尝试在绑定(bind)中仅使用 "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)

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

这也没有什么区别,即使它确实打开了自动完成模式。

谁能告诉我应该把这个绑定(bind)放在哪里?

最佳答案

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

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

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

关于emacs - 找不到地方绑定(bind) paredit 的 convolute-sexp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24094143/

相关文章:

emacs - Emacs 上 utf-8-emacs 和 utf-8 的区别

emacs - 如何配置 Emacs 为临时目录下的文件保存备份?

clojure - 在 lein repl 中传递命令行参数

emacs - 更改Paredit格式

emacs - emacs cider/paredit/clojure-mode 中的缩进配置

Emacs:Java 模式下的换行和自动缩进

windows - Emacs for Windows 中 shell 模式下的 Ack 显示无输出

clojure - 在clojure源码中,RT代表什么?

clojure - Lisp/Clojure 中的副作用