Fix unreading 'return event
* exwm-xim.el (exwm-xim--event-pending): Drop unused variable. (exwm-xim--handle-forward-event-request): Convert 'return back to ?\n to avoid error.
This commit is contained in:
parent
fe2336a11e
commit
672a5e2a23
1 changed files with 38 additions and 43 deletions
23
exwm-xim.el
23
exwm-xim.el
|
@ -152,8 +152,6 @@ C,no"
|
||||||
(defvar exwm-xim--property-index 0 "For generating a unique property name.")
|
(defvar exwm-xim--property-index 0 "For generating a unique property name.")
|
||||||
(defvar exwm-xim--im-id 0 "Last IM ID.")
|
(defvar exwm-xim--im-id 0 "Last IM ID.")
|
||||||
(defvar exwm-xim--ic-id 0 "Last IC ID.")
|
(defvar exwm-xim--ic-id 0 "Last IC ID.")
|
||||||
(defvar exwm-xim--event-pending nil
|
|
||||||
"Indicating whether Emacs requires more events.")
|
|
||||||
|
|
||||||
;; X11 atoms.
|
;; X11 atoms.
|
||||||
(defvar exwm-xim--@server nil)
|
(defvar exwm-xim--@server nil)
|
||||||
|
@ -546,13 +544,6 @@ The actual XIM request is in client message data or a property."
|
||||||
exwm-xim--conn
|
exwm-xim--conn
|
||||||
(car keysym)
|
(car keysym)
|
||||||
(logand state (lognot (cdr keysym)))))))
|
(logand state (lognot (cdr keysym)))))))
|
||||||
(if exwm-xim--event-pending
|
|
||||||
;; In case any event reaches here, it should be forwarded
|
|
||||||
;; to Emacs.
|
|
||||||
(when event
|
|
||||||
(setq unread-command-events
|
|
||||||
(append unread-command-events (list event))))
|
|
||||||
(setq exwm-xim--event-pending t)
|
|
||||||
(if (or (not im-func)
|
(if (or (not im-func)
|
||||||
;; `list' is the default method.
|
;; `list' is the default method.
|
||||||
(eq im-func #'list)
|
(eq im-func #'list)
|
||||||
|
@ -581,8 +572,12 @@ The actual XIM request is in client message data or a property."
|
||||||
(while (or event unread-command-events)
|
(while (or event unread-command-events)
|
||||||
(unless event
|
(unless event
|
||||||
(setq event (pop unread-command-events)))
|
(setq event (pop unread-command-events)))
|
||||||
(setq result (funcall im-func event)
|
;; `quail-input-method' seems to unread 'return instead of
|
||||||
event nil)
|
;; ?\n hence this conversion.
|
||||||
|
(when (eq event 'return)
|
||||||
|
(setq event ?\n))
|
||||||
|
(when (characterp event)
|
||||||
|
(setq result (funcall im-func event))
|
||||||
;; This also works for portable character encoding.
|
;; This also works for portable character encoding.
|
||||||
(setq result
|
(setq result
|
||||||
(encode-coding-string (concat result)
|
(encode-coding-string (concat result)
|
||||||
|
@ -596,10 +591,10 @@ The actual XIM request is in client message data or a property."
|
||||||
:length (length result)
|
:length (length result)
|
||||||
:string result)
|
:string result)
|
||||||
conn client-xwin)
|
conn client-xwin)
|
||||||
(xcb:flush conn))))
|
(xcb:flush conn))
|
||||||
|
(setq event nil))))
|
||||||
(when (eq exwm--selected-input-mode 'char-mode)
|
(when (eq exwm--selected-input-mode 'char-mode)
|
||||||
(exwm-input--release-keyboard))))
|
(exwm-input--release-keyboard))))))
|
||||||
(setq exwm-xim--event-pending nil))))
|
|
||||||
|
|
||||||
(defun exwm-xim--make-request (req conn client-xwin)
|
(defun exwm-xim--make-request (req conn client-xwin)
|
||||||
"Make an XIM request REQ via connection CONN.
|
"Make an XIM request REQ via connection CONN.
|
||||||
|
|
Loading…
Reference in a new issue