summaryrefslogtreecommitdiff
path: root/lisp/frameset.el
diff options
context:
space:
mode:
authorMartin Rudalics <rudalics@gmx.at>2016-08-21 11:36:11 +0200
committerMartin Rudalics <rudalics@gmx.at>2016-08-21 11:36:11 +0200
commit1a1062d6e16f97effa7030cc5f297c9c57b232ad (patch)
treeaec1647cdd2b5f098f49baba5836af8ccff3c89e /lisp/frameset.el
parentf0ee3ca5a92d5503268da7f9e0d71a1a58893c8a (diff)
downloademacs-1a1062d6e16f97effa7030cc5f297c9c57b232ad.tar.gz
Fix semantics of 'minibuffer' frame parameter
The 'minibuffer' frame parameter is now t for a normal frame (a frame with a root window plus a minibuffer window) and the frame's minibuffer window for a minibuffer-less frame (a frame whose minibuffer window is on another frame). See also: https://lists.gnu.org/archive/html/emacs-devel/2016-07/msg01259.html * src/frame.c (make_frame, make_frame_without_minibuffer) (make_minibuffer_frame): When assigning the frame's minibuffer window also store corresponding 'minibuffer' frame parameter. (store_frame_param): Move the 'minibuffer' parameter checks to the beginning so we can silently override the value before it gets stored in the parameter alist. Fix error handling. (Fframe_parameters): Return value of 'minibuffer' parameter unmodified. * lisp/frameset.el (frameset-filter-minibuffer): When the cdr of the parameter is a minibuffer window, save (minibuffer . nil) instead of (minibuffer . t). (frameset--reuse-frame): To find a non-minibuffer-only frame look out for a frame whose 'minibuffer' parameter is t instead of that frame's minibuffer window. (frameset-minibufferless-first-p): To find a minibuffer-less frame look out for a frame whose 'minibuffer' parameter is a window instead of nil.
Diffstat (limited to 'lisp/frameset.el')
-rw-r--r--lisp/frameset.el24
1 files changed, 16 insertions, 8 deletions
diff --git a/lisp/frameset.el b/lisp/frameset.el
index 2453f57e228..9a7a8bcf8b0 100644
--- a/lisp/frameset.el
+++ b/lisp/frameset.el
@@ -572,7 +572,7 @@ see `frameset-filter-alist'."
(defun frameset-filter-minibuffer (current filtered _parameters saving)
"Force the minibuffer parameter to have a sensible value.
-When saving, convert (minibuffer . #<window>) to (minibuffer . t).
+When saving, convert (minibuffer . #<window>) to (minibuffer . nil).
When restoring, if there are two copies, keep the one pointing to
a live window.
@@ -580,7 +580,12 @@ For the meaning of CURRENT, FILTERED, PARAMETERS and SAVING,
see `frameset-filter-alist'."
(let ((value (cdr current)) mini)
(cond (saving
- (if (windowp value) '(minibuffer . t) t))
+ ;; "Fix semantics of 'minibuffer' frame parameter" change:
+ ;; When the cdr of the parameter is a minibuffer window, save
+ ;; (minibuffer . nil) instead of (minibuffer . t).
+ (if (windowp value)
+ '(minibuffer . nil)
+ t))
((setq mini (assq 'minibuffer filtered))
(when (windowp value) (setcdr mini value))
nil)
@@ -906,12 +911,12 @@ is the parameter alist of the frame being restored. Internal use only."
;; If it has not been loaded, and it is not a minibuffer-only frame,
;; let's look for an existing non-minibuffer-only frame to reuse.
(unless (or frame (eq (cdr (assq 'minibuffer parameters)) 'only))
+ ;; "Fix semantics of 'minibuffer' frame parameter" change:
+ ;; The 'minibuffer' frame parameter of a non-minibuffer-only
+ ;; frame is t instead of that frame's minibuffer window.
(setq frame (frameset--find-frame-if
(lambda (f)
- (let ((w (frame-parameter f 'minibuffer)))
- (and (window-live-p w)
- (window-minibuffer-p w)
- (eq (window-frame w) f))))
+ (eq (frame-parameter f 'minibuffer) t))
display))))
(mini
;; For minibufferless frames, check whether they already exist,
@@ -1027,8 +1032,11 @@ For the meaning of FORCE-DISPLAY, see `frameset-restore'."
(t (not force-display))))
(defun frameset-minibufferless-first-p (frame1 _frame2)
- "Predicate to sort minibufferless frames before other frames."
- (not (frame-parameter frame1 'minibuffer)))
+ "Predicate to sort minibuffer-less frames before other frames."
+ ;; "Fix semantics of 'minibuffer' frame parameter" change: The
+ ;; 'minibuffer' frame parameter of a minibuffer-less frame is that
+ ;; frame's minibuffer window instead of nil.
+ (windowp (frame-parameter frame1 'minibuffer)))
;;;###autoload
(cl-defun frameset-restore (frameset