(if (= len (length s))
(list s)
(list (substring s 0 len) (substring s len)))))
-(defun egg-end-conversion-other-languages (bunsetsu-info-list)
+(defun egg-end-conversion-other-languages (bunsetsu-info-list abort)
nil)
(defun egg-fini-other-languages (language)
nil)
(funcall (aref egg-conversion-backend 8) bunsetsu-info candidate-pos))
(defun egg-change-bunsetsu-length (b0 b1 b2 len)
(funcall (aref egg-conversion-backend 9) b0 b1 b2 len))
-(defun egg-end-conversion (bunsetsu-info-list)
- (funcall (aref egg-conversion-backend 10) bunsetsu-info-list))
+(defun egg-end-conversion (bunsetsu-info-list abort)
+ (funcall (aref egg-conversion-backend 10) bunsetsu-info-list abort))
(defun egg-start-reverse-conversion (yomi-string language)
(egg-set-current-backend language)
(if (aref egg-conversion-backend 11)
(egg-start-conversion
(buffer-substring-no-properties s e)
egg-current-language))
- (error
+ (error ; XXX: catching all error is BADBADBAD
(setq egg-conversion-backend egg-conversion-backend-other-languages
bunsetsu-info-list (egg-start-conversion-other-languages
(buffer-substring-no-properties s e)
(interactive "p")
(egg-reconvert-bunsetsu-internal n 'egg-start-conversion))
+;; XXX: not working. Should change protocol to backend?
(defun egg-decide-before-point ()
(interactive)
(let ((inhibit-read-only t)
(delete-region (point) (+ (point) (length egg-conversion-close)))
(its-restart source t))))
+(defun egg-decide-bunsetsu (&optional end-marker)
+ (let ((in-loop t)
+ p bunsetsu-info-list bl)
+ (setq p (point))
+ (while in-loop
+ (let ((bl1 (cons (egg-get-bunsetsu-info p) nil)))
+ (if bl
+ (setq bl (setcdr bl bl1))
+ (setq bunsetsu-info-list (setq bl bl1))))
+ (forward-char)
+ (remove-text-properties p (point) '(face nil
+ intangible nil
+ local-map nil
+ read-only nil
+ egg-bunsetsu-last nil))
+ (setq p (point))
+ (if (or (and end-marker (= p end-marker))
+ (get-text-property p 'egg-end))
+ (setq in-loop nil)
+ (setq p (1- p))
+ (delete-region p (1+ p)))) ; Delete bunsetsu separator
+ bunsetsu-info-list))
+
(defun egg-exit-conversion ()
(interactive)
- (goto-char (next-single-property-change (point) 'egg-end))
- (egg-decide-before-point))
+ (let ((inhibit-read-only t)
+ start bunsetsu-list)
+ (if (get-text-property (1- (point)) 'egg-start)
+ (setq start (1- (point)))
+ (setq start (1- (previous-single-property-change (point) 'egg-start))))
+ (goto-char start)
+ ;; Delete open marker
+ (delete-region start (+ start (length egg-conversion-open)))
+ (setq bunsetsu-list (egg-decide-bunsetsu))
+ ;; Delete close marker
+ (delete-region (point) (+ (point) (length egg-conversion-close)))
+ (egg-end-conversion bunsetsu-list nil)
+ (egg-do-auto-fill)
+ (run-hooks 'input-method-after-insert-chunk-hook)))
(defun egg-abort-conversion ()
(interactive)
- (let ((inhibit-read-only t) source)
- (goto-char (- (if (get-text-property (1- (point)) 'egg-start)
- (point)
- (previous-single-property-change (point) 'egg-start))
- (length egg-conversion-open)))
+ (let ((inhibit-read-only t)
+ start bunsetsu-list source)
+ (if (get-text-property (1- (point)) 'egg-start)
+ (setq start (1- (point)))
+ (setq start (1- (previous-single-property-change (point) 'egg-start))))
+ (goto-char start)
(setq source (get-text-property (point) 'egg-source))
- (delete-region (point) (+ (next-single-property-change (point) 'egg-end)
- (length egg-conversion-close)))
+ ;; Delete open marker
+ (delete-region start (+ start (length egg-conversion-open)))
+ (setq bunsetsu-list (egg-decide-bunsetsu))
+ ;; Delete close marker
+ (delete-region (point) (+ (point) (length egg-conversion-close)))
+ (egg-end-conversion bunsetsu-list t)
+ (delete-region start (point))
(its-restart source)))
(defun egg-select-candidate ()