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))