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

Ste*_*gle 6 emacs clojurescript

我的emacs init文件中有以下行.

(setq auto-mode-alist (cons `("\*nrepl\*" . paredit-mode) auto-mode-alist))
Run Code Online (Sandbox Code Playgroud)

我通过创建一个名为*nrepl*的新缓冲区来检查这是否有效Ctrl-x-f *nrepl*.是的,*nrepl*缓冲区已启用Paredit,启用了paredit-mode.

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

我打字开始一个nrepl会话M-x nrepl-jack-in.nrepl服务器启动,我看到nrepl repl.nrepl repl也称为*nrepl*,但Paredit 启用.

我究竟做错了什么?

Ste*_*fan 6

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


Boz*_*sov 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
Run Code Online (Sandbox Code Playgroud)

这相当于较长的形式:

(add-hook 'nrepl-mode-hook (lambda () (paredit-mode +1)))
Run Code Online (Sandbox Code Playgroud)