+(defun ids-insert-chars-including-components (components
+ &optional level ignored-chars)
+ (unless level
+ (setq level 0))
+ (let (is dis i as bs)
+ (dolist (c (sort (copy-tree (ideographic-products-find components))
+ (lambda (a b)
+ (if (setq as (char-total-strokes a))
+ (if (setq bs (char-total-strokes b))
+ (if (= as bs)
+ (ideograph-char< a b)
+ (< as bs))
+ t)
+ (ideograph-char< a b)))))
+ (unless (memq c ignored-chars)
+ (setq is (char-feature c 'ideographic-structure))
+ (setq i 0)
+ (while (< i level)
+ (insert "\t")
+ (setq i (1+ i)))
+ (insert (ids-find-format-line c is))
+ (setq ignored-chars
+ (ids-insert-chars-including-components
+ (char-to-string c) (1+ level)
+ (cons c ignored-chars))))
+ ))
+ ignored-chars)
+;; (defun ids-insert-chars-including-components (components level)
+;; (let (is dis i)
+;; (dolist (c (ideographic-products-find components))
+;; (setq is (char-feature c 'ideographic-structure))
+;; (setq i 0)
+;; (while (< i level)
+;; (insert "\t")
+;; (setq i (1+ i)))
+;; (insert (ids-find-format-line c is))
+;; ;;(forward-line -1)
+;; (ids-insert-chars-including-components
+;; (char-to-string c) (1+ level))
+;; )))
+