简体   繁体   中英

How do I automatically get paredit in a emacs nrepl session?

I have the following line in my emacs init file.

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

I check that this works by creating a new buffer called *nrepl* Ctrl-xf *nrepl* . Yes, the *nrepl* buffer has Paredit active, paredit-mode was enabled.

I close the *nrepl* buffer without saving it.

I start up a nrepl session by typing Mx nrepl-jack-in . The nrepl server starts up and I am presented with the nrepl repl. The nrepl repl is also called *nrepl*, however Paredit is not enabled.

What am I doing wrong?

You're confusing buffers and files: auto-mode-alist matches file names against regexps to decide which mode to use when editing those files. But *nrepl* is a buffer that does not contain a file, so auto-mode-alist has no effect for it. Instead, you probably want to figure out which major-mode *nrepl* uses and then use (add-hook '<the-major-mode>-hook 'paredit-mode) .

To put it simply - you need the following code:

(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

Which is equivalent to the longer form:

(add-hook 'nrepl-mode-hook (lambda () (paredit-mode +1)))
(add-hook 'nrepl-mode-hook 'paredit-mode)

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM