tôi sử dụng buffer-stack
(có sẵn thông qua MELPA) cho một cái gì đó tương tự. buffer-stack
cho phép bạn chuyển đổi giữa các bộ đệm theo cách rất linh hoạt (nó nhớ các bộ đệm được sử dụng gần đây nhất của bạn và nó sử dụng các ngăn xếp ngăn cách trên mỗi khung).
Bạn có thể thêm chức năng bộ lọc vào các lệnh chuyển đổi bộ đệm. Vì vậy, bạn có thể thêm một chức năng lọc để xem xét chỉ bộ đệm với tên tập tin với phần mở rộng tương tự hơn hiện tại. Tôi sử dụng chức năng lọc để chuyển đổi giữa các vùng đệm của cùng một chế độ. Dưới đây là một ví dụ cho thấy các keybindings của tôi để chuyển đổi lọc theo chế độ hiện tại và cũng swith để dired bộ đệm. Sẽ dễ dàng thêm một bộ lọc khác dựa trên đuôi tệp:
(defmacro command (&rest body)
`(lambda()
(interactive)
,@body))
(defvar buffer-stack-mode)
(defun buffer-op-by-mode (op &optional mode)
(let ((buffer-stack-filter 'buffer-stack-filter-by-mode)
(buffer-stack-mode (or mode major-mode)))
(funcall op)))
(defun buffer-stack-filter-by-mode (buffer)
(with-current-buffer buffer
(equal major-mode buffer-stack-mode)))
(global-set-key [(meta kp-7)]
(command (buffer-op-by-mode 'buffer-stack-up)))
(global-set-key [(meta kp-9)]
(command (buffer-op-by-mode 'buffer-stack-down)))
(global-set-key [(meta kp-3)]
(command (buffer-op-by-mode 'buffer-stack-down 'dired-mode)))
(global-set-key [(meta kp-1)]
(command (buffer-op-by-mode 'buffer-stack-up 'dired-mode)))