mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-20 18:17:20 +00:00
* lisp/tab-bar.el (tab-bar-get-buffer-tab): Move code closer to its use.
This commit is contained in:
parent
67815c6bf2
commit
1e4c6f8333
@ -1296,6 +1296,44 @@ in the selected frame."
|
||||
((framep all-frames) (list all-frames))
|
||||
(t (list (selected-frame)))))
|
||||
|
||||
(defun tab-bar-get-buffer-tab (buffer-or-name &optional all-frames)
|
||||
"Return a tab owning a window whose buffer is BUFFER-OR-NAME.
|
||||
BUFFER-OR-NAME may be a buffer or a buffer name and defaults to
|
||||
the current buffer.
|
||||
|
||||
The optional argument ALL-FRAMES specifies the frames to consider:
|
||||
|
||||
- t means consider all tabs on all existing frames.
|
||||
|
||||
- `visible' means consider all tabs on all visible frames.
|
||||
|
||||
- A frame means consider all tabs on that frame only.
|
||||
|
||||
Any other value of ALL-FRAMES means consider all tabs on the
|
||||
selected frame and no others."
|
||||
(let ((buffer (if buffer-or-name
|
||||
(get-buffer buffer-or-name)
|
||||
(current-buffer))))
|
||||
(when (bufferp buffer)
|
||||
(seq-some
|
||||
(lambda (frame)
|
||||
(seq-some
|
||||
(lambda (tab)
|
||||
(when (if (eq (car tab) 'current-tab)
|
||||
(get-buffer-window buffer frame)
|
||||
(let* ((state (cdr (assq 'ws tab)))
|
||||
(buffers (when state
|
||||
(window-state-buffers state))))
|
||||
(or
|
||||
;; non-writable window-state
|
||||
(memq buffer buffers)
|
||||
;; writable window-state
|
||||
(member (buffer-name buffer) buffers))))
|
||||
(append tab `((index . ,(tab-bar--tab-index tab nil frame))
|
||||
(frame . ,frame)))))
|
||||
(funcall tab-bar-tabs-function frame)))
|
||||
(tab-bar--reusable-frames all-frames)))))
|
||||
|
||||
(defun display-buffer-in-tab (buffer alist)
|
||||
"Display BUFFER in a tab.
|
||||
ALIST is an association list of action symbols and values. See
|
||||
@ -1346,44 +1384,6 @@ indirectly called by the latter."
|
||||
(let ((tab-bar-new-tab-choice t))
|
||||
(tab-bar-new-tab))))))
|
||||
|
||||
(defun tab-bar-get-buffer-tab (buffer-or-name &optional all-frames)
|
||||
"Return a tab owning a window whose buffer is BUFFER-OR-NAME.
|
||||
BUFFER-OR-NAME may be a buffer or a buffer name and defaults to
|
||||
the current buffer.
|
||||
|
||||
The optional argument ALL-FRAMES specifies the frames to consider:
|
||||
|
||||
- t means consider all tabs on all existing frames.
|
||||
|
||||
- `visible' means consider all tabs on all visible frames.
|
||||
|
||||
- A frame means consider all tabs on that frame only.
|
||||
|
||||
Any other value of ALL-FRAMES means consider all tabs on the
|
||||
selected frame and no others."
|
||||
(let ((buffer (if buffer-or-name
|
||||
(get-buffer buffer-or-name)
|
||||
(current-buffer))))
|
||||
(when (bufferp buffer)
|
||||
(seq-some
|
||||
(lambda (frame)
|
||||
(seq-some
|
||||
(lambda (tab)
|
||||
(when (if (eq (car tab) 'current-tab)
|
||||
(get-buffer-window buffer frame)
|
||||
(let* ((state (cdr (assq 'ws tab)))
|
||||
(buffers (when state
|
||||
(window-state-buffers state))))
|
||||
(or
|
||||
;; non-writable window-state
|
||||
(memq buffer buffers)
|
||||
;; writable window-state
|
||||
(member (buffer-name buffer) buffers))))
|
||||
(append tab `((index . ,(tab-bar--tab-index tab nil frame))
|
||||
(frame . ,frame)))))
|
||||
(funcall tab-bar-tabs-function frame)))
|
||||
(tab-bar--reusable-frames all-frames)))))
|
||||
|
||||
(defun switch-to-buffer-other-tab (buffer-or-name &optional norecord)
|
||||
"Switch to buffer BUFFER-OR-NAME in another tab.
|
||||
Like \\[switch-to-buffer-other-frame] (which see), but creates a new tab."
|
||||
|
Loading…
Reference in New Issue
Block a user