From a2849f92728e38b2525d1395382b3ac8dc8e42df Mon Sep 17 00:00:00 2001 From: Constantine Vetoshev Date: Wed, 9 Jun 2021 06:44:42 -0700 Subject: Move xref integration documentation and rename variables. --- README.md | 14 ++++++++++---- perspective.el | 15 ++++++++++----- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 9aea088..de39c52 100644 --- a/README.md +++ b/README.md @@ -208,10 +208,7 @@ If you want to group buffers by persp-name in ibuffer buffer, use (unless (eq ibuffer-sorting-mode 'alphabetic) (ibuffer-do-sort-by-alphabetic)))) ``` -**Xref**: You can isolate `xref--marker-ring` between perspectives by: -``` -(add-hook 'persp-switch-hook #'persp-set-xref--marker-ring) -``` + **Helm**: Perspective ships with buffer-listing advice for Helm, so Helm's buffer listing code should be automatically Perspective-aware when `persp-mode` is enabled. (Older versions of Helm relied on the machinery of `ido-mode` for @@ -266,6 +263,15 @@ to use the replacements: ``` +### xref integration + +Users of the the built-in Emacs [xref](https://www.gnu.org/software/emacs/manual/html_node/emacs/Xref.html) cross-referencing system can isolate the xref marker ring (`xref--marker-ring`) between perspectives with this hook: + +``` +(add-hook 'persp-switch-hook #'persp-set-xref-marker-ring) +``` + + ## Saving Sessions to Disk A pair of functions, `persp-state-save` and `persp-state-load`, implement diff --git a/perspective.el b/perspective.el index 079095e..1172588 100644 --- a/perspective.el +++ b/perspective.el @@ -1694,17 +1694,22 @@ restored." (pop-to-buffer ibuf) (ibuffer-update nil t))))) + ;;; --- xref code -(defvar persp-xref--marker-ring (make-hash-table :test 'equal)) +(defvar persp--xref-marker-ring (make-hash-table :test 'equal)) + ;;;###autoload -(defun persp-set-xref--marker-ring () +(defun persp-set-xref-marker-ring () "Set xref--marker-ring per persp." + (defvar xref-marker-ring-length) + (defvar xref--marker-ring) (let ((persp-curr-name (persp-name (persp-curr)))) - (unless (gethash persp-curr-name persp-xref--marker-ring) + (unless (gethash persp-curr-name persp--xref-marker-ring) (puthash persp-curr-name (make-ring xref-marker-ring-length) - persp-xref--marker-ring)) - (setq xref--marker-ring (gethash persp-curr-name persp-xref--marker-ring)))) + persp--xref-marker-ring)) + (setq xref--marker-ring (gethash persp-curr-name persp--xref-marker-ring)))) + ;;; --- done -- cgit v1.0