Author: sasugaanija
Date: Wed Aug 29 02:11:08 2007
New Revision: 4927
Modified:
trunk/emacs/uim-var.el
trunk/emacs/uim.el
Log:
* emacs/uim-var.el
- (uim-ignore-next)
- Renamed to uim-merge-next
- (uim-merge-next)
- Renamed from uim-ignore-next
* emacs/uim.el
- (uim-process-input)
- Improve workaround introduced at r4923.
Now, [C-u 1 0 ESC x] works correctly
Modified: trunk/emacs/uim-var.el
==============================================================================
--- trunk/emacs/uim-var.el (original)
+++ trunk/emacs/uim-var.el Wed Aug 29 02:11:08 2007
@@ -256,9 +256,9 @@
(defvar uim-last-key-vector nil
"Recent key vector.")
-(defvar uim-ignore-next nil
- "If the value is non-nil, uim-process-input ignores next input.
- This variable is used for avoiding FSF Emacs20/21's strange behavior.")
+;; workaround for FSF Emacs-20/21
+(defvar uim-merge-next nil
+ "If the value is non-nil, uim-process-input merges next input.")
(defvar uim-prefix-arg nil
"Recent current-prefix-arg value.")
Modified: trunk/emacs/uim.el
==============================================================================
--- trunk/emacs/uim.el (original)
+++ trunk/emacs/uim.el Wed Aug 29 02:11:08 2007
@@ -886,36 +886,40 @@
send-vector
send-vector-raw
issue-vector
- send
- issue
- sendkey newvec count mouse wait discard)
+ send issue mouse wait discard)
+
(setq new-key-vector (uim-this-command-keys-vector))
- (if uim-ignore-next
- ;; workaround for FSF Emacs-20/21
- (progn
- (uim-debug (format "ignore this input %s" new-key-vector))
- (setq uim-ignore-next nil)
- (setq discard t))
-
- (if current-prefix-arg
+ (if (or current-prefix-arg
+ uim-merge-next)
(let (vector-list)
- (setq uim-prefix-arg current-prefix-arg)
+
(setq vector-list (uim-separate-prefix-vector new-key-vector))
(setq new-key-vector (car vector-list))
(setq uim-prefix-arg-vector (nth 1 vector-list))
- ;; Workaround for FSF Emacs-20/21
- ;; Key event beginning with C-u and terminating with ESC-something
- ;; invokes uim-process-input with twice at a time.
- ;; In such a case, uim.el ignores the 2nd vector.
- (if (and uim-emacs
- (<= emacs-major-version 21)
- (>= (length new-key-vector) 2))
- (setq uim-ignore-next t))
+ ;; Workaround for FSF Emacs-20/21
+ ;; Key event beginning with C-u and terminating with ESC-something
+ ;; invokes uim-process-input with twice at a time.
+ ;; In such a case, uim.el merges these two inputs.
+ (if (not uim-merge-next)
+ (progn
+ ;; normal
+ (setq uim-prefix-arg current-prefix-arg)
+ (if (and uim-emacs
+ (not window-system)
+ (<= emacs-major-version 21)
+ (>= (length new-key-vector) 2))
+ ;; workaround
+ (setq uim-merge-next t)))
+ ;; uim-merge-next is valid
+ (setq uim-merge-next nil)
+ (setq uim-translated-key-vector nil)
+ (setq uim-untranslated-key-vector nil))
+
(uim-debug (format "uim-prefix-arg-vector %s" uim-prefix-arg-vector))
- (uim-debug (format "set uim-prefix-arg: %s" current-prefix-arg)))))
+ (uim-debug (format "set uim-prefix-arg: %s" current-prefix-arg))))
(if uim-xemacs
(setq uim-original-input-event (copy-event last-input-event)))
@@ -957,6 +961,7 @@
(setq uim-untranslated-key-vector nil)
(setq uim-prefix-arg nil)
(setq uim-prefix-arg-vector nil)
+ (setq uim-merge-next nil)
(signal 'quit nil)
)))
@@ -978,9 +983,9 @@
(uim-debug (format "send-vector-raw: %s" send-vector-raw))
- (cond (discard
+ (cond (uim-merge-next
(setq send nil))
-
+
((or (and uim-emacs
(eventp event)
(memq (event-basic-type event)
@@ -1001,7 +1006,7 @@
(setq wait t))
((or current-prefix-arg
- uim-prefix-arg)
+ uim-prefix-arg)
(setq send nil)
(setq issue t))
@@ -1079,6 +1084,7 @@
(setq uim-untranslated-key-vector nil)
(setq uim-prefix-arg nil)
(setq uim-prefix-arg-vector nil)
+ (setq uim-merge-next nil)
)))
(when mouse
@@ -1089,6 +1095,7 @@
(setq uim-untranslated-key-vector nil)
(setq uim-prefix-arg nil)
(setq uim-prefix-arg-vector nil)
+ (setq uim-merge-next nil)
))
@@ -1125,6 +1132,7 @@
(setq uim-untranslated-key-vector nil)
(setq uim-prefix-arg nil)
(setq uim-prefix-arg-vector nil)
+ (setq uim-merge-next nil)
))))
@@ -1179,9 +1187,10 @@
(setq uim-untranslated-key-vector nil)
(setq uim-prefix-arg nil)
(setq uim-prefix-arg-vector nil)
+ (setq uim-merge-next nil)
))
-;; display "ESC ESC ESC" or something
+ ;; display "ESC ESC ESC" or something
(when (and (or send issue)
(not wait)
uim-keystroke-displaying)
@@ -1518,9 +1527,9 @@
(defun uim-minibuffer-exit ()
(if (and uim-initialized
uim-mode)
- ;(uim-mode-off)
+ ;;(uim-mode-off)
(uim-force-off)
- ))
+ ))
@@ -1575,7 +1584,8 @@
(if uim-mode
(uim-mode-off)
(uim-mode-on))))
-; compat
+
+;; compat
(defun uim-mode-switch ()
(interactive)
(if uim-mode