egg-980402.
[elisp/egg.git] / egg-cnv.el
index f9df95d..bd947dc 100644 (file)
@@ -9,7 +9,7 @@
 ;; Maintainer: NIIBE Yutaka <gniibe@mri.co.jp>
 ;; Keywords: mule, multilingual, input method
 
-;; This file will be part of GNU Emacs (in future).
+;; This file is part of EGG.
 
 ;; EGG is free software; you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
                               'egg-bunsetsu-last  last
                               'local-map          egg-conversion-map))
     (if egg-conversion-face
-       (put-text-property p p1 'face (egg-get-conversion-face)))))
+       (egg-set-face p p1 (egg-get-conversion-face)))))
 
 (defun egg-insert-bunsetsu-list (bunsetsu-info-list &optional last)
   (let ((l bunsetsu-info-list)
   (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)
              bl (setcdr bl (list (egg-get-bunsetsu-info (point)))))
        (if (get-text-property (point) 'egg-bunsetsu-last)
            (progn
-             (egg-end-conversion (cdr bunsetsu-list))
+             (egg-end-conversion (cdr bunsetsu-list) nil)
              (setq bunsetsu-list (setq bl (list nil)))))
        (setq p (point))
        (forward-char)
        (set-text-properties p (point) nil)))
     (if (cdr bunsetsu-list)
-       (egg-end-conversion (cdr bunsetsu-list)))
+       (egg-end-conversion (cdr bunsetsu-list) nil))
     (if (get-text-property (point) 'egg-end)
        (progn
          ;; delete close marker
       (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)
-  (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)))
+  (goto-char (next-single-property-change (point) 'egg-end))
+  (egg-decide-before-point))
 
 (defun egg-abort-conversion ()
   (interactive)