Skip to content

Instantly share code, notes, and snippets.

@QiangF
Last active August 29, 2015 14:17
Show Gist options
  • Save QiangF/41563aa99669b2570e3c to your computer and use it in GitHub Desktop.
Save QiangF/41563aa99669b2570e3c to your computer and use it in GitHub Desktop.
;; Simplified variant. Add only current perspective group.
(with-eval-after-load "ibuffer"
(require 'ibuf-ext)
(define-ibuffer-filter persp
"Toggle current view to buffers of current perspective."
(:description "persp-mode"
:reader (persp-prompt (safe-persp-name (get-frame-persp)) t))
(find buf (safe-persp-buffers (persp-get-by-name qualifier))))
(defun persp-update-or-add-ibuffer-group ()
(let ((perspslist (list (safe-persp-name (get-frame-persp))
(cons 'persp (safe-persp-name (get-frame-persp))))))
(setq ibuffer-saved-filter-groups
(delete* "persp-mode" ibuffer-saved-filter-groups
:test 'string= :key 'car))
(add-to-list 'ibuffer-saved-filter-groups (list "persp-mode" perspslist))))
(add-hook 'ibuffer-mode-hook
#'(lambda ()
(persp-update-or-add-ibuffer-group)
(ibuffer-switch-to-saved-filter-groups "persp-mode"))))
;; Shows groups for all perspectives. But can't show same buffer in multiple groups.
(with-eval-after-load "ibuffer"
(require 'ibuf-ext)
(define-ibuffer-filter persp
"Toggle current view to buffers of current perspective."
(:description "persp-mode"
:reader (persp-prompt (safe-persp-name (get-frame-persp)) t))
(find buf (safe-persp-buffers (persp-get-by-name qualifier))))
(defun persp-update-or-add-ibuffer-group ()
(let ((perspslist (mapcar #'(lambda (pn)
(list pn (cons 'persp pn)))
(persp-names-sorted))))
(setq ibuffer-saved-filter-groups
(delete* "persp-mode" ibuffer-saved-filter-groups
:test 'string= :key 'car))
(add-to-list 'ibuffer-saved-filter-groups (cons "persp-mode" perspslist))))
(add-hook 'ibuffer-mode-hook
#'(lambda ()
(persp-update-or-add-ibuffer-group)
(ibuffer-switch-to-saved-filter-groups "persp-mode"))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment