doomemacs/modules/emacs/ibuffer/config.el
Henrik Lissner 6e0a93233d
Add emacs/ibuffer module
And bind 'SPC b i' to ibuffer
2019-10-20 15:14:26 -04:00

69 lines
2.6 KiB
EmacsLisp

;;; emacs/ibuffer/config.el -*- lexical-binding: t; -*-
(after! ibuffer
(set-popup-rule! "^\\*Ibuffer\\*$" :ignore t)
(setq ibuffer-show-empty-filter-groups nil
ibuffer-filter-group-name-face '(:inherit (success bold))
ibuffer-formats
`((mark modified read-only ,(if EMACS26+ 'locked "")
,@(if (featurep! +icons)
`(;; Here you may adjust by replacing :right with :center
;; or :left According to taste, if you want the icon
;; further from the name
" " (icon 2 2 :left :elide)
,(propertize " " 'display `(space :align-to 8)))
'(" "))
(name 18 18 :left :elide)
" " (size 9 -1 :right)
" " (mode 16 16 :left :elide)
,@(when (require 'ibuffer-vc nil t)
'(" " (vc-status 12 :left)))
" " filename-and-process)
(mark " " (name 16 -1) " " filename)))
;; Display buffer icons on GUI
(define-ibuffer-column icon (:name " ")
(let ((icon (if (and (buffer-file-name)
(all-the-icons-auto-mode-match?))
(all-the-icons-icon-for-file (file-name-nondirectory (buffer-file-name)) :v-adjust -0.05)
(all-the-icons-icon-for-mode major-mode :v-adjust -0.05))))
(if (symbolp icon)
(setq icon (all-the-icons-faicon "file-o" :face 'all-the-icons-dsilver :height 0.8 :v-adjust 0.0))
icon)))
;; Redefine size column to display human readable size
(define-ibuffer-column size
(:name "Size"
:inline t
:header-mouse-map ibuffer-size-header-map)
(file-size-human-readable (buffer-size)))
(when (featurep! :completion ivy)
(defadvice! +ibuffer-use-counsel-maybe-a (file &optional wildcards)
"Use `counsel-find-file' instead of `find-file'."
:override #'ibuffer-find-file
(interactive)
(counsel-find-file
(let ((buf (ibuffer-current-buffer)))
(if (buffer-live-p buf)
(with-current-buffer buf
default-directory)
default-directory)))))
(map! :map ibuffer-mode-map :n "q" #'kill-current-buffer))
(use-package! ibuffer-projectile
;; Group ibuffer's list by project root
:hook (ibuffer . ibuffer-projectile-set-filter-groups)
:config
(setq ibuffer-projectile-prefix
(if (featurep! +icons)
(concat (all-the-icons-octicon
"file-directory"
:face ibuffer-filter-group-name-face
:v-adjust -0.05)
" ")
"Project: ")))