1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-23 07:19:15 +00:00

*** empty log message ***

This commit is contained in:
Roland McGrath 1992-08-02 03:36:38 +00:00
parent e5aaf3466b
commit c540863c29
3 changed files with 41 additions and 21 deletions

View File

@ -54,7 +54,7 @@ subexpression gives the line number in the new file. If OLD-IDX or NEW-IDX
is nil, REGEXP matches only half a section.")
;; See compilation-parse-errors-function (compile.el).
(defun diff-parse-differences (limit-search)
(defun diff-parse-differences (limit-search find-at-least)
(setq compilation-error-list nil)
(message "Parsing differences...")
@ -118,9 +118,11 @@ is nil, REGEXP matches only half a section.")
(if (nth 2 g) ;NEW-IDX
(funcall new-error diff-new-file (nth 2 g)))
(and limit-search (>= (point) limit-search)
;; The user wanted a specific diff, and we're past it.
(setq found-desired t)))
(if (or (and find-at-least (>= nfound find-at-least))
(and limit-search (>= (point) limit-search)))
;; We have found as many new errors as the user wants,
;; or the user wanted a specific diff, and we're past it.
(setq found-desired t)))
(if found-desired
(setq compilation-parsing-end (point))
;; Set to point-max, not point, so we don't perpetually

View File

@ -3,11 +3,12 @@
;;; Copyright (C) 1985, 1986, 1987, 1992 Free Software Foundation, Inc.
;; Author: Jamie Zawinski <jwz@lucid.com>
;; Roland McGrath <roland@gnu.ai.mit.edu>
;; Maintainer: Jamie Zawinski <jwz@lucid.com>
;; Created: 19 Oct 90
;; Keywords: mail
;;; ??? We must get papers for this or delete it.
;;; This file is part of GNU Emacs.
;;; GNU Emacs is free software; you can redistribute it and/or modify
@ -220,7 +221,7 @@ no aliases, which is represented by this being a table with no entries.)")
(forward-char 1)))
(goto-char (point-min))
(while (re-search-forward
"^\\(a\\(lias\\|\\)\\|g\\(roup\\)\\|source\\)[ \t]+" nil t)
"^\\(a\\(lias\\)?\\|g\\(roup\\)?\\|source\\)[ \t]+" nil t)
(beginning-of-line)
(if (looking-at "source[ \t]+\\([^ \t\n]+\\)")
(progn
@ -524,7 +525,10 @@ characters which may be a part of the name of a mail-alias.")
(defun mail-interactive-insert-alias (&optional alias)
"Prompt for and insert a mail alias."
(interactive (list (completing-read "Expand alias: " mail-aliases nil t)))
(interactive (progn
(if (not (vectorp mail-aliases)) (mail-aliases-setup))
(list (completing-read "Expand alias: " mail-aliases nil t))))
(if (not (vectorp mail-aliases)) (mail-aliases-setup))
(insert (or (and alias (symbol-value (intern-soft alias mail-aliases))) "")))
(defun abbrev-hacking-next-line (&optional arg)

View File

@ -49,7 +49,10 @@ error messages should be reparsed the next time the list of errors is wanted.")
(defvar compilation-parse-errors-function 'compilation-parse-errors
"Function to call to parse error messages from a compilation.
It takes one arg: if non-nil, don't bother parsing past that location.
It takes args LIMIT-SEARCH and FIND-AT-LEAST.
If LIMIT-SEARCH is non-nil, don't bother parsing past that location.
If FIND-AT-LEAST is non-nil, don't bother parsing after finding that
many new erros.
It should read in the source files which have errors and set
`compilation-error-list' to a list with an element for each error message
found. See that variable for more info.")
@ -450,7 +453,7 @@ Does NOT find the source line like \\[next-error]."
;; Parse any new errors in the compilation buffer,
;; or reparse from the beginning if the user has asked for that.
(defun compile-reinitialize-errors (argp &optional limit-search)
(defun compile-reinitialize-errors (argp &optional limit-search find-at-least)
(save-excursion
(set-buffer compilation-last-buffer)
;; If we are out of errors, or if user says "reparse",
@ -459,14 +462,17 @@ Does NOT find the source line like \\[next-error]."
(consp argp))
(progn (compilation-forget-errors)
(setq compilation-parsing-end 1)))
(if (and compilation-error-list (not limit-search))
(if (and compilation-error-list
(not limit-search)
(or (not find-at-least)
(> (length compilation-error-list) find-at-least)))
;; Since compilation-error-list is non-nil, it points to a specific
;; error the user wanted. So don't move it around.
nil
(switch-to-buffer compilation-last-buffer)
(set-buffer-modified-p nil)
(let ((at-start (= compilation-parsing-end 1)))
(funcall compilation-parse-errors-function limit-search)
(funcall compilation-parse-errors-function limit-search find-at-least)
;; Remember the entire list for compilation-forget-errors.
;; If this is an incremental parse, append to previous list.
(if at-start
@ -559,7 +565,7 @@ See variables `compilation-parse-errors-function' and
\`compilation-error-regexp-alist' for customization ideas."
(interactive "P")
(setq compilation-last-buffer (compilation-find-buffer))
(compile-reinitialize-errors argp)
(compile-reinitialize-errors argp nil (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.
@ -750,7 +756,7 @@ See variables `compilation-parse-errors-function' and
(setq groupings (1+ groupings))))))))
groupings))
(defun compilation-parse-errors (limit-search)
(defun compilation-parse-errors (limit-search find-at-least)
"Parse the current buffer as grep, cc or lint error messages.
See variable `compilation-parse-errors-function' for the interface it uses."
(setq compilation-error-list nil)
@ -758,7 +764,8 @@ See variable `compilation-parse-errors-function' for the interface it uses."
(let (text-buffer
regexp enter-group leave-group error-group
alist subexpr error-regexp-groups
(found-desired nil))
(found-desired nil)
(nfound 0))
;; Don't reparse messages already seen at last parse.
(goto-char compilation-parsing-end)
@ -873,18 +880,25 @@ See variable `compilation-parse-errors-function' for the interface it uses."
(setq compilation-error-list
(cons (cons (point-marker)
(cons filename linenum))
compilation-error-list)))))
compilation-error-list))))
(setq nfound (1+ nfound))
(message "Parsing error messages...%d (%d%% of buffer)"
nfound
(/ (* 100 (point)) (point-max)))
(and find-at-least (>= nfound find-at-least)
;; We have found as many new errors as the user wants.
(setq found-desired t)))
(t
(error "compilation-parse-errors: impossible regexp match!")))
(and limit-search (>= (point) limit-search)
;; The user wanted a specific error, and we're past it.
(setq found-desired t)))
(if found-desired
(setq compilation-parsing-end (point))
;; We have searched the whole buffer.
(setq compilation-parsing-end (point-max))
(message "Parsing error messages...done")))
(setq compilation-error-list (nreverse compilation-error-list)))
(setq compilation-parsing-end (if found-desired
(point)
;; We have searched the whole buffer.
(point-max))))
(setq compilation-error-list (nreverse compilation-error-list))
(message "Parsing error messages...done"))
(define-key ctl-x-map "`" 'next-error)