>> For users (eq (current-buffer) (window-buffer)) _should_ be >> invariant. When and if an application temporarily violates that >> invariant, it should reestablish it before the user can see it. So if an >> application calls `display-buffer' in a state where the invariant does >> not hold, it should handle that case including the complication that >> `display-buffer' might have selected another window. And it goes without >> saying that a display buffer action should never violate that invariant. > > I see. So in this case the bug was elsewhere as I thought, it's > display-buffer-select which was wrong (as you said it should have used > pop-to-buffer) and not the code I added in > isearch-post-command-hook. Anyway using (window-buffer (selected-window)) > should not harm, and is an extra safety against display buffer actions > doing something weird. As this bug report indicates, automatically exiting isearch does more harm. So rather than forcibly exit isearch, we could select the original window back, in the same vein as isearch-back-into-window in the same hook moves point back to the old window boundaries: