diff --git a/contrib/ibuffer/config.el b/contrib/ibuffer/config.el index 9d6d65d94..f275f00fa 100644 --- a/contrib/ibuffer/config.el +++ b/contrib/ibuffer/config.el @@ -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.") diff --git a/contrib/ibuffer/funcs.el b/contrib/ibuffer/funcs.el index 8e02c7a86..2803c4c23 100644 --- a/contrib/ibuffer/funcs.el +++ b/contrib/ibuffer/funcs.el @@ -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"))) diff --git a/contrib/ibuffer/packages.el b/contrib/ibuffer/packages.el index cc2fd490f..f66b740c0 100644 --- a/contrib/ibuffer/packages.el +++ b/contrib/ibuffer/packages.el @@ -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))))