changeset 110124:9fc1e3c180d3

quail/japanese.el (quail-japanese-update-translation): Fix handling of invalid key.
author Kenichi Handa <handa@m17n.org>
date Sat, 28 Aug 2010 15:03:00 +0900
parents 156bbb7866f9 (current diff) d0fc9cc79b2b (diff)
children d51605e40f4a 9e82fd2cdf71
files
diffstat 2 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/leim/ChangeLog	Thu Aug 26 21:40:13 2010 +0200
+++ b/leim/ChangeLog	Sat Aug 28 15:03:00 2010 +0900
@@ -1,3 +1,8 @@
+2010-08-28  Kenichi Handa  <handa@m17n.org>
+
+	* quail/japanese.el (quail-japanese-update-translation): Fix
+	handling of invalid key.
+
 2010-08-15  Andreas Schwab  <schwab@linux-m68k.org>
 
 	* quail/vntelex.el ("vietnamese-telex"): Doc fix.
--- a/leim/quail/japanese.el	Thu Aug 26 21:40:13 2010 +0200
+++ b/leim/quail/japanese.el	Sat Aug 28 15:03:00 2010 +0900
@@ -43,20 +43,25 @@
 		(or quail-current-str quail-current-key)
 	      ""))
     (if (integerp control-flag)
-	(if (= control-flag 0)
-	    (setq quail-current-str (aref quail-current-key 0))
-	  (cond ((= (aref quail-current-key 0) ?n)
+	(let ((keylen (length quail-current-key)))
+	  (cond ((= control-flag 0)
+		 (setq quail-current-str (aref quail-current-key 0)
+		       control-flag t))
+		((= (aref quail-current-key 0) ?n)
 		 (setq quail-current-str ?ん)
 		 (if (and quail-japanese-use-double-n
+			  (> keylen 0)
 			  (= (aref quail-current-key 1) ?n))
 		     (setq control-flag t)))
-		((= (aref quail-current-key 0) (aref quail-current-key 1))
+		((and (> keylen 1)
+		      (= (aref quail-current-key 0) (aref quail-current-key 1)))
 		 (setq quail-current-str ?っ))
 		(t
 		 (setq quail-current-str (aref quail-current-key 0))))
 	  (if (integerp control-flag)
 	      (setq unread-command-events
-		    (list (aref quail-current-key control-flag)))))))
+		    (string-to-list
+		     (substring quail-current-key control-flag)))))))
   control-flag)
 
 ;; Convert Hiragana <-> Katakana in the current translation region.