emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/exwm 4a1b177: Allow buffer-local simulation keys


From: Chris Feng
Subject: [elpa] externals/exwm 4a1b177: Allow buffer-local simulation keys
Date: Fri, 17 Jun 2016 10:46:13 +0000 (UTC)

branch: externals/exwm
commit 4a1b177bceb7e47ea75ddf779bf609d563713ffe
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>

    Allow buffer-local simulation keys
    
    * exwm-input.el (exwm-input-set-local-simulation-keys): New function for
    setting buffer-local simulation keys.
    (exwm-input--local-simulation-keys): New internal variable.
    (exwm-input--update-simulation-prefix-keys): Modify either
    `exwm-mode-map' or the local keymap accordingly.
---
 exwm-input.el |   17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/exwm-input.el b/exwm-input.el
index 4307a18..e786f0d 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -453,11 +453,16 @@ It's updated in several occasions, and only used by 
`exwm-input--set-focus'.")
 ;;   (unless (listp last-input-event)      ;not a key event
 ;;     (exwm-input--fake-key last-input-event)))
 
+(defvar exwm-input--local-simulation-keys nil
+  "Whether simulation keys are local.")
+
 (defun exwm-input--update-simulation-prefix-keys ()
   "Update the list of prefix keys of simulation keys."
   (setq exwm-input--simulation-prefix-keys nil)
   (dolist (i exwm-input--simulation-keys)
-    (define-key exwm-mode-map (car i) #'exwm-input-send-simulation-key)
+    (if exwm-input--local-simulation-keys
+        (local-set-key (car i) #'exwm-input-send-simulation-key)
+      (define-key exwm-mode-map (car i) #'exwm-input-send-simulation-key))
     (cl-pushnew (elt (car i) 0) exwm-input--simulation-prefix-keys)))
 
 (defun exwm-input-set-simulation-keys (simulation-keys)
@@ -469,6 +474,16 @@ SIMULATION-KEYS is an alist of the form (original-key . 
simulated-key)."
     (cl-pushnew `(,(vconcat (car i)) . ,(cdr i)) exwm-input--simulation-keys))
   (exwm-input--update-simulation-prefix-keys))
 
+(defun exwm-input-set-local-simulation-keys (simulation-keys)
+  "Set buffer-local simulation keys.
+
+Its usage is the same with `exwm-input-set-simulation-keys'."
+  (make-local-variable 'exwm-input--simulation-keys)
+  (make-local-variable 'exwm-input--simulation-prefix-keys)
+  (use-local-map (copy-keymap exwm-mode-map))
+  (let ((exwm-input--local-simulation-keys t))
+    (exwm-input-set-simulation-keys simulation-keys)))
+
 ;;;###autoload
 (defun exwm-input-send-simulation-key (times)
   "Fake a key event according to last input key sequence."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]