6

我的 emacs 初始化文件中有以下行。

(setq auto-mode-alist (cons `("\*nrepl\*" . paredit-mode) auto-mode-alist))

我通过创建一个名为 *nrepl* 的新缓冲区来检查它是否有效Ctrl-x-f *nrepl*。是的,*nrepl* 缓冲区激活了 Paredit,启用了 paredit 模式。

我关闭 *nrepl* 缓冲区而不保存它。

我通过键入启动一个 nrepl 会话M-x nrepl-jack-in。nrepl 服务器启动,我看到了 nrepl repl。nrepl repl 也称为 *nrepl*,但 Paredit启用。

我究竟做错了什么?

4

3 回答 3

6

您混淆了缓冲区和文件:auto-mode-alist将文件名与正则表达式匹配以决定在编辑这些文件时使用哪种模式。但是 *nrepl* 是一个不包含文件的缓冲区,所以auto-mode-alist对它没有影响。相反,您可能想弄清楚 *nrepl* 使用哪个主要模式,然后使用(add-hook '<the-major-mode>-hook 'paredit-mode).

于 2012-10-21T23:14:49.767 回答
5

简单地说 - 您需要以下代码:

(add-hook 'nrepl-mode-hook 'paredit-mode) ; for nrepl.el <= 0.1.8
(add-hook 'nrepl-repl-mode-hook 'paredit-mode) ; for nrepl.el > 0.1.8

这相当于更长的形式:

(add-hook 'nrepl-mode-hook (lambda () (paredit-mode +1)))
于 2012-10-22T06:10:35.817 回答
2
(add-hook 'nrepl-mode-hook 'paredit-mode)

是他们在nrepl github 页面上的建议

于 2013-02-28T01:48:58.263 回答