Function: skkdic-breakup-string
skkdic-breakup-string is a byte-compiled function defined in
ja-dic-cnv.el.gz.
Signature
(skkdic-breakup-string SKKBUF KANA STR FROM TO &optional FIRST)
Source Code
;; Defined in /usr/src/emacs/lisp/international/ja-dic-cnv.el.gz
;; Return t if substring of STR (between FROM and TO) can be broken up
;; to chunks all of which can be derived from another entry in SKK
;; dictionary. SKKBUF is the buffer where the original SKK dictionary
;; is visited, KANA is the current entry for STR. FIRST is t only if
;; this is called at top level.
(defun skkdic-breakup-string (skkbuf kana str from to &optional first)
(let ((len (- to from)))
(or (and (>= len 2)
(let ((min-idx (+ from 2))
(idx (if first (1- to ) to))
(found nil))
(while (and (not found) (>= idx min-idx))
(let ((kana2-list (skkdic-get-entry
(substring str from idx)
skkdic-word-list)))
(if (or (and (consp kana2-list)
(let (;; (kana-len (length kana))
kana2)
(catch 'skkdic-tag
(while kana2-list
(setq kana2 (car kana2-list))
(if (string-match kana2 kana)
(throw 'skkdic-tag t))
(setq kana2-list (cdr kana2-list)))))
(or (= idx to)
(skkdic-breakup-string skkbuf kana str
idx to)))
(and (stringp kana2-list)
(string-match kana2-list kana)))
(setq found t)
(setq idx (1- idx)))))
found))
(and first
(> len 2)
(let ((kana2 (skkdic-get-entry
(substring str from (1+ from))
skkdic-prefix-list)))
(and (stringp kana2)
(eq (string-match kana2 kana) 0)))
(skkdic-breakup-string skkbuf kana str (1+ from) to))
(and (not first)
(>= len 1)
(let ((kana2-list (skkdic-get-entry
(substring str from to)
skkdic-postfix-list)))
(and (consp kana2-list)
(let (kana2)
(catch 'skkdic-tag
(while kana2-list
(setq kana2 (car kana2-list))
(if (string= kana2
(substring kana (- (length kana2))))
(throw 'skkdic-tag t))
(setq kana2-list (cdr kana2-list)))))))))))