Sync up with r21-4-22-chise-0_25-8. r21-4-22-u2km-0_25-8
authortomo <tomo>
Tue, 19 Apr 2011 23:49:12 +0000 (23:49 +0000)
committertomo <tomo>
Tue, 19 Apr 2011 23:49:12 +0000 (23:49 +0000)
lisp/utf-2000/ChangeLog
lisp/utf-2000/auto-autoloads.el
lisp/utf-2000/chise-subr.el

index aceaf5f..fae7fd0 100644 (file)
@@ -1,5 +1,10 @@
 2011-04-19  MORIOKA Tomohiko  <tomo@zinbun.kyoto-u.ac.jp>
 
+       * chise-subr.el (define-char-before): New function.
+       (define-char-after): New function.
+
+2011-04-19  MORIOKA Tomohiko  <tomo@zinbun.kyoto-u.ac.jp>
+
        * ruimoku6.el: Don't omit `<-subsumptive' features of
        `=ruimoku-v6' characters.
 
index 646b634..2e1655f 100644 (file)
@@ -7,7 +7,7 @@
 
 ;;;***
 \f
-;;;### (autoloads (chise-string< map-char-family char-id char-ucs char-attribute-name< expand-char-feature-name) "chise-subr" "utf-2000/chise-subr.el")
+;;;### (autoloads (chise-string< define-char-after define-char-before map-char-family char-id char-ucs char-attribute-name< expand-char-feature-name) "chise-subr" "utf-2000/chise-subr.el")
 
 (autoload 'expand-char-feature-name "chise-subr" nil nil nil)
 
@@ -21,6 +21,12 @@ Return code-point of UCS." nil nil)
 
 (autoload 'map-char-family "chise-subr" nil nil nil)
 
+(autoload 'define-char-before "chise-subr" "\
+Define CHAR-SPEC and insert it before NEXT-CHAR." nil nil)
+
+(autoload 'define-char-after "chise-subr" "\
+Define CHAR-SPEC and insert it after PREV-CHAR." nil nil)
+
 (autoload 'chise-string< "chise-subr" nil nil nil)
 
 ;;;***
index 6101120..79484cd 100644 (file)
@@ -1,7 +1,7 @@
 ;;; chise-subr.el --- basic lisp subroutines for XEmacs CHISE
 
 ;; Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009,
-;;   2010 MORIOKA Tomohiko.
+;;   2010, 2011 MORIOKA Tomohiko.
 
 ;; Author: MORIOKA Tomohiko <tomo@kanji.zinbun.kyoto-u.ac.jp>
 ;; Keywords: CHISE, Character Database, ISO/IEC 10646, UCS, Unicode, MULE.
        (setq rest (cdr rest))))))
 
 
+;;;###autoload
+(defun define-char-before (char-spec next-char)
+  "Define CHAR-SPEC and insert it before NEXT-CHAR." 
+  (let (mother sisters rest)
+    (when (and (or (characterp next-char)
+                  (setq next-char (find-char next-char)))
+              (setq mother (get-char-attribute next-char '<-subsumptive))
+              (setq mother (car mother))
+              (setq sisters (get-char-attribute mother '->subsumptive)))
+      (if (eq (car sisters) next-char)
+         (setq sisters (cons (define-char char-spec) sisters))
+       (setq rest sisters)
+       (while (and (cdr rest)
+                   (not (eq (nth 1 rest) next-char)))
+         (setq rest (cdr rest)))
+       (if (null rest)
+           (setq sisters (cons (define-char char-spec) sisters))
+         (setcdr rest (cons (define-char char-spec) (cdr rest)))))
+      (put-char-attribute mother '->subsumptive sisters))))
+
+;;;###autoload
+(defun define-char-after (prev-char char-spec)
+  "Define CHAR-SPEC and insert it after PREV-CHAR." 
+  (let (mother sisters rest)
+    (when (and (or (characterp prev-char)
+                  (setq prev-char (find-char prev-char)))
+              (setq mother (get-char-attribute prev-char '<-subsumptive))
+              (setq mother (car mother))
+              (setq sisters (get-char-attribute mother '->subsumptive)))
+      (setq rest sisters)
+      (while (and rest
+                 (not (eq (car rest) prev-char)))
+       (setq rest (cdr rest)))
+      (if (null rest)
+         (setq sisters (cons (define-char char-spec) sisters))
+       (setcdr rest (cons (define-char char-spec) (cdr rest))))
+      (put-char-attribute mother '->subsumptive sisters))))
+
+
 ;;; @ string
 ;;;