Perché avvio la modalità iswitchb in questo modo?
-
07-07-2019 - |
Domanda
Secondo la pagina di informazioni di emacs, ecco come abilitare la modalità iswitchb:
Per abilitare la modalità Iswitchb, digitare
M-x iswitchb-mode
o personalizzare il variabileiswitchb-mode
int
Quindi ho inserito quanto segue nel mio .emacs:
(setq iswitchb-mode t)
Tuttavia, questo non sembra funzionare. Dopo aver cercato nella wiki di emacs, ho scoperto che devo usare questo:
(iswitchb-mode 1)
Qualcuno potrebbe spiegare perché devo abilitarlo in questo modo? Mi piacerebbe avere una migliore comprensione di elisp piuttosto che semplicemente copiare e incollare cose da luoghi.
Soluzione
In genere una modalità definisce 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 la hai semplicemente impostata. La differenza è che quando cambia il valore della variabile, custom sa fare qualcosa e `setq 'non ne sa nulla. Se cerchi l'aiuto per questa variabile (C-h v iswitchb-mode) otterrai:
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.