2011-11-07 2 views
6

Sto cercando di ottenere emacs whitespace-mode abilitato automaticamente solo in determinate modalità. Secondo la documentazione, abilitare global-whitespace-mode e impostare la variabile whitespace-global-modes dovrebbe fare esattamente questo. Ma non riesco a farlo funzionare correttamente.Come attivare la modalità di spazio bianco solo per determinate modalità

Nel mio .emacs.el ho:

(require 'whitespace) 
(global-whitespace-mode t) 
(setq whitespace-global-modes '(c-mode c++-mode)) 

ma la definizione di whitespace-global-modes sembra essere ignorato; global-whitespace-mode è abilitato in ogni buffer. So che ho correttamente il nome della variabile, perché C-h v whitespace-global-modes mi dice:

whitespace-global-modes's value is (c-mode c++mode) 

Documentation: 
Modes for which global `whitespace-mode' is automagically turned on. 
... 

Così che cosa sto facendo di sbagliato? Ho frainteso lo scopo di whitespace-global-modes?

Sto eseguendo emacs 23.2.1.

risposta

3

Si scopre che i comandi nel mio .emacs.elerano (quasi) funzionanti dopo tutto. Ciò che mi ha confuso è che "WS" appare nella modeline di tutti i buffer, anche se solo i buffer C e C++ stavano ottenendo l'effetto di whitespace-mode, come desiderato.

L'altro problema era che avevo un errore di battitura: c++mode anziché c++-mode.

+0

Hmm, qual è il significato di WS nella riga della modalità? Non ho capito bene. WS per global, ws per local ... quel genere di cose? –

5

Apparentemente il significato di modalità global-whitespace è molto diverso da quello che tu (e io) comprendiamo.

ne dite di provare

(require 'whitespace) 

(add-hook 'c-mode-hook 
    (function (lambda() 
       (whitespace-mode t)))) 

e ripetendo la stessa cosa per C++ - modalità?

+0

Penso che avrebbe funzionato anche io, ma volevo davvero far funzionare 'whitespace-global-modes'. Immagino che un vantaggio della soluzione sia che "WS" non appare nella modeline per i buffer in cui non stava facendo nulla. – jchl

+0

Sì, WS contro ws è stato anche molto confuso per me. –

+0

Grazie mille! Questo risolve il problema dei file appena creati e del buffer scratch che non aderisce alla definizione globale. L'aggiunta di ganci per ogni modalità (come descritto nella risposta di Mr. Sevinç) elimina la necessità di attivare manualmente gli spazi bianchi per i nuovi file e/o il buffer scratch. Il comportamento globale è stato fonte di confusione perché la definizione globale ha funzionato per i file esistenti che sono stati aperti con l'applicazione, ma non i nuovi file o il buffer di lavoro. – lawlist