Como executar uma ação de modificação sem modificar o buffer?

8

Quero adicionar propriedades ao texto (torná-lo read-onlytemporariamente) e não quero alterar o status da modificação. Em geral, como faço para executar alguma ação de modificação sem o Emacs perceber?

Mark Karpov
fonte

Respostas:

10

Há uma macro interna para isso with-silent-modifications,.

Seu caso de uso pretendido é fazer alterações nas propriedades de texto de um buffer, pois as propriedades de texto fazem parte do texto e as alterações a elas seriam refletidas no status de modificação do buffer e acionariam os respectivos ganchos. Apesar de haver proteção rudimentar contra alterações mais invasivas do texto, você deve garantir que o corpo não faça nada estranho:

Se o BODY executar modificações reais no texto do buffer, exceto as cosméticas, os dados de desfazer poderão ser corrompidos.

wasamasa
fonte
Convém adicionar o aviso da with-silent-modificationsdocumentação
Iqbal Ansari