annotate lisp/textmodes/makeinfo.el @ 18092:8428d56cd207

(smtpmail-via-smtp): Recognize XVRB as a synonym for VERB and XONE as a synonym for ONEX. (smtpmail-read-response): Add "%s" to `message' calls to avoid problems with percent signs in strings. (smtpmail-read-response): Return all lines of the response text as a list of strings. Formerly only the first line was returned. This is insufficient when one wants to parse e.g. an EHLO response. Ignore responses starting with "0". This is necessary to support the VERB SMTP extension. (smtpmail-via-smtp): Try EHLO and find out which SMTP service extensions the receiving mailer supports. Issue the ONEX and XUSR commands if the corresponding extensions are supported. Issue VERB if supported and `smtpmail-debug-info' is non-nil. Add SIZE attribute to MAIL FROM: command if SIZE extension is supported. Add code that could set the BODY= attribute to MAIL FROM: if the receiving mailer supports 8BITMIME. This is currently disabled, since doing it right might involve adding MIME headers to, and in some cases reencoding, the message.
author Richard M. Stallman <rms@gnu.org>
date Sun, 01 Jun 1997 22:24:22 +0000
parents f0ff96a35eb8
children fb6b9c37cdc4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13337
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 6828
diff changeset
1 ;;; makeinfo.el --- run makeinfo conveniently
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 6828
diff changeset
2
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 6828
diff changeset
3 ;; Copyright (C) 1991, 1993 Free Software Foundation, Inc.
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4
13337
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 6828
diff changeset
5 ;; Author: Robert J. Chassell
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 6828
diff changeset
6 ;; Maintainer: FSF
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7
13337
84acc3adcd63 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 6828
diff changeset
8 ;; This file is part of GNU Emacs.
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; any later version.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13337
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13337
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13337
diff changeset
23 ;; Boston, MA 02111-1307, USA.
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;;; Commentary:
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;;; The Texinfo mode `makeinfo' related commands are:
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; makeinfo-region to run makeinfo on the current region.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; makeinfo-buffer to run makeinfo on the current buffer, or
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 ;; with optional prefix arg, on current region
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; kill-compilation to kill currently running makeinfo job
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; makeinfo-recenter-makeinfo-buffer to redisplay *compilation* buffer
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;;; Keybindings (defined in `texinfo.el')
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; makeinfo bindings
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 ; (define-key texinfo-mode-map "\C-c\C-m\C-r" 'makeinfo-region)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ; (define-key texinfo-mode-map "\C-c\C-m\C-b" 'makeinfo-buffer)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ; (define-key texinfo-mode-map "\C-c\C-m\C-k" 'kill-compilation)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ; (define-key texinfo-mode-map "\C-c\C-m\C-l"
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ; 'makeinfo-recenter-compilation-buffer)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;;; Code:
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;;; Variables used by `makeinfo'
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 (require 'compile)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
50 (defgroup makeinfo nil
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
51 "Run makeinfo conveniently"
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
52 :group 'docs)
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
53
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
54
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
55 (defcustom makeinfo-run-command "makeinfo"
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 "*Command used to run `makeinfo' subjob.
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
57 The name of the file is appended to this string, separated by a space."
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
58 :type 'string
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
59 :group 'makeinfo)
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
61 (defcustom makeinfo-options "--fill-column=70"
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 "*String containing options for running `makeinfo'.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 Do not include `--footnote-style' or `--paragraph-indent';
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 the proper way to specify those is with the Texinfo commands
17411
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
65 `@footnotestyle` and `@paragraphindent'."
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
66 :type 'string
f0ff96a35eb8 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
67 :group 'makeinfo)
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 (require 'texinfo)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 (defvar makeinfo-compilation-process nil
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 "Process that runs `makeinfo'. Should start out nil.")
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 (defvar makeinfo-temp-file nil
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 "Temporary file name used for text being sent as input to `makeinfo'.")
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 (defvar makeinfo-output-file-name nil
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 "Info file name used for text output by `makeinfo'.")
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 ;;; The `makeinfo' function definitions
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 (defun makeinfo-region (region-beginning region-end)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 "Make Info file from region of current Texinfo file, and switch to it.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 This command does not offer the `next-error' feature since it would
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 apply to a temporary file, not the original; use the `makeinfo-buffer'
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 command to gain use of `next-error'."
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 (interactive "r")
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 (let (filename-or-header
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 filename-or-header-beginning
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 filename-or-header-end)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 ;; Cannot use `let' for makeinfo-temp-file or
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 ;; makeinfo-output-file-name since `makeinfo-compilation-sentinel'
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 ;; needs them.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 (setq makeinfo-temp-file
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 (concat
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 (make-temp-name
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 (substring (buffer-file-name)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 0
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 (or (string-match "\\.tex" (buffer-file-name))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 (length (buffer-file-name)))))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 ".texinfo"))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 (save-excursion
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 (save-restriction
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 (widen)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 (goto-char (point-min))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 (let ((search-end (save-excursion (forward-line 100) (point))))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 ;; Find and record the Info filename,
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 ;; or else explain that a filename is needed.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 (if (re-search-forward
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 "^@setfilename[ \t]+\\([^ \t\n]+\\)[ \t]*"
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 search-end t)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 (setq makeinfo-output-file-name
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 (buffer-substring (match-beginning 1) (match-end 1)))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 (error
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 "The texinfo file needs a line saying: @setfilename <name>"))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 ;; Find header and specify its beginning and end.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 (goto-char (point-min))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 (if (and
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 (prog1
6828
cccf812ed4f2 (makeinfo-region): Fix name of tex-start/end-of-header.
Richard M. Stallman <rms@gnu.org>
parents: 4149
diff changeset
126 (search-forward tex-start-of-header search-end t)
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 (beginning-of-line)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 ;; Mark beginning of header.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 (setq filename-or-header-beginning (point)))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 (prog1
6828
cccf812ed4f2 (makeinfo-region): Fix name of tex-start/end-of-header.
Richard M. Stallman <rms@gnu.org>
parents: 4149
diff changeset
131 (search-forward tex-end-of-header nil t)
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 (beginning-of-line)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 ;; Mark end of header
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 (setq filename-or-header-end (point))))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 ;; Insert the header into the temporary file.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 (write-region
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 (min filename-or-header-beginning region-beginning)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 filename-or-header-end
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 makeinfo-temp-file nil nil)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 ;; Else no header; insert @filename line into temporary file.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 (goto-char (point-min))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 (search-forward "@setfilename" search-end t)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 (beginning-of-line)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 (setq filename-or-header-beginning (point))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 (forward-line 1)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 (setq filename-or-header-end (point))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 (write-region
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 (min filename-or-header-beginning region-beginning)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 filename-or-header-end
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 makeinfo-temp-file nil nil))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 ;; Insert the region into the file.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 (write-region
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 (max region-beginning filename-or-header-end)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 region-end
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 makeinfo-temp-file t nil)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 ;; Run the `makeinfo-compile' command in the *compilation* buffer
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 (save-excursion
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 (makeinfo-compile
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 (concat makeinfo-run-command
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 " "
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 makeinfo-options
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 " "
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 makeinfo-temp-file)
3857
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
168 "Use `makeinfo-buffer' to gain use of the `next-error' command"
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
169 nil)))))))
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170
3857
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
171 ;;; Actually run makeinfo. COMMAND is the command to run.
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
172 ;;; ERROR-MESSAGE is what to say when next-error can't find another error.
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
173 ;;; If PARSE-ERRORS is non-nil, do try to parse error messages.
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
174 (defun makeinfo-compile (command error-message parse-errors)
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
175 (let ((buffer
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
176 (compile-internal command error-message nil
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
177 (and (not parse-errors)
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
178 ;; If we do want to parse errors, pass nil.
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
179 ;; Otherwise, use this function, which won't
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
180 ;; ever find any errors.
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
181 '(lambda (&rest ignore)
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
182 (setq compilation-error-list nil))))))
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
183 (set-process-sentinel (get-buffer-process buffer)
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
184 'makeinfo-compilation-sentinel)))
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185
3857
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
186 ;; Delete makeinfo-temp-file after processing is finished,
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 ;; and visit Info file.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 ;; This function is called when the compilation process changes state.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 ;; Based on `compilation-sentinel' in compile.el
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 (defun makeinfo-compilation-sentinel (proc msg)
3857
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
191 (compilation-sentinel proc msg)
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
192 (if (and makeinfo-temp-file (file-exists-p makeinfo-temp-file))
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
193 (delete-file makeinfo-temp-file))
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
194 ;; Always use the version on disk.
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
195 (if (get-file-buffer makeinfo-output-file-name)
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
196 (progn (set-buffer makeinfo-output-file-name)
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
197 (revert-buffer t t))
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
198 (find-file makeinfo-output-file-name))
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
199 (goto-char (point-min)))
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200
3857
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
201 (defun makeinfo-buffer ()
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 "Make Info file from current buffer.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203
3857
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
204 Use the \\[next-error] command to move to the next error
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
205 \(if there are errors\)."
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
206
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
207 (interactive)
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 (cond ((null buffer-file-name)
3857
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
209 (error "Buffer not visiting any file"))
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 ((buffer-modified-p)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 (if (y-or-n-p "Buffer modified; do you want to save it? ")
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 (save-buffer))))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 ;; Find and record the Info filename,
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 ;; or else explain that a filename is needed.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 (save-excursion
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 (goto-char (point-min))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 (let ((search-end (save-excursion (forward-line 100) (point))))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 (if (re-search-forward
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 "^@setfilename[ \t]+\\([^ \t\n]+\\)[ \t]*"
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 search-end t)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 (setq makeinfo-output-file-name
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 (buffer-substring (match-beginning 1) (match-end 1)))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 (error
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 "The texinfo file needs a line saying: @setfilename <name>"))))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 (save-excursion
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 (makeinfo-compile
3857
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
229 (concat makeinfo-run-command " " makeinfo-options
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
230 " " buffer-file-name)
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
231 "No more errors."
ef8b4ed0de91 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 3856
diff changeset
232 t)))
3856
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 (defun makeinfo-recenter-compilation-buffer (linenum)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 "Redisplay `*compilation*' buffer so most recent output can be seen.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 The last line of the buffer is displayed on
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 line LINE of the window, or centered if LINE is nil."
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 (interactive "P")
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 (let ((makeinfo-buffer (get-buffer "*compilation*"))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 (old-buffer (current-buffer)))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 (if (null makeinfo-buffer)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 (message "No *compilation* buffer")
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 (pop-to-buffer makeinfo-buffer)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 (bury-buffer makeinfo-buffer)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 (goto-char (point-max))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 (recenter (if linenum
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 (prefix-numeric-value linenum)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 (/ (window-height) 2)))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 (pop-to-buffer old-buffer)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 )))
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 ;;; Place `provide' at end of file.
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 (provide 'makeinfo)
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 ;;; makeinfo.el ends here
7f0b238b15a1 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256