如何在emacs nrepl会话中自动获取paredit?

6
我在我的emacs初始化文件中有以下这行代码。
(setq auto-mode-alist (cons `("\*nrepl\*" . paredit-mode) auto-mode-alist))

我通过创建一个名为 *nrepl* 的新缓冲区 Ctrl-x-f *nrepl* 来检查它是否可用。是的, *nrepl* 缓冲区已激活了 Paredit,启用了 paredit-mode。
我关闭 *nrepl* 缓冲区,但没有保存。
我通过键入 M-x nrepl-jack-in 启动 nrepl 会话。nrepl 服务器启动并呈现 nrepl repl。nrepl repl 也称为 *nrepl*,但是 Paredit 未启用。
我做错了什么?
3个回答

6
您混淆了缓冲区和文件: auto-mode-alist 通过正则表达式匹配文件名来确定编辑这些文件时要使用哪种模式。但 *nrepl* 是一个不包含文件的缓冲区,因此 auto-mode-alist 对其没有影响。 相反,您可能需要找出 *nrepl* 使用的主要模式,然后使用 (add-hook '<the-major-mode>-hook 'paredit-mode)

使用 "nrepl-connected" 的主模式似乎可以解决问题。总共添加了以下内容: (add-hook 'nrepl-connected-hook 'paredit-mode) - Stephen Cagle

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)))

2
(add-hook 'nrepl-mode-hook 'paredit-mode)

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


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