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?

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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.