2012-10-21 3 views
6

Ho la seguente riga nel mio file init di emacs.Come posso ottenere automaticamente il paredit in una sessione emacs nrepl?

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

ho verificare che questo funziona con la creazione di un nuovo buffer denominato * * nrepl Ctrl-x-f *nrepl*. Sì, il buffer * nrepl * ha Paredit attivo, la modalità paredit era abilitata.

Chiudo il buffer * nrepl * senza salvarlo.

Avvio di una sessione nrepl digitando M-x nrepl-jack-in. Il server nrepl si avvia e mi viene presentato il nrepl repl. Il nrepl repl è anche chiamato * nrepl *, tuttavia Paredit è non abilitato.

Cosa sto sbagliando?

risposta

6

Stai confondendo i buffer ei file: auto-mode-alist associa i nomi di file alle espressioni regolari per decidere quale modalità utilizzare quando si modificano quei file. Ma * nrepl * è un buffer che non contiene un file, quindi auto-mode-alist non ha alcun effetto per questo. Invece, probabilmente vorrai capire quale modalità principale * nrepl * usa e quindi usare (add-hook '<the-major-mode>-hook 'paredit-mode).

+0

di "nrepl-connected" sembra fare il trucco. Per un totale complessivo di: (modalità paredit-hook-add-hook-nrepl-connected-hook) –

5

per dirla semplicemente - è necessario il codice seguente:

(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 

che è equivalente alla forma più a lungo:

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

è ciò che suggeriscono sul nrepl github page