Hide minibuffer upon receiving any event

* exwm-input.el (exwm-input--event-hook): New variable.
(exwm-input--on-ButtonPress, exwm-input--on-KeyPress): Run
`exwm-input--event-hook'.
* exwm-workspace.el (exwm-workspace--init, exwm-workspace--exit):
Hide minibuffer upon noticing an event.
This commit is contained in:
Adrián Medraño Calvo 2018-11-03 12:00:00 +00:00
parent 0dd909a11b
commit cd7b32d1c2
2 changed files with 14 additions and 2 deletions

View file

@ -137,6 +137,9 @@ defined in `exwm-mode-map' here."
(defvar exwm-input--update-focus-window nil "The (Emacs) window to be focused. (defvar exwm-input--update-focus-window nil "The (Emacs) window to be focused.
This value should always be overwritten.") This value should always be overwritten.")
(defvar exwm-input--event-hook nil
"Hook to run when EXWM receives an event.")
(defvar exwm-workspace--current) (defvar exwm-workspace--current)
(declare-function exwm-floating--do-moveresize "exwm-floating.el" (declare-function exwm-floating--do-moveresize "exwm-floating.el"
(data _synthetic)) (data _synthetic))
@ -418,7 +421,8 @@ ARGS are additional arguments to CALLBACK."
(setq mode (exwm-input--on-ButtonPress-char-mode))))))))) (setq mode (exwm-input--on-ButtonPress-char-mode)))))))))
(xcb:+request exwm--connection (xcb:+request exwm--connection
(make-instance 'xcb:AllowEvents :mode mode :time xcb:Time:CurrentTime)) (make-instance 'xcb:AllowEvents :mode mode :time xcb:Time:CurrentTime))
(xcb:flush exwm--connection))) (xcb:flush exwm--connection))
(run-hooks 'exwm-input--event-hook))
(defun exwm-input--on-KeyPress (data _synthetic) (defun exwm-input--on-KeyPress (data _synthetic)
"Handle KeyPress event." "Handle KeyPress event."
@ -432,7 +436,8 @@ ARGS are additional arguments to CALLBACK."
(exwm-input--on-KeyPress-line-mode obj data)) (exwm-input--on-KeyPress-line-mode obj data))
(char-mode (char-mode
(exwm-input--on-KeyPress-char-mode obj data))) (exwm-input--on-KeyPress-char-mode obj data)))
(exwm-input--on-KeyPress-char-mode obj)))) (exwm-input--on-KeyPress-char-mode obj)))
(run-hooks 'exwm-input--event-hook))
(defun exwm-input--on-CreateNotify (data _synthetic) (defun exwm-input--on-CreateNotify (data _synthetic)
"Handle CreateNotify events." "Handle CreateNotify events."

View file

@ -128,6 +128,7 @@ Please manually run the hook `exwm-workspace-list-change-hook' afterwards.")
(defvar exwm-workspace--workareas nil "Workareas (struts excluded).") (defvar exwm-workspace--workareas nil "Workareas (struts excluded).")
(defvar exwm-input--during-command) (defvar exwm-input--during-command)
(defvar exwm-input--event-hook)
(defvar exwm-layout-show-all-buffers) (defvar exwm-layout-show-all-buffers)
(defvar exwm-manage--desktop) (defvar exwm-manage--desktop)
(declare-function exwm-input--on-buffer-list-update "exwm-input.el" ()) (declare-function exwm-input--on-buffer-list-update "exwm-input.el" ())
@ -1584,6 +1585,9 @@ applied to all subsequently created X frames."
(add-hook 'after-make-frame-functions (add-hook 'after-make-frame-functions
#'exwm-workspace--on-after-make-frame) #'exwm-workspace--on-after-make-frame)
(add-hook 'delete-frame-functions #'exwm-workspace--on-delete-frame) (add-hook 'delete-frame-functions #'exwm-workspace--on-delete-frame)
(when (exwm-workspace--minibuffer-own-frame-p)
(add-hook 'exwm-input--event-hook
#'exwm-workspace--on-echo-area-clear))
;; Switch to the first workspace ;; Switch to the first workspace
(exwm-workspace-switch 0 t) (exwm-workspace-switch 0 t)
;; Prevent frame parameters introduced by this module from being ;; Prevent frame parameters introduced by this module from being
@ -1604,6 +1608,9 @@ applied to all subsequently created X frames."
#'exwm-workspace--on-after-make-frame) #'exwm-workspace--on-after-make-frame)
(remove-hook 'delete-frame-functions (remove-hook 'delete-frame-functions
#'exwm-workspace--on-delete-frame) #'exwm-workspace--on-delete-frame)
(when (exwm-workspace--minibuffer-own-frame-p)
(remove-hook 'exwm-input--event-hook
#'exwm-workspace--on-echo-area-clear))
;; Hide & reparent out all frames (save-set can't be used here since ;; Hide & reparent out all frames (save-set can't be used here since
;; X windows will be re-mapped). ;; X windows will be re-mapped).
(setq exwm-workspace--current nil) (setq exwm-workspace--current nil)