(ideographic-structure-char=): New function; check `<-radical'
authortomo <tomo>
Tue, 26 Nov 2002 02:58:39 +0000 (02:58 +0000)
committertomo <tomo>
Tue, 26 Nov 2002 02:58:39 +0000 (02:58 +0000)
attribute.
(ideographic-structure-member-compare-parts): Use
`ideographic-structure-char='.

ids-find.el

index e68d8a1..871a8ef 100644 (file)
 
 ;;; Code:
 
+(defun ideographic-structure-char= (c1 c2)
+  (or (eq c1 c2)
+      (and c1 c2
+          (or (eq (char-ucs c1)(char-ucs c2))
+              (let ((m1 (car (get-char-attribute c1 '<-radical)))
+                    (m2 (car (get-char-attribute c2 '<-radical))))
+                (unless (characterp m1)
+                  (setq m1 (or (find-char m1))))
+                (unless (characterp m2)
+                  (setq m2 (find-char m2)))
+                (when (or m1 m2)
+                  (ideographic-structure-char= m1 m2)))))))
+
 (defun ideographic-structure-member-compare-parts (part s-part)
   (let (ret)
-    (cond ((char-ref= part s-part
-                     (lambda (c1 c2)
-                       (or (eq c1 c2)
-                           (and c1 c2
-                                (eq (char-ucs c1)(char-ucs c2)))))))
+    (cond ((char-ref= part s-part #'ideographic-structure-char=))
          ((listp s-part)
           (if (setq ret (assq 'ideographic-structure s-part))
               (ideographic-structure-member part (cdr ret))))