GNU bug report logs - #8998
24.0.50; expand-abbrev goes into infinite loop

Previous Next

Package: emacs;

Reported by: Richard Kim <emacs18 <at> gmail.com>

Date: Tue, 5 Jul 2011 00:48:01 UTC

Severity: normal

Merged with 8999

Found in version 24.0.50

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 8998 <at> debbugs.gnu.org (full text, mbox):

From: emacs18 <at> gmail.com
To: 8998 <at> debbugs.gnu.org
Subject: culprit found
Date: Mon, 04 Jul 2011 19:14:30 -0700
I think the infinite loop problem that I reported was introduced by
revision 104853 shown below.


=== modified file 'lisp/ChangeLog'
--- lisp/ChangeLog	2011-07-01 13:37:00 +0000
+++ lisp/ChangeLog	2011-07-01 16:41:02 +0000
@@ -1,3 +1,8 @@
+2011-07-01  Stefan Monnier  <monnier <at> iro.umontreal.ca>
+
+	* emacs-lisp/derived.el (define-derived-mode): Make abbrev-table
+	inherit from parent.
+
 2011-07-01  Lars Magne Ingebrigtsen  <larsi <at> gnus.org>
 
 	* dired-aux.el (dired-diff): Doc fixup (bug#8816).

=== modified file 'lisp/emacs-lisp/derived.el'
--- lisp/emacs-lisp/derived.el	2011-03-22 20:58:27 +0000
+++ lisp/emacs-lisp/derived.el	2011-07-01 16:41:02 +0000
@@ -253,8 +253,11 @@
 		   `(let ((parent (char-table-parent ,syntax)))
 		      (unless (and parent
 				   (not (eq parent (standard-syntax-table))))
-			(set-char-table-parent ,syntax (syntax-table)))))))
-
+			(set-char-table-parent ,syntax (syntax-table)))))
+                ,(when declare-abbrev
+                   `(unless (abbrev-table-get ,abbrev :parents)
+                      (abbrev-table-put ,abbrev :parents
+                                        (list local-abbrev-table))))))
 	  (use-local-map ,map)
 	  ,(when syntax `(set-syntax-table ,syntax))
 	  ,(when abbrev `(setq local-abbrev-table ,abbrev))





This bug report was last modified 14 years and 19 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.