;;; bandali-ibuffer.el --- bandali's Ibuffer setup -*- lexical-binding: t; -*- ;; Copyright (C) 2018-2025 Amin Bandali ;; Author: Amin Bandali ;; 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 . ;;; Commentary: ;; My Ibuffer setup. ;;; Code: (use-package ibuffer :defer t :bind (("C-x C-b" . ibuffer) :map ibuffer-mode-map ("P" . ibuffer-backward-filter-group) ("N" . ibuffer-forward-filter-group) ("M-p" . ibuffer-do-print) ("M-n" . ibuffer-do-shell-command-pipe-replace)) :init (declare-function ibuffer-switch-to-saved-filter-groups "ibuf-ext" (name)) :hook (ibuffer . (lambda () (ibuffer-switch-to-saved-filter-groups "default"))) :custom (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)))))) :config (setopt 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)))))) (provide 'bandali-ibuffer) ;;; bandali-ibuffer.el ends here