#+TITLE: IBuffer layer

#+TAGS: emacs|layer

* Table of Contents                     :TOC_5_gh:noexport:
- [[#description][Description]]
  - [[#features][Features:]]
- [[#install][Install]]
  - [[#grouping-buffers][Grouping buffers]]
- [[#key-bindings][Key bindings]]
  - [[#global][Global]]
  - [[#ibuffer][IBuffer]]

* Description
This layer configures Emacs IBuffer for Spacemacs.

** Features:
- Grouping of buffers by major-modes
- Grouping of buffers by projects

* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =ibuffer= to the existing =dotspacemacs-configuration-layers= list in this
file.

** Grouping buffers
Buffers can be grouped by major-modes or projectile projects.
By default buffers are grouped by major-modes.

To change how buffers are grouped set the layer variable
=ibuffer-group-buffers-by= to one of the following supported values:
- =modes= to group buffers by major-modes (default)
- =projects= to group buffers by projectile projects
- =nil= to not group buffers

Example:

#+BEGIN_SRC emacs-lisp
  (setq-default dotspacemacs-configuration-layers '(
    (ibuffer :variables ibuffer-group-buffers-by 'projects)))
#+END_SRC

* Key bindings
** Global

| Key binding | Description                |
|-------------+----------------------------|
| ~SPC b I~   | open IBuffer menu (global) |

*Note:* The layer will also replace regular ~C-x C-b~ with =ibuffer=.

** IBuffer

| Key binding                   | Description                   |
|-------------------------------+-------------------------------|
| ~g r~                         | update IBuffer ("refresh")    |
| ~g j~ / ~]~ / ~TAB~ / ~M-n~   | move to next filter group     |
| ~g k~ / ~[~ / ~S-TAB~ / ~M-p~ | move to previous filter group |
