summaryrefslogtreecommitdiff
path: root/init/ibuffer
diff options
context:
space:
mode:
Diffstat (limited to 'init/ibuffer')
-rw-r--r--init/ibuffer/init-ibuffer-filter-groups.el10
-rw-r--r--init/ibuffer/init-ibuffer-human-readable-size.el16
-rw-r--r--init/ibuffer/init-ibuffer-never-show.el13
-rw-r--r--init/ibuffer/init-ibuffer.el22
4 files changed, 61 insertions, 0 deletions
diff --git a/init/ibuffer/init-ibuffer-filter-groups.el b/init/ibuffer/init-ibuffer-filter-groups.el
new file mode 100644
index 0000000..fbdd8ff
--- /dev/null
+++ b/init/ibuffer/init-ibuffer-filter-groups.el
@@ -0,0 +1,10 @@
+(setq ibuffer-saved-filter-groups
+ '(("default"
+ ("Misc" (and (name . "^\\*.*$")
+ (not (mode . Man-mode))))
+ ("Dired" (mode . dired-mode))
+ ("Man" (mode . Man-mode)))))
+
+(add-hook 'ibuffer-mode-hook (lambda () (ibuffer-switch-to-saved-filter-groups "default")))
+
+(provide 'init-ibuffer-filter-groups)
diff --git a/init/ibuffer/init-ibuffer-human-readable-size.el b/init/ibuffer/init-ibuffer-human-readable-size.el
new file mode 100644
index 0000000..6d62521
--- /dev/null
+++ b/init/ibuffer/init-ibuffer-human-readable-size.el
@@ -0,0 +1,16 @@
+(define-ibuffer-column size-human-readable
+ (:name "Size" :inline t)
+ (let ((size (buffer-size)))
+ (cond
+ ((> size (expt 1000 4))
+ (error "buffer is over 1TB large!"))
+ ((> size (expt 1000 3))
+ (format "%sG" (/ size (expt 1000 3))))
+ ((> size (expt 1000 2))
+ (format "%sM" (/ size (expt 1000 2))))
+ ((> size 1000)
+ (format "%sK" (/ size 1000)))
+ (t
+ (format "%sB" size)))))
+
+(provide 'init-ibuffer-human-readable-size)
diff --git a/init/ibuffer/init-ibuffer-never-show.el b/init/ibuffer/init-ibuffer-never-show.el
new file mode 100644
index 0000000..0cf8db2
--- /dev/null
+++ b/init/ibuffer/init-ibuffer-never-show.el
@@ -0,0 +1,13 @@
+(defvar init-ibuffer-never-show '("^\\*Messages\\*$"
+ "^\\*Help\\*$"
+ "^\\*Completions\\*$"
+ "^\\*Backtrace\\*$"
+ "^\\*Async-native-compile-log\\*$"
+ "^\\*Native-compile-Log\\*$"
+ "^\\*Warnings\\*$"))
+
+(mapc (lambda (p)
+ (add-to-list 'ibuffer-never-show-predicates p))
+ init-ibuffer-never-show)
+
+(provide 'init-ibuffer-never-show)
diff --git a/init/ibuffer/init-ibuffer.el b/init/ibuffer/init-ibuffer.el
new file mode 100644
index 0000000..209328c
--- /dev/null
+++ b/init/ibuffer/init-ibuffer.el
@@ -0,0 +1,22 @@
+(require 'ibuffer)
+(require 'ibuf-ext)
+(require 'init-ibuffer-human-readable-size)
+(require 'init-ibuffer-never-show)
+(require 'init-ibuffer-filter-groups)
+
+(setq ibuffer-display-summary nil
+ ibuffer-expert t)
+
+(setq ibuffer-formats
+ '((mark modified read-only locked " "
+ (name 32 32 :left :elide)
+ " "
+ (size-human-readable 5 5 :right)
+ " "
+ (mode 16 16 :left :elide)
+ " " filename-and-process)
+ (mark " "
+ (name 16 -1)
+ " " filename)))
+
+(provide 'init-ibuffer)