Author: sasugaanija
Date: Tue Aug 28 05:38:44 2007
New Revision: 4923
Modified:
trunk/emacs/uim-var.el
trunk/emacs/uim.el
Log:
* emacs/uim-var.el
- (uim-ignore-next)
- Revived.
* emacs/uim.el
- (uim-process-input)
- Add workaround for FSF Emacs-20/21.
Modified: trunk/emacs/uim-var.el
==============================================================================
--- trunk/emacs/uim-var.el (original)
+++ trunk/emacs/uim-var.el Tue Aug 28 05:38:44 2007
@@ -256,6 +256,10 @@
(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.")
+
(defvar uim-prefix-arg nil
"Recent current-prefix-arg value.")
Modified: trunk/emacs/uim.el
==============================================================================
--- trunk/emacs/uim.el (original)
+++ trunk/emacs/uim.el Tue Aug 28 05:38:44 2007
@@ -891,14 +891,31 @@
sendkey newvec count 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
(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))
+
(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)))
@@ -961,7 +978,10 @@
(uim-debug (format "send-vector-raw: %s" send-vector-raw))
- (cond ((or (and uim-emacs
+ (cond (discard
+ (setq send nil))
+
+ ((or (and uim-emacs
(eventp event)
(memq (event-basic-type event)
'(mouse-1 mouse-2 mouse-3 mouse-4 mouse-5)))