emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master bede518: Fix error in copy-abbrev-table


From: Eli Zaretskii
Subject: [Emacs-diffs] master bede518: Fix error in copy-abbrev-table
Date: Sat, 07 Nov 2015 11:33:25 +0000

branch: master
commit bede518c38db805ab9ac4b86f570ca9bff79a783
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    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.
---
 lisp/abbrev.el                 |    3 ++
 test/automated/abbrev-tests.el |   43 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 0 deletions(-)

diff --git a/lisp/abbrev.el b/lisp/abbrev.el
index f372a28..bd1650b 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 0000000..da77f61
--- /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 <address@hidden>
+;; 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]