[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master fa175b4: Set next-error-* in xref--xref-buffer-mode
From: |
Dmitry Gutov |
Subject: |
[Emacs-diffs] master fa175b4: Set next-error-* in xref--xref-buffer-mode |
Date: |
Thu, 30 Apr 2015 00:42:10 +0000 |
branch: master
commit fa175b449597256dc4cb0411ce1978aa2016c170
Author: Helmut Eller <address@hidden>
Commit: Dmitry Gutov <address@hidden>
Set next-error-* in xref--xref-buffer-mode
* xref.el (xref--xref-buffer-mode): Set `next-error-function' and
`next-error-last-buffer'.
(xref--next-error-function): New function.
(http://lists.gnu.org/archive/html/emacs-devel/2015-04/msg01311.html)
---
lisp/progmodes/xref.el | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 9f10686..fc27c26 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -444,7 +444,22 @@ Used for temporary buffers.")
(define-derived-mode xref--xref-buffer-mode special-mode "XREF"
"Mode for displaying cross-references."
- (setq buffer-read-only t))
+ (setq buffer-read-only t)
+ (setq next-error-function #'xref--next-error-function)
+ (setq next-error-last-buffer (current-buffer)))
+
+(defun xref--next-error-function (n reset?)
+ (when reset?
+ (goto-char (point-min)))
+ (let ((backward (< n 0))
+ (n (abs n))
+ (loc nil))
+ (dotimes (_ n)
+ (setq loc (xref--search-property 'xref-location backward)))
+ (cond (loc
+ (xref--pop-to-location loc))
+ (t
+ (error "No %s xref" (if backward "previous" "next"))))))
(defun xref-quit (&optional kill)
"Bury temporarily displayed buffers, then quit the current window.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master fa175b4: Set next-error-* in xref--xref-buffer-mode,
Dmitry Gutov <=