1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-07 15:21:46 +00:00

Fix error in copy-abbrev-table

* lisp/abbrev.el (define-abbrev): Don't erase the :abbrev-table-modiff
property of the abbrev-table.  (Bug#21828)

* test/automated/abbrev-tests.el: New file.
This commit is contained in:
Eli Zaretskii 2015-11-07 13:32:33 +02:00
parent b29be62888
commit bede518c38
2 changed files with 46 additions and 0 deletions

View File

@ -87,6 +87,7 @@ be replaced by its expansion."
"Make a new abbrev-table with the same abbrevs as TABLE.
Does not copy property lists."
(let ((new-table (make-abbrev-table)))
(message "modif: %s" (abbrev-table-get new-table :abbrev-table-modiff))
(mapatoms
(lambda (symbol)
(define-abbrev new-table
@ -580,6 +581,8 @@ An obsolete but still supported calling form is:
,@(if (cadr props) (list :system (cadr props))))))
(unless (plist-get props :count)
(setq props (plist-put props :count 0)))
(setq props (plist-put props :abbrev-table-modiff
(abbrev-table-get table :abbrev-table-modiff)))
(let ((system-flag (plist-get props :system))
(sym (intern name table)))
;; Don't override a prior user-defined abbrev with a system abbrev,

View File

@ -0,0 +1,43 @@
;;; abbrev-tests.el --- Test suite for abbrevs.
;; Copyright (C) 2015 Free Software Foundation, Inc.
;; Author: Eli Zaretskii <eliz@gnu.org>
;; Keywords: abbrevs
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Code:
(require 'ert)
(require 'abbrev)
(ert-deftest copy-abbrev-table-test ()
(defvar foo-abbrev-table nil) ; Avoid compiler warning
(define-abbrev-table 'foo-abbrev-table
'())
(should (abbrev-table-p foo-abbrev-table))
;; Bug 21828
(let ((new-foo-abbrev-table
(condition-case nil
(copy-abbrev-table foo-abbrev-table)
(error nil))))
(should (abbrev-table-p new-foo-abbrev-table)))
(should-not (string-equal (buffer-name) "*Backtrace*")))
(provide 'abbrev-tests)
;;; add-log-tests.el ends here