Apply minibuffer in own frame configuration to created frames

* exwm-workspace.el
	(exwm-workspace--modify-all-x-frames-parameters): Helper function
	to non-destructively modify `window-system-default-frame-alist'.
	(exwm-workspace--init): Use above function to default all frames
	to the shared minibuffer when
	`exwm-workspace--minibuffer-own-frame-p' is true.
This commit is contained in:
Adrián Medraño Calvo 2016-07-17 12:00:00 +00:00
parent 983fd468dc
commit cd1372eaec

View file

@ -797,6 +797,20 @@ The optional FORCE option is for internal use only."
(defvar exwm-workspace--timer nil "Timer used to track echo area changes.") (defvar exwm-workspace--timer nil "Timer used to track echo area changes.")
(defun exwm-workspace--modify-all-x-frames-parameters (new-x-parameters)
"Modifies `window-system-default-frame-alist' for the X Window System.
NEW-X-PARAMETERS is an alist of frame parameters, merged into current
`window-system-default-frame-alist' for the X Window System. The parameters are
applied to all subsequently created X frames."
;; The parameters are modified in place; take current
;; ones or insert a new X-specific list.
(let ((x-parameters (or (assq 'x window-system-default-frame-alist)
(let ((new-x-parameters '(x)))
(push new-x-parameters window-system-default-frame-alist)
new-x-parameters))))
(setf (cdr x-parameters)
(append new-x-parameters (cdr x-parameters)))))
(defun exwm-workspace--init () (defun exwm-workspace--init ()
"Initialize workspace module." "Initialize workspace module."
(cl-assert (and (< 0 exwm-workspace-number) (>= 10 exwm-workspace-number))) (cl-assert (and (< 0 exwm-workspace-number) (>= 10 exwm-workspace-number)))
@ -843,6 +857,8 @@ The optional FORCE option is for internal use only."
(delete-frame f))))) (delete-frame f)))))
;; This is the only usable minibuffer frame. ;; This is the only usable minibuffer frame.
(setq default-minibuffer-frame exwm-workspace--minibuffer) (setq default-minibuffer-frame exwm-workspace--minibuffer)
(exwm-workspace--modify-all-x-frames-parameters
'((minibuffer . nil)))
(let ((outer-id (string-to-number (let ((outer-id (string-to-number
(frame-parameter exwm-workspace--minibuffer (frame-parameter exwm-workspace--minibuffer
'outer-window-id))) 'outer-window-id)))
@ -883,8 +899,6 @@ The optional FORCE option is for internal use only."
;; Create workspace frames. ;; Create workspace frames.
(dotimes (_ exwm-workspace-number) (dotimes (_ exwm-workspace-number)
(push (make-frame `((window-system . x) (push (make-frame `((window-system . x)
(minibuffer . ,(minibuffer-window
exwm-workspace--minibuffer))
(internal-border-width . 0) (internal-border-width . 0)
(client . nil))) (client . nil)))
exwm-workspace--list)) exwm-workspace--list))