mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-14 09:39:42 +00:00
(next-error): Handle zero and negative prefix args.
This commit is contained in:
parent
a588e041b4
commit
ed814f55e1
@ -664,7 +664,7 @@ other kinds of prefix arguments are ignored."
|
||||
|
||||
(next-error 1))
|
||||
|
||||
(defun compilation-buffer-p (buffer)
|
||||
(defsubst compilation-buffer-p (buffer)
|
||||
(assq 'compilation-error-list (buffer-local-variables buffer)))
|
||||
|
||||
;; Return a compilation buffer.
|
||||
@ -724,7 +724,9 @@ See variables `compilation-parse-errors-function' and
|
||||
;; We want to pass a number here only if
|
||||
;; we got a numeric prefix arg, not just C-u.
|
||||
(and (not (consp argp))
|
||||
(1- (prefix-numeric-value argp))))
|
||||
(if (< (prefix-numeric-value argp) 1)
|
||||
0
|
||||
(1- (prefix-numeric-value argp)))))
|
||||
;; Make ARGP nil if the prefix arg was just C-u,
|
||||
;; since that means to reparse the errors, which the
|
||||
;; compile-reinitialize-errors call just did.
|
||||
@ -735,8 +737,21 @@ See variables `compilation-parse-errors-function' and
|
||||
(save-excursion
|
||||
(set-buffer compilation-last-buffer)
|
||||
;; compilation-error-list points to the "current" error.
|
||||
(setq next-errors (nthcdr (1- (prefix-numeric-value argp))
|
||||
compilation-error-list)
|
||||
(setq next-errors
|
||||
(if (> (prefix-numeric-value argp) 0)
|
||||
(nthcdr (1- (prefix-numeric-value argp))
|
||||
compilation-error-list)
|
||||
;; Zero or negative arg; we need to move back in the list.
|
||||
(let ((n (1- (prefix-numeric-value argp)))
|
||||
(i 0)
|
||||
(e compilation-old-error-list))
|
||||
;; See how many cdrs away the current error is from the start.
|
||||
(while (not (eq e compilation-error-list))
|
||||
(setq i (1+ i)
|
||||
e (cdr e)))
|
||||
(if (> (- n) i)
|
||||
(error "Moved back past first error")
|
||||
(nthcdr (+ i n) compilation-old-error-list))))
|
||||
next-error (car next-errors))
|
||||
(while
|
||||
(progn
|
||||
|
Loading…
Reference in New Issue
Block a user