changeset 65176:9be9d0d6527f

(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.
author Romain Francoise <romain@orebokech.com>
date Sat, 27 Aug 2005 16:11:44 +0000
parents 0ef9e8908562
children 379f0d3fc2af
files lisp/ChangeLog lisp/textmodes/makeinfo.el
diffstat 2 files changed, 28 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- 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  <romain@orebokech.com>
 
+	* 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'.
--- 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)