]> git.eshelyaron.com Git - emacs.git/commitdiff
Preserve special abbrev properties when writing
authorAllen Li <darkfeline@felesatra.moe>
Mon, 1 Jan 2018 04:14:09 +0000 (20:14 -0800)
committerNoam Postavsky <npostavs@gmail.com>
Sat, 17 Feb 2018 13:47:20 +0000 (08:47 -0500)
Fixes bug#29924

* lisp/abbrev.el (abbrev--write): Write abbrev properties when set.

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

index b6b884b816eec966c2bd85c7f184ec24e83922f8..8db638e5ed5ac687663e19293325b552d37f3bad 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -122,6 +122,11 @@ characters that quote text "like this" are replaced by double
 typographic quotes, “like this”, in text modes, and in comments in
 non-text modes.
 
+---
+** 'write-abbrev-file' now includes special properties.
+'write-abbrev-file' now writes special properties like ':case-fixed'
+for abbrevs that have them.
+
 \f
 * Changes in Specialized Modes and Packages in Emacs 27.1
 
index 734cefbb7bed98e9c22cb6d2d38f663c80be99ac..197276cc9ce4c59c87def8bd3074b0ffdf23faa8 100644 (file)
@@ -908,8 +908,14 @@ Presumes that `standard-output' points to `current-buffer'."
     (prin1 (symbol-value sym))
     (insert " ")
     (prin1 (symbol-function sym))
-    (insert " ")
+    (insert " :count ")
     (prin1 (abbrev-get sym :count))
+    (when (abbrev-get sym :case-fixed)
+      (insert " :case-fixed ")
+      (prin1 (abbrev-get sym :case-fixed)))
+    (when (abbrev-get sym :enable-function)
+      (insert " :enable-function ")
+      (prin1 (abbrev-get sym :enable-function)))
     (insert ")\n")))
 
 (defun abbrev--describe (sym)
index 1187700b84d0a895221a9ecc96f34c664017be63..facf097815e574725863cb1e09cdec4f3179c65b 100644 (file)
   (abbrev-table-put ert-test-abbrevs :ert-test "ert-test-value")
   ert-test-abbrevs)
 
+(defun setup-test-abbrev-table-with-props ()
+  (defvar ert-test-abbrevs nil)
+  (define-abbrev-table 'ert-test-abbrevs '(("fb" "fooBar" nil :case-fixed t)))
+  (abbrev-table-put ert-test-abbrevs :ert-test "ert-test-value")
+  ert-test-abbrevs)
+
 (ert-deftest abbrev-table-p-test ()
   (should-not (abbrev-table-p 42))
   (should-not (abbrev-table-p "aoeu"))
     (should (equal "abbrev-ert-test" (abbrev-expansion "a-e-t" ert-test-abbrevs)))
     (delete-file temp-test-file)))
 
+(ert-deftest read-write-abbrev-file-test-with-props ()
+  "Test reading and writing abbrevs from file"
+  (let ((temp-test-file (make-temp-file "ert-abbrev-test"))
+        (ert-test-abbrevs (setup-test-abbrev-table-with-props)))
+    (write-abbrev-file temp-test-file)
+    (clear-abbrev-table ert-test-abbrevs)
+    (should (abbrev-table-empty-p ert-test-abbrevs))
+    (read-abbrev-file temp-test-file)
+    (should (equal "fooBar" (abbrev-expansion "fb" ert-test-abbrevs)))
+    (delete-file temp-test-file)))
+
 (ert-deftest abbrev-edit-save-to-file-test ()
   "Test saving abbrev definitions in buffer to file"
   (defvar ert-save-test-table nil)