我的emacs init文件中有以下行。
(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 不启用。
我做错了什么?
答案 0 :(得分:6)
您会混淆缓冲区和文件:auto-mode-alist
将文件名与regexp匹配,以决定在编辑这些文件时使用哪种模式。但是* nrepl *是一个不包含文件的缓冲区,因此auto-mode-alist
对它没有任何影响。
相反,您可能想要确定哪个主要模式* nrepl *使用,然后使用(add-hook '<the-major-mode>-hook 'paredit-mode)
。
答案 1 :(得分: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 :(得分:2)
(add-hook 'nrepl-mode-hook 'paredit-mode)
上的建议