ibuffer layer: refactor use-package sexps and simplify variables

This commit is contained in:
syl20bnr 2015-05-12 23:34:04 -04:00
parent 80a134c7e8
commit 2da8982d06
3 changed files with 43 additions and 49 deletions

View File

@ -1,4 +1,4 @@
;;; config.el --- Auto-completion configuration File for Spacemacs
;;; config.el --- ibuffer configuration File for Spacemacs
;;
;; Copyright (c) 2012-2014 Aleksandr Guljajev
;; Copyright (c) 2014-2015 Aleksandr Guljajev & Contributors
@ -10,9 +10,7 @@
;;
;;; License: GPLv3
(defvar ibuffer-group-by-major-mode t
"If non nil ibuffer will start with buffers grouped by major mode.")
(defvar ibuffer-group-by-projectile nil
"If non nil ibuffer will start with buffers grouped by projects.
Will be ignored if ibuffer-group-by-major-mode is non nil")
(defvar ibuffer-group-buffers-by 'modes
"If non nil ibuffer will group the buffers according to the passed symbol.
The supported values are `modes' to group by major-modes and `projects' to
group by projectile projects.")

View File

@ -9,34 +9,40 @@
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
(defun ibuffer/get-major-modes-ibuff-rules-list (mm-list result-list)
(defun spacemacs//ibuffer-get-major-modes-ibuff-rules-list (mm-list result-list)
(if mm-list
(let* ((cur-mm (car mm-list))
(next-res-list-el `(,(symbol-name cur-mm) (mode . ,cur-mm))))
(ibuffer/get-major-modes-ibuff-rules-list (cdr mm-list) (cons next-res-list-el result-list)))
(spacemacs//ibuffer-get-major-modes-ibuff-rules-list
(cdr mm-list) (cons next-res-list-el result-list)))
result-list))
(defun ibuffer/get-major-modes-list ()
(defun spacemacs//ibuffer-get-major-modes-list ()
(mapcar
(function (lambda (buffer) (buffer-local-value 'major-mode (get-buffer buffer))))
(function (lambda (buffer)
(buffer-local-value 'major-mode (get-buffer buffer))))
(buffer-list (selected-frame))))
(defun ibuffer/create-buffs-group ()
(defun spacemacs//ibuffer-create-buffs-group ()
(interactive)
(let* ((ignore-modes '(Buffer-menu-mode
compilation-mode
minibuffer-inactive-mode
ibuffer-mode
magit-process-mode
messages-buffer-mode
fundamental-mode
completion-list-mode
help-mode
Info-mode))
(cur-bufs (list (cons "Home"
(ibuffer/get-major-modes-ibuff-rules-list
(cl-set-difference
(remove-duplicates (ibuffer/get-major-modes-list)) ignore-modes) '())))))
compilation-mode
minibuffer-inactive-mode
ibuffer-mode
magit-process-mode
messages-buffer-mode
fundamental-mode
completion-list-mode
help-mode
Info-mode))
(cur-bufs
(list (cons "Home"
(spacemacs//ibuffer-get-major-modes-ibuff-rules-list
(cl-set-difference
(remove-duplicates
(spacemacs//ibuffer-get-major-modes-list))
ignore-modes) '())))))
(setq ibuffer-saved-filter-groups cur-bufs)
(ibuffer-switch-to-saved-filter-groups "Home")))

View File

@ -10,44 +10,34 @@
;;
;;; License: GPLv3
;; List of all packages to install and/or initialize. Built-in packages
;; which require an initialization must be listed explicitly in the list.
(defvar ibuffer-packages
'(
cl
ibuffer
ibuffer-projectile
))
(defun init-buff-leader ()
(evilify ibuffer-mode ibuffer-mode-map)
(evil-leader/set-key
"B" 'ibuffer))
(defun ibuffer/init-ibuffer()
(use-package ibuffer
:defer t
:init
(progn
(init-buff-leader)
(if ibuffer-group-by-major-mode
(add-hook 'ibuffer-hook 'ibuffer/create-buffs-group))
)))
(evilify ibuffer-mode ibuffer-mode-map)
(evil-leader/set-key "bB" 'ibuffer)
(defun spacemacs//ibuffer-group-by-modes ()
"Group buffers by modes."
(when (eq 'modes ibuffer-group-buffers-by)
(spacemacs//ibuffer-create-buffs-group)))
(add-hook 'ibuffer-hook 'spacemacs//ibuffer-group-by-modes))))
(defun ibuffer/init-ibuffer-projectile()
(use-package ibuffer-projectile
:defer t
:init
(progn
(init-buff-leader)
(if ibuffer-group-by-projectile
(add-hook 'ibuffer-hook
(lambda ()
(ibuffer-projectile-set-filter-groups)
(unless (eq ibuffer-sorting-mode 'alphabetic)
(ibuffer-do-sort-by-alphabetic))))))))
;;
;; Often the body of an initialize function uses `use-package'
;; For more info on `use-package', see readme:
;; https://github.com/jwiegley/use-package
(defun spacemacs//ibuffer-group-by-projects ()
"Group buffers by projects."
(when (eq 'projects ibuffer-group-buffers-by)
(ibuffer-projectile-set-filter-groups)
(unless (eq ibuffer-sorting-mode 'alphabetic)
(ibuffer-do-sort-by-alphabetic))))
(add-hook 'ibuffer-hook 'spacemacs//ibuffer-group-by-projects))))