summaryrefslogtreecommitdiff
path: root/lisp/init-ibuffer.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/init-ibuffer.el')
-rw-r--r--lisp/init-ibuffer.el69
1 files changed, 69 insertions, 0 deletions
diff --git a/lisp/init-ibuffer.el b/lisp/init-ibuffer.el
new file mode 100644
index 0000000..9131279
--- /dev/null
+++ b/lisp/init-ibuffer.el
@@ -0,0 +1,69 @@
+;; Replace buffer-menu with ibuffer.
+(global-set-key (kbd "C-x C-b") 'ibuffer)
+
+;; Modified from http://martinowen.net/blog/2010/02/tips-for-emacs-ibuffer.html
+;; and here http://www.elliotglaysher.org/emacs/.
+
+(setq ibuffer-saved-filter-groups
+ '(("home"
+ ("elisp" (mode . emacs-lisp-mode))
+ ("org" (or (mode . org-mode)
+ (name . "^\\*Org Agenda\\*$")
+ (name . "^\\*Calendar\\*$")))
+ ("web" (or (mode . html-mode)
+ (mode . nxml-mode)
+ (mode . css-mode)
+ (mode . less-css-mode)))
+ ("r" (or (mode . ess-mode)
+ (mode . inferior-ess-mode)
+ (name . "^\\*ESS\\*$")))
+ ("markup" (or (mode . markdown-mode)
+ (mode . rst-mode)))
+ ("lua" (mode . lua-mode))
+ ("perl" (mode . perl-mode))
+ ("python" (or (mode . python-mode)
+ (name . "^\\*Python")))
+ ("haskell" (mode . haskell-mode))
+ ("text" (mode . text-mode))
+ ("shell" (mode . sh-mode))
+ ("latex" (or (mode . latex-mode)
+ (mode . LaTeX-mode)
+ (mode . bibtex-mode)
+ (mode . reftex-mode)))
+ ("dir" (or (mode . dired-mode)
+ (name . "^\\*tramp")))
+ ("terminal" (or (mode . term-mode)
+ (name . "^\\*Shell Command Output*")
+ (name . "^\\*External terminal*")))
+ ("packages" (or (name . "^\\*Compile-Log\\*")
+ (name . "^\\*Packages\\*")))
+ ("magit" (name . "^\\*magit"))
+ ("emacs" (or (name . "^\\*scratch\\*$")
+ (name . "^\\*Messages\\*$")))
+ ("mail" (or (mode . message-mode)
+ (mode . mail-mode)
+ (mode . gnus-group-mode)
+ (mode . gnus-summary-mode)
+ (mode . gnus-article-mode)
+ (mode . notmuch-search-mode)
+ (mode . notmuch-show-mode)
+ (name . "^\\*Mail sync\\*$")
+ (name . "^\\*Gnus sync\\*$")
+ (name . "^\\.newsrc-dribble")))
+ ("help" (or (name . "^\\*Help\\*$")
+ (name . "^\\*Apropos\\*$")
+ (name . "^\\*info\\*$")
+ (name . "^\\*Completions\\*"))))))
+
+(add-hook 'ibuffer-mode-hook
+ '(lambda ()
+ (ibuffer-auto-mode 1) ; Keep buffer list up-to-date.
+ (ibuffer-switch-to-saved-filter-groups "home")))
+
+;; Don't prompt to delete unmodified buffers.
+(setq ibuffer-expert t)
+
+;; Don't show empty filter groups.
+(setq ibuffer-show-empty-filter-groups nil)
+
+(provide 'init-ibuffer)