From 76ae38a01772a21b136fe2cf2224cbce69f3c11b Mon Sep 17 00:00:00 2001 From: Luke Hoersten Date: Thu, 2 Oct 2025 10:33:24 -0500 Subject: Replace custom ibuffer code with ibuffer-project - Remove custom ibuffer major-mode grouping functions using obsolete flet - Add ibuffer-project package for automatic project-based buffer grouping - Simplify configuration from ~25 lines to ~6 lines --- init.el | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/init.el b/init.el index 993d130..b8abb65 100644 --- a/init.el +++ b/init.el @@ -67,7 +67,7 @@ (require 'package-require) (package-require '(rg company exec-path-from-shell expand-region vertico orderless consult marginalia magit forge magit-todos markdown-mode hgignore-mode move-text paredit - rainbow-delimiters json-mode json-reformat flycheck treesit-auto + rainbow-delimiters json-mode json-reformat flycheck treesit-auto ibuffer-project solarized-theme terraform-mode visual-regexp yasnippet yaml-mode emmet-mode)) @@ -111,29 +111,12 @@ ;;; ibuffer (global-set-key (kbd "C-x C-b") 'ibuffer) ; better buffer browser -(require 'ibuffer) -(require 'ibuf-ext) -(defun ibuffer-generate-filter-groups-by-major-mode () - (flet - ((mode-group - (mode) - (let ((mode-title - (capitalize (car (split-string (symbol-name mode) "-" t))))) - (cons mode-title `((mode . ,mode))))) - (buffer-modes - () - (flet ((buffer-mode (buffer) (buffer-local-value 'major-mode buffer))) - (ibuffer-remove-duplicates (remq nil (mapcar 'buffer-mode (buffer-list))))))) - (mapcar 'mode-group (buffer-modes)))) - -(defun ibuffer-major-mode-group-hook () - (interactive) - (setq-default ibuffer-filter-groups (ibuffer-generate-filter-groups-by-major-mode)) - (ibuffer-update nil t) - (message "ibuffer-major-mode: groups set")) - -(setq-default ibuffer-show-empty-filter-groups nil) -(add-hook 'ibuffer-hook (lambda () (ibuffer-major-mode-group-hook))) +(add-hook 'ibuffer-hook + (lambda () + (ibuffer-project-set-filter-groups) + (unless (eq ibuffer-sorting-mode 'project-file-relative) + (ibuffer-do-sort-by-project-file-relative)))) +(setq ibuffer-show-empty-filter-groups nil) ;;; shell -- cgit v1.2.3