'_8K^f9u^Y#.N`>9oKN$\JpI
Date: Thu, 17 Jul 2003 11:54:08 -0500
In-Reply-To: <psr84pje1x.fsf(a)diannao.ittc.ku.edu> (Jerry James's message of
"Thu, 17 Jul 2003 11:47:22 -0500")
Message-ID: <psn0fdjdqn.fsf(a)diannao.ittc.ku.edu>
User-Agent: Gnus/5.1002 (Gnus v5.10.2) XEmacs/21.4 (Rational FORTRAN, linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
I wrote:
I tried it, but it complains that get-char-table only takes 2
arguments.
I wasn't sure what you intended, so I tried removing the 'multi
argument. But now I when I do "C-h f get-char-table", I get this:
This version of your patch seems to work for me. At least, if fixes the
JDE bug, anyway.
Index: lisp/derived.el
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/derived.el,v
retrieving revision 1.6
diff -d -u -r1.6 derived.el
--- lisp/derived.el 2002/07/08 08:21:52 1.6
+++ lisp/derived.el 2003/07/17 16:52:39
@@ -342,12 +342,21 @@
;; 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)
+ (if (characterp key)
+ (let ((newval (get-char-table key new)))
+ (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))))
--
Jerry James
http://www.ittc.ku.edu/~james/