Various config updates in rc.org
[~bandali/configs] / lisp / bandali-ibuffer.el
index bf42def..7cd4331 100644 (file)
 
 ;;; 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
+(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)
      ((> (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"
+
+  ;; 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))
-  :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"))))
+(add-hook 'ibuffer-hook
+          (lambda () (ibuffer-switch-to-saved-filter-groups "default")))
 
 (provide 'bandali-ibuffer)
 ;;; bandali-ibuffer.el ends here