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?

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.