summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorDmitry Gutov <dgutov@yandex.ru>2015-11-03 02:36:50 +0200
committerDmitry Gutov <dgutov@yandex.ru>2015-11-06 15:37:28 +0200
commit55ad7fce86b9a12f222587978ec0892d23273387 (patch)
treed5ecb1dfee2b4de248778231b058d95d6977a20d /lisp
parent977697203f7f063b2f26a9f25bff933e6c939765 (diff)
downloademacs-55ad7fce86b9a12f222587978ec0892d23273387.tar.gz
Abolish temporary buffer management for xref
* lisp/progmodes/xref.el (xref--temporary-buffers) (xref--current) (xref--inhibit-mark-current) (xref--mark-selected): Remove. Remove all references. (xref--show-xrefs): Do not construct the list of the temporary buffers, nor pass it along.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/progmodes/xref.el47
1 files changed, 6 insertions, 41 deletions
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 360d1baf403..3aa85cb900d 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -414,20 +414,6 @@ WINDOW controls how the buffer is displayed:
(defvar-local xref--display-history nil
"List of pairs (BUFFER . WINDOW), for temporarily displayed buffers.")
-(defvar-local xref--temporary-buffers nil
- "List of buffers created by xref code.")
-
-(defvar-local xref--current nil
- "Non-nil if this buffer was once current, except while displaying xrefs.
-Used for temporary buffers.")
-
-(defvar xref--inhibit-mark-current nil)
-
-(defun xref--mark-selected ()
- (unless xref--inhibit-mark-current
- (setq xref--current t))
- (remove-hook 'buffer-list-update-hook #'xref--mark-selected t))
-
(defun xref--save-to-history (buf win)
(let ((restore (window-parameter win 'quit-restore)))
;; Save the new entry if the window displayed another buffer
@@ -449,15 +435,9 @@ Used for temporary buffers.")
(defun xref--show-location (location)
(condition-case err
- (let ((bl (buffer-list))
- (xref--inhibit-mark-current t)
- (marker (xref-location-marker location)))
- (let ((buf (marker-buffer marker)))
- (unless (memq buf bl)
- ;; Newly created.
- (add-hook 'buffer-list-update-hook #'xref--mark-selected nil t)
- (push buf xref--temporary-buffers))
- (xref--display-position marker t buf)))
+ (let* ((marker (xref-location-marker location))
+ (buf (marker-buffer marker)))
+ (xref--display-position marker t buf))
(user-error (message (error-message-string err)))))
(defun xref-show-location-at-point ()
@@ -594,8 +574,7 @@ Used for temporary buffers.")
(defun xref-quit (&optional kill)
"Bury temporarily displayed buffers, then quit the current window.
-If KILL is non-nil, kill all buffers that were created in the
-process of showing xrefs, and also kill the current buffer.
+If KILL is non-nil, also kill the current buffer.
The buffers that the user has otherwise interacted with in the
meantime are preserved."
@@ -607,13 +586,6 @@ meantime are preserved."
(when (and (window-live-p win)
(eq buf (window-buffer win)))
(quit-window nil win)))
- (when kill
- (let ((xref--inhibit-mark-current t)
- kill-buffer-query-functions)
- (dolist (buf xref--temporary-buffers)
- (unless (buffer-local-value 'xref--current buf)
- (kill-buffer buf)))
- (setq xref--temporary-buffers nil)))
(quit-window kill window)))
(defconst xref-buffer-name "*xref*"
@@ -687,10 +659,6 @@ Return an alist of the form ((FILENAME . (XREF ...)) ...)."
(pop-to-buffer (current-buffer))
(goto-char (point-min))
(setq xref--window (assoc-default 'window alist))
- (setq xref--temporary-buffers (assoc-default 'temporary-buffers alist))
- (dolist (buf xref--temporary-buffers)
- (with-current-buffer buf
- (add-hook 'buffer-list-update-hook #'xref--mark-selected nil t)))
(current-buffer)))))
@@ -708,9 +676,7 @@ Return an alist of the form ((FILENAME . (XREF ...)) ...)."
(defvar xref--read-pattern-history nil)
(defun xref--show-xrefs (input kind arg window)
- (let* ((bl (buffer-list))
- (xrefs (funcall xref-find-function kind arg))
- (tb (cl-set-difference (buffer-list) bl)))
+ (let* ((xrefs (funcall xref-find-function kind arg)))
(cond
((null xrefs)
(user-error "No %s found for: %s" (symbol-name kind) input))
@@ -720,8 +686,7 @@ Return an alist of the form ((FILENAME . (XREF ...)) ...)."
(t
(xref-push-marker-stack)
(funcall xref-show-xrefs-function xrefs
- `((window . ,window)
- (temporary-buffers . ,tb)))))))
+ `((window . ,window)))))))
(defun xref--prompt-p (command)
(or (eq xref-prompt-for-identifier t)