summaryrefslogtreecommitdiffstats
path: root/.emacs.d/lisp/bandali-ibuffer.el
diff options
context:
space:
mode:
authorAmin Bandali <bandali@kelar.org>2025-01-30 22:55:32 -0500
committerAmin Bandali <bandali@kelar.org>2025-01-30 22:55:32 -0500
commitc7b47e03e0ac16d6db84d59d8cff58291b22fbaa (patch)
tree64997f5e10d25897966d496d905aa6ff835f5f94 /.emacs.d/lisp/bandali-ibuffer.el
parent563fb78037f21c6503c6489758e8f0d86173bb7e (diff)
downloadconfigs-c7b47e03e0ac16d6db84d59d8cff58291b22fbaa.tar.gz
configs-c7b47e03e0ac16d6db84d59d8cff58291b22fbaa.tar.xz
configs-c7b47e03e0ac16d6db84d59d8cff58291b22fbaa.zip
Break out .emacs.d/init.el into .emacs.d/lisp/bandali-*.el again
Having used the monolithic init.el approach, I found it somewhat unwieldy, especially as the file grows larger and larger.
Diffstat (limited to '.emacs.d/lisp/bandali-ibuffer.el')
-rw-r--r--.emacs.d/lisp/bandali-ibuffer.el81
1 files changed, 81 insertions, 0 deletions
diff --git a/.emacs.d/lisp/bandali-ibuffer.el b/.emacs.d/lisp/bandali-ibuffer.el
new file mode 100644
index 0000000..f818695
--- /dev/null
+++ b/.emacs.d/lisp/bandali-ibuffer.el
@@ -0,0 +1,81 @@
+;;; bandali-ibuffer.el --- bandali's Ibuffer setup -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018-2025 Amin Bandali <bandali@gnu.org>
+
+;; Author: Amin Bandali <bandali@gnu.org>
+;; Keywords: tools
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; My Ibuffer setup.
+
+;;; Code:
+
+(with-eval-after-load 'ibuffer
+ (setopt
+ ibuffer-saved-filter-groups
+ '(("default"
+ ("dired" (mode . dired-mode))
+ ("erc" (mode . erc-mode))
+ ("gnus"
+ (or
+ (mode . gnus-group-mode)
+ (mode . gnus-server-mode)
+ (mode . gnus-summary-mode)
+ (mode . gnus-article-mode)
+ (mode . message-mode)))
+ ("shell"
+ (or
+ (mode . eshell-mode)
+ (mode . shell-mode)
+ (mode . term-mode)))
+ ("tex"
+ (or
+ (mode . tex-mode)
+ (mode . bibtex-mode)
+ (mode . latex-mode)))))
+ ibuffer-formats
+ `((mark modified read-only locked
+ " " (name 18 18 :left :elide)
+ " " (size-h 9 -1 :right)
+ " " (mode 16 16 :left :elide) " " filename-and-process)
+ ,@ibuffer-formats))
+ ;; Use human readable Size column instead of original one
+ (define-ibuffer-column size-h
+ (:name "Size" :inline t)
+ (cond
+ ((> (buffer-size) (* 1024 1024))
+ (format "%7.1fM" (/ (buffer-size) (* 1024.0 1024.0))))
+ ((> (buffer-size) (* 100 1024))
+ (format "%7.0fK" (/ (buffer-size) 1024.0)))
+ ((> (buffer-size) 1024)
+ (format "%7.1fK" (/ (buffer-size) 1024.0)))
+ (t (format "%8d" (buffer-size)))))
+
+ (let ((m ibuffer-mode-map))
+ (b/keymap-set m "P" #'ibuffer-backward-filter-group)
+ (b/keymap-set m "N" #'ibuffer-forward-filter-group)
+ (b/keymap-set m "M-p" #'ibuffer-do-print)
+ (b/keymap-set m "M-n" #'ibuffer-do-shell-command-pipe-replace)))
+(b/keymap-global-set "C-x C-b" #'ibuffer)
+(declare-function
+ ibuffer-switch-to-saved-filter-groups "ibuf-ext" (name))
+(add-hook
+ 'ibuffer-hook
+ (lambda () (ibuffer-switch-to-saved-filter-groups "default")))
+
+(provide 'bandali-ibuffer)
+;;; bandali-ibuffer.el ends here