2011-11-07 11 views
6

Estoy intentando que emacs whitespace-mode se active automáticamente solo en ciertos modos. De acuerdo con la documentación, habilitar global-whitespace-mode y establecer la variable whitespace-global-modes debería hacer exactamente eso. Pero no puedo hacer que funcione correctamente.Cómo activar el modo de espacio en blanco habilitado solo para ciertos modos

En mi .emacs.el tengo:

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

pero la definición de whitespace-global-modes parece ser ignorado; global-whitespace-mode está habilitado en cada buffer. Sé que tengo el nombre de la variable correctamente, porque C-h v whitespace-global-modes me dice:

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

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

Entonces, ¿qué estoy haciendo mal? ¿He entendido mal el propósito de whitespace-global-modes?

Estoy ejecutando emacs 23.2.1.

Respuesta

3

Resulta que los comandos en mi .emacs.eleran (casi) funcionando después de todo. Lo que me confundió fue que "WS" aparece en la línea de modelado de todos los buffers, aunque solo los búfers C y C++ obtuvieron el efecto de whitespace-mode, según lo deseado.

El otro problema es que tuve un error tipográfico: c++mode en lugar de c++-mode.

+0

Hmm, entonces, ¿cuál es el significado de WS en la línea de modo? Estoy confundido. WS para global, ws para local ... ese tipo de cosas? –

5

Aparentemente el significado de whitespace-global-modes es muy diferente de lo que tú (y yo) entendemos.

¿Qué tal intentar

(require 'whitespace) 

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

y repitiendo lo mismo para C++ - Modo?

+0

Creo que eso también hubiera funcionado, pero realmente quería que 'whitespace-global-modes' funcionara. Supongo que una de las ventajas de su solución es que "WS" no aparecería en la línea de modem para buffers donde no estaba haciendo nada. – jchl

+0

Sí, WS versus ws fue muy confuso para mí también. –

+0

¡Muchas gracias! Esto resuelve el problema de los archivos recién creados y el búfer de scratch que no se adhiere a la definición global. La adición de ganchos para cada modo (como se describe en la respuesta del Sr. Sevinç) elimina la necesidad de activar manualmente los espacios en blanco para los nuevos archivos y/o el búfer de rayado. El comportamiento global fue confuso porque la definición global funcionaba para los archivos existentes que se abrieron con la aplicación, pero no para los archivos nuevos o el búfer de rayado. – lawlist

Cuestiones relacionadas