From 6355fa518330bc97b31d77147f77c38b39563820 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Sun, 29 Nov 2020 21:48:01 +0200 Subject: [PATCH] Fix MINIBUF 'nomini' arg for windmove/window-in-direction (bug#44932) * lisp/windmove.el (windmove-display-in-direction) (windmove-delete-in-direction, windmove-swap-states-in-direction): Add 'nomini' as MINIBUF arg of window-in-direction. * lisp/window.el (window-in-direction): Rename arg MINI to MINIBUF. Update docstring from walk-window-tree. Send MINIBUF arg to walk-window-tree unchanged. --- lisp/windmove.el | 6 +++--- lisp/window.el | 13 +++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/lisp/windmove.el b/lisp/windmove.el index 65579600640..5db13cf6b30 100644 --- a/lisp/windmove.el +++ b/lisp/windmove.el @@ -485,7 +485,7 @@ When `switch-to-buffer-obey-display-actions' is non-nil, (t (window-in-direction dir nil nil (and arg (prefix-numeric-value arg)) - windmove-wrap-around))))) + windmove-wrap-around 'nomini))))) (unless window (setq window (split-window nil nil dir) type 'window)) (cons window type))) @@ -569,7 +569,7 @@ select the window at direction DIR. When `windmove-wrap-around' is non-nil, takes the window from the opposite side of the frame." (let ((other-window (window-in-direction dir nil nil arg - windmove-wrap-around t))) + windmove-wrap-around 'nomini))) (cond ((null other-window) (user-error "No window %s from selected window" dir)) (t @@ -637,7 +637,7 @@ a single modifier. Default value of PREFIX is `C-x' and MODIFIERS is `shift'." When `windmove-wrap-around' is non-nil, takes the window from the opposite side of the frame." (let ((other-window (window-in-direction dir nil nil nil - windmove-wrap-around t))) + windmove-wrap-around 'nomini))) (cond ((or (null other-window) (window-minibuffer-p other-window)) (user-error "No window %s from selected window" dir)) (t diff --git a/lisp/window.el b/lisp/window.el index d564ec55468..82976bf8364 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -2309,7 +2309,7 @@ SIDE can be any of the symbols `left', `top', `right' or ;; Neither of these allow one to selectively ignore specific windows ;; (windows whose `no-other-window' parameter is non-nil) as targets of ;; the movement. -(defun window-in-direction (direction &optional window ignore sign wrap mini) +(defun window-in-direction (direction &optional window ignore sign wrap minibuf) "Return window in DIRECTION as seen from WINDOW. More precisely, return the nearest window in direction DIRECTION as seen from the position of `window-point' in window WINDOW. @@ -2332,10 +2332,11 @@ frame borders. This means to return for WINDOW at the top of the frame and DIRECTION `above' the minibuffer window if the frame has one, and a window at the bottom of the frame otherwise. -Optional argument MINI nil means to return the minibuffer window -if and only if it is currently active. MINI non-nil means to -return the minibuffer window even when it's not active. However, -if WRAP is non-nil, always act as if MINI were nil. +Optional argument MINIBUF t means to return the minibuffer +window even if it isn't active. MINIBUF nil or omitted means +to return the minibuffer window if and only if it is currently active. +MINIBUF neither nil nor t means never return the minibuffer window. +However, if WRAP is non-nil, always act as if MINIBUF were nil. Return nil if no suitable window can be found." (setq window (window-normalize-window window t)) @@ -2451,7 +2452,7 @@ Return nil if no suitable window can be found." (setq best-edge-2 w-top) (setq best-diff-2 best-diff-2-new) (setq best-2 w))))) - frame nil (and mini t)) + frame nil minibuf) (or best best-2))) (defun get-window-with-predicate (predicate &optional minibuf all-frames default) -- 2.39.2