aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiap Tran <txgvnn@gmail.com>2021-06-07 20:36:18 +0700
committerGiap Tran <txgvnn@gmail.com>2021-06-07 20:40:24 +0700
commit07512c77bbc1057d1b51a8cb3ce0359f575d8166 (patch)
treefbd01f6be0d3f66e4cb14904a8077be0d53e86b3
parentb37c6756700a167742c8ab06fa5a850d9d94f4bd (diff)
Isolate xref--marker-ring between perspectives
-rw-r--r--README.md5
-rw-r--r--perspective.el11
2 files changed, 15 insertions, 1 deletions
diff --git a/README.md b/README.md
index b5e93fa..9aea088 100644
--- a/README.md
+++ b/README.md
@@ -208,7 +208,10 @@ 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
diff --git a/perspective.el b/perspective.el
index 680f341..079095e 100644
--- a/perspective.el
+++ b/perspective.el
@@ -1694,6 +1694,17 @@ restored."
(pop-to-buffer ibuf)
(ibuffer-update nil t)))))
+ ;;; --- xref code
+
+(defvar persp-xref--marker-ring (make-hash-table :test 'equal))
+;;;###autoload
+(defun persp-set-xref--marker-ring ()
+ "Set xref--marker-ring per persp."
+ (let ((persp-curr-name (persp-name (persp-curr))))
+ (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))))
;;; --- done