2009-09-14 3 views
5

Secondo la pagina di informazioni di Emacs, ecco come si abilita iswitchb-mode:Perché avvio la modalità iswitchb in questo modo?

per abilitare la modalità Iswitchb, tipo M-x iswitchb-mode, o personalizzare il variabile iswitchb-mode a t

così ho messo il seguente nel mio .emacs:

(setq iswitchb-mode t) 

Tuttavia, questo non sembra funzionare. Dopo la ricerca del wiki emacs, ho scoperto che ho bisogno di usare questo:

(iswitchb-mode 1) 

Qualcuno potrebbe spiegare perché ho bisogno di consentire in questo modo? Mi piacerebbe avere una migliore comprensione dell'elis piuttosto che copiare e incollare le cose dai luoghi.

risposta

8

In genere una modalità definirà sia una variabile che una funzione con lo stesso nome. La funzione imposterà correttamente la variabile quando viene chiamata, ma è la funzione che attiva la modalità, non solo la variabile (che traccia solo lo stato della modalità).

Nel tuo caso specifico, ti è stato detto di personalizzare la variabile, ma puoi semplicemente impostarla. La differenza è che quando il valore della variabile cambia, l'abitudine sa di fare qualcosa e `setq 'non ne sa nulla. Se si guarda l'aiuto per questa variabile (C-h v modalità switchb) si ottiene:

iswitchb-mode is a variable defined in `iswitchb.el'. 
Its value is t 

Documentation: 
Non-nil if Iswitchb mode is enabled. 
See the command `iswitchb-mode' for a description of this minor mode. 
Setting this variable directly does not take effect; 
either customize it (see the info node `Easy Customization') 
or call the function `iswitchb-mode'. 

You can customize this variable. 
+0

Grazie. Non ero a conoscenza di tutto ciò riguardo l'elis. –

+0

Sfortunatamente, non è così facile dedurre (a parte la descrizione della variabile). iswitchb (e le modalità più secondarie) usano una macro 'define-minor-mode 'per occuparsi delle meccaniche reali di costruzione della modalità, accenderla e spegnerla, personalizzare variabili, keymap e simili, quindi devi scavare nel definizione della funzione di 'define-minor-mode 'stessa per spigolare come questa roba è messa insieme. –