configure switch-to-prev-buffer-skip

when cycling through buffers, skip over a bunch of built-in emacs
buffers. as well, skip over dired-sidebar-mode buffers, as these get
super annoyingly mixed in all over the place at times
This commit is contained in:
Gered 2025-01-19 16:36:21 -05:00
parent d73c7c68a6
commit 5ab38869db
3 changed files with 33 additions and 0 deletions

6
emacs.d/functions.el Normal file
View file

@ -0,0 +1,6 @@
(defun buffer-mode (&optional buffer-or-name)
"Returns the major mode associated with a buffer. If buffer-name is ni, return
current buffer's mode."
(buffer-local-value
'major-mode
(if buffer-or-name (get-buffer buffer-or-name) (current-buffer))))

View file

@ -1,4 +1,5 @@
(dolist (f '("packages.el" (dolist (f '("packages.el"
"functions.el"
"later-init.el" "later-init.el"
"ui.el" "ui.el"
"dired.el" "dired.el"

View file

@ -161,3 +161,29 @@
compilation-mode)) compilation-mode))
(popper-mode t) (popper-mode t)
(popper-echo-mode t)) (popper-echo-mode t))
(defcustom gered/buffer-name-skip-regexp
(rx bos
(or "*Backtrace*"
"*Compile-Log*"
"*Completions*"
"*Messages*"
"*package*"
"*Warnings*"
"*Async-native-compile-log*")
eos)
"Regular expression matching buffer names to be ignored by `next-buffer' and `previous-buffer'"
:type 'regexp)
(defcustom gered/buffer-mode-skip-regexp
(rx bos
(or "dired-sidebar-mode")
eos)
"Regular expression matching buffer major modes to be ignored by `next-buffer' and `previous-buffer'"
:type 'regexp)
(defun gered/buffer-skip-p (window buffer bury-or-kill)
(or (string-match-p gered/buffer-name-skip-regexp (buffer-name buffer))
(string-match-p gered/buffer-mode-skip-regexp (symbol-name (buffer-mode buffer)))))
(setq switch-to-prev-buffer-skip 'gered/buffer-skip-p)