Integrate buffer-ring and frog-jump-buffer with perspective.el
This commit is contained in:
parent
487ed282e7
commit
955af18b32
|
@ -102,29 +102,66 @@
|
||||||
(let ((ring (buffer-ring-ring-ring bfr-ring)))
|
(let ((ring (buffer-ring-ring-ring bfr-ring)))
|
||||||
(unless (dynaring-empty-p ring)
|
(unless (dynaring-empty-p ring)
|
||||||
(dynaring-contains-p ring (buffer-ring--parse-buffer buffer)))))))
|
(dynaring-contains-p ring (buffer-ring--parse-buffer buffer)))))))
|
||||||
(defun frog-jump-buffer-filter-buffer-ring-or-same-mode (buffer)
|
|
||||||
|
(defun frog-jump-buffer-filter-same-mode-in-persp (buffer)
|
||||||
|
"Check if a BUFFER is the same as the current major mode and perspective."
|
||||||
|
(let ((current-mode major-mode))
|
||||||
|
(and
|
||||||
|
(with-current-buffer buffer
|
||||||
|
(eq major-mode current-mode))
|
||||||
|
(persp-is-current-buffer buffer))))
|
||||||
|
|
||||||
|
(defun frog-jump-buffer-filter-persp-buffer-ring-or-same-mode (buffer)
|
||||||
|
"Check if a BUFFER is in the current buffer-ring, else same major mode and perspective."
|
||||||
(let* ((bfr-ring (buffer-ring-current-ring))
|
(let* ((bfr-ring (buffer-ring-current-ring))
|
||||||
(ring (buffer-ring-ring-ring bfr-ring)))
|
(ring (buffer-ring-ring-ring bfr-ring)))
|
||||||
(if (dynaring-empty-p ring)
|
(if (dynaring-empty-p ring)
|
||||||
(frog-jump-buffer-filter-same-mode buffer)
|
(frog-jump-buffer-filter-same-mode-in-persp buffer)
|
||||||
(frog-jump-buffer-filter-buffer-ring buffer))))
|
(frog-jump-buffer-filter-buffer-ring buffer))))
|
||||||
;;(setq frog-jump-buffer-default-filter 'frog-jump-buffer-filter-same-mode)
|
|
||||||
(setq frog-jump-buffer-default-filter 'frog-jump-buffer-filter-buffer-ring-or-same-mode)
|
|
||||||
(setq frog-jump-buffer-filter-actions
|
|
||||||
'(("R" "[Ring]" frog-jump-buffer-filter-buffer-ring)))
|
|
||||||
(set-face-background 'frog-menu-posframe-background-face "black")
|
(set-face-background 'frog-menu-posframe-background-face "black")
|
||||||
(setq frog-jump-buffer-include-current-buffer nil)
|
|
||||||
|
(setq frog-jump-buffer-include-current-buffer nil
|
||||||
|
frog-jump-buffer-default-filter 'frog-jump-buffer-filter-persp-buffer-ring-or-same-mode
|
||||||
|
frog-jump-buffer-use-default-filter-actions t
|
||||||
|
frog-jump-buffer-filter-actions '((("A" "[all]" frog-jump-buffer-filter-all)
|
||||||
|
("M" "[mode]" frog-jump-buffer-filter-same-mode-in-persp)
|
||||||
|
("F" "[files]" frog-jump-buffer-filter-file-buffers)
|
||||||
|
("R" "[recentf]" frog-jump-buffer-filter-recentf)
|
||||||
|
("B" "[Ring]" frog-jump-buffer-filter-buffer-ring)
|
||||||
|
("P" "[project]" frog-jump-buffer-filter-same-project)
|
||||||
|
("S" "[similar]" frog-jump-buffer-filter-similar-name))))
|
||||||
:bind
|
:bind
|
||||||
("C-," . frog-jump-buffer)
|
("C-," . frog-jump-buffer)
|
||||||
("C-x 4 C-," . frog-jump-buffer-other-window))
|
("C-x 4 C-," . frog-jump-buffer-other-window))
|
||||||
|
|
||||||
;; TODO perspective integration
|
|
||||||
(use-package buffer-ring
|
(use-package buffer-ring
|
||||||
:diminish
|
:diminish
|
||||||
:hook (emacs-startup . buffer-ring-mode)
|
:config
|
||||||
|
(defun persp-buffer-ring-create-and-switch ()
|
||||||
|
"Create and switch to the buffer-ring for the current perspective."
|
||||||
|
;; Creating a ring automatically switches to it
|
||||||
|
(buffer-ring-torus--create-ring (persp-current-name)))
|
||||||
|
|
||||||
|
(defun persp-buffer-ring-switch ()
|
||||||
|
"Switch to the buffer-ring for the current perspective."
|
||||||
|
(buffer-ring-torus-switch-to-ring (persp-current-name)))
|
||||||
|
|
||||||
|
;; This is mostly just a convenience, to stop buffer-ring from prompting for the ring to use
|
||||||
|
(defun persp-buffer-ring-add-buffer ()
|
||||||
|
"Add the current buffer to ring for the current perspective."
|
||||||
|
(interactive)
|
||||||
|
(let ((inhibit-message t))
|
||||||
|
(buffer-ring-add (persp-current-name))))
|
||||||
|
:hook
|
||||||
|
(emacs-startup . buffer-ring-mode)
|
||||||
|
(persp-created . persp-buffer-ring-create-and-switch)
|
||||||
|
(persp-switch . persp-buffer-ring-switch)
|
||||||
:bind
|
:bind
|
||||||
("C-<" . buffer-ring-prev-buffer)
|
(:map buffer-ring-mode-map
|
||||||
("C->" . buffer-ring-next-buffer))
|
("C-c C-b a" . persp-buffer-ring-add-buffer)
|
||||||
|
("C-<" . buffer-ring-prev-buffer)
|
||||||
|
("C->" . buffer-ring-next-buffer)))
|
||||||
|
|
||||||
(use-package cbm
|
(use-package cbm
|
||||||
:config
|
:config
|
||||||
|
|
Loading…
Reference in New Issue