- (let ((m (make-marker))
- all start bunsetsu-list)
- (if (get-text-property (1- (point)) 'egg-start)
- (signal 'beginning-of-buffer nil)
- (setq start (1- (previous-single-property-change (point) 'egg-start))))
- (set-marker m (point))
- (goto-char start)
- ;; Delete open marker
- (delete-region start (1+ start))
- (setq bunsetsu-list (egg-decide-bunsetsu m))
- ;; delete separator
- (delete-region (1- (point)) (point))
- ;; insert open marker
- (insert egg-conversion-open)
- (put-text-property m (point) 'egg-start t)
- (if egg-conversion-face
- (put-text-property p (point) 'invisible t))
- (egg-end-conversion bunsetsu-list)
- (set-marker m nil)))
+ (let (bunsetsu-list bl (p (point)) source (dlen 0) l s)
+ (save-restriction
+ (if (null (get-text-property (1- (point)) 'egg-start))
+ (goto-char (previous-single-property-change (point) 'egg-start)))
+ (narrow-to-region (1- (point)) p)
+ (setq source (get-text-property (1- (point)) 'egg-source))
+ (setq bunsetsu-list (setq bl (list nil)))
+ (while (< (point) (point-max))
+ ;; delete sparator/open marker
+ (delete-region (1- (point)) (point))
+ (setq bl (setcdr bl (list (egg-get-bunsetsu-info (point)))))
+ (setq dlen (+ dlen (length (egg-get-bunsetsu-source (car bl)))))
+ (if (get-text-property (point) 'egg-bunsetsu-last)
+ (progn
+ (egg-end-conversion (cdr bunsetsu-list))
+ (setq bunsetsu-list (setq bl (list nil)))))
+ (setq p (point))
+ (forward-char)
+ (remove-text-properties p (point) '(face nil
+ intangible nil
+ local-map nil
+ egg-bunsetsu-last nil))))
+ (if (get-text-property (point) 'egg-end)
+ (progn
+ ;; delete close marker
+ (delete-region (point) (1+ (point)))
+ (egg-do-auto-fill)
+ (run-hooks 'input-method-after-insert-chunk-hook))
+ ;; delete last from speparater to close marker
+ (delete-region (1- (point))
+ (1+ (next-single-property-change (point) 'egg-end)))
+ ;; rebuild fence mode string
+ (setq p 0)
+ (while (< p dlen)
+ (setq s (car (get-text-property p 'its-syl source))
+ l (length s)
+ p (+ p l))
+ (if (> p dlen)
+ (put-text-property dlen p
+ 'its-syl (list (substring s (- dlen p)))
+ source)))
+ (its-restart (substring source dlen)))))