annotate lisp/textmodes/tex-mode.el @ 22416:a517da228cb9

(uce-message-text): Change the text of message that is sent. (uce-reply-to-uce): Do not assume all Received lines are on top of message without headers like `From' or `To'. (uce-reply-to-uce): Parse Received lines better. (uce-mail-reader): New user option. (uce-reply-to uce): Add support for Gnus. User is supposed to set uce-mail-reader to `gnus' if using Gnus to read mail. The default is to assume Rmail. There's no magic to determine what mail reader is currently active, so it is not possible to mix using uce.el with Rmail and Gnus.
author Richard M. Stallman <rms@gnu.org>
date Tue, 09 Jun 1998 23:40:56 +0000
parents a4324fe3e21e
children 4fa39e6af756
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
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
3 ;; Copyright (C) 1985, 86, 89, 92, 94, 95, 96, 1997
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
4 ;; Free Software Foundation, Inc.
840
113281b361ec *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
5
10215
7690653b9231 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 10204
diff changeset
6 ;; Maintainer: FSF
814
38b2499cb3e9 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
7 ;; Keywords: tex
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 758
diff changeset
8
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
9 ;; Contributions over the years by William F. Schelter, Dick King,
10215
7690653b9231 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 10204
diff changeset
10 ;; Stephen Gildea, Michael Prange, Jacob Gore, and Edward M. Reingold.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
11
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
12 ;; This file is part of GNU Emacs.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
13
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
14 ;; GNU Emacs is free software; you can redistribute it and/or modify
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
15 ;; 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
16 ;; the Free Software Foundation; either version 2, or (at your option)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
17 ;; any later version.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
18
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
19 ;; GNU Emacs is distributed in the hope that it will be useful,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
22 ;; GNU General Public License for more details.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
23
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
24 ;; You should have received a copy of the GNU General Public License
14383
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
25 ;; along with GNU Emacs; see the file COPYING. If not, write to the
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
26 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
27 ;; Boston, MA 02111-1307, USA.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
28
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 758
diff changeset
29 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 758
diff changeset
30
6632
652dc23b83fd (tex-start-shell): Use shell-mode-map (instead of comint-mode-map) because
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 6479
diff changeset
31 (require 'shell)
2576
48318133e7a6 (tex-compilation-parse-errors): Added. At the moment, this would have
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2571
diff changeset
32 (require 'compile)
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
33
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
34 (defgroup tex-file nil
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
35 "TeX files and directories"
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
36 :prefix "tex-"
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
37 :group 'tex)
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
38
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
39 (defgroup tex-run nil
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
40 "Running external commands from TeX mode"
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
41 :prefix "tex-"
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
42 :group 'tex)
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
43
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
44 (defgroup tex-view nil
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
45 "Viewing and printing TeX files"
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
46 :prefix "tex-"
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
47 :group 'tex)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
48
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
49 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
50 (defcustom tex-shell-file-name nil
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
51 "*If non-nil, the shell file name to run in the subshell used to run TeX."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
52 :type '(choice (const :tag "None" nil)
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
53 string)
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
54 :group 'tex-run)
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
55
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
56 ;;;###autoload
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
57 (defcustom tex-directory "."
15916
61e90a3e66aa (tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15644
diff changeset
58 "*Directory in which temporary files are written.
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
59 You can make this `/tmp' if your TEXINPUTS has no relative directories in it
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
60 and you don't try to apply \\[tex-region] or \\[tex-buffer] when there are
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
61 `\\input' commands with relative directories."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
62 :type 'directory
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
63 :group 'tex-file)
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
64
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
65 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
66 (defcustom tex-first-line-header-regexp nil
16777
b655268ba44f (tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16493
diff changeset
67 "Regexp for matching a first line which `tex-region' should include.
b655268ba44f (tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16493
diff changeset
68 If this is non-nil, it should be a regular expression string;
b655268ba44f (tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16493
diff changeset
69 if it matches the first line of the file,
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
70 `tex-region' always includes the first line in the TeX run."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
71 :type '(choice (const :tag "None" nil)
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
72 regexp)
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
73 :group 'tex-file)
16777
b655268ba44f (tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16493
diff changeset
74
b655268ba44f (tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16493
diff changeset
75 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
76 (defcustom tex-main-file nil
15916
61e90a3e66aa (tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15644
diff changeset
77 "*The main TeX source file which includes this buffer's file.
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
78 The command `tex-buffer' runs TeX on `tex-main-file'if that is non-nil."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
79 :type '(choice (const :tag "None" nil)
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
80 file)
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
81 :group 'tex-file)
15916
61e90a3e66aa (tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15644
diff changeset
82
61e90a3e66aa (tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15644
diff changeset
83 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
84 (defcustom tex-offer-save t
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
85 "*If non-nil, ask about saving modified buffers before \\[tex-file] is run."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
86 :type 'boolean
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
87 :group 'tex-file)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
88
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
89 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
90 (defcustom tex-run-command "tex"
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
91 "*Command used to run TeX subjob.
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
92 If this string contains an asterisk (`*'), that is replaced by the file name;
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
93 otherwise, the file name, preceded by blank, is added at the end."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
94 :type 'string
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
95 :group 'tex-run)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
96
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
97 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
98 (defcustom latex-run-command "latex"
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
99 "*Command used to run LaTeX subjob.
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
100 If this string contains an asterisk (`*'), that is replaced by the file name;
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
101 otherwise, the file name, preceded by blank, is added at the end."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
102 :type 'string
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
103 :group 'tex-run)
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
104
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
105 (defvar standard-latex-block-names
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
106 '("abstract" "array" "center" "description"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
107 "displaymath" "document" "enumerate" "eqnarray"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
108 "eqnarray*" "equation" "figure" "figure*"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
109 "flushleft" "flushright" "itemize" "letter"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
110 "list" "minipage" "picture" "quotation"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
111 "quote" "slide" "sloppypar" "tabbing"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
112 "table" "table*" "tabular" "tabular*"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
113 "thebibliography" "theindex*" "titlepage" "trivlist"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
114 "verbatim" "verbatim*" "verse")
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
115 "Standard LaTeX block names.")
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
116
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
117 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
118 (defcustom latex-block-names nil
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
119 "*User defined LaTeX block names.
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
120 Combined with `standard-latex-block-names' for minibuffer completion."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
121 :type '(repeat string)
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
122 :group 'tex-run)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
123
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
124 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
125 (defcustom slitex-run-command "slitex"
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
126 "*Command used to run SliTeX subjob.
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
127 If this string contains an asterisk (`*'), that is replaced by the file name;
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
128 otherwise, the file name, preceded by blank, is added at the end."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
129 :type 'string
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
130 :group 'tex-run)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
131
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
132 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
133 (defcustom tex-bibtex-command "bibtex"
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
134 "*Command used by `tex-bibtex-file' to gather bibliographic data.
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
135 If this string contains an asterisk (`*'), that is replaced by the file name;
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
136 otherwise, the file name, preceded by blank, is added at the end."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
137 :type 'string
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
138 :group 'tex-run)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
139
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
140 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
141 (defcustom tex-dvi-print-command "lpr -d"
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
142 "*Command used by \\[tex-print] to print a .dvi file.
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
143 If this string contains an asterisk (`*'), that is replaced by the file name;
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
144 otherwise, the file name, preceded by blank, is added at the end."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
145 :type 'string
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
146 :group 'tex-view)
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
147
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
148 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
149 (defcustom tex-alt-dvi-print-command "lpr -d"
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
150 "*Command used by \\[tex-print] with a prefix arg to print a .dvi file.
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
151 If this string contains an asterisk (`*'), that is replaced by the file name;
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
152 otherwise, the file name, preceded by blank, is added at the end.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
153
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
154 If two printers are not enough of a choice, you can set the variable
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
155 `tex-alt-dvi-print-command' to an expression that asks what you want;
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
156 for example,
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
157
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
158 (setq tex-alt-dvi-print-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
159 '(format \"lpr -P%s\" (read-string \"Use printer: \")))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
160
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
161 would tell \\[tex-print] with a prefix argument to ask you which printer to
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
162 use."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
163 :type '(choice (string :tag "Command")
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
164 (sexp :tag "Expression"))
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
165 :group 'tex-view)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
166
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
167 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
168 (defcustom tex-dvi-view-command nil
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
169 "*Command used by \\[tex-view] to display a `.dvi' file.
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
170 If this string contains an asterisk (`*'), that is replaced by the file name;
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
171 otherwise, the file name, preceded by blank, is added at the end.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
172
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
173 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
174 window system being used. For example,
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
175
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
176 (setq tex-dvi-view-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
177 (if (eq window-system 'x) \"xdvi\" \"dvi2tty * | cat -s\"))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
178
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
179 would tell \\[tex-view] to use xdvi under X windows and to use dvi2tty
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
180 otherwise."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
181 :type '(choice (const nil) string)
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
182 :group 'tex-view)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
183
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
184 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
185 (defcustom tex-show-queue-command "lpq"
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
186 "*Command used by \\[tex-show-print-queue] to show the print queue.
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
187 Should show the queue(s) that \\[tex-print] puts jobs on."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
188 :type 'string
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
189 :group 'tex-view)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
190
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
191 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
192 (defcustom tex-default-mode 'plain-tex-mode
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
193 "*Mode to enter for a new file that might be either TeX or LaTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
194 This variable is used when it can't be determined whether the file
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
195 is plain TeX or LaTeX or what because the file contains no commands.
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
196 Normally set to either `plain-tex-mode' or `latex-mode'."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
197 :type 'function
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
198 :group 'tex)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
199
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
200 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
201 (defcustom tex-open-quote "``"
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
202 "*String inserted by typing \\[tex-insert-quote] to open a quotation."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
203 :type 'string
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
204 :group 'tex)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
205
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
206 ;;;###autoload
17435
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
207 (defcustom tex-close-quote "''"
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
208 "*String inserted by typing \\[tex-insert-quote] to close a quotation."
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
209 :type 'string
b104a6fb7fa3 Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 16807
diff changeset
210 :group 'tex)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
211
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
212 (defvar tex-last-temp-file nil
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
213 "Latest temporary file generated by \\[tex-region] and \\[tex-buffer].
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
214 Deleted when the \\[tex-region] or \\[tex-buffer] is next run, or when the
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
215 tex shell terminates.")
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
216
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
217 (defvar tex-command nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
218 "Command to run TeX.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
219 The name of the file, preceded by a blank, will be added to this string.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
220
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
221 (defvar tex-trailer nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
222 "String appended after the end of a region sent to TeX by \\[tex-region].")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
223
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
224 (defvar tex-start-of-header nil
13248
a7e83f7eb499 (tex-start-of-header): Now a regexp.
Richard M. Stallman <rms@gnu.org>
parents: 12704
diff changeset
225 "Regular expression used by \\[tex-region] to find start of file's header.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
226
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
227 (defvar tex-end-of-header nil
13248
a7e83f7eb499 (tex-start-of-header): Now a regexp.
Richard M. Stallman <rms@gnu.org>
parents: 12704
diff changeset
228 "Regular expression used by \\[tex-region] to find end of file's header.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
229
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
230 (defvar tex-shell-cd-command "cd"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
231 "Command to give to shell running TeX to change directory.
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
232 The value of `tex-directory' is appended to this, separated by a space.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
233
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
234 (defvar tex-zap-file nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
235 "Temporary file name used for text being sent as input to TeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
236 Should be a simple file name with no extension or directory specification.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
237
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
238 (defvar tex-last-buffer-texed nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
239 "Buffer which was last TeXed.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
240
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
241 (defvar tex-print-file nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
242 "File name that \\[tex-print] prints.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
243 Set by \\[tex-region], \\[tex-buffer], and \\[tex-file].")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
244
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
245 (defvar tex-mode-syntax-table nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
246 "Syntax table used while in TeX mode.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
247
18393
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
248 (defcustom latex-imenu-indent-string "."
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
249 "*String to add repeated in front of nested sectional units for Imenu.
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
250 An alternative value is \" . \", if you use a font with a narrow period."
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
251 :type 'string
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
252 :group 'tex)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
253
15240
21998d33460f (latex-imenu-create-index):
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
254 (defun latex-imenu-create-index ()
21998d33460f (latex-imenu-create-index):
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
255 "Generates an alist for imenu from a LaTeX buffer."
18393
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
256 (let (i0 menu case-fold-search)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
257 (save-excursion
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
258 ;; Find the top-most level in this file but don't allow it to be
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
259 ;; any deeper than "section" (which is top-level in an article).
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
260 (goto-char (point-min))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
261 (if (search-forward-regexp "\\\\part\\*?[ \t]*{" nil t)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
262 (setq i0 0)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
263 (if (search-forward-regexp "\\\\chapter\\*?[ \t]*{" nil t)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
264 (setq i0 1)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
265 (setq i0 2)))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
266
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
267 ;; Look for chapters and sections.
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
268 (goto-char (point-min))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
269 (while (search-forward-regexp
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
270 "\\\\\\(part\\|chapter\\|section\\|subsection\\|\
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
271 subsubsection\\|paragraph\\|subparagraph\\)\\*?[ \t]*{" nil t)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
272 (let ((start (match-beginning 0))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
273 (here (point))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
274 (i (cdr (assoc (buffer-substring-no-properties
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
275 (match-beginning 1)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
276 (match-end 1))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
277 '(("part" . 0) ("chapter" . 1)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
278 ("section" . 2) ("subsection" . 3)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
279 ("subsubsection" . 4)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
280 ("paragraph" . 5) ("subparagraph" . 6))))))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
281 (backward-char 1)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
282 (condition-case err
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
283 (progn
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
284 ;; Using sexps allows some use of matching {...} inside
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
285 ;; titles.
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
286 (forward-sexp 1)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
287 (setq menu
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
288 (cons (cons (concat (apply 'concat
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
289 (make-list
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
290 (max 0 (- i i0))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
291 latex-imenu-indent-string))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
292 (buffer-substring-no-properties
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
293 here (1- (point))))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
294 start)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
295 menu))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
296 )
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
297 (error nil))))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
298
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
299 ;; Look for included material.
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
300 (goto-char (point-min))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
301 (while (search-forward-regexp
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
302 "\\\\\\(include\\|input\\|verbatiminput\\|bibliography\\)\
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
303 [ \t]*{\\([^}\n]+\\)}"
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
304 nil t)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
305 (setq menu
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
306 (cons (cons (concat "<<" (buffer-substring-no-properties
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
307 (match-beginning 2)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
308 (match-end 2))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
309 (if (= (char-after (match-beginning 1)) ?b)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
310 ".bbl"
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
311 ".tex"))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
312 (match-beginning 0))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
313 menu)))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
314
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
315 ;; Look for \frontmatter, \mainmatter, \backmatter, and \appendix.
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
316 (goto-char (point-min))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
317 (while (search-forward-regexp
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
318 "\\\\\\(frontmatter\\|mainmatter\\|backmatter\\|appendix\\)\\b"
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
319 nil t)
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
320 (setq menu
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
321 (cons (cons "--" (match-beginning 0))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
322 menu)))
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
323
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
324 ;; Sort in increasing buffer position order.
f34e9defc58c (latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents: 17435
diff changeset
325 (sort menu (function (lambda (a b) (< (cdr a) (cdr b))))))))
12704
0b36e50fb5af (latex-imenu-generic-expression): Var defined.
Karl Heuer <kwzh@gnu.org>
parents: 11617
diff changeset
326
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
327 (defun tex-define-common-keys (keymap)
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
328 "Define the keys that we want defined both in TeX mode and in the TeX shell."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
329 (define-key keymap "\C-c\C-k" 'tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
330 (define-key keymap "\C-c\C-l" 'tex-recenter-output-buffer)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
331 (define-key keymap "\C-c\C-q" 'tex-show-print-queue)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
332 (define-key keymap "\C-c\C-p" 'tex-print)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
333 (define-key keymap "\C-c\C-v" 'tex-view)
4900
be43750c20d2 (tex-define-common-keys): Define menu items.
Richard M. Stallman <rms@gnu.org>
parents: 4768
diff changeset
334
be43750c20d2 (tex-define-common-keys): Define menu items.
Richard M. Stallman <rms@gnu.org>
parents: 4768
diff changeset
335 (define-key keymap [menu-bar tex] (cons "TeX" (make-sparse-keymap "TeX")))
be43750c20d2 (tex-define-common-keys): Define menu items.
Richard M. Stallman <rms@gnu.org>
parents: 4768
diff changeset
336
be43750c20d2 (tex-define-common-keys): Define menu items.
Richard M. Stallman <rms@gnu.org>
parents: 4768
diff changeset
337 (define-key keymap [menu-bar tex tex-kill-job] '("Tex Kill" . tex-kill-job))
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
338 (define-key keymap [menu-bar tex tex-recenter-output-buffer]
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
339 '("Tex Recenter" . tex-recenter-output-buffer))
4900
be43750c20d2 (tex-define-common-keys): Define menu items.
Richard M. Stallman <rms@gnu.org>
parents: 4768
diff changeset
340 (define-key keymap [menu-bar tex tex-show-print-queue]
be43750c20d2 (tex-define-common-keys): Define menu items.
Richard M. Stallman <rms@gnu.org>
parents: 4768
diff changeset
341 '("Show Print Queue" . tex-show-print-queue))
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
342 (define-key keymap [menu-bar tex tex-alt-print]
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
343 '("Tex Print (alt printer)" . tex-alt-print))
4900
be43750c20d2 (tex-define-common-keys): Define menu items.
Richard M. Stallman <rms@gnu.org>
parents: 4768
diff changeset
344 (define-key keymap [menu-bar tex tex-print] '("Tex Print" . tex-print))
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
345 (define-key keymap [menu-bar tex tex-view] '("Tex View" . tex-view))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
346 )
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
347
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
348 (defvar tex-mode-map nil "Keymap for TeX mode.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
349
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
350 (if tex-mode-map
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
351 nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
352 (setq tex-mode-map (make-sparse-keymap))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
353 (tex-define-common-keys tex-mode-map)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
354 (define-key tex-mode-map "\"" 'tex-insert-quote)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
355 (define-key tex-mode-map "\n" 'tex-terminate-paragraph)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
356 (define-key tex-mode-map "\C-c}" 'up-list)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
357 (define-key tex-mode-map "\C-c{" 'tex-insert-braces)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
358 (define-key tex-mode-map "\C-c\C-r" 'tex-region)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
359 (define-key tex-mode-map "\C-c\C-b" 'tex-buffer)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
360 (define-key tex-mode-map "\C-c\C-f" 'tex-file)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
361 (define-key tex-mode-map "\C-c\C-i" 'tex-bibtex-file)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
362 (define-key tex-mode-map "\C-c\C-o" 'tex-latex-block)
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
363 (define-key tex-mode-map "\C-c\C-e" 'tex-close-latex-block)
7297
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
364 (define-key tex-mode-map "\C-c\C-u" 'tex-goto-last-unclosed-latex-block)
10296
c58e6bb97038 (tex-mode-map): Add BibTeX File menu item.
Richard M. Stallman <rms@gnu.org>
parents: 10215
diff changeset
365 (define-key tex-mode-map [menu-bar tex tex-bibtex-file]
c58e6bb97038 (tex-mode-map): Add BibTeX File menu item.
Richard M. Stallman <rms@gnu.org>
parents: 10215
diff changeset
366 '("BibTeX File" . tex-bibtex-file))
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
367 (define-key tex-mode-map [menu-bar tex tex-validate-region]
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
368 '("Validate Region" . tex-validate-region))
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
369 (define-key tex-mode-map [menu-bar tex validate-tex-buffer]
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
370 '("Validate Buffer" . validate-tex-buffer))
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
371 (define-key tex-mode-map [menu-bar tex tex-region]
10296
c58e6bb97038 (tex-mode-map): Add BibTeX File menu item.
Richard M. Stallman <rms@gnu.org>
parents: 10215
diff changeset
372 '("TeX Region" . tex-region))
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
373 (define-key tex-mode-map [menu-bar tex tex-buffer]
10296
c58e6bb97038 (tex-mode-map): Add BibTeX File menu item.
Richard M. Stallman <rms@gnu.org>
parents: 10215
diff changeset
374 '("TeX Buffer" . tex-buffer))
c58e6bb97038 (tex-mode-map): Add BibTeX File menu item.
Richard M. Stallman <rms@gnu.org>
parents: 10215
diff changeset
375 (define-key tex-mode-map [menu-bar tex tex-file] '("TeX File" . tex-file)))
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
376
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
377 (put 'tex-region 'menu-enable 'mark-active)
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
378 (put 'tex-validate-region 'menu-enable 'mark-active)
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
379 (put 'tex-print 'menu-enable '(stringp tex-print-file))
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
380 (put 'tex-alt-print 'menu-enable '(stringp tex-print-file))
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
381 (put 'tex-view 'menu-enable '(stringp tex-print-file))
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
382 (put 'tex-recenter-output-buffer 'menu-enable '(get-buffer "*tex-shell*"))
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
383 (put 'tex-kill-job 'menu-enable '(tex-shell-running))
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
384
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
385
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
386 (defvar tex-shell-map nil
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
387 "Keymap for the TeX shell.
10197
66681eddfd70 Make keymap for tex-shell the shell-mode-map.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 10190
diff changeset
388 Inherits `shell-mode-map' with a few additions.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
389
14383
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
390 (defvar tex-face-alist
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
391 '((bold . "{\\bf ")
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
392 (italic . "{\\it ")
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
393 (bold-italic . "{\\bi ") ; hypothetical
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
394 (underline . "\\underline{")
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
395 (default . "{\\rm "))
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
396 "Alist of face and TeX font name for facemenu.")
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
397
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
398 (defvar tex-latex-face-alist
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
399 `((italic . "{\\em ")
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
400 ,@tex-face-alist)
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
401 "Alist of face and LaTeX font name for facemenu.")
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
402
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
403
9450
af39d29d1386 (compare-windows-whitespace): Eliminate initial value.
Richard M. Stallman <rms@gnu.org>
parents: 8890
diff changeset
404 (defvar compare-windows-whitespace) ; Pacify the byte-compiler
2588
b0a1846fe3b8 Doc fixes. Also a few teaks to pacify the byte-compiler.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2576
diff changeset
405
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
406 ;;; This would be a lot simpler if we just used a regexp search,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
407 ;;; but then it would be too slow.
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 85
diff changeset
408 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
409 (defun tex-mode ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
410 "Major mode for editing files of input for TeX, LaTeX, or SliTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
411 Tries to determine (by looking at the beginning of the file) whether
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
412 this file is for plain TeX, LaTeX, or SliTeX and calls `plain-tex-mode',
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
413 `latex-mode', or `slitex-mode', respectively. If it cannot be determined,
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
414 such as if there are no commands in the file, the value of `tex-default-mode'
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
415 says which mode to use."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
416 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
417 (let (mode slash comment)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
418 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
419 (goto-char (point-min))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
420 (while (and (setq slash (search-forward "\\" nil t))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
421 (setq comment (let ((search-end (point)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
422 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
423 (beginning-of-line)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
424 (search-forward "%" search-end t))))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
425 (if (and slash (not comment))
10325
070c1f54707b (tex-mode): Recognize \NeedsTeXFormat{LaTeX2e}.
Richard M. Stallman <rms@gnu.org>
parents: 10318
diff changeset
426 (setq mode (if (looking-at "documentstyle\\|documentclass\\|begin\\b\\|NeedsTeXFormat{LaTeX")
8553
090fb6dea9dd (tex-mode): Allow for documentclass options when checking for SliTeX.
Richard M. Stallman <rms@gnu.org>
parents: 8474
diff changeset
427 (if (looking-at
090fb6dea9dd (tex-mode): Allow for documentclass options when checking for SliTeX.
Richard M. Stallman <rms@gnu.org>
parents: 8474
diff changeset
428 "document\\(style\\|class\\)\\(\\[.*\\]\\)?{slides}")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
429 'slitex-mode
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
430 'latex-mode)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
431 'plain-tex-mode))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
432 (if mode (funcall mode)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
433 (funcall tex-default-mode))))
2598
2189edb30955 Removed spurious comment (obsoleted by ;;;###autoload).
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2588
diff changeset
434
269
2ca8cdb96a9f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 256
diff changeset
435 ;;;###autoload
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
436 (defalias 'TeX-mode 'tex-mode)
269
2ca8cdb96a9f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 256
diff changeset
437 ;;;###autoload
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
438 (defalias 'LaTeX-mode 'latex-mode)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
439
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 85
diff changeset
440 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
441 (defun plain-tex-mode ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
442 "Major mode for editing files of input for plain TeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
443 Makes $ and } display the characters they match.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
444 Makes \" insert `` when it seems to be the beginning of a quotation,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
445 and '' when it appears to be the end; it inserts \" only after a \\.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
446
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
447 Use \\[tex-region] to run TeX on the current region, plus a \"header\"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
448 copied from the top of the file (containing macro definitions, etc.),
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
449 running TeX under a special subshell. \\[tex-buffer] does the whole buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
450 \\[tex-file] saves the buffer and then processes the file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
451 \\[tex-print] prints the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
452 \\[tex-view] previews the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
453 \\[tex-bibtex-file] runs bibtex on the file of the current buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
454
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
455 Use \\[validate-tex-buffer] to check buffer for paragraphs containing
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
456 mismatched $'s or braces.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
457
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
458 Special commands:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
459 \\{tex-mode-map}
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
460
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
461 Mode variables:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
462 tex-run-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
463 Command string used by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
464 tex-directory
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
465 Directory in which to create temporary files for TeX jobs
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
466 run by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
467 tex-dvi-print-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
468 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
469 tex-alt-dvi-print-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
470 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
471 argument) to print a .dvi file.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
472 tex-dvi-view-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
473 Command string used by \\[tex-view] to preview a .dvi file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
474 tex-show-queue-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
475 Command string used by \\[tex-show-print-queue] to show the print
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
476 queue that \\[tex-print] put your job on.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
477
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
478 Entering Plain-tex mode runs the hook `text-mode-hook', then the hook
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
479 `tex-mode-hook', and finally the hook `plain-tex-mode-hook'. When the
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
480 special subshell is initiated, the hook `tex-shell-hook' is run."
2588
b0a1846fe3b8 Doc fixes. Also a few teaks to pacify the byte-compiler.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2576
diff changeset
481
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
482 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
483 (tex-common-initialization)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
484 (setq mode-name "TeX")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
485 (setq major-mode 'plain-tex-mode)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
486 (setq tex-command tex-run-command)
13248
a7e83f7eb499 (tex-start-of-header): Now a regexp.
Richard M. Stallman <rms@gnu.org>
parents: 12704
diff changeset
487 (setq tex-start-of-header "%\\*\\*start of header")
a7e83f7eb499 (tex-start-of-header): Now a regexp.
Richard M. Stallman <rms@gnu.org>
parents: 12704
diff changeset
488 (setq tex-end-of-header "%\\*\\*end of header")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
489 (setq tex-trailer "\\bye\n")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
490 (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
491 ;;;###autoload
2571
b65cf676a09b All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
492 (defalias 'plain-TeX-mode 'plain-tex-mode)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
493
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 85
diff changeset
494 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
495 (defun latex-mode ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
496 "Major mode for editing files of input for LaTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
497 Makes $ and } display the characters they match.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
498 Makes \" insert `` when it seems to be the beginning of a quotation,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
499 and '' when it appears to be the end; it inserts \" only after a \\.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
500
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
501 Use \\[tex-region] to run LaTeX on the current region, plus the preamble
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
502 copied from the top of the file (containing \\documentstyle, etc.),
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
503 running LaTeX under a special subshell. \\[tex-buffer] does the whole buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
504 \\[tex-file] saves the buffer and then processes the file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
505 \\[tex-print] prints the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
506 \\[tex-view] previews the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
507 \\[tex-bibtex-file] runs bibtex on the file of the current buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
508
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
509 Use \\[validate-tex-buffer] to check buffer for paragraphs containing
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
510 mismatched $'s or braces.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
511
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
512 Special commands:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
513 \\{tex-mode-map}
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
514
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
515 Mode variables:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
516 latex-run-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
517 Command string used by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
518 tex-directory
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
519 Directory in which to create temporary files for LaTeX jobs
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
520 run by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
521 tex-dvi-print-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
522 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
523 tex-alt-dvi-print-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
524 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
525 argument) to print a .dvi file.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
526 tex-dvi-view-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
527 Command string used by \\[tex-view] to preview a .dvi file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
528 tex-show-queue-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
529 Command string used by \\[tex-show-print-queue] to show the print
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
530 queue that \\[tex-print] put your job on.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
531
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
532 Entering Latex mode runs the hook `text-mode-hook', then
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
533 `tex-mode-hook', and finally `latex-mode-hook'. When the special
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
534 subshell is initiated, `tex-shell-hook' is run."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
535 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
536 (tex-common-initialization)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
537 (setq mode-name "LaTeX")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
538 (setq major-mode 'latex-mode)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
539 (setq tex-command latex-run-command)
13248
a7e83f7eb499 (tex-start-of-header): Now a regexp.
Richard M. Stallman <rms@gnu.org>
parents: 12704
diff changeset
540 (setq tex-start-of-header "\\\\documentstyle\\|\\\\documentclass")
a7e83f7eb499 (tex-start-of-header): Now a regexp.
Richard M. Stallman <rms@gnu.org>
parents: 12704
diff changeset
541 (setq tex-end-of-header "\\\\begin{document}")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
542 (setq tex-trailer "\\end{document}\n")
5425
3dd5ff54e1cd (slitex-mode, latex-mode): Set paragraph-start and
Richard M. Stallman <rms@gnu.org>
parents: 5262
diff changeset
543 ;; A line containing just $$ is treated as a paragraph separator.
3dd5ff54e1cd (slitex-mode, latex-mode): Set paragraph-start and
Richard M. Stallman <rms@gnu.org>
parents: 5262
diff changeset
544 ;; A line starting with $$ starts a paragraph,
3dd5ff54e1cd (slitex-mode, latex-mode): Set paragraph-start and
Richard M. Stallman <rms@gnu.org>
parents: 5262
diff changeset
545 ;; but does not separate paragraphs if it has more stuff on it.
10898
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
546 (setq paragraph-start "[ \t]*$\\|[\f%]\\|[ \t]*\\$\\$\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
547 \\\\begin\\>\\|\\\\label\\>\\|\\\\end\\>\\|\\\\\\[\\|\\\\\\]\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
548 \\\\chapter\\>\\|\\\\section\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
549 \\\\subsection\\>\\|\\\\subsubsection\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
550 \\\\paragraph\\>\\|\\\\subparagraph\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
551 \\\\item\\>\\|\\\\bibitem\\>\\|\\\\newline\\>\\|\\\\noindent\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
552 \\\\[a-z]*space\\>\\|\\\\[a-z]*skip\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
553 \\\\newpage\\>\\|\\\\[a-z]*page\\|\\\\footnote\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
554 \\\\marginpar\\>\\|\\\\parbox\\>\\|\\\\caption\\>")
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
555 (setq paragraph-separate "[ \t]*$\\|[\f%]\\|[ \t]*\\$\\$[ \t]*$\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
556 \\\\begin\\>\\|\\\\label\\>\\|\\\\end\\>\\|\\\\\\[\\|\\\\\\]\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
557 \\\\chapter\\>\\|\\\\section\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
558 \\\\subsection\\>\\|\\\\subsubsection\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
559 \\\\paragraph\\>\\|\\\\subparagraph\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
560 \\(\\\\item\\|\\\\bibitem\\|\\\\newline\\|\\\\noindent\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
561 \\\\[a-z]*space\\|\\\\[a-z]*skip\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
562 \\\\newpage\\|\\\\[a-z]*page[a-z]*\\|\\\\footnote\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
563 \\\\marginpar\\|\\\\parbox\\|\\\\caption\\)[ \t]*\\($\\|%\\)")
15240
21998d33460f (latex-imenu-create-index):
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
564 (make-local-variable 'imenu-create-index-function)
21998d33460f (latex-imenu-create-index):
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
565 (setq imenu-create-index-function 'latex-imenu-create-index)
14383
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
566 (make-local-variable 'tex-face-alist)
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
567 (setq tex-face-alist tex-latex-face-alist)
21121
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
568 (make-local-variable 'fill-nobreak-predicate)
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
569 (setq fill-nobreak-predicate 'latex-fill-nobreak-predicate)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
570 (run-hooks 'text-mode-hook 'tex-mode-hook 'latex-mode-hook))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
571
4768
9d84105b1248 (slitex-mode): Add ###autoload magic cookie.
Brian Fox <bfox@gnu.org>
parents: 4376
diff changeset
572 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
573 (defun slitex-mode ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
574 "Major mode for editing files of input for SliTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
575 Makes $ and } display the characters they match.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
576 Makes \" insert `` when it seems to be the beginning of a quotation,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
577 and '' when it appears to be the end; it inserts \" only after a \\.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
578
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
579 Use \\[tex-region] to run SliTeX on the current region, plus the preamble
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
580 copied from the top of the file (containing \\documentstyle, etc.),
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
581 running SliTeX under a special subshell. \\[tex-buffer] does the whole buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
582 \\[tex-file] saves the buffer and then processes the file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
583 \\[tex-print] prints the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
584 \\[tex-view] previews the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
585 \\[tex-bibtex-file] runs bibtex on the file of the current buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
586
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
587 Use \\[validate-tex-buffer] to check buffer for paragraphs containing
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
588 mismatched $'s or braces.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
589
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
590 Special commands:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
591 \\{tex-mode-map}
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
592
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
593 Mode variables:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
594 slitex-run-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
595 Command string used by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
596 tex-directory
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
597 Directory in which to create temporary files for SliTeX jobs
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
598 run by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
599 tex-dvi-print-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
600 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
601 tex-alt-dvi-print-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
602 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
603 argument) to print a .dvi file.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
604 tex-dvi-view-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
605 Command string used by \\[tex-view] to preview a .dvi file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
606 tex-show-queue-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
607 Command string used by \\[tex-show-print-queue] to show the print
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
608 queue that \\[tex-print] put your job on.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
609
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
610 Entering SliTeX mode runs the hook `text-mode-hook', then the hook
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
611 `tex-mode-hook', then the hook `latex-mode-hook', and finally the hook
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
612 `slitex-mode-hook'. When the special subshell is initiated, the hook
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
613 `tex-shell-hook' is run."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
614 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
615 (tex-common-initialization)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
616 (setq mode-name "SliTeX")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
617 (setq major-mode 'slitex-mode)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
618 (setq tex-command slitex-run-command)
14383
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
619 (setq tex-start-of-header "\\\\documentstyle{slides}\\|\\\\documentclass{slides}")
13248
a7e83f7eb499 (tex-start-of-header): Now a regexp.
Richard M. Stallman <rms@gnu.org>
parents: 12704
diff changeset
620 (setq tex-end-of-header "\\\\begin{document}")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
621 (setq tex-trailer "\\end{document}\n")
5425
3dd5ff54e1cd (slitex-mode, latex-mode): Set paragraph-start and
Richard M. Stallman <rms@gnu.org>
parents: 5262
diff changeset
622 ;; A line containing just $$ is treated as a paragraph separator.
3dd5ff54e1cd (slitex-mode, latex-mode): Set paragraph-start and
Richard M. Stallman <rms@gnu.org>
parents: 5262
diff changeset
623 ;; A line starting with $$ starts a paragraph,
3dd5ff54e1cd (slitex-mode, latex-mode): Set paragraph-start and
Richard M. Stallman <rms@gnu.org>
parents: 5262
diff changeset
624 ;; but does not separate paragraphs if it has more stuff on it.
10898
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
625 (setq paragraph-start "[ \t]*$\\|[\f%]\\|[ \t]*\\$\\$\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
626 \\\\begin\\>\\|\\\\label\\>\\|\\\\end\\>\\|\\\\\\[\\|\\\\\\]\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
627 \\\\chapter\\>\\|\\\\section\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
628 \\\\subsection\\>\\|\\\\subsubsection\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
629 \\\\paragraph\\>\\|\\\\subparagraph\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
630 \\\\item\\>\\|\\\\bibitem\\>\\|\\\\newline\\>\\|\\\\noindent\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
631 \\\\[a-z]*space\\>\\|\\\\[a-z]*skip\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
632 \\\\newpage\\>\\|\\\\[a-z]*page\\|\\\\footnote\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
633 \\\\marginpar\\>\\|\\\\parbox\\>\\|\\\\caption\\>")
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
634 (setq paragraph-separate "[ \t]*$\\|[\f%]\\|[ \t]*\\$\\$[ \t]*$\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
635 \\\\begin\\>\\|\\\\label\\>\\|\\\\end\\>\\|\\\\\\[\\|\\\\\\]\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
636 \\\\chapter\\>\\|\\\\section\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
637 \\\\subsection\\>\\|\\\\subsubsection\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
638 \\\\paragraph\\>\\|\\\\subparagraph\\>\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
639 \\\\item[ \t]*$\\|\\\\bibitem[ \t]*$\\|\\\\newline[ \t]*$\\|\\\\noindent[ \t]*$\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
640 \\\\[a-z]*space[ \t]*$\\|\\\\[a-z]*skip[ \t]*$\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
641 \\\\newpage[ \t]*$\\|\\\\[a-z]*page[a-z]*[ \t]*$\\|\\\\footnote[ \t]*$\\|\
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
642 \\\\marginpar[ \t]*$\\|\\\\parbox[ \t]*$\\|\\\\caption[ \t]*$")
21121
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
643 (make-local-variable 'imenu-create-index-function)
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
644 (setq imenu-create-index-function 'latex-imenu-create-index)
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
645 (make-local-variable 'tex-face-alist)
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
646 (setq tex-face-alist tex-latex-face-alist)
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
647 (make-local-variable 'fill-nobreak-predicate)
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
648 (setq fill-nobreak-predicate 'latex-fill-nobreak-predicate)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
649 (run-hooks
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
650 'text-mode-hook 'tex-mode-hook 'latex-mode-hook 'slitex-mode-hook))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
651
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
652 (defun tex-common-initialization ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
653 (kill-all-local-variables)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
654 (use-local-map tex-mode-map)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
655 (setq local-abbrev-table text-mode-abbrev-table)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
656 (if (null tex-mode-syntax-table)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
657 (let ((char 0))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
658 (setq tex-mode-syntax-table (make-syntax-table))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
659 (set-syntax-table tex-mode-syntax-table)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
660 (while (< char ? )
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
661 (modify-syntax-entry char ".")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
662 (setq char (1+ char)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
663 (modify-syntax-entry ?\C-@ "w")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
664 (modify-syntax-entry ?\t " ")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
665 (modify-syntax-entry ?\n ">")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
666 (modify-syntax-entry ?\f ">")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
667 (modify-syntax-entry ?$ "$$")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
668 (modify-syntax-entry ?% "<")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
669 (modify-syntax-entry ?\\ "/")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
670 (modify-syntax-entry ?\" ".")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
671 (modify-syntax-entry ?& ".")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
672 (modify-syntax-entry ?_ ".")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
673 (modify-syntax-entry ?@ "_")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
674 (modify-syntax-entry ?~ " ")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
675 (modify-syntax-entry ?' "w"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
676 (set-syntax-table tex-mode-syntax-table))
18587
3290767e31d8 (tex-common-initialization):
Richard M. Stallman <rms@gnu.org>
parents: 18393
diff changeset
677 ;; Regexp isearch should accept newline and formfeed as whitespace.
3290767e31d8 (tex-common-initialization):
Richard M. Stallman <rms@gnu.org>
parents: 18393
diff changeset
678 (make-local-variable 'search-whitespace-regexp)
3290767e31d8 (tex-common-initialization):
Richard M. Stallman <rms@gnu.org>
parents: 18393
diff changeset
679 (setq search-whitespace-regexp "[ \t\r\n\f]+")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
680 (make-local-variable 'paragraph-start)
5262
b3a689b41d39 (tex-common-initialization): Make paragraph-start
Richard M. Stallman <rms@gnu.org>
parents: 5088
diff changeset
681 ;; A line containing just $$ is treated as a paragraph separator.
10898
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
682 (setq paragraph-start "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
683 (make-local-variable 'paragraph-separate)
5425
3dd5ff54e1cd (slitex-mode, latex-mode): Set paragraph-start and
Richard M. Stallman <rms@gnu.org>
parents: 5262
diff changeset
684 ;; A line starting with $$ starts a paragraph,
3dd5ff54e1cd (slitex-mode, latex-mode): Set paragraph-start and
Richard M. Stallman <rms@gnu.org>
parents: 5262
diff changeset
685 ;; but does not separate paragraphs if it has more stuff on it.
10898
ebe3c755c5d9 (tex-common-initialization, latex-mode, slitex-mode): Remove ^ from
Boris Goldowsky <boris@gnu.org>
parents: 10778
diff changeset
686 (setq paragraph-separate "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$[ \t]*$")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
687 (make-local-variable 'comment-start)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
688 (setq comment-start "%")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
689 (make-local-variable 'comment-start-skip)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
690 (setq comment-start-skip "\\(\\(^\\|[^\\]\\)\\(\\\\\\\\\\)*\\)\\(%+ *\\)")
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2265
diff changeset
691 (make-local-variable 'comment-indent-function)
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2265
diff changeset
692 (setq comment-indent-function 'tex-comment-indent)
5427
cde2cde50796 (tex-common-initialization): Make parse-sexp-ignore-comments t.
Richard M. Stallman <rms@gnu.org>
parents: 5425
diff changeset
693 (make-local-variable 'parse-sexp-ignore-comments)
cde2cde50796 (tex-common-initialization): Make parse-sexp-ignore-comments t.
Richard M. Stallman <rms@gnu.org>
parents: 5425
diff changeset
694 (setq parse-sexp-ignore-comments t)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
695 (make-local-variable 'compare-windows-whitespace)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
696 (setq compare-windows-whitespace 'tex-categorize-whitespace)
15513
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
697 (make-local-variable 'skeleton-further-elements)
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
698 (setq skeleton-further-elements
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
699 '((indent-line-function 'indent-relative-maybe)))
14383
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
700 (make-local-variable 'facemenu-add-face-function)
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
701 (make-local-variable 'facemenu-end-add-face)
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
702 (make-local-variable 'facemenu-remove-face-function)
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
703 (setq facemenu-add-face-function
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
704 (lambda (face end)
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
705 (let ((face-text (cdr (assq face tex-face-alist))))
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
706 (if face-text
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
707 face-text
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
708 (error "Face %s not configured for %s mode" face mode-name))))
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
709 facemenu-end-add-face "}"
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
710 facemenu-remove-face-function t)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
711 (make-local-variable 'tex-command)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
712 (make-local-variable 'tex-start-of-header)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
713 (make-local-variable 'tex-end-of-header)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
714 (make-local-variable 'tex-trailer))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
715
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
716 (defun tex-comment-indent ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
717 (if (looking-at "%%%")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
718 (current-column)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
719 (skip-chars-backward " \t")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
720 (max (if (bolp) 0 (1+ (current-column)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
721 comment-column)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
722
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
723 (defun tex-categorize-whitespace (backward-limit)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
724 ;; compare-windows-whitespace is set to this.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
725 ;; This is basically a finite-state machine.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
726 ;; Returns a symbol telling how TeX would treat
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
727 ;; the whitespace we are looking at: null, space, or par.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
728 (let ((category 'null)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
729 (not-finished t))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
730 (skip-chars-backward " \t\n\f" backward-limit)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
731 (while not-finished
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
732 (cond ((looking-at "[ \t]+")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
733 (goto-char (match-end 0))
18931
43b52e6a35c2 (tex-categorize-whitespace): Use eq, not eql.
Richard M. Stallman <rms@gnu.org>
parents: 18587
diff changeset
734 (if (eq category 'null)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
735 (setq category 'space)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
736 ((looking-at "\n")
18931
43b52e6a35c2 (tex-categorize-whitespace): Use eq, not eql.
Richard M. Stallman <rms@gnu.org>
parents: 18587
diff changeset
737 (cond ((eq category 'newline)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
738 (setq category 'par)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
739 (setq not-finished nil))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
740 (t
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
741 (setq category 'newline) ;a strictly internal state
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
742 (goto-char (match-end 0)))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
743 ((looking-at "\f+")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
744 (setq category 'par)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
745 (setq not-finished nil))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
746 (t
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
747 (setq not-finished nil))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
748 (skip-chars-forward " \t\n\f")
18931
43b52e6a35c2 (tex-categorize-whitespace): Use eq, not eql.
Richard M. Stallman <rms@gnu.org>
parents: 18587
diff changeset
749 (if (eq category 'newline)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
750 'space ;TeX doesn't distinguish
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
751 category)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
752
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
753 (defun tex-insert-quote (arg)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
754 "Insert the appropriate quote marks for TeX.
2836
d95acb2243f9 (tex-insert-quote): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2598
diff changeset
755 Inserts the value of `tex-open-quote' (normally ``) or `tex-close-quote'
d95acb2243f9 (tex-insert-quote): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 2598
diff changeset
756 \(normally '') depending on the context. With prefix argument, always
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
757 inserts \" characters."
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
758 (interactive "*P")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
759 (if arg
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
760 (self-insert-command (prefix-numeric-value arg))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
761 (insert
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
762 (cond ((or (bobp)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
763 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
764 (forward-char -1)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
765 (looking-at "\\s(\\|\\s \\|\\s>")))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
766 tex-open-quote)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
767 ((= (preceding-char) ?\\)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
768 ?\")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
769 (t
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
770 tex-close-quote)))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
771
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
772 (defun validate-tex-buffer ()
2588
b0a1846fe3b8 Doc fixes. Also a few teaks to pacify the byte-compiler.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2576
diff changeset
773 "Check current buffer for paragraphs containing mismatched $s.
4376
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
774 Their positions are recorded in the buffer `*Occur*'.
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
775 To find a particular invalidity from `*Occur*',
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
776 switch to to that buffer and type C-c C-c on the line
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
777 for the invalidity you want to see."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
778 (interactive)
4376
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
779 (let ((buffer (current-buffer))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
780 (prevpos (point-min))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
781 (linenum nil))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
782 (with-output-to-temp-buffer "*Occur*"
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
783 (princ "Mismatches:\n")
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
784 (save-excursion
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
785 (set-buffer standard-output)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
786 (occur-mode)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
787 (setq occur-buffer buffer)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
788 (setq occur-nlines 0)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
789 (setq occur-pos-list nil))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
790 (save-excursion
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
791 (goto-char (point-max))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
792 (while (and (not (input-pending-p)) (not (bobp)))
15644
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
793 (let ((end (point))
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
794 prev-end)
4376
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
795 ;; Scan the previous paragraph for invalidities.
15644
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
796 (if (search-backward "\n\n" nil t)
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
797 (progn
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
798 (setq prev-end (point))
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
799 (forward-char 2))
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
800 (goto-char (setq prev-end (point-min))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
801 (or (tex-validate-region (point) end)
15644
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
802 (let* ((oend end)
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
803 (end (save-excursion (forward-line 1) (point)))
4376
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
804 start tem)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
805 (beginning-of-line)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
806 (setq start (point))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
807 ;; Keep track of line number as we scan,
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
808 ;; in a cumulative fashion.
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
809 (if linenum
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
810 (setq linenum (- linenum (count-lines prevpos (point))))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
811 (setq linenum (1+ (count-lines 1 start))))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
812 (setq prevpos (point))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
813 ;; Mention this mismatch in *Occur*.
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
814 ;; Since we scan from end of buffer to beginning,
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
815 ;; add each mismatch at the beginning of *Occur*
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
816 ;; and at the beginning of occur-pos-list.
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
817 (save-excursion
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
818 (setq tem (point-marker))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
819 (set-buffer standard-output)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
820 (goto-char (point-min))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
821 ;; Skip "Mismatches:" header line.
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
822 (forward-line 1)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
823 (setq occur-pos-list (cons tem occur-pos-list))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
824 (insert-buffer-substring buffer start end)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
825 (forward-char (- start end))
15644
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
826 (insert (format "%3d: " linenum)))))
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
827 (goto-char prev-end))))
4376
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
828 (save-excursion
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
829 (set-buffer standard-output)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
830 (if (null occur-pos-list)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
831 (insert "None!\n"))
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
832 (if (interactive-p)
109294166e68 (validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
833 (message "%d mismatches found" (length occur-pos-list)))))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
834
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
835 (defun tex-validate-region (start end)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
836 "Check for mismatched braces or $'s in region.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
837 Returns t if no mismatches. Returns nil and moves point to suspect
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
838 area if a mismatch is found."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
839 (interactive "r")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
840 (let ((failure-point nil) (max-possible-sexps (- end start)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
841 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
842 (condition-case ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
843 (save-restriction
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
844 (narrow-to-region start end)
20203
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
845 ;; First check that the open and close parens balance in numbers.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
846 (goto-char start)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
847 (while (< 0 (setq max-possible-sexps (1- max-possible-sexps)))
20203
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
848 (forward-sexp 1))
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
849 ;; Now check that like matches like.
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
850 (goto-char start)
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
851 (while (progn (skip-syntax-forward "^(")
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
852 (not (eobp)))
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
853 (let ((match (matching-paren (following-char))))
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
854 (save-excursion
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
855 (forward-sexp 1)
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
856 (or (= (preceding-char) match)
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
857 (error "Mismatched parentheses"))))
f1a4588c8075 (tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents: 18931
diff changeset
858 (forward-char 1)))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
859 (error
15644
3b4678aa4e9f (tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents: 15513
diff changeset
860 (skip-syntax-forward " .>")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
861 (setq failure-point (point)))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
862 (if failure-point
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
863 (progn
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
864 (goto-char failure-point)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
865 nil)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
866 t)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
867
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
868 (defun tex-terminate-paragraph (inhibit-validation)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
869 "Insert two newlines, breaking a paragraph for TeX.
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
870 Check for mismatched braces or $s in paragraph being terminated.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
871 A prefix arg inhibits the checking."
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
872 (interactive "*P")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
873 (or inhibit-validation
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
874 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
875 (tex-validate-region
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
876 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
877 (search-backward "\n\n" nil 'move)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
878 (point))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
879 (point)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
880 (message "Paragraph being closed appears to contain a mismatch"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
881 (insert "\n\n"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
882
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
883 (defun tex-insert-braces ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
884 "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
885 (interactive "*")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
886 (insert ?\{)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
887 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
888 (insert ?})))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
889
21121
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
890 ;; This function is used as the value of fill-nobreak-predicate
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
891 ;; in LaTeX mode. Its job is to prevent line-breaking inside
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
892 ;; of a \verb construct.
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
893 (defun latex-fill-nobreak-predicate ()
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
894 (let ((opoint (point))
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
895 inside)
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
896 (save-excursion
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
897 (save-restriction
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
898 (beginning-of-line)
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
899 (narrow-to-region (point) opoint)
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
900 (while (re-search-forward "\\\\verb\\(.\\)" nil t)
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
901 (unless (re-search-forward (regexp-quote (match-string 1)) nil t)
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
902 (setq inside t)))))
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
903 inside))
dd5c2baa6674 (latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents: 20203
diff changeset
904
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
905 ;;; Like tex-insert-braces, but for LaTeX.
15513
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
906 (define-skeleton tex-latex-block
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
907 "Create a matching pair of lines \\begin[OPT]{NAME} and \\end{NAME} at point.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
908 Puts point on a blank line between them."
15513
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
909 (completing-read "LaTeX block name: "
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
910 (mapcar 'list
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
911 (append standard-latex-block-names
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
912 latex-block-names)))
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
913 "\\begin["
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
914 (skeleton-read "[options]: ") & ?\] | -1
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
915 ?\{
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
916 str
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
917 ?\} \n
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
918 _ \n
1252826f389b (tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents: 15240
diff changeset
919 "\\end{" str ?\})
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
920
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
921 (defun tex-last-unended-begin ()
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
922 "Leave point at the beginning of the last `\\begin{...}' that is unended."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
923 (while (and (re-search-backward "\\(\\\\begin\\s *{\\)\\|\\(\\\\end\\s *{\\)")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
924 (looking-at "\\\\end{"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
925 (tex-last-unended-begin)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
926
7297
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
927 (defun tex-goto-last-unclosed-latex-block ()
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
928 "Move point to the last unclosed \\begin{...}.
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
929 Mark is left at original location."
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
930 (interactive)
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
931 (let ((spot))
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
932 (save-excursion
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
933 (condition-case nil
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
934 (tex-last-unended-begin)
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
935 (error (error "Couldn't find unended \\begin")))
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
936 (setq spot (point)))
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
937 (push-mark)
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
938 (goto-char spot)))
a480d11d5594 (tex-goto-last-unclosed-latex-block): New function. Bound to C-c C-u in
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 7285
diff changeset
939
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
940 (defun tex-close-latex-block ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
941 "Creates an \\end{...} to match the last unclosed \\begin{...}."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
942 (interactive "*")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
943 (let ((new-line-needed (bolp))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
944 text indentation)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
945 (save-excursion
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
946 (condition-case nil
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
947 (tex-last-unended-begin)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
948 (error (error "Couldn't find unended \\begin")))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
949 (setq indentation (current-column))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
950 (re-search-forward "\\\\begin\\(\\s *{[^}\n]*}\\)")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
951 (setq text (buffer-substring (match-beginning 1) (match-end 1))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
952 (indent-to indentation)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
953 (insert "\\end" text)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
954 (if new-line-needed (insert ?\n))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
955
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
956 ;;; Invoking TeX in an inferior shell.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
957
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
958 ;;; Why use a shell instead of running TeX directly? Because if TeX
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
959 ;;; gets stuck, the user can switch to the shell window and type at it.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
960
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
961 ;;; The utility functions:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
962
7834
fc1c95bf734b (tex-start-shell): Add autoload.
Richard M. Stallman <rms@gnu.org>
parents: 7827
diff changeset
963 ;;;###autoload
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
964 (defun tex-start-shell ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
965 (save-excursion
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
966 (set-buffer
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
967 (make-comint
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
968 "tex-shell"
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
969 (or tex-shell-file-name (getenv "ESHELL") (getenv "SHELL") "/bin/sh")
5087
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
970 nil))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
971 (let ((proc (get-process "tex-shell")))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
972 (set-process-sentinel proc 'tex-shell-sentinel)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
973 (process-kill-without-query proc)
10190
2569f4d3073e Be consistent in use of comint (instead of shell) mode.
Edward M. Reingold <reingold@emr.cs.iit.edu>
parents: 9672
diff changeset
974 (setq comint-prompt-regexp shell-prompt-pattern)
10204
287ffc59d9f8 (tex-start-shell): Use inheritance.
Richard M. Stallman <rms@gnu.org>
parents: 10197
diff changeset
975 (setq tex-shell-map (nconc (make-sparse-keymap) shell-mode-map))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
976 (tex-define-common-keys tex-shell-map)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
977 (use-local-map tex-shell-map)
21315
9e91515ab6ed (tex-start-shell): Call compilation-minor-mode.
Richard M. Stallman <rms@gnu.org>
parents: 21314
diff changeset
978 (compilation-minor-mode)
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
979 (run-hooks 'tex-shell-hook)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
980 (while (zerop (buffer-size))
10572
c8717227f621 (tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents: 10341
diff changeset
981 (sleep-for 1)))))
c8717227f621 (tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents: 10341
diff changeset
982
c8717227f621 (tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents: 10341
diff changeset
983 (defun tex-display-shell ()
c8717227f621 (tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents: 10341
diff changeset
984 "Make the TeX shell buffer visible in a window."
c8717227f621 (tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents: 10341
diff changeset
985 (display-buffer (process-buffer (get-process "tex-shell")))
c8717227f621 (tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents: 10341
diff changeset
986 (tex-recenter-output-buffer nil))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
987
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
988 (defun tex-shell-sentinel (proc msg)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
989 (cond ((null (buffer-name (process-buffer proc)))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
990 ;; buffer killed
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
991 (set-process-buffer proc nil)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
992 (tex-delete-last-temp-files))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
993 ((memq (process-status proc) '(signal exit))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
994 (tex-delete-last-temp-files))))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
995
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
996 (defun tex-set-buffer-directory (buffer directory)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
997 "Set BUFFER's default directory to be DIRECTORY."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
998 (setq directory (file-name-as-directory (expand-file-name directory)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
999 (if (not (file-directory-p directory))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1000 (error "%s is not a directory" directory)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1001 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1002 (set-buffer buffer)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1003 (setq default-directory directory))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1004
5088
73a1b31b673f (tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents: 5087
diff changeset
1005 (defvar tex-send-command-modified-tick 0)
73a1b31b673f (tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents: 5087
diff changeset
1006 (make-variable-buffer-local 'tex-send-command-modified-tick)
73a1b31b673f (tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents: 5087
diff changeset
1007
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1008 (defun tex-send-command (command &optional file background)
5087
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
1009 "Send COMMAND to TeX shell process, substituting optional FILE for *.
2588
b0a1846fe3b8 Doc fixes. Also a few teaks to pacify the byte-compiler.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2576
diff changeset
1010 Do this in background if optional BACKGROUND is t. If COMMAND has no *,
b0a1846fe3b8 Doc fixes. Also a few teaks to pacify the byte-compiler.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2576
diff changeset
1011 FILE will be appended, preceded by a blank, to COMMAND. If FILE is nil, no
b0a1846fe3b8 Doc fixes. Also a few teaks to pacify the byte-compiler.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2576
diff changeset
1012 substitution will be made in COMMAND. COMMAND can be any expression that
21314
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1013 evaluates to a command string.
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1014
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1015 Return the process in which TeX is running."
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1016 (save-excursion
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1017 (let* ((cmd (eval command))
13399
ac7b3d7dafe8 (tex-send-command): Give meaningful error message.
Karl Heuer <kwzh@gnu.org>
parents: 13248
diff changeset
1018 (proc (or (get-process "tex-shell") (error "No TeX subprocess")))
5262
b3a689b41d39 (tex-common-initialization): Make paragraph-start
Richard M. Stallman <rms@gnu.org>
parents: 5088
diff changeset
1019 (buf (process-buffer proc))
2265
daf268a98d5e * tex-mode.el (tex-send-command): Fix the command sent so that no
Jim Blandy <jimb@redhat.com>
parents: 1577
diff changeset
1020 (star (string-match "\\*" cmd))
5087
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
1021 (string
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
1022 (concat
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
1023 (if file
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
1024 (if star (concat (substring cmd 0 star)
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
1025 file (substring cmd (1+ star)))
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
1026 (concat cmd " " file))
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
1027 cmd)
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
1028 (if background "&" ""))))
5262
b3a689b41d39 (tex-common-initialization): Make paragraph-start
Richard M. Stallman <rms@gnu.org>
parents: 5088
diff changeset
1029 ;; Switch to buffer before checking for subproc output in it.
b3a689b41d39 (tex-common-initialization): Make paragraph-start
Richard M. Stallman <rms@gnu.org>
parents: 5088
diff changeset
1030 (set-buffer buf)
5088
73a1b31b673f (tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents: 5087
diff changeset
1031 ;; If text is unchanged since previous tex-send-command,
73a1b31b673f (tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents: 5087
diff changeset
1032 ;; we haven't got any output. So wait for output now.
5262
b3a689b41d39 (tex-common-initialization): Make paragraph-start
Richard M. Stallman <rms@gnu.org>
parents: 5088
diff changeset
1033 (if (= (buffer-modified-tick buf) tex-send-command-modified-tick)
5088
73a1b31b673f (tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents: 5087
diff changeset
1034 (accept-process-output proc))
5087
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
1035 (goto-char (process-mark proc))
a7b2df620d1a (tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents: 4917
diff changeset
1036 (insert string)
5088
73a1b31b673f (tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents: 5087
diff changeset
1037 (comint-send-input)
21314
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1038 (setq tex-send-command-modified-tick (buffer-modified-tick buf))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1039 proc)))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1040
6479
855f4f2d24da (tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents: 5427
diff changeset
1041 (defun tex-delete-last-temp-files (&optional not-all)
855f4f2d24da (tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents: 5427
diff changeset
1042 "Delete any junk files from last temp file.
855f4f2d24da (tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents: 5427
diff changeset
1043 If NOT-ALL is non-nil, save the `.dvi' file."
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1044 (if tex-last-temp-file
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1045 (let* ((dir (file-name-directory tex-last-temp-file))
7536
efecdee78026 (tex-delete-last-temp-files): Don't fail on non-existent directory.
Karl Heuer <kwzh@gnu.org>
parents: 7298
diff changeset
1046 (list (and (file-directory-p dir)
efecdee78026 (tex-delete-last-temp-files): Don't fail on non-existent directory.
Karl Heuer <kwzh@gnu.org>
parents: 7298
diff changeset
1047 (file-name-all-completions
efecdee78026 (tex-delete-last-temp-files): Don't fail on non-existent directory.
Karl Heuer <kwzh@gnu.org>
parents: 7298
diff changeset
1048 (file-name-nondirectory tex-last-temp-file) dir))))
efecdee78026 (tex-delete-last-temp-files): Don't fail on non-existent directory.
Karl Heuer <kwzh@gnu.org>
parents: 7298
diff changeset
1049 (while list
6479
855f4f2d24da (tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents: 5427
diff changeset
1050 (if not-all
855f4f2d24da (tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents: 5427
diff changeset
1051 (and
855f4f2d24da (tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents: 5427
diff changeset
1052 ;; If arg is non-nil, don't delete the .dvi file.
855f4f2d24da (tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents: 5427
diff changeset
1053 (not (string-match "\\.dvi$" (car list)))
855f4f2d24da (tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents: 5427
diff changeset
1054 (delete-file (concat dir (car list))))
855f4f2d24da (tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents: 5427
diff changeset
1055 (delete-file (concat dir (car list))))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1056 (setq list (cdr list))))))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1057
741
587f7a98341d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 739
diff changeset
1058 (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
1059
21314
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1060 (defvar tex-start-tex-marker nil
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1061 "Marker pointing after last TeX-running command in the TeX shell buffer.")
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1062
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1063 (defun tex-start-tex (command file)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1064 "Start a TeX run, using COMMAND on FILE."
22292
a4324fe3e21e Undo May 15 change.
Karl Heuer <kwzh@gnu.org>
parents: 22139
diff changeset
1065 (let* ((cmd (concat command " \\\\nonstopmode\\\\input"))
21314
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1066 (star (string-match "\\*" cmd))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1067 (compile-command
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1068 (if star (concat (substring cmd 0 star)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1069 file (substring cmd (1+ star)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1070 (concat cmd " " file))))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1071 (with-current-buffer (process-buffer (tex-send-command compile-command))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1072 (save-excursion
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1073 (forward-line -1)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1074 (setq tex-start-tex-marker (point-marker)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1075 (make-local-variable 'compilation-parse-errors-function)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1076 (setq compilation-parse-errors-function 'tex-compilation-parse-errors))))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1077
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1078 (defun tex-compilation-parse-errors (limit-search find-at-least)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1079 "Parse the current buffer as error messages.
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1080 This makes a list of error descriptors, `compilation-error-list'.
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1081 For each source-file, line-number pair in the buffer,
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1082 the source file is read in, and the text location is saved in
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1083 `compilation-error-list'. The function `next-error', assigned to
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1084 \\[next-error], takes the next error off the list and visits its location.
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1085
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1086 If LIMIT-SEARCH is non-nil, don't bother parsing past that location.
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1087 If FIND-AT-LEAST is non-nil, don't bother parsing after finding that
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1088
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1089 This function works on TeX compilations only. It is necessary for
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1090 that purpose, since TeX does not put file names on the same line as
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1091 line numbers for the errors."
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1092 (require 'thingatpt)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1093 (setq compilation-error-list nil)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1094 (message "Parsing error messages...")
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1095 (let ((old-lc-syntax (char-syntax ?\{))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1096 (old-rc-syntax (char-syntax ?\}))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1097 (old-lb-syntax (char-syntax ?\[))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1098 (old-rb-syntax (char-syntax ?\]))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1099 (num-found 0) last-filename last-linenum last-position)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1100 (unwind-protect
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1101 (progn
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1102 (modify-syntax-entry ?\{ "_")
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1103 (modify-syntax-entry ?\} "_")
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1104 (modify-syntax-entry ?\[ "_")
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1105 (modify-syntax-entry ?\] "_")
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1106 ;; Don't reparse messages already seen at last parse.
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1107 (goto-char (max (or compilation-parsing-end 0)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1108 tex-start-tex-marker))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1109 ;; Don't parse the first two lines as error messages.
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1110 ;; This matters for grep.
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1111 (if (bobp) (forward-line 2))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1112 (while (re-search-forward
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1113 "^l\\.\\([0-9]+\\) \\(\\.\\.\\.\\)?\\(.*\\)$"
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1114 (and (or (null find-at-least)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1115 (>= num-found find-at-least)) limit-search) t)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1116 ;; Extract file name and line number from error message.
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1117 ;; Line number is 2 away from beginning of line: "l.23"
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1118 ;; The file is the one that was opened last and is still open.
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1119 ;; We need to find the last open parenthesis.
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1120 (let* ((linenum (string-to-int (match-string 1)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1121 (error-text (regexp-quote (match-string 3)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1122 (filename
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1123 (save-excursion
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1124 (backward-up-list 1)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1125 (skip-syntax-forward "(_")
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1126 (while (not (file-readable-p
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1127 (thing-at-point 'filename)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1128 (skip-syntax-backward "(_")
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1129 (backward-up-list 1)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1130 (skip-syntax-forward "(_"))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1131 (thing-at-point 'filename)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1132 (error-marker
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1133 (save-excursion
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1134 (re-search-backward "^! " nil t)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1135 (point-marker)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1136 (new-file (or (null last-filename)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1137 (not (string-equal last-filename filename))))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1138 (error-location
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1139 (save-excursion
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1140 (if (equal filename
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1141 (expand-file-name (concat tex-zap-file ".tex")))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1142 (set-buffer tex-last-buffer-texed)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1143 (set-buffer (find-file-noselect filename)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1144 (if new-file
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1145 (goto-line linenum)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1146 (goto-char last-position)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1147 (forward-line (- linenum last-linenum)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1148 ;first try a forward search
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1149 ;for the error text, then a
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1150 ;backward search limited by
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1151 ;the last error
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1152 (let ((starting-point (point)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1153 (or (re-search-forward error-text nil t)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1154 (re-search-backward
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1155 error-text
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1156 (marker-position last-position) t)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1157 (goto-char starting-point)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1158 (point-marker))))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1159 (setq last-filename filename)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1160 (if (or new-file
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1161 (not (= last-position error-location)))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1162 (progn
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1163 (setq num-found (1+ num-found))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1164 (setq last-position error-location)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1165 (setq last-linenum linenum)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1166 (setq compilation-error-list
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1167 (nconc compilation-error-list
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1168 (list (cons error-marker
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1169 error-location)))))))))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1170 (modify-syntax-entry ?\{ (char-to-string old-lc-syntax))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1171 (modify-syntax-entry ?\} (char-to-string old-rc-syntax))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1172 (modify-syntax-entry ?\[ (char-to-string old-lb-syntax))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1173 (modify-syntax-entry ?\] (char-to-string old-rb-syntax))))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1174 (setq compilation-parsing-end (point))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1175 (message "Parsing error messages...done"))
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1176
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1177 ;;; The commands:
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1178
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1179 (defun tex-region (beg end)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1180 "Run TeX on the current region, via a temporary file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1181 The file's name comes from the variable `tex-zap-file' and the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1182 variable `tex-directory' says where to put it.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1183
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1184 If the buffer has a header, the header is given to TeX before the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1185 region itself. The buffer's header is all lines between the strings
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1186 defined by `tex-start-of-header' and `tex-end-of-header' inclusive.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1187 The header must start in the first 100 lines of the buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1188
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1189 The value of `tex-trailer' is given to TeX as input after the region.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1190
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1191 The value of `tex-command' specifies the command to use to run TeX."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1192 (interactive "r")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1193 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1194 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1195 (tex-start-shell))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1196 (or tex-zap-file
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1197 (setq tex-zap-file (tex-generate-zap-file-name)))
16807
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1198 ;; Temp file will be written and TeX will be run in zap-directory.
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1199 ;; If the TEXINPUTS file has relative directories or if the region has
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1200 ;; \input of files, this must be the same directory as the file for
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1201 ;; TeX to access the correct inputs. That's why it's safest if
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1202 ;; tex-directory is ".".
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1203 (let* ((zap-directory
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1204 (file-name-as-directory (expand-file-name tex-directory)))
16807
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1205 (tex-out-file (concat zap-directory tex-zap-file ".tex")))
9450
af39d29d1386 (compare-windows-whitespace): Eliminate initial value.
Richard M. Stallman <rms@gnu.org>
parents: 8890
diff changeset
1206 ;; Don't delete temp files if we do the same buffer twice in a row.
af39d29d1386 (compare-windows-whitespace): Eliminate initial value.
Richard M. Stallman <rms@gnu.org>
parents: 8890
diff changeset
1207 (or (eq (current-buffer) tex-last-buffer-texed)
af39d29d1386 (compare-windows-whitespace): Eliminate initial value.
Richard M. Stallman <rms@gnu.org>
parents: 8890
diff changeset
1208 (tex-delete-last-temp-files t))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1209 ;; Write the new temp file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1210 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1211 (save-restriction
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1212 (widen)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1213 (goto-char (point-min))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1214 (forward-line 100)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1215 (let ((search-end (point))
16807
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1216 (default-directory zap-directory)
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1217 (already-output 0))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1218 (goto-char (point-min))
16807
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1219
16777
b655268ba44f (tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16493
diff changeset
1220 ;; Maybe copy first line, such as `\input texinfo', to temp file.
b655268ba44f (tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16493
diff changeset
1221 (and tex-first-line-header-regexp
b655268ba44f (tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16493
diff changeset
1222 (looking-at tex-first-line-header-regexp)
b655268ba44f (tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16493
diff changeset
1223 (write-region (point)
16807
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1224 (progn (forward-line 1)
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1225 (setq already-output (point)))
16777
b655268ba44f (tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16493
diff changeset
1226 tex-out-file nil nil))
b655268ba44f (tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 16493
diff changeset
1227
16807
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1228 ;; Write out the header, if there is one,
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1229 ;; and any of the specified region which extends before it.
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1230 ;; But don't repeat anything already written.
13248
a7e83f7eb499 (tex-start-of-header): Now a regexp.
Richard M. Stallman <rms@gnu.org>
parents: 12704
diff changeset
1231 (if (re-search-forward tex-start-of-header search-end t)
16807
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1232 (let (hbeg)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1233 (beginning-of-line)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1234 (setq hbeg (point)) ;mark beginning of header
13248
a7e83f7eb499 (tex-start-of-header): Now a regexp.
Richard M. Stallman <rms@gnu.org>
parents: 12704
diff changeset
1235 (if (re-search-forward tex-end-of-header nil t)
16807
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1236 (let (hend)
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1237 (forward-line 1)
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1238 (setq hend (point)) ;mark end of header
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1239 (write-region (max (min hbeg beg) already-output)
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1240 hend
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1241 tex-out-file
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1242 (not (zerop already-output)) nil)
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1243 (setq already-output hend)))))
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1244
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1245 ;; Write out the specified region
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1246 ;; (but don't repeat anything already written).
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1247 (write-region (max beg already-output) end
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1248 tex-out-file
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1249 (not (zerop already-output)) nil))
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1250 ;; Write the trailer, if any.
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1251 ;; Precede it with a newline to make sure it
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1252 ;; is not hidden in a comment.
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1253 (if tex-trailer
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1254 (write-region (concat "\n" tex-trailer) nil
f8d567e52662 (tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents: 16777
diff changeset
1255 tex-out-file t nil))))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1256 ;; Record the file name to be deleted afterward.
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1257 (setq tex-last-temp-file tex-out-file)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1258 (tex-send-command tex-shell-cd-command zap-directory)
21314
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1259 (tex-start-tex tex-command tex-out-file)
10572
c8717227f621 (tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents: 10341
diff changeset
1260 (tex-display-shell)
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1261 (setq tex-print-file tex-out-file)
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1262 (setq tex-last-buffer-texed (current-buffer))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1263
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1264 (defun tex-buffer ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1265 "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
1266 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
1267 See \\[tex-file] for an alternative."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1268 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1269 (tex-region (point-min) (point-max)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1270
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1271 (defun tex-file ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1272 "Prompt to save all buffers and run TeX (or LaTeX) on current buffer's file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1273 This function is more useful than \\[tex-buffer] when you need the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1274 `.aux' file of LaTeX to have the correct name."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1275 (interactive)
15916
61e90a3e66aa (tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15644
diff changeset
1276 (let ((source-file
61e90a3e66aa (tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15644
diff changeset
1277 (or tex-main-file
61e90a3e66aa (tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15644
diff changeset
1278 (if (buffer-file-name)
61e90a3e66aa (tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15644
diff changeset
1279 (file-name-nondirectory (buffer-file-name))
61e90a3e66aa (tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15644
diff changeset
1280 (error "Buffer does not seem to be associated with any file"))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1281 (file-dir (file-name-directory (buffer-file-name))))
758
f8688580137c *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 741
diff changeset
1282 (if tex-offer-save
741
587f7a98341d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 739
diff changeset
1283 (save-some-buffers))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1284 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1285 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1286 (tex-start-shell))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1287 (tex-send-command tex-shell-cd-command file-dir)
21314
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1288 (tex-start-tex tex-command source-file)
16493
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1289 (tex-display-shell)
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1290 (setq tex-last-buffer-texed (current-buffer))
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1291 (setq tex-print-file source-file)))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1292
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1293 (defun tex-generate-zap-file-name ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1294 "Generate a unique name suitable for use as a file name."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1295 ;; Include the shell process number and host name
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1296 ;; in case there are multiple shells (for same or different user).
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1297 (format "#tz%d%s"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1298 (process-id (get-buffer-process "*tex-shell*"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1299 (tex-strip-dots (system-name))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1300
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1301 (defun tex-strip-dots (s)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1302 (setq s (copy-sequence s))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1303 (while (string-match "\\." s)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1304 (aset s (match-beginning 0) ?-))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1305 s)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1306
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1307 ;; This will perhaps be useful for modifying TEXINPUTS.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1308 ;; Expand each file name, separated by colons, in the string S.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1309 (defun tex-expand-files (s)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1310 (let (elts (start 0))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1311 (while (string-match ":" s start)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1312 (setq elts (cons (substring s start (match-beginning 0)) elts))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1313 (setq start (match-end 0)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1314 (or (= start 0)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1315 (setq elts (cons (substring s start) elts)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1316 (mapconcat 'expand-file-name (nreverse elts) ":")))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1317
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1318 (defun tex-shell-running ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1319 (and (get-process "tex-shell")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1320 (eq (process-status (get-process "tex-shell")) 'run)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1321
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1322 (defun tex-kill-job ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1323 "Kill the currently running TeX job."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1324 (interactive)
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1325 (quit-process (get-process "tex-shell") t))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1326
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1327 (defun tex-recenter-output-buffer (linenum)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1328 "Redisplay buffer of TeX job output so that most recent output can be seen.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1329 The last line of the buffer is displayed on
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1330 line LINE of the window, or centered if LINE is nil."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1331 (interactive "P")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1332 (let ((tex-shell (get-buffer "*tex-shell*"))
16493
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1333 (old-buffer (current-buffer))
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1334 (window))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1335 (if (null tex-shell)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1336 (message "No TeX output buffer")
16493
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1337 (setq window (display-buffer tex-shell))
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1338 (save-selected-window
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1339 (select-window window)
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1340 (bury-buffer tex-shell)
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1341 (goto-char (point-max))
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1342 (recenter (if linenum
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1343 (prefix-numeric-value linenum)
bdca7f3626c0 (tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents: 16356
diff changeset
1344 (/ (window-height) 2)))))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1345
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1346 (defun tex-print (&optional alt)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1347 "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
1348 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
1349 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
1350 (interactive "P")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1351 (let ((print-file-name-dvi (tex-append tex-print-file ".dvi"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1352 test-name)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1353 (if (and (not (equal (current-buffer) tex-last-buffer-texed))
10341
f27bcd1faf07 (tex-print): Better check for when to print current
Richard M. Stallman <rms@gnu.org>
parents: 10325
diff changeset
1354 (buffer-file-name)
f27bcd1faf07 (tex-print): Better check for when to print current
Richard M. Stallman <rms@gnu.org>
parents: 10325
diff changeset
1355 ;; Check that this buffer's printed file is up to date.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1356 (file-newer-than-file-p
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1357 (setq test-name (tex-append (buffer-file-name) ".dvi"))
10341
f27bcd1faf07 (tex-print): Better check for when to print current
Richard M. Stallman <rms@gnu.org>
parents: 10325
diff changeset
1358 (buffer-file-name)))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1359 (setq print-file-name-dvi test-name))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1360 (if (not (file-exists-p print-file-name-dvi))
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1361 (error "No appropriate `.dvi' file could be found")
21314
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1362 (if (tex-shell-running)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1363 (tex-kill-job)
7d4a55d38b2c (tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents: 21121
diff changeset
1364 (tex-start-shell))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1365 (tex-send-command
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1366 (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
1367 print-file-name-dvi t))))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1368
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1369 (defun tex-alt-print ()
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1370 "Print the .dvi file made by \\[tex-region], \\[tex-buffer] or \\[tex-file].
10296
c58e6bb97038 (tex-mode-map): Add BibTeX File menu item.
Richard M. Stallman <rms@gnu.org>
parents: 10215
diff changeset
1371 Runs the shell command defined by `tex-alt-dvi-print-command'."
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1372 (interactive)
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1373 (tex-print t))
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1374
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1375 (defun tex-view ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1376 "Preview the last `.dvi' file made by running TeX under Emacs.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1377 This means, made using \\[tex-region], \\[tex-buffer] or \\[tex-file].
11617
9eaeed5c8a40 (tex-view): Nice error if tex-dvi-view-command is nil.
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
1378 The variable `tex-dvi-view-command' specifies the shell command for preview.
9eaeed5c8a40 (tex-view): Nice error if tex-dvi-view-command is nil.
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
1379 You must set that variable yourself before using this command,
9eaeed5c8a40 (tex-view): Nice error if tex-dvi-view-command is nil.
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
1380 because there is no standard value that would generally work."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1381 (interactive)
11617
9eaeed5c8a40 (tex-view): Nice error if tex-dvi-view-command is nil.
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
1382 (or tex-dvi-view-command
9eaeed5c8a40 (tex-view): Nice error if tex-dvi-view-command is nil.
Richard M. Stallman <rms@gnu.org>
parents: 11235
diff changeset
1383 (error "You must set `tex-dvi-view-command'"))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1384 (let ((tex-dvi-print-command tex-dvi-view-command))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1385 (tex-print)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1386
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1387 (defun tex-append (file-name suffix)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1388 "Append to FILENAME the suffix SUFFIX, using same algorithm TeX uses.
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1389 Pascal-based TeX scans for the first period, C TeX uses the last.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1390 No period is retained immediately before SUFFIX,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1391 so normally SUFFIX starts with one."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1392 (if (stringp file-name)
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1393 (let ((file (file-name-nondirectory file-name))
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1394 trial-name)
14383
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
1395 ;; Try splitting on last period.
10778
ace814499178 (tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents: 10572
diff changeset
1396 ;; The first-period split can get fooled when two files
ace814499178 (tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents: 10572
diff changeset
1397 ;; named a.tex and a.b.tex are both tex'd;
ace814499178 (tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents: 10572
diff changeset
1398 ;; the last-period split must be right if it matches at all.
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1399 (setq trial-name
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1400 (concat (file-name-directory file-name)
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1401 (substring file 0
10778
ace814499178 (tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents: 10572
diff changeset
1402 (string-match "\\.[^.]*$" file))
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1403 suffix))
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1404 (if (or (file-exists-p trial-name)
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1405 (file-exists-p (concat trial-name ".aux"))) ;for BibTeX files
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1406 trial-name
10778
ace814499178 (tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents: 10572
diff changeset
1407 ;; Not found, so split on first period.
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1408 (concat (file-name-directory file-name)
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1409 (substring file 0
10778
ace814499178 (tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents: 10572
diff changeset
1410 (string-match "\\." file))
4917
550746214170 (tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents: 4908
diff changeset
1411 suffix)))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1412 " "))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1413
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1414 (defun tex-show-print-queue ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1415 "Show the print queue that \\[tex-print] put your job on.
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 957
diff changeset
1416 Runs the shell command defined by `tex-show-queue-command'."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1417 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1418 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1419 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1420 (tex-start-shell))
10572
c8717227f621 (tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents: 10341
diff changeset
1421 (tex-send-command tex-show-queue-command)
c8717227f621 (tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents: 10341
diff changeset
1422 (tex-display-shell))
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1423
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1424 (defun tex-bibtex-file ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1425 "Run BibTeX on the current buffer's file."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1426 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1427 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1428 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1429 (tex-start-shell))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1430 (let ((tex-out-file
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1431 (tex-append (file-name-nondirectory (buffer-file-name)) ""))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1432 (file-dir (file-name-directory (buffer-file-name))))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1433 (tex-send-command tex-shell-cd-command file-dir)
10572
c8717227f621 (tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents: 10341
diff changeset
1434 (tex-send-command tex-bibtex-command tex-out-file))
c8717227f621 (tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents: 10341
diff changeset
1435 (tex-display-shell))
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1436
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
1437 (run-hooks 'tex-mode-load-hook)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1438
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 269
diff changeset
1439 (provide 'tex-mode)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 269
diff changeset
1440
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
1441 ;;; tex-mode.el ends here
741
587f7a98341d *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 739
diff changeset
1442