From: Stefan Monnier Date: Tue, 30 Jan 2018 14:55:09 +0000 (-0500) Subject: * lisp/subr.el (atomic-change-group): Fix return value X-Git-Tag: emacs-27.0.90~5774 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=84055bda91d48dd603110b0805560cf1df205a83;p=emacs.git * lisp/subr.el (atomic-change-group): Fix return value Suggested by Jarosław Rzeszótko . --- diff --git a/lisp/subr.el b/lisp/subr.el index 24bd28839fc..00bab70e8a3 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -2586,7 +2586,7 @@ is nil and `use-dialog-box' is non-nil." ;;; Atomic change groups. (defmacro atomic-change-group (&rest body) - "Perform BODY as an atomic change group. + "Like `progn' but perform BODY as an atomic change group. This means that if BODY exits abnormally, all of its changes to the current buffer are undone. This works regardless of whether undo is enabled in the buffer. @@ -2609,8 +2609,8 @@ user can undo the change normally." ;; it enables undo if that was disabled; we need ;; to make sure that it gets disabled again. (activate-change-group ,handle) - ,@body - (setq ,success t)) + (prog1 ,(macroexp-progn body) + (setq ,success t))) ;; Either of these functions will disable undo ;; if it was disabled before. (if ,success