Pisahkan buffer dalam kelompok
Mungkin dengan tabbar. Anda dapat menambahkan aturan ke buffer grup dalam grup. Berikut cuplikan dasar:
(defun tabbar-buffer-groups ()
"Returns the list of group names the current buffer belongs to."
(list
(cond
;; ADD RULES TO SPLIT BUFFERS IN GROUPS HERE!
;; if buffer is not grouped by the rules you would add above
;; put it in the "General" group:
(t
"General"
))))
Aturan contoh:
- Daftar nama penyangga:
((member (buffer-name)
'("*scratch*" "*Messages*" "*Help*"))
"Common" ;; this is a group name
)
- Mengenai buffer umum, saya lebih suka memasukkan "Biasa" setiap buffer yang namanya dimulai dengan bintang. Ini memberikan contoh membuat buffer untuk aturan ini:
((string-equal "*" (substring (buffer-name) 0 1))
"Common"
)
- Berikut adalah contoh pengelompokan buffer berdasarkan mode utama:
((memq major-mode
'(org-mode text-mode rst-mode))
"Text"
)
- Berikut adalah contoh pengelompokan buffer berdasarkan mode dari mana mereka berasal:
((or (get-buffer-process (current-buffer))
;; Check if the major mode derives from `comint-mode' or
;; `compilation-mode'.
(tabbar-buffer-mode-derived-p
major-mode '(comint-mode compilation-mode)))
"Process"
)
- Berikut adalah contoh pengelompokan tab berdasarkan regexp:
((string-match "^__" (buffer-name))
"Templates"
)
- Grup buffer berdasarkan mode utama:
(if (and (stringp mode-name)
;; Take care of preserving the match-data because this
;; function is called when updating the header line.
(save-match-data (string-match "[^ ]" mode-name)))
mode-name
(symbol-name major-mode))
Setelah Anda membuat aturan, Anda dapat menekan + atau - pada baris tab tabbar untuk beralih grup, dan juga ◀ dan ▶ untuk beralih di antara buffer. Atau cukup ikatkan pertahanan berikut:
tabbar-forward
tabbar-backward
tabbar-forward-group
tabbar-backward-group
dan berpindah di antara tab dan grup tab dengan keyboard.
Secara pribadi saya mengelompokkan tab, sehingga saya melihat apa yang terbuka, tetapi menavigasi dengan mereka ido-switch-buffer
.
Beralih di antara seperangkat aturan
Kita juga dapat mendefinisikan serangkaian aturan pengelompokan buffer dan siklus di antaranya. Berikut adalah contoh bersepeda antara dua set aturan pengelompokan buffer:
;; tab-groups!
(setq tbbr-md "common")
(defun toggle-tabbar-mode ()
"Toggles tabbar modes - all buffers vs. defined in the `tabbar-buffer-groups'."
(interactive)
(if (string= tbbr-md "groups")
(progn ;; then
(setq tabbar-buffer-groups-function 'tabbar-buffer-groups-common)
(setq tbbr-md "common"))
(progn ;; else
(setq tabbar-buffer-groups-function 'tabbar-buffer-groups)
(setq tbbr-md "groups"))))
;; by default - all tabs:
(setq tabbar-buffer-groups-function 'tabbar-buffer-groups-common)
Ini beralih di antara tabbar-buffer-groups-common
dan tabbar-buffer-groups
pengelompokan defune tab.
Urutkan buffer tabbar berdasarkan nama
Saya merasa bermanfaat untuk menyortir buffer tabbar berdasarkan nama. Berikut cara mendapatkannya:
(defun tabbar-add-tab (tabset object &optional append_ignored)
"Add to TABSET a tab with value OBJECT if there isn't one there yet.
If the tab is added, it is added at the beginning of the tab list,
unless the optional argument APPEND is non-nil, in which case it is
added at the end."
(let ((tabs (tabbar-tabs tabset)))
(if (tabbar-get-tab object tabset)
tabs
(let ((tab (tabbar-make-tab object tabset)))
(tabbar-set-template tabset nil)
(set tabset (sort (cons tab tabs)
(lambda (a b) (string< (buffer-name (car a)) (buffer-name (car b))))))))))