about summary refs log tree commit diff
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2016-07-15T00·11+0800
committerChris Feng <chris.w.feng@gmail.com>2016-07-15T00·11+0800
commit0b8a373e4fd092b527b34070b6556be35983062c (patch)
tree606b6e3a770a60fc822e3a0a56b1d9a805a208d3
parent39dc328157a970742aa40d3d9169376d2208fce3 (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.el16
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)