]> git.eshelyaron.com Git - emacs.git/commitdiff
Reset abbrevs-changed after saving abbrevs (bug#62208)
authorFilipp Gunbin <fgunbin@fastmail.fm>
Wed, 15 Mar 2023 18:04:26 +0000 (21:04 +0300)
committerFilipp Gunbin <fgunbin@fastmail.fm>
Fri, 17 Mar 2023 13:34:30 +0000 (16:34 +0300)
* lisp/abbrev.el (abbrev--possibly-save): Reset abbrevs-changed after
saving abbrevs.
* test/lisp/abbrev-tests.el (abbrev--possibly-save-test): New test.

lisp/abbrev.el
test/lisp/abbrev-tests.el

index 550d956fb7b93910455c43db70e32c835d013d16..e1311dbc83b36d929606bdd77f01bf0499a8d9be 100644 (file)
@@ -1250,17 +1250,17 @@ which see."
     ;; asked to.
     (and save-abbrevs
          abbrevs-changed
-         (progn
-          (if (or arg
-                  (eq save-abbrevs 'silently)
-                  (y-or-n-p (format "Save abbrevs in %s? " abbrev-file-name)))
-              (progn
-                 (write-abbrev-file nil)
-                 nil)
-            ;; Don't keep bothering user if they say no.
-            (setq abbrevs-changed nil)
-             ;; Inhibit message in `save-some-buffers'.
-            t)))))
+         (prog1
+            (if (or arg
+                    (eq save-abbrevs 'silently)
+                    (y-or-n-p (format "Save abbrevs in %s? " abbrev-file-name)))
+                (progn
+                   (write-abbrev-file nil)
+                   nil)
+               ;; Inhibit message in `save-some-buffers'.
+              t)
+           ;; Don't ask again whether saved or user said no.
+           (setq abbrevs-changed nil)))))
 
 (add-hook 'save-some-buffers-functions #'abbrev--possibly-save)
 
index ecca21df4bcb8184750ac26902c67dfe617075a5..7b2780309b0670b019aa3bcf21a28fad97d21586 100644 (file)
   (should-not (abbrev-table-p translation-table-vector))
   (should (abbrev-table-p (make-abbrev-table))))
 
+(ert-deftest abbrev--possibly-save-test ()
+  "Test that `abbrev--possibly-save' properly resets
+`abbrevs-changed'."
+  (ert-with-temp-file temp-test-file
+    (let ((abbrev-file-name temp-test-file)
+          (save-abbrevs t))
+      ;; Save
+      (let ((abbrevs-changed t))
+        (should-not (abbrev--possibly-save nil t))
+        (should-not abbrevs-changed))
+      ;; Don't save
+      (let ((abbrevs-changed t))
+        (ert-simulate-keys '(?n)
+          (should (abbrev--possibly-save nil)))
+        (should-not abbrevs-changed)))))
+
 (provide 'abbrev-tests)
 
 ;;; abbrev-tests.el ends here