From: Kenichi Handa Date: Sat, 18 Nov 2000 00:04:54 +0000 (+0000) Subject: (quail-japanese-kanji-kkc): Use marker to remember the conversion X-Git-Tag: emacs-pretest-21.0.91~27 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5f1e183edd14b029ee81816884cac37e17d272af;p=emacs.git (quail-japanese-kanji-kkc): Use marker to remember the conversion start. --- diff --git a/leim/quail/japanese.el b/leim/quail/japanese.el index 4b04035db01..ef9de406e5e 100644 --- a/leim/quail/japanese.el +++ b/leim/quail/japanese.el @@ -79,22 +79,24 @@ ;; (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 `ん' + ;; before kana-kanji conversion. + (goto-char (overlay-end quail-conv-overlay)) + (delete-char -1) + (insert ?ん)) + (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 `ん' - ;; before kana-kanji conversion. - (goto-char to) - (delete-char -1) - (insert ?ん)) - (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)