diff options
author | Chris Feng <chris.w.feng@gmail.com> | 2016-07-15T00·11+0800 |
---|---|---|
committer | Chris Feng <chris.w.feng@gmail.com> | 2016-07-15T00·11+0800 |
commit | 0b8a373e4fd092b527b34070b6556be35983062c (patch) | |
tree | 606b6e3a770a60fc822e3a0a56b1d9a805a208d3 | |
parent | 39dc328157a970742aa40d3d9169376d2208fce3 (diff) |
Fix a `unread-command-events' issue for Emacs 24
* exwm-input.el (exwm-input--unread-event) (exwm-input--on-KeyPress-line-mode): Use `unread-command-events' differently on Emacs 24 and 25.
-rw-r--r-- | exwm-input.el | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/exwm-input.el b/exwm-input.el index 8813f762c67e..57c0cc801ae3 100644 --- a/exwm-input.el +++ b/exwm-input.el @@ -287,6 +287,19 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.") (global-set-key key command) (cl-pushnew key exwm-input--global-keys)) +;; FIXME: Putting (t . EVENT) into `unread-command-events' does not really work +;; as documented in Emacs 24. Since inserting a conventional EVENT does +;; add it into (this-command-keys) there, we use `unread-command-events' +;; differently on Emacs 24 and 25. +(eval-and-compile + (if (< emacs-major-version 25) + (defsubst exwm-input--unread-event (event) + (setq unread-command-events + (append unread-command-events (list event)))) + (defsubst exwm-input--unread-event (event) + (setq unread-command-events + (append unread-command-events `((t . ,event))))))) + (defvar exwm-input-command-whitelist nil "A list of commands that when active all keys should be forwarded to Emacs.") (make-obsolete-variable 'exwm-input-command-whitelist @@ -313,8 +326,7 @@ It's updated in several occasions, and only used by `exwm-input--set-focus'.") (unless minibuffer-window (setq exwm-input--during-key-sequence t)) ;; Feed this event to command loop. Also force it to be added to ;; `this-command-keys'. - (setq unread-command-events - (append unread-command-events `((t . ,event))))) + (exwm-input--unread-event event)) (xcb:+request exwm--connection (make-instance 'xcb:AllowEvents :mode (or mode xcb:Allow:ReplayKeyboard) |