48 lines
1.3 KiB
EmacsLisp
48 lines
1.3 KiB
EmacsLisp
;; My ibuffer config
|
|
;;
|
|
;; This config sections buffers into groups like so:
|
|
;; -[Net] -- EWW, Elpher, and IRC buffers.
|
|
;; -[Dired] -- Directory listings
|
|
;; -[Gnus] -- All gnus buffers like gnus-summary-mode
|
|
;; -[Stars] -- Buffers like *Scratch* and *Message*
|
|
;;
|
|
;; M-RET -- Toggle collapse all
|
|
;; M-n -- Next group
|
|
;; M-p -- Prev group
|
|
;;
|
|
|
|
;;; Collapses / De-collapse all entries.
|
|
(defun ibuffer-toggle-all ()
|
|
(interactive)
|
|
(if ibuffer-hidden-filter-groups
|
|
(setq ibuffer-hidden-filter-groups '())
|
|
(setq ibuffer-hidden-filter-groups
|
|
(mapcar #'car (ibuffer-current-filter-groups-with-position))))
|
|
(ibuffer-update nil t))
|
|
|
|
;; Main package declaration
|
|
(use-package ibuffer
|
|
:bind (("C-c i" . ibuffer)
|
|
:map ibuffer-mode-map
|
|
("M-<RET>" . ibuffer-toggle-all))
|
|
:config
|
|
(setq
|
|
ibuffer-expert t
|
|
ibuffer-show-empty-filter-groups nil
|
|
ibuffer-saved-filter-groups
|
|
'(("Home"
|
|
("Net" (or (mode . eww-mode)
|
|
(mode . rcirc-mode)
|
|
(mode . elpher-mode)))
|
|
("Dired" (mode . dired-mode))
|
|
("Gnus" (or (derived-mode gnus-mode)
|
|
(mode . message-mode)))
|
|
("Music" (name . "*MPC"))
|
|
("Stars" (name . "[*]"))))))
|
|
|
|
(add-hook 'ibuffer-mode-hook
|
|
(lambda ()
|
|
(ibuffer-switch-to-saved-filter-groups "Home")))
|
|
|
|
(provide 'config-ibuffer)
|