summary refs log tree commit diff
path: root/emacs.d/modules/module-ibuffer.el
blob: f91406981da6a130f7f7df0c60c06ec8d370763d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(require 'config-package)

(use-package ibuffer
  :bind ("C-x C-b" . ibuffer)
  :init
  (setq-default ibuffer-eliding-string "…")
  (setq ibuffer-show-empty-filter-groups nil
        ibuffer-formats '((mark modified read-only " "
                                (name 30 30 :left :elide)
                                " "
                                (size 9 -1 :right)
                                " "
                                (mode 16 16 :left :elide)
                                " " filename-and-process)
                          (mark " "
                                (name 16 -1)
                                " " filename))
        ibuffer-saved-filter-groups
        (quote (("default"
                 ("dired"  (mode . dired-mode))
                 ("elisp"  (mode . emacs-lisp-mode))
                 ("emacs"  (or (name . "^\\*.*\\*$") (mode . fundamental-mode)))
                 ("go"     (mode . go-mode))
                 ("java"   (mode . java-mode))
                 ("json"   (mode . json-mode))
                 ("lisp"   (mode . lisp-mode))
                 ("magit"  (mode . magit-mode))
                 ("puppet" (mode . puppet-mode))
                 ("python" (mode . python-mode))
                 ("repl"   (name . "repl"))
                 ("ruby"   (mode . ruby-mode))
                 ("rust"   (mode . rust-mode))
                 ("sh"     (mode . sh-mode))
                 ("text"   (mode . text-mode))))))

  (add-hook 'ibuffer-mode-hook  ;; organise by filter-groups
            '(lambda ()
               (ibuffer-auto-mode 1)
               (setq mode-name "≣")
               (ibuffer-switch-to-saved-filter-groups "default"))))

(provide 'module-ibuffer)