diff options
author | Stefan Monnier <[email protected]> | 2011-07-05 14:26:33 -0400 |
---|---|---|
committer | Stefan Monnier <[email protected]> | 2011-07-05 14:26:33 -0400 |
commit | 450a0f09279df347a10d6c1e4b809a5082daf9c8 (patch) | |
tree | e5aa0f364fabe2dd0c4c9820d6a90a3765c623df /lisp/emacs-lisp/derived.el | |
parent | 2de69e00f3991d554d37327a2afd71b981d4e488 (diff) |
* lisp/emacs-lisp/lisp-mode.el (lisp-interaction-mode-abbrev-table):
Let define-derived-mode define it.
* lisp/emacs-lisp/derived.el (define-derived-mode): Try to avoid creating
cycles of abbrev-table inheritance.
Fixes: debbugs:8998
Diffstat (limited to 'lisp/emacs-lisp/derived.el')
-rw-r--r-- | lisp/emacs-lisp/derived.el | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el index e8f799b9af..4fda2bf1d5 100644 --- a/lisp/emacs-lisp/derived.el +++ b/lisp/emacs-lisp/derived.el @@ -255,7 +255,10 @@ No problems result if this variable is not bound. (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) |