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


View this message in rfc822 format

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: emacs18 <at> gmail.com
Cc: 8998 <at> debbugs.gnu.org
Subject: bug#8998: further analysis of the problem
Date: Tue, 05 Jul 2011 14:28:43 -0400
> Why is `lisp-interaction-mode-abbrev-table' its own parent?

I've installed the patch below which I believe fixes the problem.
Can you confirm that it fixes the problem for you?


        Stefan


=== modified file 'lisp/emacs-lisp/derived.el'
--- lisp/emacs-lisp/derived.el	2011-07-01 16:41:02 +0000
+++ lisp/emacs-lisp/derived.el	2011-07-05 18:23:08 +0000
@@ -255,7 +255,10 @@
 				   (not (eq parent (standard-syntax-table))))
 			(set-char-table-parent ,syntax (syntax-table)))))
                 ,(when declare-abbrev
-                   `(unless (abbrev-table-get ,abbrev :parents)
+                   `(unless (or (abbrev-table-get ,abbrev :parents)
+                                ;; This can happen if the major mode defines
+                                ;; the abbrev-table to be its parent's.
+                                (eq ,abbrev local-abbrev-table))
                       (abbrev-table-put ,abbrev :parents
                                         (list local-abbrev-table))))))
 	  (use-local-map ,map)

=== modified file 'lisp/emacs-lisp/lisp-mode.el'
--- lisp/emacs-lisp/lisp-mode.el	2011-06-28 12:09:43 +0000
+++ lisp/emacs-lisp/lisp-mode.el	2011-07-05 16:14:45 +0000
@@ -525,7 +525,6 @@
   "Keymap for Lisp Interaction mode.
 All commands in `lisp-mode-shared-map' are inherited by this map.")
 
-(defvar lisp-interaction-mode-abbrev-table lisp-mode-abbrev-table)
 (define-derived-mode lisp-interaction-mode emacs-lisp-mode "Lisp Interaction"
   "Major mode for typing and evaluating Lisp forms.
 Like Lisp mode except that \\[eval-print-last-sexp] evals the Lisp expression





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.