Mercurial > emacs
changeset 16518:851101d4ba84
(compile-highlight-display-limit): New variable.
(compilation-handle-exit): Parse error messages here
as specified by compile-highlight-display-limit.
(compile-reinitialize-errors): Add highlighting to error messages
once they are parsed.
(compilation-forget-errors): Remove highlighting properties here.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 05 Nov 1996 18:27:52 +0000 |
parents | 1fa5a347e70f |
children | b96e56680038 |
files | lisp/progmodes/compile.el |
diffstat | 1 files changed, 34 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/progmodes/compile.el Tue Nov 05 18:27:41 1996 +0000 +++ b/lisp/progmodes/compile.el Tue Nov 05 18:27:52 1996 +0000 @@ -38,6 +38,17 @@ (defvar compilation-window-height nil "*Number of lines in a compilation window. If nil, use Emacs default.") +(defvar compile-highlight-display-limit nil + "*Specify how many compiler errors to highlight (and parse) initially. +If this is a number N, all compiler error messages in the first N lines +are highlighted and parsed as soon as they arrive in Emacs. +If t, highlight and parse the whole compilation buffer as soon as possible. +If nil, don't highlight or parse any of the buffer until you try to +move to the error messages. + +Those which are not parsed and highlighted initially +will be parsed and highlighted as soon as you try to move to them.") + (defvar compilation-error-list nil "List of error message descriptors for visiting erring functions. Each error descriptor is a cons (or nil). Its car is a marker pointing to @@ -618,6 +629,14 @@ (force-mode-line-update) (if (and opoint (< opoint omax)) (goto-char opoint)) + ;; Automatically parse (and highlight) error messages: + (cond ((eq compile-highlight-display-limit t) + (compile-reinitialize-errors nil (point-max))) + ((numberp compile-highlight-display-limit) + (compile-reinitialize-errors nil (save-excursion + (goto-line + compile-highlight-display-limit) + (point))))) (if compilation-finish-function (funcall compilation-finish-function (current-buffer) msg)) (let ((functions compilation-finish-functions)) @@ -847,6 +866,16 @@ ;; We started in the middle of an existing list of parsed ;; errors before parsing more; restore that position. (setq compilation-error-list error-list-pos)) + ;; Highlight (the first line of) each error message when the + ;; mouse pointer moves over it: + (let ((inhibit-read-only t) + (error-list compilation-error-list)) + (while error-list + (save-excursion + (put-text-property (goto-char (car (car error-list))) + (progn (end-of-line) (point)) + 'mouse-face 'highlight)) + (setq error-list (cdr error-list)))) ))))) (defun compile-mouse-goto-error (event) @@ -1230,7 +1259,11 @@ (setq compilation-old-error-list (cdr compilation-old-error-list))) (setq compilation-error-list nil compilation-directory-stack nil - compilation-parsing-end 1)) + compilation-parsing-end 1) + ;; Remove the highlighting added by compile-reinitialize-errors: + (let ((inhibit-read-only t)) + (remove-text-properties (point-min) (point-max) '(mouse-face highlight))) + ) (defun count-regexp-groupings (regexp)