Author: sasugaanija
Date: Sat Oct 20 06:52:21 2007
New Revision: 5031
Modified:
trunk/emacs/uim-key.el
trunk/emacs/uim.el
Log:
* emacs/uim-key.el
- (uim-process-key-vector): set uim-keystroke-displaying to nil
to display the message "... is undefined" in the echo area.
- (uim-translate-key): remove ineffective flag and protection.
* emacs/uim.el
- (uim-reset-input-parameter): New function (just separated from
uim-process-input)
- (uim-process-input)
* bind inhibit-quit to t while calling the sit-for function
to process commands which are bound to C-g-terminated keys.
* protect whole of the function.
Modified: trunk/emacs/uim-key.el
==============================================================================
--- trunk/emacs/uim-key.el (original)
+++ trunk/emacs/uim-key.el Sat Oct 20 06:52:21 2007
@@ -333,6 +333,7 @@
)
(when uim-emacs
(undefined)
+ (setq uim-keystroke-displaying nil)
(let (message-log-max)
(message "%s is undefined" (key-description undef)))
))
@@ -607,7 +608,7 @@
;; get this-command-keys with symbol lists vector
;;
(defun uim-translate-key (input-vector)
- (let (translated-vector map (non-error t)
+ (let (translated-vector map
(input-vector-main input-vector)
(input-vector-prefix nil)
translated bind)
@@ -655,8 +656,6 @@
((functionp translated)
;; function ... call immediately and use returned value
(uim-debug (format "translated is function: %s" translated))
- ;;(setq func translated)
-
(if (not uim-keystroke-displaying)
(setq uim-keystroke-displaying (sit-for echo-keystrokes)))
@@ -669,12 +668,8 @@
"-")))
)
- (unwind-protect
- (setq translated-vector
- (vconcat input-vector-prefix (funcall translated
nil)))
- (when (not translated-vector)
- (setq non-error nil)
- (throw 'fmap-loop nil)))
+ (setq translated-vector
+ (vconcat input-vector-prefix (funcall translated nil)))
(throw 'fmap-loop t))
@@ -698,7 +693,7 @@
(setq translated-vector nil)) ;; end of catch
(uim-debug (format "output vector: %s" translated-vector))
- (list translated-vector map non-error))
+ (list translated-vector map))
)
Modified: trunk/emacs/uim.el
==============================================================================
--- trunk/emacs/uim.el (original)
+++ trunk/emacs/uim.el Sat Oct 20 06:52:21 2007
@@ -875,6 +875,17 @@
;;
+;; Reset some global parameters for inputted key processing
+;;
+(defun uim-reset-input-parameter ()
+ (setq uim-translated-key-vector nil)
+ (setq uim-untranslated-key-vector nil)
+ (setq uim-prefix-arg nil)
+ (setq uim-prefix-arg-vector nil)
+ (setq uim-merge-next nil))
+
+
+;;
;; Process inputted key
;;
(defun uim-process-input (&optional arg event reg1 reg2)
@@ -882,70 +893,69 @@
last-input-event
))
- ;;(if uim-emacs
- ;; (setq uim-deactivate-mark t))
-
- (if uim-xemacs
- (setq zmacs-region-stays nil))
-
- (if (not (or uim-translated-key-vector uim-untranslated-key-vector))
- (setq uim-keystroke-displaying nil))
-
- (let (new-key-vector
- send-vector
- send-vector-raw
- issue-vector
- send issue mouse wait discard)
-
- (setq new-key-vector (uim-this-command-keys-vector))
-
- (if (or current-prefix-arg
- uim-merge-next)
- (let (vector-list)
-
- (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 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))
+ (let (new-key-vector send-vector send-vector-raw issue-vector
+ send issue mouse wait discard
+ (critical t))
+
+ (unwind-protect
+ (progn
+
+ (if uim-xemacs
+ (setq zmacs-region-stays nil))
+
+ (if (not (or uim-translated-key-vector uim-untranslated-key-vector))
+ (setq uim-keystroke-displaying nil))
+
+ (setq new-key-vector (uim-this-command-keys-vector))
+
+ (if (or current-prefix-arg
+ uim-merge-next)
+ (let (vector-list)
+ (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 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 "uim-prefix-arg-vector %s"
+ uim-prefix-arg-vector))
+ (uim-debug (format "set uim-prefix-arg: %s"
+ current-prefix-arg))))
+
+ (if uim-xemacs
+ (setq uim-original-input-event (copy-event last-input-event)))
+
+ (setq uim-untranslated-key-vector
+ (vconcat uim-untranslated-key-vector new-key-vector))
+
+ (let (translated-list translated map)
+
+ (setq translated-list
+ (uim-translate-key uim-untranslated-key-vector))
+ (setq translated (nth 0 translated-list))
+ (setq map (nth 1 translated-list))
- (if uim-xemacs
- (setq uim-original-input-event (copy-event last-input-event)))
-
- (setq uim-untranslated-key-vector
- (vconcat uim-untranslated-key-vector new-key-vector))
-
- (let* ((translated-list (uim-translate-key uim-untranslated-key-vector))
- (translated (nth 0 translated-list))
- (map (nth 1 translated-list))
- (non-error (nth 2 translated-list)))
-
- (unwind-protect
- (progn
(uim-debug (format "translated: %s" translated))
(uim-debug (if map "map: YES" "map: NO"))
- (uim-debug (if non-error "non-error: YES" "func: NO"))
(cond ((stringp translated)
(setq uim-translated-key-vector translated)
@@ -958,270 +968,232 @@
(setq uim-untranslated-key-vector nil))
(map
- (setq wait t)
- )
+ (setq wait t))
(t
- (setq send t)
- )
+ (setq send t))
))
- (when (not non-error)
- (setq uim-translated-key-vector nil)
- (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)
- )))
- (when send
+ (when send
- (uim-debug "pre-SEND")
+ (uim-debug "pre-SEND")
- (setq send-vector-raw (vconcat uim-translated-key-vector
- uim-untranslated-key-vector))
+ (setq send-vector-raw (vconcat uim-translated-key-vector
+ uim-untranslated-key-vector))
+
+ (setq send-vector
+ (if uim-emacs
+ send-vector-raw
+ (if uim-xemacs
+ (uim-convert-keystr-to-uimagent-vector (key-description
send-vector-raw))
+ nil)))
+
+ (uim-debug (format "send-vector: %s" send-vector))
+ (uim-debug (format "send-vector-raw: %s" send-vector-raw))
+
+
+ (cond (uim-merge-next
+ (setq send nil))
+
+ ((or (and uim-emacs
+ (eventp event)
+ (memq (event-basic-type event)
+ '(mouse-1 mouse-2 mouse-3 mouse-4 mouse-5)))
+ (and uim-xemacs
+ (string-match "button\\(1\\|2\\|3\\|4\\|5\\)"
+ (key-description send-vector-raw))))
+ (uim-debug "mouse event")
+ (setq send nil)
+ (setq mouse t))
+
+ ((or (and uim-preedit-keymap-enabled
+ (not window-system)
+ (not uim-use-single-escape-on-terminal)
+ (uim-is-single-escape send-vector-raw)))
+ (uim-debug "half escape found")
+ (setq send nil)
+ (setq wait t))
+
+ ((or current-prefix-arg
+ uim-prefix-arg)
+ (setq send nil)
+ (setq issue t))
+
+ ((or (eq (car-safe (aref send-vector 0)) 'menu-bar)
+ (eq (car-safe (aref send-vector 0)) 'tool-bar))
+ (setq send nil)
+ (if (not uim-preedit-keymap-enabled)
+ (setq issue t)
+ (if (and uim-preedit-keymap-enabled
+ (keymapp (uim-key-binding send-vector)))
+ (setq wait t)
+ (setq discard t))))
+
+ ((and (or (>= (length send-vector) 3)
+ (and (= (length send-vector) 2)
+ (not (or (eq (aref send-vector 0) 27)
+ (eq (aref send-vector 0) 'escape))))))
+ (uim-debug "too long vector")
+ (setq send nil)
+ (if (not uim-preedit-keymap-enabled)
+ (setq issue t)))
+
+ ))
+
- (setq send-vector
- (if uim-emacs
- send-vector-raw
- (if uim-xemacs
- (uim-convert-keystr-to-uimagent-vector (key-description
send-vector-raw))
- nil)))
-
- (uim-debug (format "send-vector: %s" send-vector))
- (uim-debug (format "send-vector-raw: %s" send-vector-raw))
-
-
- (cond (uim-merge-next
- (setq send nil))
-
- ((or (and uim-emacs
- (eventp event)
- (memq (event-basic-type event)
- '(mouse-1 mouse-2 mouse-3 mouse-4 mouse-5)))
- (and uim-xemacs
- (string-match "button\\(1\\|2\\|3\\|4\\|5\\)"
- (key-description send-vector-raw))))
- (uim-debug "mouse event")
- (setq send nil)
- (setq mouse t))
-
- ((or (and uim-preedit-keymap-enabled
- (not window-system)
- (not uim-use-single-escape-on-terminal)
- (uim-is-single-escape send-vector-raw)))
- (uim-debug "half escape found")
- (setq send nil)
- (setq wait t))
-
- ((or current-prefix-arg
- uim-prefix-arg)
- (setq send nil)
- (setq issue t))
-
- ((or (eq (car-safe (aref send-vector 0)) 'menu-bar)
- (eq (car-safe (aref send-vector 0)) 'tool-bar))
- (setq send nil)
- (if (not uim-preedit-keymap-enabled)
- (setq issue t)
- (if (and uim-preedit-keymap-enabled
- (keymapp (uim-key-binding send-vector)))
- (setq wait t)
- (setq discard t))))
-
- ((and (or (>= (length send-vector) 3)
- (and (= (length send-vector) 2)
- (not (or (eq (aref send-vector 0) 27)
- (eq (aref send-vector 0) 'escape))))))
- (uim-debug "too long vector")
- (setq send nil)
- (if (not uim-preedit-keymap-enabled)
- (setq issue t)))
-
- ))
-
-
-
- (when send
-
- (uim-debug "SEND")
-
- ;;(setq uim-last-key-vector send-vector)
- (setq uim-last-key-vector send-vector-raw)
-
- (when uim-emacs
- (cond ((equal send-vector [127]) (setq send-vector [backspace]))
- ((equal send-vector [27 27]) (setq send-vector [27]))
- ((equal send-vector [28]) (setq send-vector [C-\\]))
- ((equal send-vector [29]) (setq send-vector [C-\]]))
- ((equal send-vector [30]) (setq send-vector [C-~]))
- ((equal send-vector [31]) (setq send-vector [C-_]))
- ))
-
- (when uim-xemacs
-
- (uim-debug (format "send-vector-raw1.5: %s" send-vector-raw))
-
- (if (equal (make-vector 2 (uim-xemacs-make-event [(escape)]))
- send-vector-raw)
- (setq send-vector-raw
- (vector (uim-xemacs-make-event [(escape)]))))
-
- (setq send-vector-raw (uim-translate-escape-meta send-vector-raw))
-
- (uim-debug (format "send-vector-raw2: %s" send-vector-raw))
-
- (setq send-vector
- (uim-convert-keystr-to-uimagent-vector
- (key-description send-vector-raw))))
+ (when send
+
+ (uim-debug "SEND")
+
+ (setq uim-last-key-vector send-vector-raw)
+
+ (when uim-emacs
+ (cond ((equal send-vector [127]) (setq send-vector [backspace]))
+ ((equal send-vector [27 27]) (setq send-vector [27]))
+ ((equal send-vector [28]) (setq send-vector [C-\\]))
+ ((equal send-vector [29]) (setq send-vector [C-\]]))
+ ((equal send-vector [30]) (setq send-vector [C-~]))
+ ((equal send-vector [31]) (setq send-vector [C-_]))
+ ))
+
+ (when uim-xemacs
+
+ (uim-debug (format "send-vector-raw1.5: %s" send-vector-raw))
+
+ (if (equal (make-vector 2 (uim-xemacs-make-event [(escape)]))
+ send-vector-raw)
+ (setq send-vector-raw
+ (vector (uim-xemacs-make-event [(escape)]))))
+
+ (setq send-vector-raw (uim-translate-escape-meta send-vector-raw))
+
+ (uim-debug (format "send-vector-raw2: %s" send-vector-raw))
+
+ (setq send-vector
+ (uim-convert-keystr-to-uimagent-vector
+ (key-description send-vector-raw))))
+
+ (uim-debug (format "send:%s issue:%s wait:%s mouse:%s"
+ send issue wait mouse))
- (uim-debug (format "send:%s issue:%s wait:%s mouse:%s"
- send issue wait mouse))
- (unwind-protect
- (progn
(setq uim-wait-next-key nil)
(uim-do-send-recv-cmd (format "%d %s"
uim-context-id send-vector))
(setq wait uim-wait-next-key)
- (uim-debug "send-recv done"))
+ (uim-debug "send-recv done")
- (when (not uim-wait-next-key)
- (uim-debug "* reset parameter after send")
- (setq uim-translated-key-vector nil)
- (setq uim-untranslated-key-vector nil)
- (setq uim-prefix-arg nil)
- (setq uim-prefix-arg-vector nil)
- (setq uim-merge-next nil)
- )))
+ (when (not uim-wait-next-key)
+ (uim-debug "* reset parameter after send")
+ (uim-reset-input-parameter)))
+
+ (when mouse
+ (uim-process-mouse-event event)
+ (uim-debug "* reset parameter after mouse")
+ (uim-reset-input-parameter))
+
+ (when issue
+ (let (issue-vector-raw)
+ (setq issue-vector-raw (vconcat uim-translated-key-vector
+ uim-untranslated-key-vector))
+
+ (setq issue-vector
+ (if uim-emacs
+ issue-vector-raw
+ (if uim-xemacs
+ (uim-convert-char-to-symbolvector
+ (key-description issue-vector-raw)))))
+
+ (setq uim-last-key-vector issue-vector-raw)
- (when mouse
- (unwind-protect
- (uim-process-mouse-event event)
- (uim-debug "* reset parameter after mouse")
- (setq uim-translated-key-vector nil)
- (setq uim-untranslated-key-vector nil)
- (setq uim-prefix-arg nil)
- (setq uim-prefix-arg-vector nil)
- (setq uim-merge-next nil)
- ))
-
-
- (when issue
-
- (let (issue-vector-raw)
- (setq issue-vector-raw (vconcat uim-translated-key-vector
- uim-untranslated-key-vector))
-
- (setq issue-vector
- (if uim-emacs
- issue-vector-raw
- (if uim-xemacs
- (uim-convert-char-to-symbolvector
- (key-description issue-vector-raw)))))
+ (uim-debug (format "issue-vector-raw: %s" issue-vector-raw))
- (setq uim-last-key-vector issue-vector-raw)
-
- (uim-debug (format "issue-vector-raw: %s" issue-vector-raw))
- (unwind-protect
- (progn
(uim-debug (format "issue command %s %s"
issue-vector-raw uim-prefix-arg))
- (if (uim-process-key-vector issue-vector-raw uim-prefix-arg)
- (setq wait t)))
- (when (not wait)
- (uim-debug "* reset parameter after issue")
- (setq uim-translated-key-vector nil)
- (setq uim-untranslated-key-vector nil)
- (setq uim-prefix-arg nil)
- (setq uim-prefix-arg-vector nil)
- (setq uim-merge-next nil)
- ))))
-
-
- (when wait
- (uim-debug "wait next input")
-
-
- (if (and (memq last-command (list 'universal-argument
- 'digit-argument
- 'negative-argument))
- (current-message))
- (setq uim-keystroke-displaying t))
+ (setq wait
+ (uim-process-key-vector issue-vector-raw uim-prefix-arg))
- (if (not uim-keystroke-displaying)
- (setq uim-keystroke-displaying (sit-for echo-keystrokes)))
+ (when (not wait)
+ (uim-debug "* reset parameter after issue")
+ (uim-reset-input-parameter))))
+
+ (when wait
+ (uim-debug "wait next input")
+
+ (if (and (memq last-command (list 'universal-argument
+ 'digit-argument
+ 'negative-argument))
+ (current-message))
+ (setq uim-keystroke-displaying t))
+
+ (if (not uim-keystroke-displaying)
+ (let ((inhibit-quit t))
+ (setq uim-keystroke-displaying (sit-for echo-keystrokes))))
- (uim-debug (format "*** uim-keystroke-displaying: %s"
- uim-keystroke-displaying))
+ (uim-debug (format "*** uim-keystroke-displaying: %s"
+ uim-keystroke-displaying))
+ ;; display "ESC-" or something
+ (if uim-keystroke-displaying
+ (let (message-log-max)
+ (uim-debug (format "uim-translated-key-vector %s"
+ uim-translated-key-vector))
+ (message (concat (key-description
+ (vconcat uim-prefix-arg-vector
+ (if uim-xemacs
+ (uim-translate-escape-meta
uim-translated-key-vector)
+ uim-translated-key-vector)
+ (if uim-xemacs
+ (uim-translate-escape-meta
uim-untranslated-key-vector)
+ uim-untranslated-key-vector)))
+ (if uim-xemacs " ")
+ "-"))))
+
+ (if uim-emacs
+ (setq uim-deactivate-mark nil))
+
+ (if uim-xemacs
+ (setq zmacs-region-stays t))
+ )
+
+ (when discard
+ (uim-debug "discard input")
+ (uim-reset-input-parameter))
+
+
+ ;; display "ESC ESC ESC" or something
+ (when (and (or send issue)
+ (not wait)
+ uim-keystroke-displaying)
- ;; display "ESC-" or something
- ;;(uim-debug (format "uim-prefix-arg-vector2 %s" uim-prefix-arg-vector))
- (if uim-keystroke-displaying
- (let (message-log-max)
- (uim-debug (format "uim-translated-key-vector %s"
- uim-translated-key-vector))
- (message (concat (key-description
- (vconcat uim-prefix-arg-vector
- (if uim-xemacs
- (uim-translate-escape-meta
uim-translated-key-vector)
- uim-translated-key-vector)
- (if uim-xemacs
- (uim-translate-escape-meta
uim-untranslated-key-vector)
- uim-untranslated-key-vector)
-
- ))
- (if uim-xemacs " ")
- "-"))))
-
- (if uim-emacs
- (setq uim-deactivate-mark nil))
-
- (if uim-xemacs
- (setq zmacs-region-stays t))
- )
-
- (when discard
- (uim-debug "discard input")
- (unwind-protect
- nil
- (setq uim-translated-key-vector nil)
- (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
- (when (and (or send issue)
- (not wait)
- uim-keystroke-displaying)
-
- (uim-debug (format "update final message %s" uim-last-key-vector))
+ (uim-debug (format "update final message %s" uim-last-key-vector))
- (let (message-log-max msg)
- (setq msg (if uim-prefix-arg-vector
- (concat " " (key-description uim-prefix-arg-vector) " ")
- ""))
-
- (mapcar '(lambda (x)
- (setq msg (concat msg
- (key-description (vector x)) " ")))
+ (let (message-log-max msg)
+ (setq msg (if uim-prefix-arg-vector
+ (concat " " (key-description uim-prefix-arg-vector) "
")
+ ""))
+
+ (mapcar '(lambda (x)
+ (setq msg (concat msg
+ (key-description (vector x)) " ")))
- (append (if uim-xemacs
- (uim-translate-escape-meta send-vector-raw)
- uim-last-key-vector) nil))
- (message msg)))
-
+ (append (if uim-xemacs
+ (uim-translate-escape-meta send-vector-raw)
+ uim-last-key-vector) nil))
+ (message msg)))
+
+ (if uim-emacs
+ (setq deactivate-mark uim-deactivate-mark))
+
+ (setq critical nil))
+
+ (when critical
+ (uim-debug "reset input by error or keyboard-quit")
+ (uim-reset-input-parameter)))
)
-
- (if uim-emacs
- (setq deactivate-mark uim-deactivate-mark))
)
-