Возможно, это просто потому, что они считаются частью строки ... (как говорят документы).Помните, что Emacs ориентирован на буфер , а не ориентирован на файл, поэтому тот факт, что содержимое сохраняется на диск, несколько не имеет значения (если думать о буфере ориентированный).
Кроме тогосвойства не могут быть отменены, и это определенно подходит для того, чтобы буфер помечался как измененный.
Я не знаю, что существует стандартный способ сохранения состояния, модифицированного буфером, но я вижу один в pabbrev.el библиотека:
(defmacro pabbrev-save-buffer-modified-p (&rest body)
"Eval BODY without affected buffer modification status"
`(let ((buffer-modified (buffer-modified-p))
(buffer-undo-list t))
,@body
(set-buffer-modified-p buffer-modified)))
Она не защищает от нелокальных выходов , поэтому, возможно, вы захотите добавить вызов к unwind-protect
, вот так:
(defmacro save-buffer-modified-p (&rest body)
"Eval BODY without affected buffer modification status"
`(let ((buffer-modified (buffer-modified-p))
(buffer-undo-list t))
(unwind-protect
,@body
(set-buffer-modified-p buffer-modified))))