diff --git a/lisp/window.el b/lisp/window.el index 7d8ee48635..ef45f629c5 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -7276,6 +7276,10 @@ window--display-buffer ;; Unless WINDOW already shows BUFFER reset its dedicated flag. (set-window-dedicated-p window nil) (set-window-buffer window buffer)) + (when (assq 'bump-use-time alist) + ;; Bump WINDOW's use time so 'get-lru-window' will try to avoid + ;; it. + (window-bump-use-time window)) (let ((alist-dedicated (assq 'dedicated alist))) ;; Maybe dedicate WINDOW to BUFFER if asked for. (cond diff --git a/src/window.c b/src/window.c index 90fa6ac2df..a20ac70cbf 100644 --- a/src/window.c +++ b/src/window.c @@ -773,13 +773,18 @@ DEFUN ("window-use-time", Fwindow_use_time, Swindow_use_time, 0, 1, 0, DEFUN ("window-bump-use-time", Fwindow_bump_use_time, Swindow_bump_use_time, 0, 1, 0, - doc: /* Mark WINDOW as having been most recently used. + doc: /* Mark WINDOW as most recently used after the selected window. WINDOW must be a live window and defaults to the selected one. */) (Lisp_Object window) { struct window *w = decode_live_window (window); + struct window *sw = XWINDOW (selected_window); - w->use_time = ++window_select_count; + if (w != sw) + { + w->use_time = ++window_select_count; + sw->use_time = ++window_select_count; + } return Qnil; }