Chia bộ đệm theo nhóm
Nó có thể với thanh tab. Bạn có thể thêm quy tắc vào bộ đệm nhóm trong nhóm. Đây là một đoạn cơ bản:
(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"
))))
Quy tắc ví dụ:
- Liệt kê tên bộ đệm:
((member (buffer-name)
'("*scratch*" "*Messages*" "*Help*"))
"Common" ;; this is a group name
)
- Về bộ đệm chung, tôi thích đặt "Chung" cho mỗi bộ đệm có tên bắt đầu bằng một ngôi sao. Điều này đưa ra một ví dụ về việc tạo bộ đệm cho quy tắc này:
((string-equal "*" (substring (buffer-name) 0 1))
"Common"
)
- Đây là một ví dụ về nhóm bộ đệm theo chế độ chính:
((memq major-mode
'(org-mode text-mode rst-mode))
"Text"
)
- Đây là một ví dụ về việc nhóm các bộ đệm dựa trên chế độ mà chúng có nguồn gốc từ:
((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"
)
- Dưới đây là một ví dụ về việc nhóm các tab bằng regrec:
((string-match "^__" (buffer-name))
"Templates"
)
- Bộ đệm theo chế độ chính:
(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))
Khi bạn soạn các quy tắc, bạn có thể nhấn vào dòng tab + hoặc - trên thanh tab của tab để chuyển đổi các nhóm và cả ◀ và ▶ để chuyển giữa các bộ đệm. Hoặc chỉ ràng buộc các defun sau:
tabbar-forward
tabbar-backward
tabbar-forward-group
tabbar-backward-group
và di chuyển giữa các tab và nhóm tab bằng bàn phím.
Cá nhân tôi nhóm các tab, để tôi thấy những gì đang mở, nhưng điều hướng chúng với ido-switch-buffer
.
Chuyển đổi giữa các quy tắc
Ngoài ra người ta có thể định nghĩa tập hợp các quy tắc nhóm bộ đệm khác nhau và chu kỳ giữa các quy tắc này. Đây là một ví dụ về việc đạp xe giữa hai bộ quy tắc nhóm bộ đệm:
;; 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)
Đây Toggles giữa tabbar-buffer-groups-common
và tabbar-buffer-groups
tab nhóm defuns.
Sắp xếp bộ đệm thanh theo tên
Tôi thấy nó có lợi để sắp xếp bộ đệm thanh theo tên. Đây là cách để có được nó:
(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))))))))))