Eliminar ganchos para modos específicos

12

Quiero eliminar los espacios en blanco finales en guardar para cada modo excepto org-mode.

En mi .emacs, tengo la siguiente línea:

(add-hook 'before-save-hook 'delete-trailing-whitespace)

Uso la use-packagemacro e intenté agregar (remove-hook 'before-save-hook 'delete-trailing-whitespace)a mi :configbloque, pero eso elimina el enganche globalmente. ¿Cómo puedo eliminarlo específicamente org-mode?

Matthew Piziak
fuente

Respuestas:

17

No tengo ninguna experiencia con la use-packagemacro, pero en principio, podría usar el tercer argumento remove-hookque le dice que elimine la función solo del enlace local:

(remove-hook 'before-save-hook 'delete-trailing-whitespace t)

Aquí está la cadena de documentación para referencia:

(remove-hook HOOK FUNCTION &optional LOCAL)

Elimine del valor de GANCHO la función FUNCIÓN. GANCHO debe ser un símbolo, y FUNCIÓN puede ser cualquier función válida. Si FUNCTION no es el valor de HOOK, o si FUNCTION no aparece en la lista de ganchos para ejecutar en HOOK, entonces no se hace nada. Ver add-hook.

El tercer argumento opcional, LOCAL, si no es nulo, dice que modifique el valor local del búfer del gancho en lugar de su valor predeterminado.

Dan
fuente
Funciona perfectamente, gracias. Otro gran recordatorio para C-h f. Aceptaré tan pronto como se acabe el tiempo.
Matthew Piziak
2
@MatthewPiziak: si te hace sentir mejor, pasó mucho tiempo antes de que me diera cuenta de que tomó ese tercer argumento, y fue solo después de que alguien en este sitio me lo señaló.
Dan
2
¿Esto no funcionará si la función se agregó explícitamente como LOCAL add-hookpara empezar? (Una prueba rápida en 24,5 parece confirmar mis expectativas ... ¿hay una nueva funcionalidad en el maletero para facilitar este tipo de anulación?)
PHILS