Homepage: https://github.com/muffinmad/emacs-ibuffer-project
Author: Andrii Kolomoiets
Updated:
Group ibuffer's list by project or any function
This pacakage provides ibuffer filtering and sorting functions to group buffers by function or regexp applied to `default-directory'. By default buffers are grouped by `project-current' or by `default-directory'. Buffer group and group type name is determined by function or regexp listed in `ibuffer-project-root-functions'. E.g. by adding `file-remote-p' like this: (add-to-list 'ibuffer-project-root-functions '(file-remote-p . "Remote")) remote buffers will be grouped by protocol and host. To group buffers set `ibuffer-filter-groups' to result of `ibuffer-project-generate-filter-groups' function: (add-hook 'ibuffer-hook (lambda () (setq ibuffer-filter-groups (ibuffer-project-generate-filter-groups)))) This package also provides column with filename relative to project. If there are no file in buffer then column will display `buffer-name' with `font-lock-comment-face' face. Add project-file-relative to `ibuffer-formats': (custom-set-variables '(ibuffer-formats '((mark modified read-only locked " " (name 18 18 :left :elide) " " (size 9 -1 :right) " " (mode 16 16 :left :elide) " " project-file-relative)))) It's also possible to sort buffers by that column by calling `ibuffer-do-sort-by-project-file-relative' or: (add-hook 'ibuffer-hook (lambda () (setq ibuffer-filter-groups (ibuffer-project-generate-filter-groups)) (unless (eq ibuffer-sorting-mode 'project-file-relative) (ibuffer-do-sort-by-project-file-relative)))) To avoid calculating project root each time, one can set `ibuffer-project-use-cache'. Root info per directory will be stored in the `ibuffer-project-roots-cache' variable. Command `ibuffer-project-clear-cache' allows to clear project info cache.