summaryrefslogtreecommitdiffstats
path: root/.emacs.d/lisp/bandali-ibuffer.el
diff options
context:
space:
mode:
authorAmin Bandali <bandali@gnu.org>2020-10-05 23:38:06 -0400
committerAmin Bandali <bandali@gnu.org>2020-10-05 23:38:06 -0400
commitd7dee82420a04e5c92e5b5ad316e14a49bd4d689 (patch)
tree9dceac59e3b0d40b0357e8854e191ac5559d41ab /.emacs.d/lisp/bandali-ibuffer.el
parent927b50b7aec2da105bd5125dec272a89e38663c3 (diff)
downloadconfigs-d7dee82420a04e5c92e5b5ad316e14a49bd4d689.tar.gz
configs-d7dee82420a04e5c92e5b5ad316e14a49bd4d689.tar.xz
configs-d7dee82420a04e5c92e5b5ad316e14a49bd4d689.zip
Move GNU Emacs configs from ./ into .emacs.d/
I will be using the repository to store my configurations for other non-Emacs pieces of software. The repository itself will be located at ~/ rather than ~/.emacs.d/.
Diffstat (limited to '.emacs.d/lisp/bandali-ibuffer.el')
-rw-r--r--.emacs.d/lisp/bandali-ibuffer.el110
1 files changed, 110 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..7cd4331
--- /dev/null
+++ b/.emacs.d/lisp/bandali-ibuffer.el
@@ -0,0 +1,110 @@
+;;; bandali-ibuffer.el --- bandali's Ibuffer setup -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018-2020 Amin Bandali
+
+;; 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:
+
+(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)
+ (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)))))
+
+ ;; 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