58 lines
2.3 KiB
EmacsLisp
58 lines
2.3 KiB
EmacsLisp
;;; funcs.el --- ibuffer Layer functions File for Spacemacs
|
|
;;
|
|
;; Copyright (c) 2012-2021 Sylvain Benner & Contributors
|
|
;;
|
|
;; Author: Aleksandr Guljajev <gulj.aleks@gmail.com>
|
|
;; 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 <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
(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")))
|