# HG changeset patch # User Gerd Moellmann # Date 1002805038 0 # Node ID 3bea53c3ecea39e3b22132b927a2f67d05e3a534 # Parent e2bfb4d00b0470e6ec67cf2cd544f41489592241 (byte-compile-display-log-head-p): New function extracted from byte-compile-log-1. (byte-compile-log-1): Change output to be more in line with the output of other GNU tools. (byte-compile-warn): Emit `warning' instead of `**' for warnings. (byte-compile-report-error): Downcase error message. Use `error' instead of `!!' for error messages. (byte-compile-print-syms): Treat non-interactive case specially. (displaying-byte-compile-warnings): Use backquote. (byte-compile-from-buffer): Bind byte-compile-last-line. (batch-byte-compile): Remove `Done' message. diff -r e2bfb4d00b04 -r 3bea53c3ecea lisp/emacs-lisp/bytecomp.el --- a/lisp/emacs-lisp/bytecomp.el Thu Oct 11 09:04:09 2001 +0000 +++ b/lisp/emacs-lisp/bytecomp.el Thu Oct 11 12:57:18 2001 +0000 @@ -10,7 +10,7 @@ ;;; This version incorporates changes up to version 2.10 of the ;;; Zawinski-Furuseth compiler. -(defconst byte-compile-version "$Revision: 2.86 $") +(defconst byte-compile-version "$Revision: 2.87 $") ;; This file is part of GNU Emacs. @@ -813,59 +813,48 @@ (defconst byte-compile-last-warned-form nil) (defconst byte-compile-last-logged-file nil) +(defvar byte-compile-last-line nil + "Last known line number in the input.") + + +(defun byte-compile-display-log-head-p () + (and (not (eq byte-compile-current-form :end)) + (or (and byte-compile-current-file + (not (equal byte-compile-current-file + byte-compile-last-logged-file))) + (and byte-compile-last-warned-form + (not (eq byte-compile-current-form + byte-compile-last-warned-form)))))) + + ;; Log a message STRING in *Compile-Log*. ;; Also log the current function and file if not already done. (defun byte-compile-log-1 (string &optional fill) - (cond (noninteractive - (if (or (and byte-compile-current-file - (not (equal byte-compile-current-file - byte-compile-last-logged-file))) - (and byte-compile-last-warned-form - (not (eq byte-compile-current-form - byte-compile-last-warned-form)))) - (message "While compiling %s%s:" - (or byte-compile-current-form "toplevel forms") - (if byte-compile-current-file - (if (stringp byte-compile-current-file) - (concat " in file " byte-compile-current-file) - (concat " in buffer " - (buffer-name byte-compile-current-file))) - ""))) - (message " %s" string)) - (t - (save-excursion - (set-buffer (get-buffer-create "*Compile-Log*")) - (goto-char (point-max)) - (cond ((or (and byte-compile-current-file - (not (equal byte-compile-current-file - byte-compile-last-logged-file))) - (and byte-compile-last-warned-form - (not (eq byte-compile-current-form - byte-compile-last-warned-form)))) - ;; This is redundant, since it is given at the start of the - ;; file, and the extra clutter gets in the way -- rms. - ;; (if (and byte-compile-current-file - ;; (not (equal byte-compile-current-file - ;; byte-compile-last-logged-file))) - ;; (insert "\n\^L\n" (current-time-string) "\n")) - (insert "\nWhile compiling " - (if byte-compile-current-form - (format "%s" byte-compile-current-form) - "toplevel forms")) - ;; This is redundant, since it is given at the start of the file, - ;; and the extra clutter gets in the way -- rms. - ;; (if byte-compile-current-file - ;; (if (stringp byte-compile-current-file) - ;; (insert " in file " byte-compile-current-file) - ;; (insert " in buffer " - ;; (buffer-name byte-compile-current-file)))) - (insert ":\n"))) - (insert " " string "\n") - (if (and fill (not (string-match "\n" string))) - (let ((fill-prefix " ") - (fill-column 78)) - (fill-paragraph nil))) - ))) + (let* ((file (cond ((stringp byte-compile-current-file) + (format "%s:" byte-compile-current-file)) + ((bufferp byte-compile-current-file) + (format "Buffer %s:" + (buffer-name byte-compile-current-file))) + (t ""))) + (pos (if (and byte-compile-current-file + (integerp byte-compile-last-line)) + (format "%d:" byte-compile-last-line) + "")) + (form (or byte-compile-current-form "toplevel form"))) + (cond (noninteractive + (when (byte-compile-display-log-head-p) + (message "%s In %s" file form)) + (message "%s%s %s" file pos string)) + (t + (save-excursion + (set-buffer (get-buffer-create "*Compile-Log*")) + (goto-char (point-max)) + (when (byte-compile-display-log-head-p) + (insert (format "\nIn %s" form))) + (insert (format "\n%s%s\n%s\n" file pos string)) + (when (and fill (not (string-match "\n" string))) + (let ((fill-prefix " ") (fill-column 78)) + (fill-paragraph nil))))))) (setq byte-compile-last-logged-file byte-compile-current-file byte-compile-last-warned-form byte-compile-current-form)) @@ -889,7 +878,7 @@ (setq format (apply 'format format args)) (if byte-compile-error-on-warn (error "%s" format) ; byte-compile-file catches and logs it - (byte-compile-log-1 (concat "** " format) t) + (byte-compile-log-1 (concat "warning: " format) t) ;; It is useless to flash warnings too fast to be read. ;; Besides, they will all be shown at the end. ;; (or noninteractive ; already written on stdout. @@ -901,9 +890,9 @@ (defun byte-compile-report-error (error-info) (setq byte-compiler-error-flag t) (byte-compile-log-1 - (concat "!! " + (concat "error: " (format (if (cdr error-info) "%s (%s)" "%s") - (get (car error-info) 'error-message) + (downcase (get (car error-info) 'error-message)) (prin1-to-string (cdr error-info)))))) ;;; Used by make-obsolete. @@ -1127,28 +1116,32 @@ ))) (defun byte-compile-print-syms (str1 strn syms) - (cond - ((cdr syms) - (let* ((str strn) - (L (length str)) - s) - (while syms - (setq s (symbol-name (pop syms)) - L (+ L (length s) 2)) - (if (< L (1- fill-column)) - (setq str (concat str " " s (and syms ","))) - (setq str (concat str "\n " s (and syms ",")) - L (+ (length s) 4)))) - (byte-compile-warn "%s" str))) - (syms - (byte-compile-warn str1 (car syms))))) + (cond ((and (cdr syms) (not noninteractive)) + (let* ((str strn) + (L (length str)) + s) + (while syms + (setq s (symbol-name (pop syms)) + L (+ L (length s) 2)) + (if (< L (1- fill-column)) + (setq str (concat str " " s (and syms ","))) + (setq str (concat str "\n " s (and syms ",")) + L (+ (length s) 4)))) + (byte-compile-warn "%s" str))) + ((cdr syms) + (byte-compile-warn "%s %s" + strn + (mapconcat #'symbol-name syms ", "))) + + (syms + (byte-compile-warn str1 (car syms))))) ;; If we have compiled any calls to functions which are not known to be ;; defined, issue a warning enumerating them. ;; `unresolved' in the list `byte-compile-warnings' disables this. (defun byte-compile-warn-about-unresolved-functions () (when (memq 'unresolved byte-compile-warnings) - (let ((byte-compile-current-form "the end of the data") + (let ((byte-compile-current-form :end) (noruntime nil) (unresolved nil)) ;; Separate the functions that will not be available at runtime @@ -1158,13 +1151,13 @@ (if (fboundp f) (push f noruntime) (push f unresolved))) ;; Complain about the no-run-time functions (byte-compile-print-syms - "The function `%s' might not be defined at runtime." - "The following functions might not be defined at runtime:" + "the function `%s' might not be defined at runtime." + "the following functions might not be defined at runtime:" noruntime) ;; Complain about the unresolved functions (byte-compile-print-syms - "The function `%s' is not known to be defined." - "The following functions are not known to be defined:" + "the function `%s' is not known to be defined." + "the following functions are not known to be defined:" unresolved))) nil) @@ -1213,34 +1206,32 @@ (defvar byte-compile-warnings-point-max nil) (defmacro displaying-byte-compile-warnings (&rest body) - (list 'let - '((byte-compile-warnings-point-max byte-compile-warnings-point-max)) + `(let ((byte-compile-warnings-point-max byte-compile-warnings-point-max)) ;; Log the file name. - '(byte-compile-log-file) + (byte-compile-log-file) ;; Record how much is logged now. ;; We will display the log buffer if anything more is logged ;; before the end of BODY. - '(or byte-compile-warnings-point-max - (save-excursion - (set-buffer (get-buffer-create "*Compile-Log*")) - (setq byte-compile-warnings-point-max (point-max)))) - (list 'unwind-protect - (list 'condition-case 'error-info - (cons 'progn body) - '(error - (byte-compile-report-error error-info))) - '(save-excursion - ;; If there were compilation warnings, display them. - (set-buffer "*Compile-Log*") - (if (= byte-compile-warnings-point-max (point-max)) - nil - (select-window - (prog1 (selected-window) - (select-window (display-buffer (current-buffer))) - (goto-char byte-compile-warnings-point-max) - (beginning-of-line) - (forward-line -1) - (recenter 0)))))))) + (unless byte-compile-warnings-point-max + (save-excursion + (set-buffer (get-buffer-create "*Compile-Log*")) + (setq byte-compile-warnings-point-max (point-max)))) + (unwind-protect + (condition-case error-info + (progn ,@body) + (error (byte-compile-report-error error-info))) + (save-excursion + ;; If there were compilation warnings, display them. + (set-buffer "*Compile-Log*") + (if (= byte-compile-warnings-point-max (point-max)) + nil + (select-window + (prog1 (selected-window) + (select-window (display-buffer (current-buffer))) + (goto-char byte-compile-warnings-point-max) + (beginning-of-line) + (forward-line -1) + (recenter 0)))))))) ;;;###autoload @@ -1537,7 +1528,8 @@ (looking-at ";")) (forward-line 1)) (not (eobp))) - (byte-compile-file-form (read inbuffer))) + (let ((byte-compile-last-line (count-lines (point-min) (point)))) + (byte-compile-file-form (read inbuffer)))) ;; Compile pending forms at end of file. (byte-compile-flush-pending) @@ -1971,7 +1963,7 @@ (symbolp (car-safe (cdr-safe body))) (car-safe (cdr-safe body)) (stringp (car-safe (cdr-safe (cdr-safe body))))) - (byte-compile-warn "Probable `\"' without `\\' in doc string of %s" + (byte-compile-warn "probable `\"' without `\\' in doc string of %s" (nth 1 form)))) (let* ((new-one (byte-compile-lambda (cons 'lambda (nthcdr 2 form)))) (code (byte-compile-byte-code-maker new-one))) @@ -2410,8 +2402,8 @@ (defun byte-compile-variable-ref (base-op var) (if (or (not (symbolp var)) (byte-compile-const-symbol-p var)) (byte-compile-warn (if (eq base-op 'byte-varbind) - "Attempt to let-bind %s %s" - "Variable reference to %s %s") + "attempt to let-bind %s %s" + "variable reference to %s %s") (if (symbolp var) "constant" "nonvariable") (prin1-to-string var)) (if (and (get var 'byte-obsolete-variable) @@ -3264,7 +3256,7 @@ `(push ',var current-load-list)) (when (> (length form) 3) (when (and string (not (stringp string))) - (byte-compile-warn "Third arg to %s %s is not a string: %s" + (byte-compile-warn "third arg to %s %s is not a string: %s" fun var string)) `(put ',var 'variable-documentation ,string)) (if (cdr (cdr form)) ; `value' provided @@ -3550,7 +3542,6 @@ (if (null (batch-byte-compile-file (car command-line-args-left))) (setq error t))) (setq command-line-args-left (cdr command-line-args-left))) - (message "Done") (kill-emacs (if error 1 0)))) (defun batch-byte-compile-file (file)