diff options
author | Dmitry Gutov <dgutov@yandex.ru> | 2015-11-03 02:36:50 +0200 |
---|---|---|
committer | Dmitry Gutov <dgutov@yandex.ru> | 2015-11-06 15:37:28 +0200 |
commit | 55ad7fce86b9a12f222587978ec0892d23273387 (patch) | |
tree | d5ecb1dfee2b4de248778231b058d95d6977a20d /lisp | |
parent | 977697203f7f063b2f26a9f25bff933e6c939765 (diff) | |
download | emacs-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.el | 47 |
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) |