Remova os ganchos para modos específicos

12

Quero excluir o espaço em branco à direita para salvar em todos os modos, exceto org-mode.

No meu .emacs, eu tenho a seguinte linha:

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

Eu uso a use-packagemacro e tentei adicionar (remove-hook 'before-save-hook 'delete-trailing-whitespace)ao meu :configbloco, mas isso remove o gancho globalmente. Como posso removê-lo especificamente para org-mode?

Matthew Piziak
fonte

Respostas:

17

Eu não tenho nenhuma experiência com a use-packagemacro, mas, em princípio, você pode usar o terceiro argumento ao remove-hookqual diz para remover a função apenas do gancho local:

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

Aqui está a documentação para referência:

(remove-hook HOOK FUNCTION &optional LOCAL)

Remova do valor de HOOK a função FUNCTION. HOOK deve ser um símbolo e FUNCTION pode ser qualquer função válida. Se FUNCTION não for o valor de HOOK, ou, se FUNCTION não aparecer na lista de ganchos a serem executados no HOOK, nada será feito. Veja add-hook.

O terceiro argumento opcional, LOCAL, se não nulo, diz para modificar o valor local do buffer do gancho em vez de seu valor padrão.

Dan
fonte
Funciona perfeitamente, obrigado. Outro ótimo lembrete para C-h f. Aceito assim que o cronômetro acabar.
Matthew Piziak
2
@MatthewPiziak: se isso faz você se sentir melhor, demorou muito tempo para eu perceber que era o terceiro argumento, e foi só depois que alguém neste site me indicou.
Dan
2
Isso não funcionará apenas se a função tiver sido explicitamente adicionada como LOCAL add-hookpara começar? (Um teste rápido em 24,5 parece confirmar a minha expectativa ... existe uma nova funcionalidade no tronco para facilitar este tipo de substituição?)
phils