# HG changeset patch # User Richard M. Stallman # Date 740645942 0 # Node ID ef8b4ed0de91fe9cccfa5846ee27123d7d777777 # Parent 7f0b238b15a17d45094c347f449a3ea8c4db87b4 *** empty log message *** diff -r 7f0b238b15a1 -r ef8b4ed0de91 lisp/textmodes/makeinfo.el --- a/lisp/textmodes/makeinfo.el Mon Jun 21 06:45:33 1993 +0000 +++ b/lisp/textmodes/makeinfo.el Mon Jun 21 06:59:02 1993 +0000 @@ -155,118 +155,48 @@ makeinfo-options " " makeinfo-temp-file) - "Use `makeinfo-buffer' to gain use of the `next-error' command."))))))) + "Use `makeinfo-buffer' to gain use of the `next-error' command" + nil))))))) -;; Based on `compile1' in compile.el; changed so to make it possible -;; to delete temporary file. -(defun makeinfo-compile (command error-message &optional name-of-mode) - ;(save-some-buffers) ; Don't need to save other buffers. - (if makeinfo-compilation-process - (if (or (not (eq (process-status makeinfo-compilation-process) 'run)) - (yes-or-no-p - "A `makeinfo' compilation process is running; kill it? ")) - (condition-case () - (let ((comp-proc makeinfo-compilation-process)) - (interrupt-process comp-proc) - (sit-for 1) - (delete-process comp-proc)) - (error nil)) - (error "Cannot have two makeinfo processes"))) - (setq makeinfo-compilation-process nil) - (compilation-forget-errors) - (setq compilation-error-list t) - (setq compilation-error-message error-message) - (setq makeinfo-compilation-process - (start-process "makeinfo" "*compilation*" - shell-file-name - "-c" (concat "exec " command))) - (with-output-to-temp-buffer "*compilation*" - (princ "cd ") - (princ default-directory) - (terpri) - (princ command) - (terpri)) - (let ((regexp compilation-error-regexp)) - (save-excursion - (set-buffer "*compilation*") - (make-local-variable 'compilation-error-regexp) - (setq compilation-error-regexp regexp))) - (set-process-sentinel - makeinfo-compilation-process 'makeinfo-compilation-sentinel) - (let* ((thisdir default-directory) - (outbuf (process-buffer makeinfo-compilation-process)) - (outwin (get-buffer-window outbuf))) - (if (eq outbuf (current-buffer)) - (goto-char (point-max))) - (save-excursion - (set-buffer outbuf) - (buffer-flush-undo outbuf) - (let ((start (save-excursion (set-buffer outbuf) (point-min)))) - (set-window-start outwin start) - (or (eq outwin (selected-window)) - (set-window-point outwin start))) - (setq default-directory thisdir) - (fundamental-mode) - (setq mode-name (or name-of-mode "compilation")) - ;; Make log buffer's mode line show process state - (setq mode-line-process '(": %s"))))) +;;; 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) + (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)))))) + (set-process-sentinel (get-buffer-process buffer) + 'makeinfo-compilation-sentinel))) -;; Delete makeinfo-temp-file after proccessing is finished, +;; Delete makeinfo-temp-file after processing is finished, ;; and visit Info file. ;; This function is called when the compilation process changes state. ;; Based on `compilation-sentinel' in compile.el (defun makeinfo-compilation-sentinel (proc msg) - (cond ((null (buffer-name (process-buffer proc))) - ;; buffer killed - (set-process-buffer proc nil)) - ((memq (process-status proc) '(signal exit)) - (let* ((obuf (current-buffer)) - omax opoint) - ;; save-excursion isn't the right thing if - ;; process-buffer is current-buffer - (unwind-protect - (progn - ;; Write something in *compilation* and hack - ;; its mode line, - (set-buffer (process-buffer proc)) - (setq omax (point-max) opoint (point)) - (goto-char (point-max)) - (insert ?\n mode-name " " msg) - (forward-char -1) - (insert " at " - (substring (current-time-string) 0 -5)) - (forward-char 1) - (setq mode-line-process - (concat ": " - (symbol-name (process-status proc)))) - ;; If buffer and mode line will show that the process - ;; is dead, we can delete it now. Otherwise it - ;; will stay around until M-x list-processes. - (delete-process proc)) - (setq makeinfo-compilation-process nil) - ;; Force mode line redisplay soon - (set-buffer-modified-p (buffer-modified-p))) - (if (and opoint (< opoint omax)) - (goto-char opoint)) - (set-buffer obuf)) - (if (and makeinfo-temp-file (file-exists-p makeinfo-temp-file)) - (delete-file makeinfo-temp-file)) - ;; Always use the version on disk. - (if (get-file-buffer makeinfo-output-file-name) - (progn (set-buffer makeinfo-output-file-name) - (revert-buffer t t))) - (find-file makeinfo-output-file-name) - (goto-char (point-min))))) + (compilation-sentinel proc msg) + (if (and makeinfo-temp-file (file-exists-p makeinfo-temp-file)) + (delete-file makeinfo-temp-file)) + ;; Always use the version on disk. + (if (get-file-buffer makeinfo-output-file-name) + (progn (set-buffer makeinfo-output-file-name) + (revert-buffer t t)) + (find-file makeinfo-output-file-name)) + (goto-char (point-min))) -(defun makeinfo-buffer (buffer) +(defun makeinfo-buffer () "Make Info file from current buffer. -The \\[next-error] command can be used to move to the next error -\(if any are found\)." - - (interactive "bRun `makeinfo' on: ") +Use the \\[next-error] command to move to the next error +\(if there are errors\)." + + (interactive) (cond ((null buffer-file-name) - (error "Buffer not visiting any file!")) + (error "Buffer not visiting any file")) ((buffer-modified-p) (if (y-or-n-p "Buffer modified; do you want to save it? ") (save-buffer)))) @@ -286,16 +216,10 @@ (save-excursion (makeinfo-compile - (concat makeinfo-run-command - " " - makeinfo-options - " " - "+footnote-style=" - texinfo-footnote-style - " " - (buffer-file-name - (get-buffer buffer))) - "No more errors."))) + (concat makeinfo-run-command " " makeinfo-options + " " buffer-file-name) + "No more errors." + t))) (defun makeinfo-recenter-compilation-buffer (linenum) "Redisplay `*compilation*' buffer so most recent output can be seen. @@ -315,7 +239,6 @@ (pop-to-buffer old-buffer) ))) - ;;; Place `provide' at end of file. (provide 'makeinfo)