branch: externals/exwm
commit 3fc0cb2bf7e97a525862e95052aaffca70b2089e
Author: Chris Feng <[email protected]>
Commit: Chris Feng <[email protected]>
Various fixes
* Prevent marking the end of a key sequence with a single `C-u'.
* Enable `C-u' prefix for key simulation since it's not possible for users
to
define simulation keys starting with `C-u'.
* Make Emacs idle only after the visual parts are updated to prevent from
disturbing users.
* Should use '?\s' instead of '? '.
---
exwm-input.el | 21 ++++++++++++---------
exwm-workspace.el | 4 ++--
2 files changed, 14 insertions(+), 11 deletions(-)
diff --git a/exwm-input.el b/exwm-input.el
index e185b1a..6d72cc2 100644
--- a/exwm-input.el
+++ b/exwm-input.el
@@ -108,10 +108,12 @@ It's updated in several occasions, and only used by
`exwm-input--set-focus'.")
(defun exwm-input--finish-key-sequence ()
"Mark the end of a key sequence (with the aid of `pre-command-hook')."
- (setq exwm-input--during-key-sequence nil)
- (when exwm-input--temp-line-mode
- (setq exwm-input--temp-line-mode nil)
- (exwm-input--release-keyboard)))
+ (when (and exwm-input--during-key-sequence
+ (not (equal [?\C-u] (this-single-command-keys))))
+ (setq exwm-input--during-key-sequence nil)
+ (when exwm-input--temp-line-mode
+ (setq exwm-input--temp-line-mode nil)
+ (exwm-input--release-keyboard))))
(defun exwm-input--on-MappingNotify (data synthetic)
"Handle MappingNotify event."
@@ -403,18 +405,19 @@ SIMULATION-KEYS is a list of alist (key-sequence1 .
key-sequence2)."
(cl-pushnew `(,(vconcat (car i)) . ,(cdr i)) exwm-input--simulation-keys))
(exwm-input--update-simulation-prefix-keys))
-(defun exwm-input-send-simulation-key ()
+(defun exwm-input-send-simulation-key (times)
"Fake a key event according to last input key sequence."
- (interactive)
- (let ((pair (assoc (this-command-keys-vector) ;FIXME: pefix
+ (interactive "p")
+ (let ((pair (assoc (this-single-command-keys)
exwm-input--simulation-keys))
key)
(when pair
(setq pair (cdr pair))
(unless (listp pair)
(setq pair (list pair)))
- (dolist (i pair)
- (exwm-input--fake-key i)))))
+ (dotimes (i times)
+ (dolist (j pair)
+ (exwm-input--fake-key j))))))
(defun exwm-input--init ()
"Initialize the keyboard module."
diff --git a/exwm-workspace.el b/exwm-workspace.el
index 160055f..3add212 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -115,7 +115,6 @@ The optional FORCE option is for internal use only."
(setq exwm-workspace--current frame
exwm-workspace-current-index index)
(select-frame-set-input-focus frame)
- (exwm--make-emacs-idle-for 0.1) ;FIXME
;; Move mouse when necessary
(let ((position (mouse-pixel-position))
x y w h)
@@ -140,6 +139,7 @@ The optional FORCE option is for internal use only."
(set-frame-parameter frame 'exwm--urgency nil)
;; Update switch workspace history
(exwm-workspace--update-switch-history)
+ (exwm--make-emacs-idle-for 0.1) ;FIXME
;; Update _NET_CURRENT_DESKTOP
(xcb:+request exwm--connection
(make-instance 'xcb:ewmh:set-_NET_CURRENT_DESKTOP
@@ -196,7 +196,7 @@ The optional FORCE option is for internal use only."
(defun exwm-workspace-rename-buffer (newname)
"Rename a buffer."
- (if (/= ? (aref newname 0))
+ (if (/= ?\s (aref newname 0))
(rename-buffer newname t)
;; If a buffer name is prefixed with a space, Emacs append a random
;; number before renaming it. This is not desired behavior.