From: Romain Francoise Date: Sat, 27 Aug 2005 16:11:44 +0000 (+0000) Subject: (makeinfo-compile): Use `compilation-start'. Set `next-error-function' X-Git-Tag: emacs-pretest-22.0.90~7408 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=713fbb79dbd0e3e7e6933f95624f4b98df43eff5;p=emacs.git (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 --git a/lisp/ChangeLog b/lisp/ChangeLog index 1b7eb7d9317..65e22bf8d2c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -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 --git a/lisp/textmodes/makeinfo.el b/lisp/textmodes/makeinfo.el index f2c407975e2..d8829a2d3dd 100644 --- a/lisp/textmodes/makeinfo.el +++ b/lisp/textmodes/makeinfo.el @@ -171,22 +171,27 @@ command to gain use of `next-error'." 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 @@ Use the \\[next-error] command to move to the next error (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)