;;; bandali-ibuffer.el --- bandali's Ibuffer setup -*- lexical-binding: t; -*- ;; Copyright (C) 2018-2020 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 :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)) :config ;; Use human readable Size column instead of original one (define-ibuffer-column size-h (:name "Size" :inline t) (cond ((> (buffer-size) 1000000) (format "%7.1fM" (/ (buffer-size) 1000000.0))) ((> (buffer-size) 100000) (format "%7.0fk" (/ (buffer-size) 1000.0))) ((> (buffer-size) 1000) (format "%7.1fk" (/ (buffer-size) 1000.0))) (t (format "%8d" (buffer-size))))) (declare-function ibuffer-switch-to-saved-filter-groups "ibuf-ext" (name)) :custom (ibuffer-saved-filter-groups '(("default" ("dired" (mode . dired-mode)) ("org" (mode . org-mode)) ("gnus" (or (mode . gnus-group-mode) (mode . gnus-summary-mode) (mode . gnus-article-mode) ;; not really, but... (mode . message-mode))) ("web" (or (mode . mhtml-mode) (mode . css-mode) (mode . scss-mode) (mode . js2-mode))) ("shell" (or (mode . eshell-mode) (mode . shell-mode) (mode . term-mode))) ("programming" (or (mode . python-mode) (mode . c-mode) (mode . c++-mode) (mode . java-mode) (mode . emacs-lisp-mode) (mode . scheme-mode) (mode . haskell-mode) (mode . lean-mode) ;; (mode . go-mode) (mode . alloy-mode))) ("tex" (or (mode . bibtex-mode) (mode . latex-mode))) ("emacs" (or (name . "^\\*scratch\\*$") (name . "^\\*Messages\\*$"))) ("exwm" (mode . exwm-mode)) ("erc" (mode . erc-mode))))) (ibuffer-formats '((mark modified read-only locked " " (name 72 72 :left :elide) " " (size-h 9 -1 :right) " " (mode 16 16 :left :elide) " " filename-and-process) (mark " " (name 16 -1) " " filename))) :hook (ibuffer . (lambda () (ibuffer-switch-to-saved-filter-groups "default")))) (provide 'bandali-ibuffer) ;;; bandali-ibuffer.el ends here