iflipbという、バッファ切り替えのためのパッケージが存在する:
emacs.rubikitch.com
私は以下の設定としている。
カレントバッファと同じメジャーモードのバッファのみを切り替え対象にしたいため、新たに関数を書いた。
(require 'iflipb) (setq iflipb-wrap-around t) (setq iflipb-ignore-buffers (list "^[*]")) (defun my-iflipb-buffer-list () "Returns list of buffers whose major-mode is the same as current buffer's one." (let ((cur-buf-list (buffer-list (selected-frame))) (same-major-mode-buflist nil) (currbuf-major-mode (buffer-local-value 'major-mode (current-buffer)))) (dolist (buffer cur-buf-list) (if (eq (buffer-local-value 'major-mode buffer) currbuf-major-mode) (add-to-list 'same-major-mode-buflist buffer))) (nreverse same-major-mode-buflist))) (setq iflipb-buffer-list-function 'my-iflipb-buffer-list) (global-set-key (kbd "C-<tab>") 'iflipb-next-buffer) (global-set-key (kbd "C-S-<tab>") 'iflipb-previous-buffer)