From f9ff4d5828132fe71c495112e943d8438210ea9d Mon Sep 17 00:00:00 2001 From: Allen Li Date: Sun, 31 Dec 2017 20:14:09 -0800 Subject: [PATCH] Preserve special abbrev properties when writing Fixes bug#29924 * lisp/abbrev.el (abbrev--write): Write abbrev properties when set. --- etc/NEWS | 5 +++++ lisp/abbrev.el | 8 +++++++- test/lisp/abbrev-tests.el | 17 +++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/etc/NEWS b/etc/NEWS index 71569c95ad..e408c00b83 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -103,6 +103,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 734cefbb7b..197276cc9c 100644 --- a/lisp/abbrev.el +++ b/lisp/abbrev.el @@ -908,8 +908,14 @@ abbrev--write (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 1187700b84..facf097815 100644 --- a/test/lisp/abbrev-tests.el +++ b/test/lisp/abbrev-tests.el @@ -38,6 +38,12 @@ setup-test-abbrev-table (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 @@ setup-test-abbrev-table (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) -- 2.16.1