;;; funcs.el --- ibuffer Layer functions File for Spacemacs ;; ;; Copyright (c) 2012-2022 Sylvain Benner & Contributors ;; ;; Author: Aleksandr Guljajev ;; URL: https://github.com/syl20bnr/spacemacs ;; ;; This file is not part of GNU Emacs. ;; ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . (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)))) (spacemacs//ibuffer-get-major-modes-ibuff-rules-list (cdr mm-list) (cons next-res-list-el result-list))) result-list)) (defun spacemacs//ibuffer-get-major-modes-list () (mapcar (function (lambda (buffer) (buffer-local-value 'major-mode (get-buffer buffer)))) (buffer-list (selected-frame)))) (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" (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")))