diff options
| author | Allen Li <darkfeline@felesatra.moe> | 2017-12-31 20:14:09 -0800 |
|---|---|---|
| committer | Noam Postavsky <npostavs@gmail.com> | 2018-02-17 08:47:20 -0500 |
| commit | 0f5cc9a085565c4f6d6d7e124a8b2965d8800ae5 (patch) | |
| tree | e1847d6e6ee652a23deb1704f013fc0ea71ac91a | |
| parent | 5b464a9ceab6aa48138d0353669b426ff69e5365 (diff) | |
| download | emacs-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/NEWS | 5 | ||||
| -rw-r--r-- | lisp/abbrev.el | 8 | ||||
| -rw-r--r-- | test/lisp/abbrev-tests.el | 17 |
3 files changed, 29 insertions, 1 deletions
@@ -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) |
