diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2022-05-03 15:35:47 -0400 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2022-05-03 15:35:47 -0400 |
commit | b5db5a64435b86de6e5277d1d173c57784783e5e (patch) | |
tree | 10916f81c997ea3c580a36a65297cfb357b68907 /lisp/emacs-lisp | |
parent | 8a7db868cc28f933bc2fb2739d122ed11c9ec872 (diff) | |
download | emacs-b5db5a64435b86de6e5277d1d173c57784783e5e.tar.gz emacs-b5db5a64435b86de6e5277d1d173c57784783e5e.tar.bz2 emacs-b5db5a64435b86de6e5277d1d173c57784783e5e.zip |
with-buffer-unmodified-if-unchanged: Tweak the implementation
* lisp/emacs-lisp/subr-x.el (with-buffer-unmodified-if-unchanged):
Skip the hash if the buffer was not modified at all.
Use `restore-buffer-modified-p`.
Also mention that it's imperative that the current buffer is preserved.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/subr-x.el | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index afa0423d90e..8e763b613ee 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -426,7 +426,9 @@ modification status: (with-buffer-unmodified-if-unchanged (insert \"a\") - (delete-char -1))" + (delete-char -1)) + +BODY must preserve the current buffer." (declare (debug t) (indent 0)) (let ((hash (gensym))) `(let ((,hash (and (not (buffer-modified-p)) @@ -437,9 +439,9 @@ modification status: ;; If we didn't change anything in the buffer (and the buffer ;; was previously unmodified), then flip the modification status ;; back to "unchanged". - (when (and ,hash + (when (and ,hash (buffer-modified-p) (equal ,hash (buffer-hash))) - (set-buffer-modified-p nil)))))) + (restore-buffer-modified-p nil)))))) (provide 'subr-x) |