summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllen Li <darkfeline@felesatra.moe>2017-12-31 20:14:09 -0800
committerNoam Postavsky <npostavs@gmail.com>2018-02-17 08:47:20 -0500
commit0f5cc9a085565c4f6d6d7e124a8b2965d8800ae5 (patch)
treee1847d6e6ee652a23deb1704f013fc0ea71ac91a
parent5b464a9ceab6aa48138d0353669b426ff69e5365 (diff)
downloademacs-0f5cc9a085565c4f6d6d7e124a8b2965d8800ae5.tar.gz
Preserve special abbrev properties when writing
Fixes bug#29924 * lisp/abbrev.el (abbrev--write): Write abbrev properties when set.
-rw-r--r--etc/NEWS5
-rw-r--r--lisp/abbrev.el8
-rw-r--r--test/lisp/abbrev-tests.el17
3 files changed, 29 insertions, 1 deletions
diff --git a/etc/NEWS b/etc/NEWS
index b6b884b816e..8db638e5ed5 100644
--- 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.
+
* Changes in Specialized Modes and Packages in Emacs 27.1
diff --git a/lisp/abbrev.el b/lisp/abbrev.el
index 734cefbb7be..197276cc9ce 100644
--- a/lisp/abbrev.el
+++ b/lisp/abbrev.el
@@ -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)
diff --git a/test/lisp/abbrev-tests.el b/test/lisp/abbrev-tests.el
index 1187700b84d..facf097815e 100644
--- a/test/lisp/abbrev-tests.el
+++ b/test/lisp/abbrev-tests.el
@@ -38,6 +38,12 @@
(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"))
@@ -230,6 +236,17 @@
(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)