annotate lisp/textmodes/tex-mode.el @ 2576:48318133e7a6

(tex-compilation-parse-errors): Added. At the moment, this would have to be applied manually. It's not worth trying to integrate this with the rest of the mode more tightly until we decide whether and how compile's interface is going to change away from a closed subsystem.
author Eric S. Raymond <esr@snark.thyrsus.com>
date Sun, 25 Apr 1993 06:14:10 +0000
parents b65cf676a09b
children b0a1846fe3b8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
1 ;;; tex-mode.el --- TeX, LaTeX, and SliTeX mode commands.
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
2
840
113281b361ec *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
3 ;; Copyright (C) 1985, 1986, 1989, 1992 Free Software Foundation, Inc.
113281b361ec *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
4
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 758
diff changeset
5 ;; Maintainer: Edward M. Reingold <reingold@cs.uiuc.edu>
814
38b2499cb3e9 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
6 ;; Keywords: tex
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 758
diff changeset
7
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
8 ;; Contributions over the years by William F. Schelter, Dick King,
2576
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
9 ;; Stephen Gildea, Michael Prange, and Jacob Gore.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
10
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
12
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 758
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
16 ;; any later version.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
17
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
21 ;; GNU General Public License for more details.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
22
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
25 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
26
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 758
diff changeset
27 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 758
diff changeset
28
870
1b3af6ad85be *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 840
diff changeset
29 ;; This was a pain. Now, make-comint should autoload comint.
1b3af6ad85be *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 840
diff changeset
30 ;; (require 'comint)
2576
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
31 (require 'compile)
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
32
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
33 ;;;###autoload
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
34 (defvar tex-shell-file-name nil
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
35 "*If non-nil, is file name to use for the subshell in which TeX is run.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
36
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
37 ;;;###autoload
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
38 (defvar tex-directory "."
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
39 "*Directory in which temporary files are left.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
40 You can make this /tmp if your TEXINPUTS has no relative directories in it
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
41 and you don't try to apply \\[tex-region] or \\[tex-buffer] when there are
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
42 \\input commands with relative directories.")
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
43
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
44 ;;;###autoload
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
45 (defvar tex-offer-save t
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
46 "*If non-nil, ask about saving modified buffers before \\[tex-file] is run.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
47
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
48 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
49 (defvar tex-run-command "tex"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
50 "*Command used to run TeX subjob.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
51 If this string contains an asterisk (*), it will be replaced by the
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
52 filename; if not, the name of the file, preceded by blank, will be added to
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
53 this string.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
54
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
55 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
56 (defvar latex-run-command "latex"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
57 "*Command used to run LaTeX subjob.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
58 If this string contains an asterisk (*), it will be replaced by the
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
59 filename; if not, the name of the file, preceded by blank, will be added to
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
60 this string.")
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
61
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
62 (defvar standard-latex-block-names
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
63 '("abstract" "array" "center" "description"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
64 "displaymath" "document" "enumerate" "eqnarray"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
65 "eqnarray*" "equation" "figure" "figure*"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
66 "flushleft" "flushright" "itemize" "letter"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
67 "list" "minipage" "picture" "quotation"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
68 "quote" "slide" "sloppypar" "tabbing"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
69 "table" "table*" "tabular" "tabular*"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
70 "thebibliography" "theindex*" "titlepage" "trivlist"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
71 "verbatim" "verbatim*" "verse")
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
72 "Standard LaTeX block names.")
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
73
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
74 ;;;###autoload
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
75 (defvar latex-block-names nil
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
76 "*User defined LaTeX block names.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
77 Combined with `standard-latex-block-names' for minibuffer completion.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
78
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
79 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
80 (defvar slitex-run-command "slitex"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
81 "*Command used to run SliTeX subjob.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
82 If this string contains an asterisk (*), it will be replaced by the
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
83 filename; if not, the name of the file, preceded by blank, will be added to
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
84 this string.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
85
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
86 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
87 (defvar tex-bibtex-command "bibtex"
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
88 "*Command used by `tex-bibtex-file' to gather bibliographic data.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
89 If this string contains an asterisk (*), it will be replaced by the
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
90 filename; if not, the name of the file, preceded by blank, will be added to
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
91 this string.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
92
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
93 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
94 (defvar tex-dvi-print-command "lpr -d"
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
95 "*Command used by \\[tex-print] to print a .dvi file.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
96 If this string contains an asterisk (*), it will be replaced by the
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
97 filename; if not, the name of the file, preceded by blank, will be added to
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
98 this string.")
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
99
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
100 ;;;###autoload
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
101 (defvar tex-alt-dvi-print-command "lpr -d"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
102 "*Command used by \\[tex-print] with a prefix arg to print a .dvi file.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
103 If this string contains an asterisk (*), it will be replaced by the
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
104 filename; if not, the name of the file, preceded by blank, will be added to
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
105 this string.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
106
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
107 If two printers are not enough of a choice, you can define the value
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
108 of tex-alt-dvi-print-command to be an expression that asks what you want;
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
109 for example,
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
110
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
111 (setq tex-alt-dvi-print-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
112 '(format \"lpr -P%s\" (read-string \"Use printer: \")))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
113
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
114 would tell \\[tex-print] with a prefix argument to ask you which printer to
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
115 use.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
116
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
117 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
118 (defvar tex-dvi-view-command nil
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
119 "*Command used by \\[tex-view] to display a .dvi file.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
120 If this string contains an asterisk (*), it will be replaced by the
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
121 filename; if not, the name of the file, preceded by blank, will be added to
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
122 this string.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
123
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
124 This can be set conditionally so that the previewer used is suitable for the
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
125 window system being used. For example,
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
126
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
127 (setq tex-dvi-view-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
128 (if (eq window-system 'x) \"xdvi\" \"dvi2tty * | cat -s\"))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
129
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
130 would tell \\[tex-view] use xdvi under X windows and to use dvi2tty
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
131 otherwise.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
132
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
133 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
134 (defvar tex-show-queue-command "lpq"
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
135 "*Command used by \\[tex-show-print-queue] to show the print queue.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
136 Should show the queue(s) that \\[tex-print] puts jobs on.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
137
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
138 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
139 (defvar tex-default-mode 'plain-tex-mode
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
140 "*Mode to enter for a new file that might be either TeX or LaTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
141 This variable is used when it can't be determined whether the file
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
142 is plain TeX or LaTeX or what because the file contains no commands.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
143 Normally set to either 'plain-tex-mode or 'latex-mode.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
144
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
145 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
146 (defvar tex-open-quote "``"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
147 "*String inserted by typing \\[tex-insert-quote] to open a quotation.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
148
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
149 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
150 (defvar tex-close-quote "''"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
151 "*String inserted by typing \\[tex-insert-quote] to close a quotation.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
152
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
153 (defvar tex-last-temp-file nil
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
154 "Latest temporary file generated by \\[tex-region] and \\[tex-buffer].
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
155 Deleted when the \\[tex-region] or \\[tex-buffer] is next run, or when the
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
156 tex-shell goes away.")
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
157
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
158 (defvar tex-command nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
159 "Command to run TeX.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
160 The name of the file, preceded by a blank, will be added to this string.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
161
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
162 (defvar tex-trailer nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
163 "String appended after the end of a region sent to TeX by \\[tex-region].")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
164
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
165 (defvar tex-start-of-header nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
166 "String used by \\[tex-region] to delimit the start of the file's header.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
167
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
168 (defvar tex-end-of-header nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
169 "String used by \\[tex-region] to delimit the end of the file's header.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
170
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
171 (defvar tex-shell-cd-command "cd"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
172 "Command to give to shell running TeX to change directory.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
173 The value of tex-directory will be appended to this, separated by a space.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
174
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
175 (defvar tex-zap-file nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
176 "Temporary file name used for text being sent as input to TeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
177 Should be a simple file name with no extension or directory specification.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
178
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
179 (defvar tex-last-buffer-texed nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
180 "Buffer which was last TeXed.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
181
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
182 (defvar tex-print-file nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
183 "File name that \\[tex-print] prints.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
184 Set by \\[tex-region], \\[tex-buffer], and \\[tex-file].")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
185
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
186 (defvar tex-mode-syntax-table nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
187 "Syntax table used while in TeX mode.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
188
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
189 (defun tex-define-common-keys (keymap)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
190 "Define the keys that we want defined both in TeX mode and in the tex-shell."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
191 (define-key keymap "\C-c\C-k" 'tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
192 (define-key keymap "\C-c\C-l" 'tex-recenter-output-buffer)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
193 (define-key keymap "\C-c\C-q" 'tex-show-print-queue)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
194 (define-key keymap "\C-c\C-p" 'tex-print)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
195 (define-key keymap "\C-c\C-v" 'tex-view)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
196 )
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
197
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
198 (defvar tex-mode-map nil "Keymap for TeX mode.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
199
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
200 (if tex-mode-map
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
201 nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
202 (setq tex-mode-map (make-sparse-keymap))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
203 (tex-define-common-keys tex-mode-map)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
204 (define-key tex-mode-map "\"" 'tex-insert-quote)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
205 (define-key tex-mode-map "\n" 'tex-terminate-paragraph)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
206 (define-key tex-mode-map "\C-c}" 'up-list)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
207 (define-key tex-mode-map "\C-c{" 'tex-insert-braces)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
208 (define-key tex-mode-map "\C-c\C-r" 'tex-region)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
209 (define-key tex-mode-map "\C-c\C-b" 'tex-buffer)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
210 (define-key tex-mode-map "\C-c\C-f" 'tex-file)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
211 (define-key tex-mode-map "\C-c\C-i" 'tex-bibtex-file)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
212 (define-key tex-mode-map "\C-c\C-o" 'tex-latex-block)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
213 (define-key tex-mode-map "\C-c\C-e" 'tex-close-latex-block))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
214
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
215 (defvar tex-shell-map nil
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
216 "Keymap for the tex-shell. A comint-mode-map with a few additions.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
217
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
218 ;(defalias 'TeX-mode 'tex-mode) ;in loaddefs.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
219
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
220 ;;; This would be a lot simpler if we just used a regexp search,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
221 ;;; but then it would be too slow.
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 85
diff changeset
222 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
223 (defun tex-mode ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
224 "Major mode for editing files of input for TeX, LaTeX, or SliTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
225 Tries to determine (by looking at the beginning of the file) whether
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
226 this file is for plain TeX, LaTeX, or SliTeX and calls plain-tex-mode,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
227 latex-mode, or slitex-mode, respectively. If it cannot be determined,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
228 such as if there are no commands in the file, the value of tex-default-mode
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
229 is used."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
230 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
231 (let (mode slash comment)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
232 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
233 (goto-char (point-min))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
234 (while (and (setq slash (search-forward "\\" nil t))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
235 (setq comment (let ((search-end (point)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
236 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
237 (beginning-of-line)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
238 (search-forward "%" search-end t))))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
239 (if (and slash (not comment))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
240 (setq mode (if (looking-at "documentstyle")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
241 (if (looking-at "documentstyle{slides}")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
242 'slitex-mode
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
243 'latex-mode)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
244 'plain-tex-mode))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
245 (if mode (funcall mode)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
246 (funcall tex-default-mode))))
269
2ca8cdb96a9f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 256
diff changeset
247 ;;;###autoload
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
248 (defalias 'TeX-mode 'tex-mode)
269
2ca8cdb96a9f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 256
diff changeset
249 ;;;###autoload
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
250 (defalias 'LaTeX-mode 'latex-mode)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
251
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 85
diff changeset
252 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
253 (defun plain-tex-mode ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
254 "Major mode for editing files of input for plain TeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
255 Makes $ and } display the characters they match.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
256 Makes \" insert `` when it seems to be the beginning of a quotation,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
257 and '' when it appears to be the end; it inserts \" only after a \\.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
258
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
259 Use \\[tex-region] to run TeX on the current region, plus a \"header\"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
260 copied from the top of the file (containing macro definitions, etc.),
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
261 running TeX under a special subshell. \\[tex-buffer] does the whole buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
262 \\[tex-file] saves the buffer and then processes the file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
263 \\[tex-print] prints the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
264 \\[tex-view] previews the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
265 \\[tex-bibtex-file] runs bibtex on the file of the current buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
266
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
267 Use \\[validate-tex-buffer] to check buffer for paragraphs containing
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
268 mismatched $'s or braces.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
269
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
270 Special commands:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
271 \\{tex-mode-map}
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
272
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
273 Mode variables:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
274 tex-run-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
275 Command string used by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
276 tex-directory
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
277 Directory in which to create temporary files for TeX jobs
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
278 run by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
279 tex-dvi-print-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
280 Command string used by \\[tex-print] to print a .dvi file.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
281 tex-alt-dvi-print-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
282 Alternative command string used by \\[tex-print] (when given a prefix
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
283 argument) to print a .dvi file.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
284 tex-dvi-view-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
285 Command string used by \\[tex-view] to preview a .dvi file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
286 tex-show-queue-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
287 Command string used by \\[tex-show-print-queue] to show the print
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
288 queue that \\[tex-print] put your job on.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
289
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
290 Entering Plain-tex mode calls the value of text-mode-hook, then the value of
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
291 tex-mode-hook, and then the value of plain-tex-mode-hook. When the special
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
292 subshell is initiated, the value of tex-shell-hook is called."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
293 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
294 (tex-common-initialization)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
295 (setq mode-name "TeX")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
296 (setq major-mode 'plain-tex-mode)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
297 (setq tex-command tex-run-command)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
298 (setq tex-start-of-header "%**start of header")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
299 (setq tex-end-of-header "%**end of header")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
300 (setq tex-trailer "\\bye\n")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
301 (run-hooks 'text-mode-hook 'tex-mode-hook 'plain-tex-mode-hook))
269
2ca8cdb96a9f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 256
diff changeset
302 ;;;###autoload
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
303 (defalias 'plain-TeX-mode 'plain-tex-mode)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
304
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 85
diff changeset
305 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
306 (defun latex-mode ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
307 "Major mode for editing files of input for LaTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
308 Makes $ and } display the characters they match.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
309 Makes \" insert `` when it seems to be the beginning of a quotation,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
310 and '' when it appears to be the end; it inserts \" only after a \\.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
311
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
312 Use \\[tex-region] to run LaTeX on the current region, plus the preamble
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
313 copied from the top of the file (containing \\documentstyle, etc.),
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
314 running LaTeX under a special subshell. \\[tex-buffer] does the whole buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
315 \\[tex-file] saves the buffer and then processes the file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
316 \\[tex-print] prints the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
317 \\[tex-view] previews the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
318 \\[tex-bibtex-file] runs bibtex on the file of the current buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
319
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
320 Use \\[validate-tex-buffer] to check buffer for paragraphs containing
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
321 mismatched $'s or braces.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
322
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
323 Special commands:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
324 \\{tex-mode-map}
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
325
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
326 Mode variables:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
327 latex-run-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
328 Command string used by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
329 tex-directory
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
330 Directory in which to create temporary files for LaTeX jobs
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
331 run by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
332 tex-dvi-print-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
333 Command string used by \\[tex-print] to print a .dvi file.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
334 tex-alt-dvi-print-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
335 Alternative command string used by \\[tex-print] (when given a prefix
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
336 argument) to print a .dvi file.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
337 tex-dvi-view-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
338 Command string used by \\[tex-view] to preview a .dvi file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
339 tex-show-queue-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
340 Command string used by \\[tex-show-print-queue] to show the print
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
341 queue that \\[tex-print] put your job on.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
342
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
343 Entering Latex mode calls the value of text-mode-hook, then the value of
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
344 tex-mode-hook, and then the value of latex-mode-hook. When the special
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
345 subshell is initiated, the value of tex-shell-hook is called."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
346 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
347 (tex-common-initialization)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
348 (setq mode-name "LaTeX")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
349 (setq major-mode 'latex-mode)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
350 (setq tex-command latex-run-command)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
351 (setq tex-start-of-header "\\documentstyle")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
352 (setq tex-end-of-header "\\begin{document}")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
353 (setq tex-trailer "\\end{document}\n")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
354 (run-hooks 'text-mode-hook 'tex-mode-hook 'latex-mode-hook))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
355
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
356 (defun slitex-mode ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
357 "Major mode for editing files of input for SliTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
358 Makes $ and } display the characters they match.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
359 Makes \" insert `` when it seems to be the beginning of a quotation,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
360 and '' when it appears to be the end; it inserts \" only after a \\.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
361
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
362 Use \\[tex-region] to run SliTeX on the current region, plus the preamble
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
363 copied from the top of the file (containing \\documentstyle, etc.),
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
364 running SliTeX under a special subshell. \\[tex-buffer] does the whole buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
365 \\[tex-file] saves the buffer and then processes the file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
366 \\[tex-print] prints the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
367 \\[tex-view] previews the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
368 \\[tex-bibtex-file] runs bibtex on the file of the current buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
369
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
370 Use \\[validate-tex-buffer] to check buffer for paragraphs containing
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
371 mismatched $'s or braces.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
372
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
373 Special commands:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
374 \\{tex-mode-map}
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
375
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
376 Mode variables:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
377 slitex-run-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
378 Command string used by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
379 tex-directory
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
380 Directory in which to create temporary files for SliTeX jobs
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
381 run by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
382 tex-dvi-print-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
383 Command string used by \\[tex-print] to print a .dvi file.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
384 tex-alt-dvi-print-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
385 Alternative command string used by \\[tex-print] (when given a prefix
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
386 argument) to print a .dvi file.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
387 tex-dvi-view-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
388 Command string used by \\[tex-view] to preview a .dvi file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
389 tex-show-queue-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
390 Command string used by \\[tex-show-print-queue] to show the print
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
391 queue that \\[tex-print] put your job on.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
392
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
393 Entering SliTeX mode calls the value of text-mode-hook, then the value of
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
394 tex-mode-hook, then the value of latex-mode-hook, and then the value of
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
395 slitex-mode-hook. When the special subshell is initiated, the value of
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
396 tex-shell-hook is called."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
397 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
398 (tex-common-initialization)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
399 (setq mode-name "SliTeX")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
400 (setq major-mode 'slitex-mode)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
401 (setq tex-command slitex-run-command)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
402 (setq tex-start-of-header "\\documentstyle{slides}")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
403 (setq tex-end-of-header "\\begin{document}")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
404 (setq tex-trailer "\\end{document}\n")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
405 (run-hooks
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
406 'text-mode-hook 'tex-mode-hook 'latex-mode-hook 'slitex-mode-hook))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
407
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
408 (defun tex-common-initialization ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
409 (kill-all-local-variables)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
410 (use-local-map tex-mode-map)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
411 (setq local-abbrev-table text-mode-abbrev-table)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
412 (if (null tex-mode-syntax-table)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
413 (let ((char 0))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
414 (setq tex-mode-syntax-table (make-syntax-table))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
415 (set-syntax-table tex-mode-syntax-table)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
416 (while (< char ? )
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
417 (modify-syntax-entry char ".")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
418 (setq char (1+ char)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
419 (modify-syntax-entry ?\C-@ "w")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
420 (modify-syntax-entry ?\t " ")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
421 (modify-syntax-entry ?\n ">")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
422 (modify-syntax-entry ?\f ">")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
423 (modify-syntax-entry ?$ "$$")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
424 (modify-syntax-entry ?% "<")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
425 (modify-syntax-entry ?\\ "/")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
426 (modify-syntax-entry ?\" ".")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
427 (modify-syntax-entry ?& ".")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
428 (modify-syntax-entry ?_ ".")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
429 (modify-syntax-entry ?@ "_")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
430 (modify-syntax-entry ?~ " ")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
431 (modify-syntax-entry ?' "w"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
432 (set-syntax-table tex-mode-syntax-table))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
433 (make-local-variable 'paragraph-start)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
434 (setq paragraph-start "^[ \t]*$\\|^[\f\\\\%]")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
435 (make-local-variable 'paragraph-separate)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
436 (setq paragraph-separate paragraph-start)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
437 (make-local-variable 'comment-start)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
438 (setq comment-start "%")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
439 (make-local-variable 'comment-start-skip)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
440 (setq comment-start-skip "\\(\\(^\\|[^\\]\\)\\(\\\\\\\\\\)*\\)\\(%+ *\\)")
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2265
diff changeset
441 (make-local-variable 'comment-indent-function)
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2265
diff changeset
442 (setq comment-indent-function 'tex-comment-indent)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
443 (make-local-variable 'compare-windows-whitespace)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
444 (setq compare-windows-whitespace 'tex-categorize-whitespace)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
445 (make-local-variable 'tex-command)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
446 (make-local-variable 'tex-start-of-header)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
447 (make-local-variable 'tex-end-of-header)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
448 (make-local-variable 'tex-trailer))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
449
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
450 (defun tex-comment-indent ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
451 (if (looking-at "%%%")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
452 (current-column)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
453 (skip-chars-backward " \t")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
454 (max (if (bolp) 0 (1+ (current-column)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
455 comment-column)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
456
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
457 (defun tex-categorize-whitespace (backward-limit)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
458 ;; compare-windows-whitespace is set to this.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
459 ;; This is basically a finite-state machine.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
460 ;; Returns a symbol telling how TeX would treat
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
461 ;; the whitespace we are looking at: null, space, or par.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
462 (let ((category 'null)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
463 (not-finished t))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
464 (skip-chars-backward " \t\n\f" backward-limit)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
465 (while not-finished
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
466 (cond ((looking-at "[ \t]+")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
467 (goto-char (match-end 0))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
468 (if (eql category 'null)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
469 (setq category 'space)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
470 ((looking-at "\n")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
471 (cond ((eql category 'newline)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
472 (setq category 'par)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
473 (setq not-finished nil))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
474 (t
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
475 (setq category 'newline) ;a strictly internal state
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
476 (goto-char (match-end 0)))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
477 ((looking-at "\f+")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
478 (setq category 'par)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
479 (setq not-finished nil))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
480 (t
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
481 (setq not-finished nil))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
482 (skip-chars-forward " \t\n\f")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
483 (if (eql category 'newline)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
484 'space ;TeX doesn't distinguish
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
485 category)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
486
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
487 (defun tex-insert-quote (arg)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
488 "Insert the appropriate quote marks for TeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
489 Inserts the value of tex-open-quote (normally ``) or tex-close-quote
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
490 (normally '') depending on the context. With prefix argument, always
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
491 inserts \" characters."
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
492 (interactive "*P")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
493 (if arg
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
494 (self-insert-command (prefix-numeric-value arg))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
495 (insert
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
496 (cond ((or (bobp)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
497 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
498 (forward-char -1)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
499 (looking-at "\\s(\\|\\s \\|\\s>")))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
500 tex-open-quote)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
501 ((= (preceding-char) ?\\)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
502 ?\")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
503 (t
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
504 tex-close-quote)))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
505
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
506 (defun validate-tex-buffer ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
507 "Check current buffer for paragraphs containing mismatched $'s.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
508 As each such paragraph is found, a mark is pushed at its beginning,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
509 and the location is displayed for a few seconds."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
510 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
511 (let ((opoint (point)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
512 (goto-char (point-max))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
513 ;; Does not use save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
514 ;; because we do not want to save the mark.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
515 (unwind-protect
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
516 (while (and (not (input-pending-p)) (not (bobp)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
517 (let ((end (point)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
518 (search-backward "\n\n" nil 'move)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
519 (or (tex-validate-region (point) end)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
520 (progn
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
521 (push-mark (point))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
522 (message "Mismatch found in pararaph starting here")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
523 (sit-for 4)))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
524 (goto-char opoint))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
525
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
526 (defun tex-validate-region (start end)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
527 "Check for mismatched braces or $'s in region.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
528 Returns t if no mismatches. Returns nil and moves point to suspect
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
529 area if a mismatch is found."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
530 (interactive "r")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
531 (let ((failure-point nil) (max-possible-sexps (- end start)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
532 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
533 (condition-case ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
534 (save-restriction
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
535 (narrow-to-region start end)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
536 (goto-char start)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
537 (while (< 0 (setq max-possible-sexps (1- max-possible-sexps)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
538 (forward-sexp 1)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
539 (error
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
540 (setq failure-point (point)))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
541 (if failure-point
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
542 (progn
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
543 (goto-char failure-point)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
544 nil)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
545 t)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
546
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
547 (defun tex-terminate-paragraph (inhibit-validation)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
548 "Insert two newlines, breaking a paragraph for TeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
549 Check for mismatched braces/$'s in paragraph being terminated.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
550 A prefix arg inhibits the checking."
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
551 (interactive "*P")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
552 (or inhibit-validation
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
553 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
554 (tex-validate-region
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
555 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
556 (search-backward "\n\n" nil 'move)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
557 (point))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
558 (point)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
559 (message "Paragraph being closed appears to contain a mismatch"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
560 (insert "\n\n"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
561
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
562 (defun tex-insert-braces ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
563 "Make a pair of braces and be poised to type inside of them."
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
564 (interactive "*")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
565 (insert ?\{)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
566 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
567 (insert ?})))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
568
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
569 ;;; Like tex-insert-braces, but for LaTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
570 (defun tex-latex-block (name)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
571 "Creates a matching pair of lines \\begin{NAME} and \\end{NAME} at point.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
572 Puts point on a blank line between them."
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
573 (interactive
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
574 (prog2
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
575 (barf-if-buffer-read-only)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
576 (list
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
577 (completing-read "LaTeX block name: "
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
578 (mapcar 'list
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
579 (append standard-latex-block-names
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
580 latex-block-names))))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
581 (let ((col (current-column)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
582 (insert (format "\\begin{%s}\n" name))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
583 (indent-to col)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
584 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
585 (insert ?\n)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
586 (indent-to col)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
587 (insert-string (format "\\end{%s}" name))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
588 (if (eobp) (insert ?\n)))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
589
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
590 (defun tex-last-unended-begin ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
591 "Leave point at the beginning of the last \\begin{...} that is unended."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
592 (while (and (re-search-backward "\\(\\\\begin\\s *{\\)\\|\\(\\\\end\\s *{\\)")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
593 (looking-at "\\\\end{"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
594 (tex-last-unended-begin)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
595
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
596 (defun tex-close-latex-block ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
597 "Creates an \\end{...} to match the last unclosed \\begin{...}."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
598 (interactive "*")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
599 (let ((new-line-needed (bolp))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
600 text indentation)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
601 (save-excursion
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
602 (condition-case nil
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
603 (tex-last-unended-begin)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
604 (error (error "Couldn't find unended \\begin")))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
605 (setq indentation (current-column))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
606 (re-search-forward "\\\\begin\\(\\s *{[^}\n]*}\\)")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
607 (setq text (buffer-substring (match-beginning 1) (match-end 1))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
608 (indent-to indentation)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
609 (insert "\\end" text)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
610 (if new-line-needed (insert ?\n))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
611
2576
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
612 (defun tex-compilation-parse-errors ()
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
613 "Parse the current buffer as error messages.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
614 This makes a list of error descriptors, compilation-error-list.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
615 For each source-file, line-number pair in the buffer,
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
616 the source file is read in, and the text location is saved in
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
617 compilation-error-list. The function next-error, assigned to
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
618 \\[next-error], takes the next error off the list and visits its location.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
619
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
620 This function works on TeX compilations only. It is necessary for
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
621 that purpose, since TeX does not put file names on the same line as
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
622 line numbers for the errors."
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
623 (setq compilation-error-list nil)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
624 (message "Parsing error messages...")
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
625 (modify-syntax-entry ?\{ "_")
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
626 (modify-syntax-entry ?\} "_")
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
627 (modify-syntax-entry ?\[ "_")
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
628 (modify-syntax-entry ?\] "_")
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
629 (make-variable-buffer-local 'compilation-error-regexp)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
630 (setq compilation-error-regexp "^l\.[0-9]+ ")
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
631 (let (text-buffer
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
632 last-filename last-linenum)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
633 ;; Don't reparse messages already seen at last parse.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
634 (goto-char compilation-parsing-end)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
635 ;; Don't parse the first two lines as error messages.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
636 ;; This matters for grep.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
637 (if (bobp)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
638 (forward-line 2))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
639 (while (re-search-forward compilation-error-regexp nil t)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
640 (let (linenum filename
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
641 error-marker text-marker)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
642 ;; Extract file name and line number from error message.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
643 ;; Line number is 2 away from beginning of line: "l.23"
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
644 (beginning-of-line)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
645 (goto-char (+ (point) 2))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
646 (setq linenum (read (current-buffer)))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
647 ;; The file is the one that was opened last and is still open.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
648 ;; We need to find the last open parenthesis.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
649 (insert ?\))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
650 (backward-sexp)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
651 (forward-char)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
652 (setq filename (compilation-grab-filename))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
653 ;; Locate the erring file and line.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
654 (if (and (equal filename last-filename)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
655 (= linenum last-linenum))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
656 nil
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
657 (skip-chars-backward "^(")
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
658 (backward-char)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
659 (forward-sexp)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
660 (backward-delete-char 1)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
661 (setq error-marker (point-marker))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
662 ;; text-buffer gets the buffer containing this error's file.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
663 (if (not (equal filename last-filename))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
664 (setq text-buffer
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
665 (and (file-exists-p (setq last-filename filename))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
666 (find-file-noselect filename))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
667 last-linenum 0))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
668 (if text-buffer
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
669 ;; Go to that buffer and find the erring line.
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
670 (save-excursion
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
671 (set-buffer text-buffer)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
672 (if (zerop last-linenum)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
673 (progn
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
674 (goto-char 1)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
675 (setq last-linenum 1)))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
676 (forward-line (- linenum last-linenum))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
677 (setq last-linenum linenum)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
678 (setq text-marker (point-marker))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
679 (setq compilation-error-list
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
680 (cons (list error-marker text-marker)
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
681 compilation-error-list)))))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
682 (forward-line 1)))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
683 (setq compilation-parsing-end (point-max)))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
684 (message "Parsing error messages...done")
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
685 (setq compilation-error-list (nreverse compilation-error-list)))
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
686
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
687 ;;; Invoking TeX in an inferior shell.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
688
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
689 ;;; Why use a shell instead of running TeX directly? Because if TeX
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
690 ;;; gets stuck, the user can switch to the shell window and type at it.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
691
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
692 ;;; The utility functions:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
693
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
694 (defun tex-start-shell ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
695 (save-excursion
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
696 (set-buffer
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
697 (make-comint
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
698 "tex-shell"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
699 (or tex-shell-file-name (getenv "ESHELL") (getenv "SHELL") "/bin/sh")
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
700 nil "-v"))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
701 (let ((proc (get-process "tex-shell")))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
702 (set-process-sentinel proc 'tex-shell-sentinel)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
703 (process-kill-without-query proc)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
704 (setq tex-shell-map (copy-keymap comint-mode-map))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
705 (tex-define-common-keys tex-shell-map)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
706 (use-local-map tex-shell-map)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
707 (run-hooks 'tex-shell-hook)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
708 (while (zerop (buffer-size))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
709 (sleep-for 1)))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
710
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
711 (defun tex-shell-sentinel (proc msg)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
712 (cond ((null (buffer-name (process-buffer proc)))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
713 ;; buffer killed
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
714 (set-process-buffer proc nil)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
715 (tex-delete-last-temp-files))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
716 ((memq (process-status proc) '(signal exit))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
717 (tex-delete-last-temp-files))))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
718
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
719 (defun tex-set-buffer-directory (buffer directory)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
720 "Set BUFFER's default directory to be DIRECTORY."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
721 (setq directory (file-name-as-directory (expand-file-name directory)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
722 (if (not (file-directory-p directory))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
723 (error "%s is not a directory" directory)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
724 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
725 (set-buffer buffer)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
726 (setq default-directory directory))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
727
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
728 (defun tex-send-command (command &optional file background)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
729 "Send COMMAND to tex-shell, substituting optional FILE for *; in background
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
730 if optional BACKGROUND is t. If COMMAND has no *, FILE will be appended,
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
731 preceded by a blank, to COMMAND. If FILE is nil, no substitution will be made
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
732 in COMMAND. COMMAND can be any expression that evaluates to a command string."
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
733 (save-excursion
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
734 (let* ((cmd (eval command))
2265
daf268a98d5e * tex-mode.el (tex-send-command): Fix the command sent so that no
Jim Blandy <jimb@redhat.com>
parents: 1577
diff changeset
735 (star (string-match "\\*" cmd))
daf268a98d5e * tex-mode.el (tex-send-command): Fix the command sent so that no
Jim Blandy <jimb@redhat.com>
parents: 1577
diff changeset
736 (front (substring cmd 0 star))
daf268a98d5e * tex-mode.el (tex-send-command): Fix the command sent so that no
Jim Blandy <jimb@redhat.com>
parents: 1577
diff changeset
737 (back (if star (substring cmd (1+ star)) "")))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
738 (comint-proc-query (get-process "tex-shell")
2265
daf268a98d5e * tex-mode.el (tex-send-command): Fix the command sent so that no
Jim Blandy <jimb@redhat.com>
parents: 1577
diff changeset
739 (concat
daf268a98d5e * tex-mode.el (tex-send-command): Fix the command sent so that no
Jim Blandy <jimb@redhat.com>
parents: 1577
diff changeset
740 (if file (if star (concat front file back)
daf268a98d5e * tex-mode.el (tex-send-command): Fix the command sent so that no
Jim Blandy <jimb@redhat.com>
parents: 1577
diff changeset
741 (concat cmd " " file))
daf268a98d5e * tex-mode.el (tex-send-command): Fix the command sent so that no
Jim Blandy <jimb@redhat.com>
parents: 1577
diff changeset
742 cmd)
daf268a98d5e * tex-mode.el (tex-send-command): Fix the command sent so that no
Jim Blandy <jimb@redhat.com>
parents: 1577
diff changeset
743 (if background "&\n" "\n"))))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
744
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
745 (defun tex-delete-last-temp-files ()
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
746 "Delete any junk files from last temp file."
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
747 (if tex-last-temp-file
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
748 (let* ((dir (file-name-directory tex-last-temp-file))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
749 (list (file-name-all-completions
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
750 (file-name-nondirectory tex-last-temp-file) dir)))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
751 (while list
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
752 (delete-file (concat dir (car list)))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
753 (setq list (cdr list))))))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
754
741
587f7a98341d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 739
diff changeset
755 (add-hook 'kill-emacs-hook 'tex-delete-last-temp-files)
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
756
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
757 ;;; The commands:
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
758
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
759 (defun tex-region (beg end)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
760 "Run TeX on the current region, via a temporary file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
761 The file's name comes from the variable `tex-zap-file' and the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
762 variable `tex-directory' says where to put it.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
763
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
764 If the buffer has a header, the header is given to TeX before the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
765 region itself. The buffer's header is all lines between the strings
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
766 defined by `tex-start-of-header' and `tex-end-of-header' inclusive.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
767 The header must start in the first 100 lines of the buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
768
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
769 The value of `tex-trailer' is given to TeX as input after the region.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
770
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
771 The value of `tex-command' specifies the command to use to run TeX."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
772 (interactive "r")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
773 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
774 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
775 (tex-start-shell))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
776 (or tex-zap-file
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
777 (setq tex-zap-file (tex-generate-zap-file-name)))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
778 (let* ((temp-buffer (get-buffer-create " TeX-Output-Buffer"))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
779 ; Temp file will be written and TeX will be run in zap-directory.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
780 ; If the TEXINPUTS file has relative directories or if the region has
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
781 ; \input of files, this must be the same directory as the file for
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
782 ; TeX to access the correct inputs. That's why it's safest if
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
783 ; tex-directory is ".".
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
784 (zap-directory
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
785 (file-name-as-directory (expand-file-name tex-directory)))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
786 (tex-out-file (concat zap-directory tex-zap-file)))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
787 (tex-delete-last-temp-files)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
788 ;; Write the new temp file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
789 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
790 (save-restriction
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
791 (widen)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
792 (goto-char (point-min))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
793 (forward-line 100)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
794 (let ((search-end (point))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
795 (hbeg (point-min)) (hend (point-min))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
796 (default-directory zap-directory))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
797 (goto-char (point-min))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
798 ;; Initialize the temp file with either the header or nothing
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
799 (if (search-forward tex-start-of-header search-end t)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
800 (progn
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
801 (beginning-of-line)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
802 (setq hbeg (point)) ;mark beginning of header
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
803 (if (search-forward tex-end-of-header nil t)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
804 (progn (forward-line 1)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
805 (setq hend (point))) ;mark end of header
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
806 (setq hbeg (point-min))))) ;no header
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
807 (write-region (min hbeg beg) hend
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
808 (concat tex-out-file ".tex") nil nil)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
809 (write-region (max beg hend) end (concat tex-out-file ".tex") t nil))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
810 (let ((local-tex-trailer tex-trailer))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
811 (set-buffer temp-buffer)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
812 (erase-buffer)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
813 ;; make sure trailer isn't hidden by a comment
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
814 (insert-string "\n")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
815 (if local-tex-trailer (insert-string local-tex-trailer))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
816 (tex-set-buffer-directory temp-buffer zap-directory)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
817 (write-region (point-min) (point-max)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
818 (concat tex-out-file ".tex") t nil))))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
819 ;; Record the file name to be deleted afterward.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
820 (setq tex-last-temp-file tex-out-file)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
821 (tex-send-command tex-shell-cd-command zap-directory)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
822 (tex-send-command tex-command tex-out-file)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
823 (setq tex-print-file tex-out-file)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
824 (setq tex-last-buffer-texed (current-buffer))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
825
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
826 (defun tex-buffer ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
827 "Run TeX on current buffer. See \\[tex-region] for more information.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
828 Does not save the buffer, so it's useful for trying experimental versions.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
829 See \\[tex-file] for an alternative."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
830 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
831 (tex-region (point-min) (point-max)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
832
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
833 (defun tex-file ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
834 "Prompt to save all buffers and run TeX (or LaTeX) on current buffer's file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
835 This function is more useful than \\[tex-buffer] when you need the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
836 `.aux' file of LaTeX to have the correct name."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
837 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
838 (let ((tex-out-file
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
839 (if (buffer-file-name)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
840 (file-name-nondirectory (buffer-file-name))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
841 (error "Buffer does not seem to be associated with any file")))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
842 (file-dir (file-name-directory (buffer-file-name))))
758
f8688580137c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 741
diff changeset
843 (if tex-offer-save
741
587f7a98341d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 739
diff changeset
844 (save-some-buffers))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
845 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
846 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
847 (tex-start-shell))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
848 (tex-send-command tex-shell-cd-command file-dir)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
849 (tex-send-command tex-command tex-out-file))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
850 (setq tex-last-buffer-texed (current-buffer))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
851 (setq tex-print-file (buffer-file-name)))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
852
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
853 (defun tex-generate-zap-file-name ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
854 "Generate a unique name suitable for use as a file name."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
855 ;; Include the shell process number and host name
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
856 ;; in case there are multiple shells (for same or different user).
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
857 (format "#tz%d%s"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
858 (process-id (get-buffer-process "*tex-shell*"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
859 (tex-strip-dots (system-name))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
860
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
861 (defun tex-strip-dots (s)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
862 (setq s (copy-sequence s))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
863 (while (string-match "\\." s)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
864 (aset s (match-beginning 0) ?-))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
865 s)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
866
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
867 ;; This will perhaps be useful for modifying TEXINPUTS.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
868 ;; Expand each file name, separated by colons, in the string S.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
869 (defun tex-expand-files (s)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
870 (let (elts (start 0))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
871 (while (string-match ":" s start)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
872 (setq elts (cons (substring s start (match-beginning 0)) elts))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
873 (setq start (match-end 0)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
874 (or (= start 0)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
875 (setq elts (cons (substring s start) elts)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
876 (mapconcat 'expand-file-name (nreverse elts) ":")))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
877
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
878 (defun tex-shell-running ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
879 (and (get-process "tex-shell")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
880 (eq (process-status (get-process "tex-shell")) 'run)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
881
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
882 (defun tex-kill-job ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
883 "Kill the currently running TeX job."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
884 (interactive)
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
885 (quit-process (get-process "tex-shell") t))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
886
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
887 (defun tex-recenter-output-buffer (linenum)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
888 "Redisplay buffer of TeX job output so that most recent output can be seen.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
889 The last line of the buffer is displayed on
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
890 line LINE of the window, or centered if LINE is nil."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
891 (interactive "P")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
892 (let ((tex-shell (get-buffer "*tex-shell*"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
893 (old-buffer (current-buffer)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
894 (if (null tex-shell)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
895 (message "No TeX output buffer")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
896 (pop-to-buffer tex-shell)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
897 (bury-buffer tex-shell)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
898 (goto-char (point-max))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
899 (recenter (if linenum
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
900 (prefix-numeric-value linenum)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
901 (/ (window-height) 2)))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
902 (pop-to-buffer old-buffer))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
903
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
904 (defun tex-print (&optional alt)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
905 "Print the .dvi file made by \\[tex-region], \\[tex-buffer] or \\[tex-file].
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 957
diff changeset
906 Runs the shell command defined by `tex-dvi-print-command'. If prefix argument
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 957
diff changeset
907 is provided, use the alternative command, `tex-alt-dvi-print-command'."
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
908 (interactive "P")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
909 (let ((print-file-name-dvi (tex-append tex-print-file ".dvi"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
910 test-name)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
911 (if (and (not (equal (current-buffer) tex-last-buffer-texed))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
912 (file-newer-than-file-p
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
913 (setq test-name (tex-append (buffer-file-name) ".dvi"))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
914 print-file-name-dvi))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
915 (setq print-file-name-dvi test-name))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
916 (if (not (file-exists-p print-file-name-dvi))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
917 (error "No appropriate `.dvi' file could be found")
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
918 (tex-send-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
919 (if alt tex-alt-dvi-print-command tex-dvi-print-command)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
920 print-file-name-dvi t))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
921
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
922 (defun tex-view ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
923 "Preview the last `.dvi' file made by running TeX under Emacs.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
924 This means, made using \\[tex-region], \\[tex-buffer] or \\[tex-file].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
925 The variable `tex-dvi-view-command' specifies the shell command for preview."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
926 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
927 (let ((tex-dvi-print-command tex-dvi-view-command))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
928 (tex-print)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
929
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
930 (defun tex-append (file-name suffix)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
931 "Append to FILENAME the suffix SUFFIX, using same algorithm TeX uses.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
932 Scans for the first (not last) period.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
933 No period is retained immediately before SUFFIX,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
934 so normally SUFFIX starts with one."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
935 (if (stringp file-name)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
936 (let ((file (file-name-nondirectory file-name)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
937 (concat (file-name-directory file-name)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
938 (substring file 0
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
939 (string-match "\\." file))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
940 suffix))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
941 " "))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
942
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
943 (defun tex-show-print-queue ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
944 "Show the print queue that \\[tex-print] put your job on.
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 957
diff changeset
945 Runs the shell command defined by `tex-show-queue-command'."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
946 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
947 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
948 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
949 (tex-start-shell))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
950 (tex-send-command tex-show-queue-command))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
951
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
952 (defun tex-bibtex-file ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
953 "Run BibTeX on the current buffer's file."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
954 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
955 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
956 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
957 (tex-start-shell))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
958 (let ((tex-out-file
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
959 (tex-append (file-name-nondirectory (buffer-file-name)) ""))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
960 (file-dir (file-name-directory (buffer-file-name))))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
961 (tex-send-command tex-shell-cd-command file-dir)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
962 (tex-send-command bibtex-command tex-out-file)))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
963
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
964 (run-hooks 'tex-mode-load-hook)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
965
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 269
diff changeset
966 (provide 'tex-mode)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 269
diff changeset
967
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
968 ;;; tex-mode.el ends here
741
587f7a98341d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 739
diff changeset
969