]> git.eshelyaron.com Git - emacs.git/commitdiff
(quail-japanese-kanji-kkc): Use marker to remember the conversion
authorKenichi Handa <handa@m17n.org>
Sat, 18 Nov 2000 00:04:54 +0000 (00:04 +0000)
committerKenichi Handa <handa@m17n.org>
Sat, 18 Nov 2000 00:04:54 +0000 (00:04 +0000)
start.

leim/quail/japanese.el

index 4b04035db01544d934196622334c55319935aeff..ef9de406e5e239f95704d7d65f3fc1732aa26909 100644 (file)
 ;; (Kana Kanji Converter) utility.
 (defun quail-japanese-kanji-kkc ()
   (interactive)
-  (let ((from (overlay-start quail-conv-overlay))
-       (to (overlay-end quail-conv-overlay)))
+  (when (= (char-before (overlay-end quail-conv-overlay)) ?n)
+    ;; The last char is `n'.  We had better convert it to `\e$B$s\e(B'
+    ;; before kana-kanji conversion.
+    (goto-char (overlay-end quail-conv-overlay))
+    (delete-char -1)
+    (insert ?\e$B$s\e(B))
+  (let* ((from (copy-marker (overlay-start quail-conv-overlay)))
+        (len (- (overlay-end quail-conv-overlay) from)))
     (quail-delete-overlays)
     (setq quail-current-str nil)
-    (when (= (char-before to) ?n)
-      ;; The last char is `n'.  We had better convert it to `\e$B$s\e(B'
-      ;; before kana-kanji conversion.
-      (goto-char to)
-      (delete-char -1)
-      (insert ?\e$B$s\e(B))
-    (let ((result (kkc-region from to)))
-      (move-overlay quail-conv-overlay from (point))
-      (setq quail-conversion-str (buffer-substring from (point)))
-      (if (= (+ from result) (point))
-         (setq quail-converting nil))
-      (setq quail-translating nil))))
+    (unwind-protect
+       (let ((result (kkc-region from (+ from len))))
+         (move-overlay quail-conv-overlay from (point))
+         (setq quail-conversion-str (buffer-substring from (point)))
+         (if (= (+ from result) (point))
+             (setq quail-converting nil))
+         (setq quail-translating nil))
+      (set-marker from nil))))
 
 (defun quail-japanese-self-insert-and-switch-to-alpha (key idx)
   (quail-delete-region)