* lisp/vc/vc-dir.el (vc-dir-bookmark-jump): Don't use save-window-excursion.
* lisp/window.el (display-buffer-override-next-command): Reset
display-buffer-overriding-action after the first buffer display action.
* lisp/tab-bar.el (switch-to-buffer-other-tab): Don't reuse frame tabs.
(other-tab-prefix): Don't reuse frame tabs.
(list (read-buffer-to-switch "Switch to buffer in other tab: ")))
(display-buffer (window-normalize-buffer-to-switch-to buffer-or-name)
'((display-buffer-in-tab)
- (inhibit-same-window . nil)
- (reusable-frames . t))
+ (inhibit-same-window . nil))
norecord))
(defun find-file-other-tab (filename &optional wildcards)
(lambda (buffer alist)
(cons (progn
(display-buffer-in-tab
- buffer (append alist '((inhibit-same-window . nil)
- (reusable-frames . t))))
+ buffer (append alist '((inhibit-same-window . nil))))
(selected-window))
'tab)))
(message "Display next command buffer in a new tab..."))
This implements the `handler' function interface for the record
type returned by `vc-dir-bookmark-make-record'."
(let* ((file (bookmark-prop-get bmk 'filename))
- (buf (save-window-excursion
- (vc-dir file) (current-buffer))))
+ (buf (progn ;; Don't use save-window-excursion (bug#39722)
+ (vc-dir file)
+ (current-buffer))))
(bookmark-default-handler
`("" (buffer . ,buf) . ,(bookmark-get-bookmark-record bmk)))))
(let* ((old-window (or (minibuffer-selected-window) (selected-window)))
(new-window nil)
(minibuffer-depth (minibuffer-depth))
+ (clearfun (make-symbol "clear-display-buffer-overriding-action"))
(action (lambda (buffer alist)
(unless (> (minibuffer-depth) minibuffer-depth)
(let* ((ret (funcall pre-function buffer alist))
(window (car ret))
(type (cdr ret)))
(setq new-window (window--display-buffer buffer window
- type alist))))))
+ type alist))
+ ;; Reset display-buffer-overriding-action
+ ;; after the first buffer display action
+ (funcall clearfun)
+ (setq post-function nil)
+ new-window))))
(command this-command)
- (clearfun (make-symbol "clear-display-buffer-overriding-action"))
(exitfun
(lambda ()
(setq display-buffer-overriding-action
;; adding the hook by the same command below.
(eq this-command command))
(funcall exitfun))))
+ ;; Reset display-buffer-overriding-action
+ ;; after the next command finishes
(add-hook 'post-command-hook clearfun)
(push action display-buffer-overriding-action)))