diff --git a/lisp/abbrev.el b/lisp/abbrev.el index f372a280ffe..bd1650b5694 100644 --- a/lisp/abbrev.el +++ b/lisp/abbrev.el @@ -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, diff --git a/test/automated/abbrev-tests.el b/test/automated/abbrev-tests.el new file mode 100644 index 00000000000..da77f6113f8 --- /dev/null +++ b/test/automated/abbrev-tests.el @@ -0,0 +1,43 @@ +;;; abbrev-tests.el --- Test suite for abbrevs. + +;; Copyright (C) 2015 Free Software Foundation, Inc. + +;; Author: Eli Zaretskii +;; 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 . + +;;; 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