diff options
| author | Kenichi Handa | 1998-08-06 05:38:11 +0000 |
|---|---|---|
| committer | Kenichi Handa | 1998-08-06 05:38:11 +0000 |
| commit | efc1d64f2aec8351f112162e29a0d123767a2566 (patch) | |
| tree | bbbfafd2ef61df7a3bdf3a58255d78bb8e9be28a | |
| parent | 0359db825139f014c671e519485e80aa3683764d (diff) | |
| download | emacs-efc1d64f2aec8351f112162e29a0d123767a2566.tar.gz emacs-efc1d64f2aec8351f112162e29a0d123767a2566.zip | |
(quail-japanese-use-double-n): New variable.
(quail-japanese-update-translation): Adjusted for the change of
quail-update-translation. Now this function should return
CONTROL-FLAG.
(quail-japanese-toggle-kana): Update quail-conversion-str.
(quail-japanese-kanji-kkc): Likewise.
(quail-japanese-switch-package): Reset quail-current-str and
quail-conversion-str.
| -rw-r--r-- | leim/quail/japanese.el | 53 |
1 files changed, 32 insertions, 21 deletions
diff --git a/leim/quail/japanese.el b/leim/quail/japanese.el index 01c36fbc4ed..d0faf534a83 100644 --- a/leim/quail/japanese.el +++ b/leim/quail/japanese.el | |||
| @@ -27,28 +27,33 @@ | |||
| 27 | (require 'quail) | 27 | (require 'quail) |
| 28 | (require 'kkc) | 28 | (require 'kkc) |
| 29 | 29 | ||
| 30 | (defvar quail-japanese-use-double-n nil | ||
| 31 | "If non-nil, use type \"nn\" to insert ん.") | ||
| 32 | |||
| 30 | ;; Update Quail translation region while considering Japanese bizarre | 33 | ;; Update Quail translation region while considering Japanese bizarre |
| 31 | ;; translation rules. | 34 | ;; translation rules. |
| 32 | (defun quail-japanese-update-translation (control-flag) | 35 | (defun quail-japanese-update-translation (control-flag) |
| 33 | (cond ((eq control-flag t) | 36 | (if (null control-flag) |
| 34 | (insert quail-current-str) | 37 | (setq quail-current-str |
| 35 | (quail-terminate-translation)) | 38 | (if (/= (aref quail-current-key 0) ?q) |
| 36 | ((null control-flag) | 39 | (or quail-current-str quail-current-key) |
| 37 | (if (/= (aref quail-current-key 0) ?q) | 40 | "")) |
| 38 | (insert (or quail-current-str quail-current-key)))) | 41 | (if (integerp control-flag) |
| 39 | ((= control-flag 0) | 42 | (if (= control-flag 0) |
| 40 | (insert (aref quail-current-key 0)) | 43 | (setq quail-current-str (aref quail-current-key 0)) |
| 41 | (quail-terminate-translation)) | 44 | (cond ((= (aref quail-current-key 0) ?n) |
| 42 | (t | 45 | (setq quail-current-str ?ん) |
| 43 | (cond ((= (aref quail-current-key 0) ?n) | 46 | (if (and quail-japanese-use-double-n |
| 44 | (insert ?ん)) | 47 | (= (aref quail-current-key 1) ?n)) |
| 45 | ((= (aref quail-current-key 0) (aref quail-current-key 1)) | 48 | (setq control-flag t))) |
| 46 | (insert ?っ)) | 49 | ((= (aref quail-current-key 0) (aref quail-current-key 1)) |
| 47 | (t | 50 | (setq quail-current-str ?っ)) |
| 48 | (insert (aref quail-current-key 0)))) | 51 | (t |
| 49 | (setq unread-command-events | 52 | (setq quail-current-str (aref quail-current-key 0)))) |
| 50 | (list (aref quail-current-key control-flag))) | 53 | (if (integerp control-flag) |
| 51 | (quail-terminate-translation)))) | 54 | (setq unread-command-events |
| 55 | (list (aref quail-current-key control-flag))))))) | ||
| 56 | control-flag) | ||
| 52 | 57 | ||
| 53 | ;; Flag to control the behavior of `quail-japanese-toggle-kana'. | 58 | ;; Flag to control the behavior of `quail-japanese-toggle-kana'. |
| 54 | (defvar quail-japanese-kana-state nil) | 59 | (defvar quail-japanese-kana-state nil) |
| @@ -65,7 +70,10 @@ | |||
| 65 | (not quail-japanese-kana-state))) | 70 | (not quail-japanese-kana-state))) |
| 66 | (if quail-japanese-kana-state | 71 | (if quail-japanese-kana-state |
| 67 | (japanese-hiragana-region start end) | 72 | (japanese-hiragana-region start end) |
| 68 | (japanese-katakana-region start end)))) | 73 | (japanese-katakana-region start end)) |
| 74 | (setq quail-conversion-str | ||
| 75 | (buffer-substring (overlay-start quail-conv-overlay) | ||
| 76 | (overlay-end quail-conv-overlay))))) | ||
| 69 | 77 | ||
| 70 | ;; Convert Hiragana in the current translation region to Kanji by KKC | 78 | ;; Convert Hiragana in the current translation region to Kanji by KKC |
| 71 | ;; (Kana Kanji Converter) utility. | 79 | ;; (Kana Kanji Converter) utility. |
| @@ -77,6 +85,7 @@ | |||
| 77 | (quail-delete-overlays) | 85 | (quail-delete-overlays) |
| 78 | (let ((result (kkc-region from to))) | 86 | (let ((result (kkc-region from to))) |
| 79 | (move-overlay quail-conv-overlay from (point)) | 87 | (move-overlay quail-conv-overlay from (point)) |
| 88 | (setq quail-conversion-str (buffer-substring from (point))) | ||
| 80 | (if (= (+ from result) (point)) | 89 | (if (= (+ from result) (point)) |
| 81 | (setq quail-converting nil)) | 90 | (setq quail-converting nil)) |
| 82 | (setq quail-translating nil)))) | 91 | (setq quail-translating nil)))) |
| @@ -98,7 +107,9 @@ | |||
| 98 | 107 | ||
| 99 | (defun quail-japanese-switch-package (key idx) | 108 | (defun quail-japanese-switch-package (key idx) |
| 100 | (quail-delete-region) | 109 | (quail-delete-region) |
| 101 | (setq quail-converting nil) | 110 | (setq quail-current-str nil |
| 111 | quail-converting nil | ||
| 112 | quail-conversion-str "") | ||
| 102 | (let ((pkg (cdr (assq (aref key (1- idx)) quail-japanese-switch-table)))) | 113 | (let ((pkg (cdr (assq (aref key (1- idx)) quail-japanese-switch-table)))) |
| 103 | (if (null pkg) | 114 | (if (null pkg) |
| 104 | (quail-error "No package to be switched") | 115 | (quail-error "No package to be switched") |