Solo habilita el modo de espacio en blanco en ciertos buffers

8

Me gustaría tener el modo de espacio en blanco activado para todos los búferes, excepto los del modo org. Es fácil hacer esto cuando se inicia emacs, pero como uso una copia persistente de emacs con el modo demonio emacs, no puedo hacerlo de esa manera.

Lo intenté:

(require 'whitespace)
(setq whitespace-line-column 80)
(setq whitespace-style '(face lines-tail))
(global-whitespace-mode t)
(add-hook 'org-mode-hook
      (lambda ()
          (visual-line-mode 1)
          (auto-fill-mode -1)
          (setq whitespace-style nil)))

pero tan pronto como visito un búfer de modo org, todos mis futuros búferes ya no tienen modo de espacio en blanco.

Pensé en agregar un gancho para activar el modo de espacio en blanco para otros modos principales, pero eso parece un mal camino ya que no quiero enumerar todos los otros modos posibles.

Sé que hay un modo de espacio en blanco junto con el modo de espacio en blanco global, pero tampoco estoy seguro de cómo puedo usar eso para ayudar aquí.

¿Hay alguna otra forma de lograr esto que no estoy pensando?

jcv
fuente
3
Puede modificar la global-whitespace-modedefinición agregando (unless (eq major-mode 'org-mode) . . .). O bien, puede habilitarlo por modo mayor en lugar de globalmente, es decir, para cada modo mayor, use un enlace y (whitespace-mode 1). Su idea también puede funcionar si la usa (setq-local whitespace-style nil), pero técnicamente el modo todavía está activo con solo las tripas / umph sacadas.
abogados el
1
Sin relación: No debe citar su lambdas
Malabarba
Buen punto sobre el lambda citado. No estoy seguro de cómo o por qué terminé así, pero lo eliminé de mi .emacs Gracias.
jcv

Respuestas:

17
(setq whitespace-global-modes '(not org-mode))

Ver C-hv whitespace-global-modes RET

phils
fuente
Eso funciona perfecto Gracias. Sabía que tenía que haber algo simple que me faltaba.
jcv
4

Probablemente sea más fácil desactivar el modo de espacio en blanco directamente, utilizando

 (whitespace-mode -1)

Además, whitespace-styleno es una variable local de búfer, por lo que también se modifica para todos los demás búferes. Intenta en su lugar

(set (make-local-variable 'whitespace-style) nil)
Kirill
fuente
En realidad, inicialmente había desactivado el modo de espacio en blanco directamente en lugar de preocuparme por la var de estilo de espacio en blanco. Esa fue solo la iteración actual de mis intentos. Voy a probar lo que sugirió la gente y luego actualizaré esto con lo que funcionó para mí.
jcv
En realidad, esto también funciona, pero como usted mismo comentó, desactivar directamente el modo de espacio en blanco en lugar de tratar con el estilo es una mejor solución (lo que hace la respuesta anterior).
jcv