Mercurial > hg > xemacs-beta
diff lisp/derived.el @ 1578:e2ddc2a2b794
[xemacs-hg @ 2003-07-18 07:42:47 by stephent]
fix derived-mode-merge-syntax-tables <8765m0jnb1.fsf@tleepslib.sk.tsukuba.ac.jp>
author | stephent |
---|---|
date | Fri, 18 Jul 2003 07:42:48 +0000 |
parents | 7f5ac0d2a71f |
children | e6d43c299b9c |
line wrap: on
line diff
--- a/lisp/derived.el Thu Jul 17 21:52:19 2003 +0000 +++ b/lisp/derived.el Fri Jul 18 07:42:48 2003 +0000 @@ -342,12 +342,20 @@ ;; check for inheritance. (map-char-table #'(lambda (key value) - (if (eq ?@ (char-syntax-from-code value)) - (map-char-table #'(lambda (key1 value1) - (put-char-table key1 value1 new)) - old - key))) - new) + (let ((newval (get-range-char-table key new 'multi))) + (cond ((eq newval 'multi) ; OK, dive into the class hierarchy + (map-char-table + #'(lambda (key1 value1) + (when (eq ?@ (char-syntax-from-code + (get-range-char-table key new ?@))) + (put-char-table key1 value new)) + nil) + new + key)) + ((eq ?@ (char-syntax-from-code newval)) ;; class at once + (put-char-table key value new)))) + nil) + old) ;; pre-20.0 (let ((idx 0) (end (min (length new) (length old))))