2012-07-28 8 views
10

Dos preguntas relacionadas usando emacs 23.3.1 en Linux:Emacs: conjunto de palanca y show-arrastrar-espacio en blanco

En primer lugar, ¿por qué no puedo configurar el valor de show-trailing-whitespace-t con setq como se muestra a continuación? Cuando pongo la versión setq en mi .emacs, no cambia el valor (como se ve funcionalmente y usando M-x describe-variable).

(setq show-trailing-whitespace t) ; Does not change variable value or give error 

(custom-set-variables    ; Sets show-trailing-whitespace as expected 
'(show-trailing-whitespace t)) 

En segundo lugar, ¿cómo puedo cambiar el valor entre t y nil? Pensé que this answer era exactamente lo que necesitaba, pero no funciona en este caso. Solía:

(global-set-key "\M-ow" 'tf-toggle-show-trailing-whitespace) 

(defun tf-toggle-show-trailing-whitespace() 
    "Toggle show-trailing-whitespace between t and nil" 
    (interactive) 
    (setq show-trailing-whitespace (if (= show-trailing-whitespace nil) t nil)) 
    (redraw-display)) 

Cuando golpeo M-ow consigo un error Wront type argument: number-or-marker-p, nil. ¿Algunas ideas?

Respuesta

17

Primero: como el describe-variable te dice es show-trailing-whitespace una variable de búfer. Esto significa que al hacer un setq solo se establece para el búfer en uso y por lo tanto no tiene efecto cuando se hace en el archivo .emacs. Para tener algo similar a lo personalizado necesita usar setq-default en lugar de setq. rk para todos los buffers.

Segundo: para alternar, es posible que desee utilizar setq si desea alternar en un búfer por buffer. El error que obtiene es que usa =, que es para probar si dos números son iguales. Se realiza un cambio de manera más limpia utilizando not. Como nota al margen, el comando (redraw-display) no parece estar haciendo nada.

(defun tf-toggle-show-trailing-whitespace() 
    "Toggle show-trailing-whitespace between t and nil" 
    (interactive) 
    (setq show-trailing-whitespace (not show-trailing-whitespace))) 
+0

Super, gracias! La única advertencia es que el '(redraw-display)' ** does ** hace algo útil en mi caso. Si algunos espacios en blanco al final se muestran en rojo y apago el ajuste, sin '(redraw-display)' el espacio en blanco resaltado no se vuelve blanco hasta que actualizo manualmente la pantalla. –

0

escritura (eq show-trailing-espacio en blanco nil)

o más corto --pero reversed--

(si show-trailing-espacio en blanco

+0

Debe explicar cuál es el error. –

Cuestiones relacionadas