X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/679463c61523f4eed0ab40468e9504166863e4ac..010680adcf47885a21f43c07ae4a2e641bce2375:/lisp/bandali-ibuffer.el diff --git a/lisp/bandali-ibuffer.el b/lisp/bandali-ibuffer.el index 9b1b9b3..7cd4331 100644 --- a/lisp/bandali-ibuffer.el +++ b/lisp/bandali-ibuffer.el @@ -1,12 +1,85 @@ -(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 +;;; 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: + +(csetq + 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) + (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))) +(with-eval-after-load 'ibuffer ;; Use human readable Size column instead of original one (define-ibuffer-column size-h (:name "Size" :inline t) @@ -15,63 +88,23 @@ ((> (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))))) - :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 . web-mode) - (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")))) + + ;; local key bindings + (define-key ibuffer-mode-map (kbd "P") + #'ibuffer-backward-filter-group) + (define-key ibuffer-mode-map (kbd "N") + #'ibuffer-forward-filter-group) + (define-key ibuffer-mode-map (kbd "M-p") + #'ibuffer-do-print) + (define-key ibuffer-mode-map (kbd "M-n") + #'ibuffer-do-shell-command-pipe-replace)) +;; global key bindings +(global-set-key (kbd "C-x C-b") #'ibuffer) +;; hooks +(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