about summary refs log tree commit diff
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2017-02-24T15·30+0800
committerChris Feng <chris.w.feng@gmail.com>2017-02-24T15·30+0800
commitb79a3c52a5ebd2a663e47fe6d473400cf38bdcf4 (patch)
tree4195c10277fae584c3b94a28ed3673496f13ee03
parentf299ca5ed7056842aa59e9978061bca650316a71 (diff)
parentd0e98957485afa6a91d3c8be1520d65e46987718 (diff)
Merge branch 'Stebalien/expose-line-mode-passthrough' into externals/exwm
-rw-r--r--exwm-core.el4
-rw-r--r--exwm-input.el23
2 files changed, 13 insertions, 14 deletions
diff --git a/exwm-core.el b/exwm-core.el
index c5f28cb79cac..750f134d1e8f 100644
--- a/exwm-core.el
+++ b/exwm-core.el
@@ -80,7 +80,7 @@
     (logior xcb:EventMask:StructureNotify xcb:EventMask:PropertyChange))
   "Event mask set on all managed windows.")
 
-(defvar exwm-input--line-mode-passthrough)
+(defvar exwm-input-line-mode-passthrough)
 (defvar exwm-input--global-prefix-keys)
 (defvar exwm-input-prefix-keys)
 (defvar exwm-input--simulation-prefix-keys)
@@ -154,7 +154,7 @@
       (lambda ()
         (interactive)
         (cond
-         ((or exwm-input--line-mode-passthrough
+         ((or exwm-input-line-mode-passthrough
               ;; Do not test `exwm-input--during-command'.
               (active-minibuffer-window)
               (memq last-input-event exwm-input--global-prefix-keys)
diff --git a/exwm-input.el b/exwm-input.el
index d410bec7912e..809f41ecec19 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -420,7 +420,7 @@ This value should always be overwritten.")
 (defvar exwm-input--during-command nil
   "Indicate whether between `pre-command-hook' and `post-command-hook'.")
 
-(defvar exwm-input--line-mode-passthrough nil
+(defvar exwm-input-line-mode-passthrough nil
   "Non-nil makes 'line-mode' forwards all events to Emacs.")
 
 (defvar exwm-input--line-mode-cache nil "Cache for incomplete key sequence.")
@@ -449,7 +449,7 @@ This value should always be overwritten.")
                  (setq event (xcb:keysyms:keysym->event
                               exwm--connection (car keysym)
                               (logand state (lognot (cdr keysym)))))
-                 (or exwm-input--line-mode-passthrough
+                 (or exwm-input-line-mode-passthrough
                      exwm-input--during-command
                      ;; Forward the event when there is an incomplete key
                      ;; sequence or when the minibuffer is active.
@@ -629,16 +629,15 @@ This value should always be overwritten.")
   (let (key keys)
     (dotimes (i times)
       ;; Skip events not from keyboard
-      (setq exwm-input--line-mode-passthrough t)
-      (catch 'break
-        (while t
-          (setq key (read-key (format "Send key: %s (%d/%d)"
-                                      (key-description keys)
-                                      (1+ i) times)))
-          (when (and (listp key) (eq (car key) t))
-            (setq key (cdr key)))
-          (unless (listp key) (throw 'break nil))))
-      (setq exwm-input--line-mode-passthrough nil)
+      (let ((exwm-input-line-mode-passthrough t))
+        (catch 'break
+          (while t
+            (setq key (read-key (format "Send key: %s (%d/%d)"
+                                        (key-description keys)
+                                        (1+ i) times)))
+            (when (and (listp key) (eq (car key) t))
+              (setq key (cdr key)))
+            (unless (listp key) (throw 'break nil)))))
       (setq keys (vconcat keys (vector key)))
       (exwm-input--fake-key key))))