diff options
Diffstat (limited to '.emacs.d/lisp/bandali-ibuffer.el')
-rw-r--r-- | .emacs.d/lisp/bandali-ibuffer.el | 81 |
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 |