egg-980220.
[elisp/egg.git] / its.el
diff --git a/its.el b/its.el
index 26aeb04..56bab98 100644 (file)
--- a/its.el
+++ b/its.el
 ;; intangible intangible
 ;;     1       2
 ;;
-(defun its-start (key)
-  (let (p cursor)
-    (setq p (point))
+(defun its-insert-fence-open ()
+  (let ((p (point)))
     (insert its-fence-open)
-    (add-text-properties p (point) 
-                        (let ((props '(its-start t intangible its-part-1)))
-                          (if its-fence-face
-                              (append '(invisible t) props)
-                            props)))
-    (setq p (point))
-    (setq cursor (its-input nil key))
-    (its-put-cursor cursor)
-    (forward-char 1)
-    (setq p (point))
+    (add-text-properties p (point)
+                        (if its-fence-face
+                            '(invisible t its-start t intangible its-part-1)
+                          '(its-start t intangible its-part-1)))))
+
+(defun its-insert-fence-close ()
+  (let ((p (point)))
     (insert its-fence-close)
     (add-text-properties p (point) 
-                        (let ((props '(its-end t intangible its-part-2)))
-                          (if its-fence-face
-                              (append '(invisible t) props)
-                            props)))
-    (forward-char -2)
-    (force-mode-line-update)))
+                        (if its-fence-face
+                            '(invisible t its-end t intangible its-part-2)
+                          '(its-end t intangible its-part-2)))
+    (goto-char p)))
+
+(defun its-start (key)
+  (its-insert-fence-open)
+  (its-insert-fence-close)
+  (its-put-cursor (its-input nil key))
+  (force-mode-line-update))
+
+(defun its-restart (str)
+  (let (p)
+    (its-insert-fence-open)
+    (its-insert-fence-close)
+    (setq p (point))
+    (insert str)
+    (put-text-property p (point) 'intangible 'its-part-2)
+    (goto-char p)
+    (its-put-cursor t)))
 
 (defun its-self-insert-char ()
   (interactive)
@@ -688,13 +698,12 @@ Return last state."
       (setq end (next-single-property-change (point) 'its-end)))
     (delete-region end (1+ end))
     ;; Remove all properties added by ITS
-    (remove-text-properties start end '(its-syl nil
-                                       its-map nil
+    (remove-text-properties start end '(its-map nil
                                        face nil
                                        intangible nil))
     (if proceed-to-conversion
        (egg-convert-region start end)
-      (remove-text-properties start end '(its-lang nil))
+      (remove-text-properties start end '(its-lang nil its-syl nil))
       (egg-do-auto-fill)
       (run-hooks 'input-method-after-insert-chunk-hook))))
 
@@ -739,7 +748,7 @@ Return last state."
     (delete-region start end)
     (apply 'insert (reverse its-translation-result))))
 \f
-(load "its-keydef.el")
+(require 'its-keydef)
 
 (provide 'its)
 ;;; its.el ends here.