# HG changeset patch # User Romain Francoise # Date 1125159104 0 # Node ID 9be9d0d6527f124115288e2e2ee544fe8b564b96 # Parent 0ef9e89085624c6f1fa088aae308f30146990aa7 (makeinfo-compile): Use `compilation-start'. Set `next-error-function' according to `disable-errors'. (makeinfo-next-error): New function. (makeinfo-region): Adjust to new `makeinfo-compile' prototype. (makeinfo-buffer): Likewise. diff -r 0ef9e8908562 -r 9be9d0d6527f lisp/ChangeLog --- a/lisp/ChangeLog Sat Aug 27 14:38:22 2005 +0000 +++ b/lisp/ChangeLog Sat Aug 27 16:11:44 2005 +0000 @@ -1,5 +1,12 @@ 2005-08-27 Romain Francoise + * textmodes/makeinfo.el (makeinfo-compile): Use + `compilation-start'. Set `next-error-function' according to + `disable-errors'. + (makeinfo-next-error): New function. + (makeinfo-region): Adjust to new `makeinfo-compile' prototype. + (makeinfo-buffer): Likewise. + * progmodes/compile.el (compilation-start): Add autoload cookie. * progmodes/antlr-mode.el: Don't autoload `compilation-start'. diff -r 0ef9e8908562 -r 9be9d0d6527f lisp/textmodes/makeinfo.el --- a/lisp/textmodes/makeinfo.el Sat Aug 27 14:38:22 2005 +0000 +++ b/lisp/textmodes/makeinfo.el Sat Aug 27 16:11:44 2005 +0000 @@ -171,22 +171,27 @@ makeinfo-options " " makeinfo-temp-file) - "Use `makeinfo-buffer' to gain use of the `next-error' command" - nil + t 'makeinfo-compilation-sentinel-region))))))) -;;; Actually run makeinfo. COMMAND is the command to run. -;;; ERROR-MESSAGE is what to say when next-error can't find another error. -;;; If PARSE-ERRORS is non-nil, do try to parse error messages. -(defun makeinfo-compile (command error-message parse-errors sentinel) - (let ((buffer - (compile-internal command error-message nil - (and (not parse-errors) - ;; If we do want to parse errors, pass nil. - ;; Otherwise, use this function, which won't - ;; ever find any errors. - (lambda (&rest ignore) - (setq compilation-error-list nil)))))) +(defun makeinfo-next-error (arg reset) + "This function is used to disable `next-error' if the user has +used `makeinfo-region'. Since the compilation process is used on +a temporary file in that case, calling `next-error' would give +nonsensical results." + (error "Use `makeinfo-buffer' to gain use of the `next-error' command")) + +;; Actually run makeinfo. COMMAND is the command to run. If +;; DISABLE-ERRORS is non-nil, disable `next-error' by setting +;; `next-error-function' to `makeinfo-next-error' in the compilation +;; buffer. +(defun makeinfo-compile (command disable-errors sentinel) + (let ((buffer (compilation-start command))) + (with-current-buffer buffer + (setq next-error-function + (if disable-errors + 'makeinfo-next-error + 'compilation-next-error-function))) (set-process-sentinel (get-buffer-process buffer) sentinel))) ;; Delete makeinfo-temp-file after processing is finished, @@ -249,9 +254,8 @@ (save-excursion (makeinfo-compile (concat makeinfo-run-command " " makeinfo-options - " " buffer-file-name) - "No more errors." - t + " " buffer-file-name) + nil 'makeinfo-compilation-sentinel-buffer))) (defun makeinfo-compilation-sentinel-buffer (proc msg)