Juri Linkov writes: >> 1. (setq debug-on-error t enable-recursive-minibuffers t) >> 2. M-: (or any other prompt like 'M-x') >> 3. Resize the minibuffer window e.g. with the mouse to at least 4 lines high >> 4. M-x windmove-swap-states-up RET >> 5. Click on the bottom window >> 6. C-x t 2 >> 7. Click on the bottom window >> 8. C-x t 2 >> >> Debugger entered--Lisp error: (error "Specified root is not an ancestor of specified win...") >> delete-other-windows-internal(# #) >> delete-other-windows() >> tab-bar-new-tab-to() >> tab-new(nil) > > Maybe the simplest fix is just not to create such a broken > window configuration: > > diff --git a/lisp/windmove.el b/lisp/windmove.el > index 06ce16c0d42..57511291588 100644 > --- a/lisp/windmove.el > +++ b/lisp/windmove.el > @@ -724,6 +724,8 @@ windmove-swap-states-in-direction > nil windmove-wrap-around 'nomini))) > (cond ((or (null other-window) (window-minibuffer-p other-window)) > (user-error "No window %s from selected window" dir)) > + ((window-minibuffer-p (selected-window)) > + (user-error "Selected window is the minibuffer")) > (t > (window-swap-states nil other-window)))))