buat `display-buffer` buka buffer di tab baru
The display-bufferFungsi tampaknya akan digunakan cukup berat dalam Emacs. Ini memiliki banyak opsi untuk menentukan tempat membuka buffer baru (jendela baru, bingkai baru, jendela yang sudah ada, dll).
Emacs memperkenalkan konsep tab di 27.1. Namun, tampaknya tidak ada cara mudah untuk memberi tahu display-bufferbahwa Anda ingin buffer baru dibuka di tab, bukan hanya di jendela baru.
Adakah cara untuk mengkonfigurasi display-buffermembuka semua buffer di tab baru (atau yang sudah ada?)?
Solusi dari NickD menyarankan penggunaan fungsi seperti display-buffer-in-tab.
Saya bisa mendapatkan ini bekerja dengan pengaturan display-buffer-base-actionseperti berikut:
(setq display-buffer-base-action '(display-buffer-in-tab))
Namun, ini tampaknya tidak cocok dengan fungsi seperti helpdan magit-status. Mereka cenderung membuka terlalu banyak tab setiap kali dijalankan.
Pengaturan yang lebih spesifik mungkin diperlukan per perintah atau per buffer baru.
Jawaban
Ada display-buffer-in-new-tab. String dokumennya mengatakan:
display-buffer-in-new-tab is a compiled Lisp function in ‘tab-bar.el’.
(display-buffer-in-new-tab BUFFER ALIST)
Display BUFFER in a new tab.
ALIST is an association list of action symbols and values. See
Info node ‘(elisp) Buffer Display Action Alists’ for details of
such alists.
Like ‘display-buffer-in-tab’, but always creates a new tab unconditionally,
without checking if a suitable tab already exists.
If ALIST contains a ‘tab-name’ entry, it creates a new tab with that name
and displays BUFFER in a new tab. The ‘tab-name’ entry can be a function,
then it is called with two arguments: BUFFER and ALIST, and should return
the tab name. When a ‘tab-name’ entry is omitted, create a new tab without
an explicit name.
This is an action function for buffer display, see Info
node ‘(elisp) Buffer Display Action Functions’. It should be
called only by ‘display-buffer’ or a function directly or
indirectly called by the latter.
Belum dicoba.
EDIT: Saya menemukan ini dengan menggunakan sistem bantuan Emacs. Saya tidak menggunakan tab-bar-modedan saya tidak tahu tentang ini sebelumnya, tetapi melakukan C-h f display-buffer-TABmenunjukkan kepada saya buffer penyelesaian. Dengan cepat memindai itu, saya menemukan display-buffer-in-tabdan display-buffer-in-new-tab. Saya memilih yang terakhir dan mendapatkan string dokumen yang saya tempelkan di atas.
Jika buffer penyelesaian terlalu panjang untuk dipindai dengan mudah oleh mata, Anda dapat beralih ke buffer dengan C-x odan kemudian hanya mencari misalnya tabdi buffer menggunakan C-s.
Belajar menggunakan Helpdan juga belajar mencari melalui manual Infoadalah investasi waktu yang sangat baik.