]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/subr.el (atomic-change-group): Fix return value
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 30 Jan 2018 14:55:09 +0000 (09:55 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 30 Jan 2018 14:55:09 +0000 (09:55 -0500)
Suggested by Jarosław Rzeszótko <jrzeszotko@gmail.com>.

lisp/subr.el

index 24bd28839fc20559e9cf5e307e4162d59f160639..00bab70e8a34b504047145fb6d3f322acc2f4064 100644 (file)
@@ -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