summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/derived.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp/derived.el')
-rw-r--r--lisp/emacs-lisp/derived.el13
1 files changed, 10 insertions, 3 deletions
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el
index e595ff92a39..899c40456e7 100644
--- a/lisp/emacs-lisp/derived.el
+++ b/lisp/emacs-lisp/derived.el
@@ -200,12 +200,19 @@ See Info node `(elisp)Derived Modes' for more details."
No problems result if this variable is not bound.
`add-hook' automatically binds it. (This is true for all hook variables.)"
name)))
+ (unless (boundp ',map)
+ (put ',map 'definition-name ',child))
(defvar ,map (make-sparse-keymap))
,(if declare-syntax
- `(defvar ,syntax (make-syntax-table)))
+ `(progn
+ (unless (boundp ',syntax)
+ (put ',syntax 'definition-name ',child))
+ (defvar ,syntax (make-syntax-table))))
,(if declare-abbrev
- `(defvar ,abbrev
- (progn (define-abbrev-table ',abbrev nil) ,abbrev)))
+ `(progn
+ (put ',abbrev 'definition-name ',child)
+ (defvar ,abbrev
+ (progn (define-abbrev-table ',abbrev nil) ,abbrev))))
(put ',child 'derived-mode-parent ',parent)
,(if group `(put ',child 'custom-mode-group ,group))