summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/derived.el
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2011-07-07 08:28:00 +0900
committerKenichi Handa <handa@m17n.org>2011-07-07 08:28:00 +0900
commitd2a0a50628933d3cdb09818eee2e17f55e22531f (patch)
treed19c8e71eb63eb6ccd204c2f36f406e4cf853154 /lisp/emacs-lisp/derived.el
parentc805dec0b5fa81b5c9f2b724e2ec12a17d723aca (diff)
parent354cf0ba0b20108c9776be1d868458893bc2cd54 (diff)
downloademacs-d2a0a50628933d3cdb09818eee2e17f55e22531f.tar.gz
emacs-d2a0a50628933d3cdb09818eee2e17f55e22531f.tar.bz2
emacs-d2a0a50628933d3cdb09818eee2e17f55e22531f.zip
merge trunk
Diffstat (limited to 'lisp/emacs-lisp/derived.el')
-rw-r--r--lisp/emacs-lisp/derived.el10
1 files changed, 8 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el
index 1db98ac39c8..4fda2bf1d52 100644
--- a/lisp/emacs-lisp/derived.el
+++ b/lisp/emacs-lisp/derived.el
@@ -253,8 +253,14 @@ No problems result if this variable is not bound.
`(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 (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)
,(when syntax `(set-syntax-table ,syntax))
,(when abbrev `(setq local-abbrev-table ,abbrev))