aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--leim/quail/japanese.el53
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")