2014-05-22 9 views
11

Sto cercando di ottenere qualcosa come Nerd Tree in Emacs e ho trovato Nav, che è come il navigatore di file emacs di base, e mi sta bene.Disabilitare la modalità malvagia per Nav in Emacs? O qualche buffer di sola lettura?

Il problema è, quando apro Nav e passare a suo buffer, male-mode è ancora acceso e devo premere C-z se voglio usare qualsiasi comando specifici Nav (ad esempio . per nav-toggle-hidden-files). E mi infastidisce.

E 'stato un paio d'ore che sto cercando di risolvere questo problema, incollando

(require 'evil) 
    (evil-mode 0) 

ovunque nelle file Nav, ma ovviamente sto facendo male .. E sono abbastanza sicuro accadrà di nuovo mentre si usano altri plugin. Come faccio?

+0

+1 su la domanda. Questo è uno dei motivi per cui il mio passaggio da vim-> emacs + il male è stato così roccioso ... mi sono appena ambientato in una nuova struttura di directory di progetti prima di averlo memorizzato con helm/ido. – joefromct

risposta

8

Si desidera che i buffer nav-mode si aprano nello stato di Emacs piuttosto che nello stato normale di Evil. Non so che cosa nav-mode è effettivamente chiamato, ma effettuare le seguenti operazioni, regolando il nome della modalità di conseguenza:

(add-to-list 'evil-emacs-state-modes 'nav-mode)

+1

Grazie, ha funzionato immediatamente! –

+1

Felice di aiutare. Per inciso, dai un'occhiata a questo thread per alcune opzioni aggiuntive a fianco di 'nav-mode': http://superuser.com/questions/695256/file-management-in-emacs – Dan

+1

Bello!Prenderò un'occhiata perché ovviamente mi dà fastidio un po 'di lasciare la cattiva modalità mentre navighi tra i file: P Sono una tale principessa quando si tratta del mio editor haha ​​ –

4

Quello che ti serve è "hook", che indicherà a Emacs in quali condizioni vuoi che una determinata modalità sia attiva o meno.

Non faccio uso di evil o nav modalità, ma si desidera qualcosa di molto simile alla seguente riga nel vostro .emacs:

(add-hook 'nav-mode-hook 'disable-evil-mode) 

Questo comando dice Emacs che quando sono elencati la modalità (i cui ganci in nav-mode-hook) è attivo, eseguire la funzione disable-evil-mode. È probabile che sia necessario modificare il nome dell'elenco di hook o il nome della funzione di callback in base al modo in cui sono implementati nav-mode e evil-mode.

nav-mode-hook è la mia ipotesi su ciò che nav-mode chiamerà la sua lista di aggancio. Se non funziona, controllare la documentazione nav-mode, cercare come aggiungere ganci.

disable-evil-mode è la funzione che si chiama per disabilitare la modalità male. Controllare la documentazione della modalità malvagia per il nome della funzione effettiva.

+0

Grazie per le tue informazioni, sicuramente mi ha aiutato a capire come funziona emacs un po 'di più. –

8

Come descritto sul wiki del male here si potrebbe voler controllare il male-set- stato iniziale.

Ecco la parte rilevante della mia emacs di configurazione:

(evil-set-initial-state 'ibuffer-mode 'normal) 
(evil-set-initial-state 'bookmark-bmenu-mode 'normal) 
(evil-set-initial-state 'dired-mode 'emacs) 
(evil-set-initial-state 'sunrise-mode 'emacs) 

non alleviare il fatto che io certo piacerebbe avere associazioni dei tasti Vim in queste modalità giorno o l'altro però ...