Mercurial > emacs
annotate lisp/textmodes/tex-mode.el @ 32604:c8b8e93bf2fd
*** empty log message ***
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Wed, 18 Oct 2000 08:52:23 +0000 |
parents | 783ed0889617 |
children | 74323fb60963 |
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 |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
3 ;; Copyright (C) 1985, 86, 89, 92, 94, 95, 96, 97, 98, 1999 |
17435
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 | 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 | 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 | 12 ;; This file is part of GNU Emacs. |
13 | |
14 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
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 | 17 ;; any later version. |
18 | |
19 ;; GNU Emacs is distributed in the hope that it will be useful, | |
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
22 ;; GNU General Public License for more details. | |
23 | |
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 | 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 |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
31 ;; Pacify the byte-compiler |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
32 (eval-when-compile |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
33 (require 'compare-w) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
34 (require 'cl) |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
35 (require 'skeleton)) |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
36 |
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
|
37 (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
|
38 (require 'compile) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
39 |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
40 (defgroup tex-file nil |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
41 "TeX files and directories" |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
42 :prefix "tex-" |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
43 :group 'tex) |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
44 |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
45 (defgroup tex-run nil |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
46 "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
|
47 :prefix "tex-" |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
48 :group 'tex) |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
49 |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
50 (defgroup tex-view nil |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
51 "Viewing and printing TeX files" |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
52 :prefix "tex-" |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
53 :group 'tex) |
85 | 54 |
957 | 55 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
56 (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
|
57 "*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
|
58 :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
|
59 string) |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
60 :group 'tex-run) |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
61 |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
62 ;;;###autoload |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
63 (defcustom tex-directory "." |
15916
61e90a3e66aa
(tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15644
diff
changeset
|
64 "*Directory in which temporary files are written. |
7285 | 65 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
|
66 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
|
67 `\\input' commands with relative directories." |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
68 :type 'directory |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
69 :group 'tex-file) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
70 |
957 | 71 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
72 (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
|
73 "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
|
74 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
|
75 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
|
76 `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
|
77 :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
|
78 regexp) |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
79 :group 'tex-file) |
16777
b655268ba44f
(tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16493
diff
changeset
|
80 |
b655268ba44f
(tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16493
diff
changeset
|
81 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
82 (defcustom tex-main-file nil |
15916
61e90a3e66aa
(tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15644
diff
changeset
|
83 "*The main TeX source file which includes this buffer's file. |
22847
31924d388b84
(tex-main-file): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22707
diff
changeset
|
84 The command `tex-file' runs TeX on the file specified by `tex-main-file' |
31924d388b84
(tex-main-file): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
22707
diff
changeset
|
85 if the variable is non-nil." |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
86 :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
|
87 file) |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
88 :group 'tex-file) |
15916
61e90a3e66aa
(tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15644
diff
changeset
|
89 |
61e90a3e66aa
(tex-main-file): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
15644
diff
changeset
|
90 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
91 (defcustom tex-offer-save t |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
92 "*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
|
93 :type 'boolean |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
94 :group 'tex-file) |
85 | 95 |
957 | 96 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
97 (defcustom tex-run-command "tex" |
85 | 98 "*Command used to run TeX subjob. |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
99 TeX Mode sets `tex-command' to this string. |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
100 See the documentation of that variable." |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
101 :type 'string |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
102 :group 'tex-run) |
85 | 103 |
957 | 104 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
105 (defcustom latex-run-command "latex" |
85 | 106 "*Command used to run LaTeX subjob. |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
107 LaTeX Mode sets `tex-command' to this string. |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
108 See the documentation of that variable." |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
109 :type 'string |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
110 :group 'tex-run) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
111 |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
112 ;;;###autoload |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
113 (defcustom slitex-run-command "slitex" |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
114 "*Command used to run SliTeX subjob. |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
115 SliTeX Mode sets `tex-command' to this string. |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
116 See the documentation of that variable." |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
117 :type 'string |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
118 :group 'tex-run) |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
119 |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
120 ;;;###autoload |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
121 (defcustom tex-start-options-string "\\nonstopmode\\input" |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
122 "*TeX options to use when running TeX. |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
123 These precede the input file name. If nil, TeX runs without option. |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
124 See the documentation of `tex-command'." |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
125 :type '(radio (const :tag "Interactive \(nil\)" nil) |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
126 (const :tag "Nonstop \(\"\\nonstopmode\\input\"\)" |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
127 "\\nonstopmode\\input") |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
128 (string :tag "String at your choice")) |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
129 :group 'tex-run |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
130 :version "20.4") |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
131 |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
132 (defvar standard-latex-block-names |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
133 '("abstract" "array" "center" "description" |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
134 "displaymath" "document" "enumerate" "eqnarray" |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
135 "eqnarray*" "equation" "figure" "figure*" |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
136 "flushleft" "flushright" "itemize" "letter" |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
137 "list" "minipage" "picture" "quotation" |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
138 "quote" "slide" "sloppypar" "tabbing" |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
139 "table" "table*" "tabular" "tabular*" |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
140 "thebibliography" "theindex*" "titlepage" "trivlist" |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
141 "verbatim" "verbatim*" "verse") |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
142 "Standard LaTeX block names.") |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
143 |
957 | 144 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
145 (defcustom latex-block-names nil |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
146 "*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
|
147 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
|
148 :type '(repeat string) |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
149 :group 'tex-run) |
85 | 150 |
957 | 151 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
152 (defcustom tex-bibtex-command "bibtex" |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
153 "*Command used by `tex-bibtex-file' to gather bibliographic data. |
7285 | 154 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
|
155 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
|
156 :type 'string |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
157 :group 'tex-run) |
85 | 158 |
957 | 159 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
160 (defcustom tex-dvi-print-command "lpr -d" |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
161 "*Command used by \\[tex-print] to print a .dvi file. |
7285 | 162 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
|
163 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
|
164 :type 'string |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
165 :group 'tex-view) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
166 |
957 | 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-alt-dvi-print-command "lpr -d" |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
169 "*Command used by \\[tex-print] with a prefix arg to print a .dvi file. |
7285 | 170 If this string contains an asterisk (`*'), that is replaced by the file name; |
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 |
7285 | 173 If two printers are not enough of a choice, you can set the variable |
174 `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
|
175 for example, |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
176 |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
177 (setq tex-alt-dvi-print-command |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
178 '(format \"lpr -P%s\" (read-string \"Use printer: \"))) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
179 |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
180 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
|
181 use." |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
182 :type '(choice (string :tag "Command") |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
183 (sexp :tag "Expression")) |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
184 :group 'tex-view) |
85 | 185 |
957 | 186 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
187 (defcustom tex-dvi-view-command nil |
7285 | 188 "*Command used by \\[tex-view] to display a `.dvi' file. |
189 If this string contains an asterisk (`*'), that is replaced by the file name; | |
190 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
|
191 |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
192 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
|
193 window system being used. For example, |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
194 |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
195 (setq tex-dvi-view-command |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
196 (if (eq window-system 'x) \"xdvi\" \"dvi2tty * | cat -s\")) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
197 |
7285 | 198 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
|
199 otherwise." |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
200 :type '(choice (const nil) string) |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
201 :group 'tex-view) |
85 | 202 |
957 | 203 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
204 (defcustom tex-show-queue-command "lpq" |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
205 "*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
|
206 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
|
207 :type 'string |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
208 :group 'tex-view) |
85 | 209 |
957 | 210 ;;;###autoload |
26270
14dbec3a82b4
(tex-default-mode): Changed to latex-mode.
Gerd Moellmann <gerd@gnu.org>
parents:
25414
diff
changeset
|
211 (defcustom tex-default-mode 'latex-mode |
85 | 212 "*Mode to enter for a new file that might be either TeX or LaTeX. |
213 This variable is used when it can't be determined whether the file | |
214 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
|
215 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
|
216 :type 'function |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
217 :group 'tex) |
85 | 218 |
957 | 219 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
220 (defcustom tex-open-quote "``" |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
221 "*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
|
222 :type 'string |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
223 :group 'tex) |
85 | 224 |
957 | 225 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
226 (defcustom tex-close-quote "''" |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
227 "*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
|
228 :type 'string |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
229 :group 'tex) |
85 | 230 |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
231 (defvar tex-last-temp-file nil |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
232 "Latest temporary file generated by \\[tex-region] and \\[tex-buffer]. |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
233 Deleted when the \\[tex-region] or \\[tex-buffer] is next run, or when the |
7285 | 234 tex shell terminates.") |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
235 |
85 | 236 (defvar tex-command nil |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
237 "*Command to run TeX. |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
238 If this string contains an asterisk \(`*'\), that is replaced by the file name\; |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
239 otherwise the \(shell-quoted\) value of `tex-start-options-string' and |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
240 the file name are added at the end, with blanks as separators. |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
241 |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
242 In TeX, LaTeX, and SliTeX Mode this variable becomes buffer local. |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
243 In these modes, use \\[set-variable] if you want to change it for the |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
244 current buffer.") |
85 | 245 |
246 (defvar tex-trailer nil | |
247 "String appended after the end of a region sent to TeX by \\[tex-region].") | |
248 | |
249 (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
|
250 "Regular expression used by \\[tex-region] to find start of file's header.") |
85 | 251 |
252 (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
|
253 "Regular expression used by \\[tex-region] to find end of file's header.") |
85 | 254 |
255 (defvar tex-shell-cd-command "cd" | |
256 "Command to give to shell running TeX to change directory. | |
7285 | 257 The value of `tex-directory' is appended to this, separated by a space.") |
85 | 258 |
259 (defvar tex-zap-file nil | |
260 "Temporary file name used for text being sent as input to TeX. | |
261 Should be a simple file name with no extension or directory specification.") | |
262 | |
263 (defvar tex-last-buffer-texed nil | |
264 "Buffer which was last TeXed.") | |
265 | |
266 (defvar tex-print-file nil | |
267 "File name that \\[tex-print] prints. | |
268 Set by \\[tex-region], \\[tex-buffer], and \\[tex-file].") | |
269 | |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
270 (easy-mmode-defsyntax tex-mode-syntax-table |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
271 '((?% . "<") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
272 (?\n . ">") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
273 (?\f . ">") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
274 (?\C-@ . "w") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
275 (?' . "w") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
276 (?@ . "_") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
277 (?* . "_") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
278 (?\t . " ") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
279 (?~ . " ") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
280 (?$ . "$$") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
281 (?\\ . "/") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
282 (?\" . ".") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
283 (?& . ".") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
284 (?_ . ".")) |
85 | 285 "Syntax table used while in TeX mode.") |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
286 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
287 ;;;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
288 ;;;; Imenu support |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
289 ;;;; |
85 | 290 |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
291 (defcustom latex-imenu-indent-string ". " |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
292 "*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
|
293 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
|
294 :type 'string |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
295 :group 'tex) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
296 |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
297 (defvar latex-section-alist |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
298 '(("part" . 0) ("chapter" . 1) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
299 ("section" . 2) ("subsection" . 3) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
300 ("subsubsection" . 4) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
301 ("paragraph" . 5) ("subparagraph" . 6))) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
302 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
303 (defvar latex-metasection-list |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
304 '("documentstyle" "documentclass" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
305 "begin{document}" "end{document}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
306 "appendix" "frontmatter" "mainmatter" "backmatter")) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
307 |
15240
21998d33460f
(latex-imenu-create-index):
Richard M. Stallman <rms@gnu.org>
parents:
14734
diff
changeset
|
308 (defun latex-imenu-create-index () |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
309 "Generate an alist for imenu from a LaTeX buffer." |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
310 (let ((section-regexp |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
311 (concat "\\\\" (regexp-opt (mapcar 'car latex-section-alist) t) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
312 "\\*?[ \t]*{")) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
313 (metasection-regexp |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
314 (concat "\\\\" (regexp-opt latex-metasection-list t))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
315 i0 menu case-fold-search) |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
316 (save-excursion |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
317 ;; 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
|
318 ;; 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
|
319 (goto-char (point-min)) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
320 (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
|
321 (setq i0 0) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
322 (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
|
323 (setq i0 1) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
324 (setq i0 2))) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
325 |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
326 ;; Look for chapters and sections. |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
327 (goto-char (point-min)) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
328 (while (search-forward-regexp section-regexp nil t) |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
329 (let ((start (match-beginning 0)) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
330 (here (point)) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
331 (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
|
332 (match-beginning 1) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
333 (match-end 1)) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
334 latex-section-alist)))) |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
335 (backward-char 1) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
336 (condition-case err |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
337 (progn |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
338 ;; 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
|
339 ;; titles. |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
340 (forward-sexp 1) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
341 (push (cons (concat (apply 'concat |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
342 (make-list |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
343 (max 0 (- i i0)) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
344 latex-imenu-indent-string)) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
345 (buffer-substring-no-properties |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
346 here (1- (point)))) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
347 start) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
348 menu)) |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
349 (error nil)))) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
350 |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
351 ;; Look for included material. |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
352 (goto-char (point-min)) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
353 (while (search-forward-regexp |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
354 "\\\\\\(include\\|input\\|verbatiminput\\|bibliography\\)\ |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
355 \[ \t]*{\\([^}\n]+\\)}" |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
356 nil t) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
357 (push (cons (concat "<<" (buffer-substring-no-properties |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
358 (match-beginning 2) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
359 (match-end 2)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
360 (if (= (char-after (match-beginning 1)) ?b) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
361 ".bbl" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
362 ".tex")) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
363 (match-beginning 0)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
364 menu)) |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
365 |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
366 ;; 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
|
367 (goto-char (point-min)) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
368 (while (search-forward-regexp metasection-regexp nil t) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
369 (push (cons "--" (match-beginning 0)) menu)) |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
370 |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
371 ;; 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
|
372 (sort menu (function (lambda (a b) (< (cdr a) (cdr b)))))))) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
373 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
374 ;;;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
375 ;;;; Outline support |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
376 ;;;; |
12704
0b36e50fb5af
(latex-imenu-generic-expression): Var defined.
Karl Heuer <kwzh@gnu.org>
parents:
11617
diff
changeset
|
377 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
378 (defvar latex-outline-regexp |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
379 (concat "\\\\" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
380 (regexp-opt (append latex-metasection-list |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
381 (mapcar 'car latex-section-alist)) t))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
382 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
383 (defun latex-outline-level () |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
384 (if (looking-at latex-outline-regexp) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
385 (1+ (or (cdr (assoc (match-string 1) latex-section-alist)) -1)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
386 1000)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
387 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
388 ;;;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
389 ;;;; Font-Lock support |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
390 ;;;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
391 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
392 ;(defvar tex-font-lock-keywords |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
393 ; ;; Regexps updated with help from Ulrik Dickow <dickow@nbi.dk>. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
394 ; '(("\\\\\\(begin\\|end\\|newcommand\\){\\([a-zA-Z0-9\\*]+\\)}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
395 ; 2 font-lock-function-name-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
396 ; ("\\\\\\(cite\\|label\\|pageref\\|ref\\){\\([^} \t\n]+\\)}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
397 ; 2 font-lock-constant-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
398 ; ;; It seems a bit dubious to use `bold' and `italic' faces since we might |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
399 ; ;; not be able to display those fonts. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
400 ; ("{\\\\bf\\([^}]+\\)}" 1 'bold keep) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
401 ; ("{\\\\\\(em\\|it\\|sl\\)\\([^}]+\\)}" 2 'italic keep) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
402 ; ("\\\\\\([a-zA-Z@]+\\|.\\)" . font-lock-keyword-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
403 ; ("^[ \t\n]*\\\\def[\\\\@]\\(\\w+\\)" 1 font-lock-function-name-face keep)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
404 ; ;; Rewritten and extended for LaTeX2e by Ulrik Dickow <dickow@nbi.dk>. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
405 ; '(("\\\\\\(begin\\|end\\|newcommand\\){\\([a-zA-Z0-9\\*]+\\)}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
406 ; 2 font-lock-function-name-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
407 ; ("\\\\\\(cite\\|label\\|pageref\\|ref\\){\\([^} \t\n]+\\)}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
408 ; 2 font-lock-constant-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
409 ; ("^[ \t]*\\\\def\\\\\\(\\(\\w\\|@\\)+\\)" 1 font-lock-function-name-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
410 ; "\\\\\\([a-zA-Z@]+\\|.\\)" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
411 ; ;; It seems a bit dubious to use `bold' and `italic' faces since we might |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
412 ; ;; not be able to display those fonts. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
413 ; ;; LaTeX2e: \emph{This is emphasized}. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
414 ; ("\\\\emph{\\([^}]+\\)}" 1 'italic keep) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
415 ; ;; LaTeX2e: \textbf{This is bold}, \textit{...}, \textsl{...} |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
416 ; ("\\\\text\\(\\(bf\\)\\|it\\|sl\\){\\([^}]+\\)}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
417 ; 3 (if (match-beginning 2) 'bold 'italic) keep) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
418 ; ;; Old-style bf/em/it/sl. Stop at `\\' and un-escaped `&', for tables. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
419 ; ("\\\\\\(\\(bf\\)\\|em\\|it\\|sl\\)\\>\\(\\([^}&\\]\\|\\\\[^\\]\\)+\\)" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
420 ; 3 (if (match-beginning 2) 'bold 'italic) keep)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
421 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
422 ;; Rewritten with the help of Alexandra Bac <abac@welcome.disi.unige.it>. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
423 (defconst tex-font-lock-keywords-1 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
424 (eval-when-compile |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
425 (let* (;; Names of commands whose arg should be fontified as heading, etc. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
426 (headings (regexp-opt |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
427 '("title" "begin" "end" "chapter" "part" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
428 "section" "subsection" "subsubsection" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
429 "paragraph" "subparagraph" "subsubparagraph" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
430 "newcommand" "renewcommand" "newenvironment" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
431 "newtheorem") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
432 t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
433 (variables (regexp-opt |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
434 '("newcounter" "newcounter*" "setcounter" "addtocounter" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
435 "setlength" "addtolength" "settowidth") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
436 t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
437 (includes (regexp-opt |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
438 '("input" "include" "includeonly" "bibliography" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
439 "epsfig" "psfig" "epsf" "nofiles" "usepackage" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
440 "includegraphics" "includegraphics*") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
441 t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
442 ;; Miscellany. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
443 (slash "\\\\") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
444 (opt "\\(\\[[^]]*\\]\\)?") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
445 (arg "{\\(\\(?:[^{}]+\\(?:{[^}]*}\\)?\\)+\\)")) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
446 (list |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
447 ;; Heading args. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
448 (list (concat slash headings "\\*?" opt arg) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
449 3 'font-lock-function-name-face 'prepend) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
450 ;; Variable args. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
451 (list (concat slash variables arg) 2 'font-lock-variable-name-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
452 ;; Include args. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
453 (list (concat slash includes opt arg) 3 'font-lock-builtin-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
454 ;; Definitions. I think. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
455 '("^[ \t]*\\\\def\\\\\\(\\(\\w\\|@\\)+\\)" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
456 1 font-lock-function-name-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
457 ))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
458 "Subdued expressions to highlight in TeX modes.") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
459 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
460 (defconst tex-font-lock-keywords-2 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
461 (append tex-font-lock-keywords-1 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
462 (eval-when-compile |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
463 (let* (;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
464 ;; Names of commands whose arg should be fontified with fonts. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
465 (bold (regexp-opt '("bf" "textbf" "textsc" "textup" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
466 "boldsymbol" "pmb") t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
467 (italic (regexp-opt '("it" "textit" "textsl" "emph") t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
468 (type (regexp-opt '("texttt" "textmd" "textrm" "textsf") t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
469 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
470 ;; Names of commands whose arg should be fontified as a citation. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
471 (citations (regexp-opt |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
472 '("label" "ref" "pageref" "vref" "eqref" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
473 "cite" "nocite" "caption" "index" "glossary" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
474 "footnote" "footnotemark" "footnotetext") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
475 t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
476 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
477 ;; Names of commands that should be fontified. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
478 (specials (regexp-opt |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
479 '("\\" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
480 "linebreak" "nolinebreak" "pagebreak" "nopagebreak" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
481 "newline" "newpage" "clearpage" "cleardoublepage" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
482 "displaybreak" "allowdisplaybreaks" "enlargethispage") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
483 t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
484 (general "\\([a-zA-Z@]+\\**\\|[^ \t\n]\\)") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
485 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
486 ;; Miscellany. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
487 (slash "\\\\") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
488 (opt "\\(\\[[^]]*\\]\\)?") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
489 (arg "{\\(\\(?:[^{}]+\\(?:{[^}]*}\\)?\\)+\\)")) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
490 (list |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
491 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
492 ;; Citation args. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
493 (list (concat slash citations opt arg) 3 'font-lock-constant-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
494 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
495 ;; Command names, special and general. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
496 (cons (concat slash specials) 'font-lock-warning-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
497 (concat slash general) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
498 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
499 ;; Font environments. It seems a bit dubious to use `bold' etc. faces |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
500 ;; since we might not be able to display those fonts. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
501 (list (concat slash bold arg) 2 '(quote bold) 'append) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
502 (list (concat slash italic arg) 2 '(quote italic) 'append) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
503 (list (concat slash type arg) 2 '(quote bold-italic) 'append) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
504 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
505 ;; Old-style bf/em/it/sl. Stop at `\\' and un-escaped `&', for tables. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
506 (list (concat "\\\\\\(\\(bf\\)\\|em\\|it\\|sl\\)\\>" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
507 "\\(\\([^}&\\]\\|\\\\[^\\]\\)+\\)") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
508 3 '(if (match-beginning 2) 'bold 'italic) 'append) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
509 )))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
510 "Gaudy expressions to highlight in TeX modes.") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
511 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
512 (defvar tex-font-lock-keywords tex-font-lock-keywords-1 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
513 "Default expressions to highlight in TeX modes.") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
514 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
515 |
85 | 516 (defun tex-define-common-keys (keymap) |
7285 | 517 "Define the keys that we want defined both in TeX mode and in the TeX shell." |
85 | 518 (define-key keymap "\C-c\C-k" 'tex-kill-job) |
519 (define-key keymap "\C-c\C-l" 'tex-recenter-output-buffer) | |
520 (define-key keymap "\C-c\C-q" 'tex-show-print-queue) | |
521 (define-key keymap "\C-c\C-p" 'tex-print) | |
522 (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
|
523 |
be43750c20d2
(tex-define-common-keys): Define menu items.
Richard M. Stallman <rms@gnu.org>
parents:
4768
diff
changeset
|
524 (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
|
525 |
be43750c20d2
(tex-define-common-keys): Define menu items.
Richard M. Stallman <rms@gnu.org>
parents:
4768
diff
changeset
|
526 (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
|
527 (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
|
528 '("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
|
529 (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
|
530 '("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
|
531 (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
|
532 '("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
|
533 (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
|
534 (define-key keymap [menu-bar tex tex-view] '("Tex View" . tex-view)) |
85 | 535 ) |
536 | |
537 (defvar tex-mode-map nil "Keymap for TeX mode.") | |
538 | |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
539 (if tex-mode-map |
85 | 540 nil |
541 (setq tex-mode-map (make-sparse-keymap)) | |
542 (tex-define-common-keys tex-mode-map) | |
543 (define-key tex-mode-map "\"" 'tex-insert-quote) | |
544 (define-key tex-mode-map "\n" 'tex-terminate-paragraph) | |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
545 (define-key tex-mode-map "\M-\r" 'latex-insert-item) |
85 | 546 (define-key tex-mode-map "\C-c}" 'up-list) |
547 (define-key tex-mode-map "\C-c{" 'tex-insert-braces) | |
548 (define-key tex-mode-map "\C-c\C-r" 'tex-region) | |
549 (define-key tex-mode-map "\C-c\C-b" 'tex-buffer) | |
550 (define-key tex-mode-map "\C-c\C-f" 'tex-file) | |
551 (define-key tex-mode-map "\C-c\C-i" 'tex-bibtex-file) | |
552 (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
|
553 (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
|
554 (define-key tex-mode-map "\C-c\C-u" 'tex-goto-last-unclosed-latex-block) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
555 (define-key tex-mode-map "\C-c\C-m" 'tex-feed-input) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
556 (define-key tex-mode-map [(control return)] 'tex-feed-input) |
10296
c58e6bb97038
(tex-mode-map): Add BibTeX File menu item.
Richard M. Stallman <rms@gnu.org>
parents:
10215
diff
changeset
|
557 (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
|
558 '("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
|
559 (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
|
560 '("Validate Region" . tex-validate-region)) |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
561 (define-key tex-mode-map [menu-bar tex tex-validate-buffer] |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
562 '("Validate Buffer" . tex-validate-buffer)) |
4917
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
563 (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
|
564 '("TeX Region" . tex-region)) |
4917
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
565 (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
|
566 '("TeX Buffer" . tex-buffer)) |
c58e6bb97038
(tex-mode-map): Add BibTeX File menu item.
Richard M. Stallman <rms@gnu.org>
parents:
10215
diff
changeset
|
567 (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
|
568 |
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
569 (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
|
570 (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
|
571 (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
|
572 (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
|
573 (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
|
574 (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
|
575 (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
|
576 |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
577 (defvar tex-shell-map |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
578 (let ((m (make-sparse-keymap))) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
579 (set-keymap-parent m shell-mode-map) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
580 (tex-define-common-keys m) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
581 m) |
7285 | 582 "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
|
583 Inherits `shell-mode-map' with a few additions.") |
85 | 584 |
14383
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
585 (defvar tex-face-alist |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
586 '((bold . "{\\bf ") |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
587 (italic . "{\\it ") |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
588 (bold-italic . "{\\bi ") ; hypothetical |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
589 (underline . "\\underline{") |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
590 (default . "{\\rm ")) |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
591 "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
|
592 |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
593 (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
|
594 `((italic . "{\\em ") |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
595 ,@tex-face-alist) |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
596 "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
|
597 |
85 | 598 ;;; This would be a lot simpler if we just used a regexp search, |
599 ;;; but then it would be too slow. | |
256 | 600 ;;;###autoload |
85 | 601 (defun tex-mode () |
602 "Major mode for editing files of input for TeX, LaTeX, or SliTeX. | |
603 Tries to determine (by looking at the beginning of the file) whether | |
7285 | 604 this file is for plain TeX, LaTeX, or SliTeX and calls `plain-tex-mode', |
605 `latex-mode', or `slitex-mode', respectively. If it cannot be determined, | |
606 such as if there are no commands in the file, the value of `tex-default-mode' | |
607 says which mode to use." | |
85 | 608 (interactive) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
609 (let ((mode tex-default-mode) slash comment) |
85 | 610 (save-excursion |
611 (goto-char (point-min)) | |
612 (while (and (setq slash (search-forward "\\" nil t)) | |
613 (setq comment (let ((search-end (point))) | |
614 (save-excursion | |
615 (beginning-of-line) | |
616 (search-forward "%" search-end t)))))) | |
617 (if (and slash (not comment)) | |
10325
070c1f54707b
(tex-mode): Recognize \NeedsTeXFormat{LaTeX2e}.
Richard M. Stallman <rms@gnu.org>
parents:
10318
diff
changeset
|
618 (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
|
619 (if (looking-at |
090fb6dea9dd
(tex-mode): Allow for documentclass options when checking for SliTeX.
Richard M. Stallman <rms@gnu.org>
parents:
8474
diff
changeset
|
620 "document\\(style\\|class\\)\\(\\[.*\\]\\)?{slides}") |
85 | 621 'slitex-mode |
622 'latex-mode) | |
623 'plain-tex-mode)))) | |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
624 (funcall mode))) |
2598
2189edb30955
Removed spurious comment (obsoleted by ;;;###autoload).
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2588
diff
changeset
|
625 |
269 | 626 ;;;###autoload |
2571
b65cf676a09b
All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
627 (defalias 'TeX-mode 'tex-mode) |
269 | 628 ;;;###autoload |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
629 (defalias 'plain-TeX-mode 'plain-tex-mode) |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
630 ;;;###autoload |
2571
b65cf676a09b
All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
631 (defalias 'LaTeX-mode 'latex-mode) |
85 | 632 |
256 | 633 ;;;###autoload |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
634 (define-derived-mode plain-tex-mode text-mode "TeX" |
85 | 635 "Major mode for editing files of input for plain TeX. |
636 Makes $ and } display the characters they match. | |
637 Makes \" insert `` when it seems to be the beginning of a quotation, | |
638 and '' when it appears to be the end; it inserts \" only after a \\. | |
639 | |
640 Use \\[tex-region] to run TeX on the current region, plus a \"header\" | |
641 copied from the top of the file (containing macro definitions, etc.), | |
642 running TeX under a special subshell. \\[tex-buffer] does the whole buffer. | |
643 \\[tex-file] saves the buffer and then processes the file. | |
644 \\[tex-print] prints the .dvi file made by any of these. | |
645 \\[tex-view] previews the .dvi file made by any of these. | |
646 \\[tex-bibtex-file] runs bibtex on the file of the current buffer. | |
647 | |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
648 Use \\[tex-validate-buffer] to check buffer for paragraphs containing |
85 | 649 mismatched $'s or braces. |
650 | |
651 Special commands: | |
652 \\{tex-mode-map} | |
653 | |
654 Mode variables: | |
655 tex-run-command | |
656 Command string used by \\[tex-region] or \\[tex-buffer]. | |
657 tex-directory | |
658 Directory in which to create temporary files for TeX jobs | |
659 run by \\[tex-region] or \\[tex-buffer]. | |
660 tex-dvi-print-command | |
661 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
|
662 tex-alt-dvi-print-command |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
663 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
|
664 argument) to print a .dvi file. |
85 | 665 tex-dvi-view-command |
666 Command string used by \\[tex-view] to preview a .dvi file. | |
667 tex-show-queue-command | |
668 Command string used by \\[tex-show-print-queue] to show the print | |
669 queue that \\[tex-print] put your job on. | |
670 | |
7285 | 671 Entering Plain-tex mode runs the hook `text-mode-hook', then the hook |
672 `tex-mode-hook', and finally the hook `plain-tex-mode-hook'. When the | |
673 special subshell is initiated, the hook `tex-shell-hook' is run." | |
85 | 674 (tex-common-initialization) |
675 (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
|
676 (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
|
677 (setq tex-end-of-header "%\\*\\*end of header") |
85 | 678 (setq tex-trailer "\\bye\n") |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
679 (run-hooks 'tex-mode-hook)) |
85 | 680 |
256 | 681 ;;;###autoload |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
682 (define-derived-mode latex-mode text-mode "LaTeX" |
85 | 683 "Major mode for editing files of input for LaTeX. |
684 Makes $ and } display the characters they match. | |
685 Makes \" insert `` when it seems to be the beginning of a quotation, | |
686 and '' when it appears to be the end; it inserts \" only after a \\. | |
687 | |
688 Use \\[tex-region] to run LaTeX on the current region, plus the preamble | |
689 copied from the top of the file (containing \\documentstyle, etc.), | |
690 running LaTeX under a special subshell. \\[tex-buffer] does the whole buffer. | |
691 \\[tex-file] saves the buffer and then processes the file. | |
692 \\[tex-print] prints the .dvi file made by any of these. | |
693 \\[tex-view] previews the .dvi file made by any of these. | |
694 \\[tex-bibtex-file] runs bibtex on the file of the current buffer. | |
695 | |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
696 Use \\[tex-validate-buffer] to check buffer for paragraphs containing |
85 | 697 mismatched $'s or braces. |
698 | |
699 Special commands: | |
700 \\{tex-mode-map} | |
701 | |
702 Mode variables: | |
703 latex-run-command | |
704 Command string used by \\[tex-region] or \\[tex-buffer]. | |
705 tex-directory | |
706 Directory in which to create temporary files for LaTeX jobs | |
707 run by \\[tex-region] or \\[tex-buffer]. | |
708 tex-dvi-print-command | |
709 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
|
710 tex-alt-dvi-print-command |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
711 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
|
712 argument) to print a .dvi file. |
85 | 713 tex-dvi-view-command |
714 Command string used by \\[tex-view] to preview a .dvi file. | |
715 tex-show-queue-command | |
716 Command string used by \\[tex-show-print-queue] to show the print | |
717 queue that \\[tex-print] put your job on. | |
718 | |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
719 Entering Latex mode runs the hook `text-mode-hook', then |
7285 | 720 `tex-mode-hook', and finally `latex-mode-hook'. When the special |
721 subshell is initiated, `tex-shell-hook' is run." | |
85 | 722 (tex-common-initialization) |
723 (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
|
724 (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
|
725 (setq tex-end-of-header "\\\\begin{document}") |
85 | 726 (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
|
727 ;; 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
|
728 ;; 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
|
729 ;; but does not separate paragraphs if it has more stuff on it. |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
730 (setq paragraph-start |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
731 (concat "[ \t]*$\\|[\f%]\\|[ \t]*\\$\\$\\|" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
732 "\\\\[][]\\|" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
733 "\\\\" (regexp-opt (append |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
734 (mapcar 'car latex-section-alist) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
735 '("begin" "label" "end" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
736 "item" "bibitem" "newline" "noindent" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
737 "newpage" "footnote" "marginpar" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
738 "parbox" "caption")) t) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
739 "\\>\\|\\\\[a-z]*" (regexp-opt '("space" "skip" "page") t) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
740 "\\>")) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
741 (setq paragraph-separate |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
742 (concat "[ \t]*$\\|[\f%]\\|[ \t]*\\$\\$[ \t]*$\\|" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
743 "\\\\[][]\\|" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
744 "\\\\" (regexp-opt (append |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
745 (mapcar 'car latex-section-alist) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
746 '("begin" "label" "end" )) t) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
747 "\\>\\|\\\\\\(" (regexp-opt '("item" "bibitem" "newline" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
748 "noindent" "newpage" "footnote" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
749 "marginpar" "parbox" "caption")) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
750 "\\|[a-z]*\\(space\\|skip\\|page[a-z]*\\)" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
751 "\\)[ \t]*\\($\\|%\\)")) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
752 (set (make-local-variable 'imenu-create-index-function) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
753 'latex-imenu-create-index) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
754 (set (make-local-variable 'tex-face-alist) tex-latex-face-alist) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
755 (set (make-local-variable 'fill-nobreak-predicate) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
756 'latex-fill-nobreak-predicate) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
757 (set (make-local-variable 'indent-line-function) 'latex-indent) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
758 (set (make-local-variable 'outline-regexp) latex-outline-regexp) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
759 (set (make-local-variable 'outline-level) 'latex-outline-level) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
760 (set (make-local-variable 'forward-sexp-function) 'latex-forward-sexp) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
761 (run-hooks 'tex-mode-hook)) |
85 | 762 |
4768
9d84105b1248
(slitex-mode): Add ###autoload magic cookie.
Brian Fox <bfox@gnu.org>
parents:
4376
diff
changeset
|
763 ;;;###autoload |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
764 (define-derived-mode slitex-mode latex-mode "SliTeX" |
85 | 765 "Major mode for editing files of input for SliTeX. |
766 Makes $ and } display the characters they match. | |
767 Makes \" insert `` when it seems to be the beginning of a quotation, | |
768 and '' when it appears to be the end; it inserts \" only after a \\. | |
769 | |
770 Use \\[tex-region] to run SliTeX on the current region, plus the preamble | |
771 copied from the top of the file (containing \\documentstyle, etc.), | |
772 running SliTeX under a special subshell. \\[tex-buffer] does the whole buffer. | |
773 \\[tex-file] saves the buffer and then processes the file. | |
774 \\[tex-print] prints the .dvi file made by any of these. | |
775 \\[tex-view] previews the .dvi file made by any of these. | |
776 \\[tex-bibtex-file] runs bibtex on the file of the current buffer. | |
777 | |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
778 Use \\[tex-validate-buffer] to check buffer for paragraphs containing |
85 | 779 mismatched $'s or braces. |
780 | |
781 Special commands: | |
782 \\{tex-mode-map} | |
783 | |
784 Mode variables: | |
785 slitex-run-command | |
786 Command string used by \\[tex-region] or \\[tex-buffer]. | |
787 tex-directory | |
788 Directory in which to create temporary files for SliTeX jobs | |
789 run by \\[tex-region] or \\[tex-buffer]. | |
790 tex-dvi-print-command | |
791 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
|
792 tex-alt-dvi-print-command |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
793 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
|
794 argument) to print a .dvi file. |
85 | 795 tex-dvi-view-command |
796 Command string used by \\[tex-view] to preview a .dvi file. | |
797 tex-show-queue-command | |
798 Command string used by \\[tex-show-print-queue] to show the print | |
799 queue that \\[tex-print] put your job on. | |
800 | |
7285 | 801 Entering SliTeX mode runs the hook `text-mode-hook', then the hook |
802 `tex-mode-hook', then the hook `latex-mode-hook', and finally the hook | |
803 `slitex-mode-hook'. When the special subshell is initiated, the hook | |
804 `tex-shell-hook' is run." | |
85 | 805 (setq tex-command slitex-run-command) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
806 (setq tex-start-of-header "\\\\documentstyle{slides}\\|\\\\documentclass{slides}")) |
85 | 807 |
808 (defun tex-common-initialization () | |
809 (use-local-map tex-mode-map) | |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
810 (set-syntax-table tex-mode-syntax-table) |
18587
3290767e31d8
(tex-common-initialization):
Richard M. Stallman <rms@gnu.org>
parents:
18393
diff
changeset
|
811 ;; Regexp isearch should accept newline and formfeed as whitespace. |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
812 (set (make-local-variable 'search-whitespace-regexp) "[ \t\r\n\f]+") |
5262
b3a689b41d39
(tex-common-initialization): Make paragraph-start
Richard M. Stallman <rms@gnu.org>
parents:
5088
diff
changeset
|
813 ;; A line containing just $$ is treated as a paragraph separator. |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
814 (set (make-local-variable 'paragraph-start) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
815 "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$") |
5425
3dd5ff54e1cd
(slitex-mode, latex-mode): Set paragraph-start and
Richard M. Stallman <rms@gnu.org>
parents:
5262
diff
changeset
|
816 ;; 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
|
817 ;; but does not separate paragraphs if it has more stuff on it. |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
818 (set (make-local-variable 'paragraph-separate) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
819 "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$[ \t]*$") |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
820 (set (make-local-variable 'comment-start) "%") |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
821 (set (make-local-variable 'comment-add) 1) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
822 (set (make-local-variable 'comment-start-skip) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
823 "\\(\\(^\\|[^\\]\\)\\(\\\\\\\\\\)*\\)\\(%+ *\\)") |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
824 (set (make-local-variable 'parse-sexp-ignore-comments) t) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
825 (set (make-local-variable 'compare-windows-whitespace) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
826 'tex-categorize-whitespace) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
827 (set (make-local-variable 'facemenu-add-face-function) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
828 (lambda (face end) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
829 (let ((face-text (cdr (assq face tex-face-alist)))) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
830 (if face-text |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
831 face-text |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
832 (error "Face %s not configured for %s mode" face mode-name))))) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
833 (set (make-local-variable 'facemenu-end-add-face) "}") |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
834 (set (make-local-variable 'facemenu-remove-face-function) t) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
835 (set (make-local-variable 'font-lock-defaults) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
836 '((tex-font-lock-keywords |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
837 tex-font-lock-keywords-1 tex-font-lock-keywords-2) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
838 nil nil ((?$ . "\"")) nil |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
839 ;; Who ever uses that anyway ??? |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
840 (font-lock-mark-block-function . mark-paragraph))) |
85 | 841 (make-local-variable 'tex-command) |
842 (make-local-variable 'tex-start-of-header) | |
843 (make-local-variable 'tex-end-of-header) | |
844 (make-local-variable 'tex-trailer)) | |
845 | |
846 (defun tex-categorize-whitespace (backward-limit) | |
847 ;; compare-windows-whitespace is set to this. | |
848 ;; This is basically a finite-state machine. | |
849 ;; Returns a symbol telling how TeX would treat | |
850 ;; the whitespace we are looking at: null, space, or par. | |
851 (let ((category 'null) | |
852 (not-finished t)) | |
853 (skip-chars-backward " \t\n\f" backward-limit) | |
854 (while not-finished | |
855 (cond ((looking-at "[ \t]+") | |
856 (goto-char (match-end 0)) | |
18931
43b52e6a35c2
(tex-categorize-whitespace): Use eq, not eql.
Richard M. Stallman <rms@gnu.org>
parents:
18587
diff
changeset
|
857 (if (eq category 'null) |
85 | 858 (setq category 'space))) |
859 ((looking-at "\n") | |
18931
43b52e6a35c2
(tex-categorize-whitespace): Use eq, not eql.
Richard M. Stallman <rms@gnu.org>
parents:
18587
diff
changeset
|
860 (cond ((eq category 'newline) |
85 | 861 (setq category 'par) |
862 (setq not-finished nil)) | |
863 (t | |
864 (setq category 'newline) ;a strictly internal state | |
865 (goto-char (match-end 0))))) | |
866 ((looking-at "\f+") | |
867 (setq category 'par) | |
868 (setq not-finished nil)) | |
869 (t | |
870 (setq not-finished nil)))) | |
871 (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
|
872 (if (eq category 'newline) |
85 | 873 'space ;TeX doesn't distinguish |
874 category))) | |
875 | |
876 (defun tex-insert-quote (arg) | |
877 "Insert the appropriate quote marks for TeX. | |
2836
d95acb2243f9
(tex-insert-quote): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
2598
diff
changeset
|
878 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
|
879 \(normally '') depending on the context. With prefix argument, always |
85 | 880 inserts \" characters." |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
881 (interactive "*P") |
85 | 882 (if arg |
883 (self-insert-command (prefix-numeric-value arg)) | |
884 (insert | |
885 (cond ((or (bobp) | |
886 (save-excursion | |
887 (forward-char -1) | |
888 (looking-at "\\s(\\|\\s \\|\\s>"))) | |
889 tex-open-quote) | |
890 ((= (preceding-char) ?\\) | |
891 ?\") | |
892 (t | |
893 tex-close-quote))))) | |
894 | |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
895 (defun tex-validate-buffer () |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
896 "Check current buffer for paragraphs containing mismatched braces or $s. |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
897 Their positions are recorded in the buffer `*Occur*'. |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
898 To find a particular invalidity from `*Occur*', switch to that buffer |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
899 and type C-c C-c or click with mouse-2 |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
900 on the line for the invalidity you want to see." |
85 | 901 (interactive) |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
902 (let ((buffer (current-buffer)) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
903 (prevpos (point-min)) |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
904 (linenum nil) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
905 (num-matches 0)) |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
906 (with-output-to-temp-buffer "*Occur*" |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
907 (princ "Mismatches:\n") |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
908 (save-excursion |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
909 (set-buffer standard-output) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
910 (occur-mode) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
911 (setq occur-buffer buffer) |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
912 (setq occur-nlines 0)) |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
913 (save-excursion |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
914 (goto-char (point-max)) |
85 | 915 (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
|
916 (let ((end (point)) |
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
917 prev-end) |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
918 ;; Scan the previous paragraph for invalidities. |
15644
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
919 (if (search-backward "\n\n" nil t) |
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
920 (progn |
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
921 (setq prev-end (point)) |
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
922 (forward-char 2)) |
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
923 (goto-char (setq prev-end (point-min)))) |
85 | 924 (or (tex-validate-region (point) end) |
15644
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
925 (let* ((oend end) |
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
926 (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
|
927 start tem) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
928 (beginning-of-line) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
929 (setq start (point)) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
930 ;; 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
|
931 ;; in a cumulative fashion. |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
932 (if linenum |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
933 (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
|
934 (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
|
935 (setq prevpos (point)) |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
936 ;; Mention this mismatch in *Occur*. |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
937 ;; Since we scan from end of buffer to beginning, |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
938 ;; add each mismatch at the beginning of *Occur*. |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
939 (save-excursion |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
940 (setq tem (point-marker)) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
941 (set-buffer standard-output) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
942 (goto-char (point-min)) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
943 ;; Skip "Mismatches:" header line. |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
944 (forward-line 1) |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
945 (setq num-matches (1+ num-matches)) |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
946 (insert-buffer-substring buffer start end) |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
947 (let (text-beg (text-end (point-marker))) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
948 (forward-char (- start end)) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
949 (setq text-beg (point-marker)) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
950 (insert (format "%3d: " linenum)) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
951 (put-text-property (marker-position text-beg) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
952 (- (marker-position text-end) 1) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
953 'mouse-face 'highlight) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
954 (put-text-property (marker-position text-beg) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
955 (- (marker-position text-end) 1) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
956 'occur tem))))) |
15644
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
957 (goto-char prev-end)))) |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
958 (save-excursion |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
959 (set-buffer standard-output) |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
960 (if (eq num-matches 0) |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
961 (insert "None!\n")) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
962 (if (interactive-p) |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
963 (message "%d mismatches found" num-matches)))))) |
85 | 964 |
965 (defun tex-validate-region (start end) | |
966 "Check for mismatched braces or $'s in region. | |
967 Returns t if no mismatches. Returns nil and moves point to suspect | |
968 area if a mismatch is found." | |
969 (interactive "r") | |
970 (let ((failure-point nil) (max-possible-sexps (- end start))) | |
971 (save-excursion | |
972 (condition-case () | |
973 (save-restriction | |
974 (narrow-to-region start end) | |
20203
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
975 ;; First check that the open and close parens balance in numbers. |
85 | 976 (goto-char start) |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
977 (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
|
978 (forward-sexp 1)) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
979 ;; Now check that like matches like. |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
980 (goto-char start) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
981 (while (progn (skip-syntax-forward "^(") |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
982 (not (eobp))) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
983 (let ((match (matching-paren (following-char)))) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
984 (save-excursion |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
985 (forward-sexp 1) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
986 (or (= (preceding-char) match) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
987 (error "Mismatched parentheses")))) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
988 (forward-char 1))) |
85 | 989 (error |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
990 (skip-syntax-forward " .>") |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
991 (setq failure-point (point))))) |
85 | 992 (if failure-point |
993 (progn | |
994 (goto-char failure-point) | |
995 nil) | |
996 t))) | |
997 | |
998 (defun tex-terminate-paragraph (inhibit-validation) | |
999 "Insert two newlines, breaking a paragraph for TeX. | |
7285 | 1000 Check for mismatched braces or $s in paragraph being terminated. |
85 | 1001 A prefix arg inhibits the checking." |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1002 (interactive "*P") |
85 | 1003 (or inhibit-validation |
1004 (save-excursion | |
1005 (tex-validate-region | |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1006 (save-excursion |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1007 (search-backward "\n\n" nil 'move) |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1008 (point)) |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1009 (point))) |
85 | 1010 (message "Paragraph being closed appears to contain a mismatch")) |
1011 (insert "\n\n")) | |
1012 | |
1013 (defun tex-insert-braces () | |
1014 "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
|
1015 (interactive "*") |
85 | 1016 (insert ?\{) |
1017 (save-excursion | |
1018 (insert ?}))) | |
1019 | |
21121
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1020 ;; 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
|
1021 ;; 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
|
1022 ;; of a \verb construct. |
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1023 (defun latex-fill-nobreak-predicate () |
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1024 (let ((opoint (point)) |
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1025 inside) |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1026 (save-excursion |
21121
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1027 (save-restriction |
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1028 (beginning-of-line) |
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1029 (narrow-to-region (point) opoint) |
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1030 (while (re-search-forward "\\\\verb\\(.\\)" nil t) |
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1031 (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
|
1032 (setq inside t))))) |
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1033 inside)) |
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1034 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1035 (defvar latex-block-default "enumerate") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1036 |
85 | 1037 ;;; 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
|
1038 (define-skeleton tex-latex-block |
1252826f389b
(tex-common-initialization): Set skeleton-further-elements.
Richard M. Stallman <rms@gnu.org>
parents:
15240
diff
changeset
|
1039 "Create a matching pair of lines \\begin[OPT]{NAME} and \\end{NAME} at point. |
85 | 1040 Puts point on a blank line between them." |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1041 (let ((choice (completing-read (format "LaTeX block name [%s]: " |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1042 latex-block-default) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1043 (mapcar 'list |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1044 (append standard-latex-block-names |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1045 latex-block-names)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1046 nil nil nil nil latex-block-default))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1047 (setq latex-block-default choice) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1048 (unless (or (member choice standard-latex-block-names) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1049 (member choice latex-block-names)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1050 ;; Remember new block names for later completion. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1051 (push choice latex-block-names)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1052 choice) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1053 "\\begin{" str ?\} |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1054 ?\[ (skeleton-read "[options]: ") & ?\] | -1 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1055 \n _ \n |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1056 "\\end{" str ?\} >) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1057 |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1058 (define-skeleton latex-insert-item |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1059 "Insert a \item macro." |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1060 nil |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1061 \n "\\item " >) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1062 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1063 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1064 ;;;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1065 ;;;; LaTeX syntax navigation |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1066 ;;;; |
85 | 1067 |
1068 (defun tex-last-unended-begin () | |
7285 | 1069 "Leave point at the beginning of the last `\\begin{...}' that is unended." |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1070 (while (and (re-search-backward "\\\\\\(begin\\|end\\)\\s *{") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1071 (looking-at "\\\\end")) |
85 | 1072 (tex-last-unended-begin))) |
1073 | |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1074 (defun tex-next-unmatched-end () |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1075 "Leave point at the end of the next `\\end' that is unended." |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1076 (while (and (re-search-forward "\\\\\\(begin\\|end\\)\\s *{[^}]+}") |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1077 (save-excursion (goto-char (match-beginning 0)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1078 (looking-at "\\\\begin"))) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1079 (tex-next-unmatched-end))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1080 |
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
|
1081 (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
|
1082 "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
|
1083 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
|
1084 (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
|
1085 (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
|
1086 (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
|
1087 (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
|
1088 (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
|
1089 (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
|
1090 (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
|
1091 (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
|
1092 (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
|
1093 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1094 (defun latex-backward-sexp-1 () |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1095 "Like (backward-sexp 1) but aware of multi-char elements." |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1096 (let ((pos (point)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1097 (forward-sexp-function)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1098 (backward-sexp 1) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1099 (if (looking-at "\\\\begin\\>") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1100 (signal 'scan-error |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1101 (list "Containing expression ends prematurely" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1102 (point) (prog1 (point) (goto-char pos)))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1103 (when (eq (char-after) ?{) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1104 (let ((newpos (point))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1105 (when (ignore-errors (backward-sexp 1) t) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1106 (if (looking-at "\\\\end\\>") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1107 (tex-last-unended-begin) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1108 (goto-char newpos)))))))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1109 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1110 (defun latex-forward-sexp-1 () |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1111 "Like (forward-sexp 1) but aware of multi-char elements." |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1112 (let ((pos (point)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1113 (forward-sexp-function)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1114 (forward-sexp 1) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1115 (let ((newpos (point))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1116 (skip-syntax-backward "/w") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1117 (cond |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1118 ((looking-at "\\\\end\\>") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1119 (signal 'scan-error |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1120 (list "Containing expression ends prematurely" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1121 (point) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1122 (prog1 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1123 (progn (ignore-errors (forward-sexp 2)) (point)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1124 (goto-char pos))))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1125 ((looking-at "\\\\begin\\>") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1126 (goto-char (match-end 0)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1127 (tex-next-unmatched-end)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1128 (t (goto-char newpos)))))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1129 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1130 (defun latex-forward-sexp (&optional arg) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1131 "Like `forward-sexp' but aware of multi-char elements." |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1132 (interactive "P") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1133 (unless arg (setq arg 1)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1134 (let ((pos (point))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1135 (condition-case err |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1136 (while (/= arg 0) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1137 (setq arg |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1138 (if (> arg 0) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1139 (progn (latex-forward-sexp-1) (1- arg)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1140 (progn (latex-backward-sexp-1) (1+ arg))))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1141 (scan-error |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1142 (goto-char pos) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1143 (signal (car err) (cdr err)))))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1144 |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1145 (defun latex-syntax-after () |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1146 "Like (char-syntax (char-after)) but aware of multi-char elements." |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1147 (if (looking-at "\\\\end\\>") ?\) (char-syntax (char-after)))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1148 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1149 (defun latex-skip-close-parens () |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1150 "Like (skip-syntax-forward \" )\") but aware of multi-char elements." |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1151 (let ((forward-sexp-function nil)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1152 (while (progn (skip-syntax-forward " )") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1153 (looking-at "\\\\end\\>")) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1154 (forward-sexp 2)))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1155 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1156 (defun latex-down-list () |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1157 "Like (down-list 1) but aware of multi-char elements." |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1158 (forward-comment (point-max)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1159 (let ((forward-sexp-function nil)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1160 (if (not (looking-at "\\\\begin\\>")) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1161 (down-list 1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1162 (forward-sexp 1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1163 ;; Skip arguments. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1164 (while (looking-at "[ \t]*\\s(") (forward-sexp))))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1165 |
85 | 1166 (defun tex-close-latex-block () |
1167 "Creates an \\end{...} to match the last unclosed \\begin{...}." | |
1168 (interactive "*") | |
1169 (let ((new-line-needed (bolp)) | |
1170 text indentation) | |
1171 (save-excursion | |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1172 (condition-case nil |
85 | 1173 (tex-last-unended-begin) |
1174 (error (error "Couldn't find unended \\begin"))) | |
1175 (setq indentation (current-column)) | |
1176 (re-search-forward "\\\\begin\\(\\s *{[^}\n]*}\\)") | |
1177 (setq text (buffer-substring (match-beginning 1) (match-end 1)))) | |
1178 (indent-to indentation) | |
1179 (insert "\\end" text) | |
1180 (if new-line-needed (insert ?\n)))) | |
1181 | |
1182 ;;; Invoking TeX in an inferior shell. | |
1183 | |
1184 ;;; Why use a shell instead of running TeX directly? Because if TeX | |
1185 ;;; gets stuck, the user can switch to the shell window and type at it. | |
1186 | |
1187 ;;; The utility functions: | |
1188 | |
7834
fc1c95bf734b
(tex-start-shell): Add autoload.
Richard M. Stallman <rms@gnu.org>
parents:
7827
diff
changeset
|
1189 ;;;###autoload |
85 | 1190 (defun tex-start-shell () |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1191 (with-current-buffer |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1192 (make-comint |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1193 "tex-shell" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1194 (or tex-shell-file-name (getenv "ESHELL") (getenv "SHELL") "/bin/sh") |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1195 nil) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1196 (let ((proc (get-process "tex-shell"))) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1197 (set-process-sentinel proc 'tex-shell-sentinel) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1198 (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
|
1199 (setq comint-prompt-regexp shell-prompt-pattern) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1200 (use-local-map tex-shell-map) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1201 (compilation-shell-minor-mode t) |
24527
9c8fd1f7b4d3
(tex-start-shell): Use add-hook for
Andreas Schwab <schwab@suse.de>
parents:
24330
diff
changeset
|
1202 (add-hook 'comint-input-filter-functions 'shell-directory-tracker nil t) |
9c8fd1f7b4d3
(tex-start-shell): Use add-hook for
Andreas Schwab <schwab@suse.de>
parents:
24330
diff
changeset
|
1203 (make-local-variable 'list-buffers-directory) |
9c8fd1f7b4d3
(tex-start-shell): Use add-hook for
Andreas Schwab <schwab@suse.de>
parents:
24330
diff
changeset
|
1204 (make-local-variable 'shell-dirstack) |
9c8fd1f7b4d3
(tex-start-shell): Use add-hook for
Andreas Schwab <schwab@suse.de>
parents:
24330
diff
changeset
|
1205 (make-local-variable 'shell-last-dir) |
9c8fd1f7b4d3
(tex-start-shell): Use add-hook for
Andreas Schwab <schwab@suse.de>
parents:
24330
diff
changeset
|
1206 (make-local-variable 'shell-dirtrackp) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1207 (run-hooks 'tex-shell-hook) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1208 (while (zerop (buffer-size)) |
10572
c8717227f621
(tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents:
10341
diff
changeset
|
1209 (sleep-for 1))))) |
c8717227f621
(tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents:
10341
diff
changeset
|
1210 |
23761
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1211 (defun tex-feed-input () |
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1212 "Send input to the tex shell process. |
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1213 In the tex buffer this can be used to continue an interactive tex run. |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1214 In the tex shell buffer this command behaves like `comint-send-input'." |
23761
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1215 (interactive) |
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1216 (set-buffer (process-buffer (get-process "tex-shell"))) |
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1217 (comint-send-input) |
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1218 (tex-recenter-output-buffer nil)) |
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1219 |
10572
c8717227f621
(tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents:
10341
diff
changeset
|
1220 (defun tex-display-shell () |
c8717227f621
(tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents:
10341
diff
changeset
|
1221 "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
|
1222 (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
|
1223 (tex-recenter-output-buffer nil)) |
85 | 1224 |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1225 (defun tex-shell-sentinel (proc msg) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1226 (cond ((null (buffer-name (process-buffer proc))) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1227 ;; buffer killed |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1228 (set-process-buffer proc nil) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1229 (tex-delete-last-temp-files)) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1230 ((memq (process-status proc) '(signal exit)) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1231 (tex-delete-last-temp-files)))) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1232 |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1233 (defun tex-set-buffer-directory (buffer directory) |
85 | 1234 "Set BUFFER's default directory to be DIRECTORY." |
1235 (setq directory (file-name-as-directory (expand-file-name directory))) | |
1236 (if (not (file-directory-p directory)) | |
1237 (error "%s is not a directory" directory) | |
1238 (save-excursion | |
1239 (set-buffer buffer) | |
1240 (setq default-directory directory)))) | |
1241 | |
5088
73a1b31b673f
(tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents:
5087
diff
changeset
|
1242 (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
|
1243 (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
|
1244 |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1245 (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
|
1246 "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
|
1247 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
|
1248 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
|
1249 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
|
1250 evaluates to a command string. |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1251 |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1252 Return the process in which TeX is running." |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1253 (save-excursion |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1254 (let* ((cmd (eval command)) |
13399
ac7b3d7dafe8
(tex-send-command): Give meaningful error message.
Karl Heuer <kwzh@gnu.org>
parents:
13248
diff
changeset
|
1255 (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
|
1256 (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
|
1257 (star (string-match "\\*" cmd)) |
5087
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1258 (string |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1259 (concat |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1260 (if file |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1261 (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
|
1262 file (substring cmd (1+ star))) |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1263 (concat cmd " " file)) |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1264 cmd) |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1265 (if background "&" "")))) |
5262
b3a689b41d39
(tex-common-initialization): Make paragraph-start
Richard M. Stallman <rms@gnu.org>
parents:
5088
diff
changeset
|
1266 ;; 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
|
1267 (set-buffer buf) |
5088
73a1b31b673f
(tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents:
5087
diff
changeset
|
1268 ;; 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
|
1269 ;; 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
|
1270 (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
|
1271 (accept-process-output proc)) |
5087
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1272 (goto-char (process-mark proc)) |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1273 (insert string) |
5088
73a1b31b673f
(tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents:
5087
diff
changeset
|
1274 (comint-send-input) |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1275 (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
|
1276 proc))) |
85 | 1277 |
6479
855f4f2d24da
(tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents:
5427
diff
changeset
|
1278 (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
|
1279 "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
|
1280 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
|
1281 (if tex-last-temp-file |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1282 (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
|
1283 (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
|
1284 (file-name-all-completions |
22707
4fa39e6af756
(tex-delete-last-temp-files): Use file-name-sans-extensions.
Richard M. Stallman <rms@gnu.org>
parents:
22292
diff
changeset
|
1285 (file-name-sans-extension |
4fa39e6af756
(tex-delete-last-temp-files): Use file-name-sans-extensions.
Richard M. Stallman <rms@gnu.org>
parents:
22292
diff
changeset
|
1286 (file-name-nondirectory tex-last-temp-file)) |
4fa39e6af756
(tex-delete-last-temp-files): Use file-name-sans-extensions.
Richard M. Stallman <rms@gnu.org>
parents:
22292
diff
changeset
|
1287 dir)))) |
7536
efecdee78026
(tex-delete-last-temp-files): Don't fail on non-existent directory.
Karl Heuer <kwzh@gnu.org>
parents:
7298
diff
changeset
|
1288 (while list |
6479
855f4f2d24da
(tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents:
5427
diff
changeset
|
1289 (if not-all |
855f4f2d24da
(tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents:
5427
diff
changeset
|
1290 (and |
855f4f2d24da
(tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents:
5427
diff
changeset
|
1291 ;; 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
|
1292 (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
|
1293 (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
|
1294 (delete-file (concat dir (car list)))) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1295 (setq list (cdr list)))))) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1296 |
741
587f7a98341d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
739
diff
changeset
|
1297 (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
|
1298 |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1299 (defvar tex-start-tex-marker nil |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1300 "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
|
1301 |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1302 (defun tex-main-file () |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1303 (let ((file (or tex-main-file |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1304 ;; Compatibility with AUCTeX |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1305 (and (boundp 'TeX-master) (stringp TeX-master) TeX-master) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1306 (if (buffer-file-name) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1307 (file-relative-name (buffer-file-name)) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1308 (error "Buffer is not associated with any file"))))) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1309 (if (string-match "\\.tex\\'" file) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1310 (substring file 0 (match-beginning 0)) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1311 file))) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1312 |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1313 (defun tex-start-tex (command file &optional dir) |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1314 "Start a TeX run, using COMMAND on FILE." |
23322 | 1315 (let* ((star (string-match "\\*" command)) |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1316 (compile-command |
23322 | 1317 (if star |
1318 (concat (substring command 0 star) | |
1319 (comint-quote-filename file) | |
1320 (substring command (1+ star))) | |
1321 (concat command " " | |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
1322 (if (< 0 (length tex-start-options-string)) |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
1323 (concat |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
1324 (shell-quote-argument tex-start-options-string) " ")) |
23322 | 1325 (comint-quote-filename file))))) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1326 (when dir |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1327 (let (shell-dirtrack-verbose) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1328 (tex-send-command tex-shell-cd-command dir))) |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1329 (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
|
1330 (save-excursion |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1331 (forward-line -1) |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1332 (setq tex-start-tex-marker (point-marker))) |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1333 (make-local-variable 'compilation-parse-errors-function) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1334 (setq compilation-parse-errors-function 'tex-compilation-parse-errors) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1335 (compilation-forget-errors)) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1336 (tex-display-shell) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1337 (setq tex-last-buffer-texed (current-buffer)))) |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1338 |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1339 (defun tex-compilation-parse-errors (limit-search find-at-least) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1340 "Parse the current buffer as TeX error messages. |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1341 See the variable `compilation-parse-errors-function' for the interface it uses. |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1342 |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1343 This function parses only the last TeX compilation. |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1344 It works on TeX compilations only. It is necessary for that purpose, |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1345 since TeX does not put file names and line numbers on the same line as |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1346 for the error messages." |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1347 (require 'thingatpt) |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1348 (setq compilation-error-list nil) |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1349 (message "Parsing error messages...") |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1350 (let ((default-directory ; Perhaps dir has changed meanwhile. |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1351 (file-name-directory (buffer-file-name tex-last-buffer-texed))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1352 (old-syntax-table (syntax-table)) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1353 (tex-error-parse-syntax-table (copy-syntax-table (syntax-table))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1354 found-desired (num-errors-found 0) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1355 last-filename last-linenum last-position |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1356 begin-of-error end-of-error) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1357 (modify-syntax-entry ?\{ "_" tex-error-parse-syntax-table) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1358 (modify-syntax-entry ?\} "_" tex-error-parse-syntax-table) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1359 (modify-syntax-entry ?\[ "_" tex-error-parse-syntax-table) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1360 (modify-syntax-entry ?\] "_" tex-error-parse-syntax-table) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1361 ;; Single quotations may appear in errors |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1362 (modify-syntax-entry ?\" "_" tex-error-parse-syntax-table) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1363 ;; Don't parse previous compilations. |
25414
7c4808c6804b
(tex-compilation-parse-errors):
Richard M. Stallman <rms@gnu.org>
parents:
24527
diff
changeset
|
1364 (set-marker compilation-parsing-end |
7c4808c6804b
(tex-compilation-parse-errors):
Richard M. Stallman <rms@gnu.org>
parents:
24527
diff
changeset
|
1365 (max compilation-parsing-end tex-start-tex-marker)) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1366 ;; Don't reparse messages already seen at last parse. |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1367 (goto-char compilation-parsing-end) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1368 ;; Parse messages. |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1369 (while (and (not (or found-desired (eobp))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1370 (prog1 (re-search-forward "^! " nil 'move) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1371 (setq begin-of-error (match-beginning 0) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1372 end-of-error (match-end 0))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1373 (re-search-forward |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1374 "^l\\.\\([0-9]+\\) \\(\\.\\.\\.\\)?\\(.*\\)$" nil 'move)) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1375 (let* ((this-error (set-marker (make-marker) begin-of-error)) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1376 (linenum (string-to-int (match-string 1))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1377 (error-text (regexp-quote (match-string 3))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1378 (filename |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1379 (save-excursion |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1380 (with-syntax-table tex-error-parse-syntax-table |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1381 (backward-up-list 1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1382 (skip-syntax-forward "(_") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1383 (while (not (file-readable-p (thing-at-point 'filename))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1384 (skip-syntax-backward "(_") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1385 (backward-up-list 1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1386 (skip-syntax-forward "(_")) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1387 (thing-at-point 'filename)))) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1388 (new-file |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1389 (or (null last-filename) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1390 (not (string-equal last-filename filename)))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1391 (error-location |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1392 (save-excursion |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1393 (if (equal filename (concat tex-zap-file ".tex")) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1394 (set-buffer tex-last-buffer-texed) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1395 (set-buffer (find-file-noselect filename))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1396 (if new-file |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1397 (goto-line linenum) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1398 (goto-char last-position) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1399 (forward-line (- linenum last-linenum))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1400 ;; first try a forward search for the error text, |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1401 ;; then a backward search limited by the last error. |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1402 (let ((starting-point (point))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1403 (or (re-search-forward error-text nil t) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1404 (re-search-backward |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1405 error-text |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1406 (marker-position last-position) t) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1407 (goto-char starting-point))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1408 (point-marker)))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1409 (goto-char this-error) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1410 (if (and compilation-error-list |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1411 (or (and find-at-least |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1412 (>= num-errors-found |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1413 find-at-least)) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1414 (and limit-search |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1415 (>= end-of-error limit-search))) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1416 new-file) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1417 (setq found-desired t) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1418 (setq num-errors-found (1+ num-errors-found) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1419 last-filename filename |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1420 last-linenum linenum |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1421 last-position error-location |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1422 compilation-error-list ; Add the new error |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1423 (cons (cons this-error error-location) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1424 compilation-error-list)) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1425 (goto-char end-of-error))))) |
25414
7c4808c6804b
(tex-compilation-parse-errors):
Richard M. Stallman <rms@gnu.org>
parents:
24527
diff
changeset
|
1426 (set-marker compilation-parsing-end (point)) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1427 (setq compilation-error-list (nreverse compilation-error-list)) |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1428 (message "Parsing error messages...done")) |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1429 |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1430 ;;; The commands: |
85 | 1431 |
1432 (defun tex-region (beg end) | |
1433 "Run TeX on the current region, via a temporary file. | |
1434 The file's name comes from the variable `tex-zap-file' and the | |
1435 variable `tex-directory' says where to put it. | |
1436 | |
1437 If the buffer has a header, the header is given to TeX before the | |
1438 region itself. The buffer's header is all lines between the strings | |
1439 defined by `tex-start-of-header' and `tex-end-of-header' inclusive. | |
1440 The header must start in the first 100 lines of the buffer. | |
1441 | |
1442 The value of `tex-trailer' is given to TeX as input after the region. | |
1443 | |
1444 The value of `tex-command' specifies the command to use to run TeX." | |
1445 (interactive "r") | |
1446 (if (tex-shell-running) | |
1447 (tex-kill-job) | |
1448 (tex-start-shell)) | |
1449 (or tex-zap-file | |
1450 (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
|
1451 ;; 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
|
1452 ;; 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
|
1453 ;; \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
|
1454 ;; 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
|
1455 ;; tex-directory is ".". |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1456 (let* ((zap-directory |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1457 (file-name-as-directory (expand-file-name tex-directory))) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1458 (tex-out-file (expand-file-name (concat tex-zap-file ".tex") |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1459 zap-directory))) |
9450
af39d29d1386
(compare-windows-whitespace): Eliminate initial value.
Richard M. Stallman <rms@gnu.org>
parents:
8890
diff
changeset
|
1460 ;; 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
|
1461 (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
|
1462 (tex-delete-last-temp-files t)) |
85 | 1463 ;; Write the new temp file. |
1464 (save-excursion | |
1465 (save-restriction | |
1466 (widen) | |
1467 (goto-char (point-min)) | |
1468 (forward-line 100) | |
1469 (let ((search-end (point)) | |
16807
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1470 (default-directory zap-directory) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1471 (already-output 0)) |
85 | 1472 (goto-char (point-min)) |
16807
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1473 |
16777
b655268ba44f
(tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16493
diff
changeset
|
1474 ;; 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
|
1475 (and tex-first-line-header-regexp |
b655268ba44f
(tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16493
diff
changeset
|
1476 (looking-at tex-first-line-header-regexp) |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1477 (write-region (point) |
16807
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1478 (progn (forward-line 1) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1479 (setq already-output (point))) |
16777
b655268ba44f
(tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16493
diff
changeset
|
1480 tex-out-file nil nil)) |
b655268ba44f
(tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16493
diff
changeset
|
1481 |
16807
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1482 ;; Write out the header, if there is one, |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1483 ;; 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
|
1484 ;; 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
|
1485 (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
|
1486 (let (hbeg) |
85 | 1487 (beginning-of-line) |
1488 (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
|
1489 (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
|
1490 (let (hend) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1491 (forward-line 1) |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1492 (setq hend (point)) ;mark end of header |
16807
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1493 (write-region (max (min hbeg beg) already-output) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1494 hend |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1495 tex-out-file |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1496 (not (zerop already-output)) nil) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1497 (setq already-output hend))))) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1498 |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1499 ;; Write out the specified region |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1500 ;; (but don't repeat anything already written). |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1501 (write-region (max beg already-output) end |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1502 tex-out-file |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1503 (not (zerop already-output)) nil)) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1504 ;; Write the trailer, if any. |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1505 ;; 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
|
1506 ;; is not hidden in a comment. |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1507 (if tex-trailer |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1508 (write-region (concat "\n" tex-trailer) nil |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
1509 tex-out-file t nil)))) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1510 ;; Record the file name to be deleted afterward. |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1511 (setq tex-last-temp-file tex-out-file) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1512 ;; Use a relative file name here because (1) the proper dir |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1513 ;; is already current, and (2) the abs file name is sometimes |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1514 ;; too long and can make tex crash. |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1515 (tex-start-tex tex-command (concat tex-zap-file ".tex") zap-directory) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1516 (setq tex-print-file tex-out-file))) |
85 | 1517 |
1518 (defun tex-buffer () | |
1519 "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
|
1520 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
|
1521 See \\[tex-file] for an alternative." |
85 | 1522 (interactive) |
1523 (tex-region (point-min) (point-max))) | |
1524 | |
1525 (defun tex-file () | |
1526 "Prompt to save all buffers and run TeX (or LaTeX) on current buffer's file. | |
1527 This function is more useful than \\[tex-buffer] when you need the | |
1528 `.aux' file of LaTeX to have the correct name." | |
1529 (interactive) | |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1530 (let* ((source-file (tex-main-file)) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1531 (file-dir (expand-file-name (file-name-directory source-file)))) |
758 | 1532 (if tex-offer-save |
741
587f7a98341d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
739
diff
changeset
|
1533 (save-some-buffers)) |
85 | 1534 (if (tex-shell-running) |
1535 (tex-kill-job) | |
1536 (tex-start-shell)) | |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1537 (tex-start-tex tex-command source-file file-dir) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1538 (setq tex-print-file (expand-file-name source-file)))) |
85 | 1539 |
1540 (defun tex-generate-zap-file-name () | |
1541 "Generate a unique name suitable for use as a file name." | |
1542 ;; Include the shell process number and host name | |
1543 ;; in case there are multiple shells (for same or different user). | |
23849
1f014e9d0768
(tex-generate-zap-file-name): Don't start the name with #.
Karl Heuer <kwzh@gnu.org>
parents:
23761
diff
changeset
|
1544 ;; Dec 1998: There is a report that some versions of xdvi |
1f014e9d0768
(tex-generate-zap-file-name): Don't start the name with #.
Karl Heuer <kwzh@gnu.org>
parents:
23761
diff
changeset
|
1545 ;; don't work with file names that start with #. |
24109
e1e1bb544d84
(latex-run-command): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
23849
diff
changeset
|
1546 (format "_TZ_%d-%s" |
85 | 1547 (process-id (get-buffer-process "*tex-shell*")) |
1548 (tex-strip-dots (system-name)))) | |
1549 | |
1550 (defun tex-strip-dots (s) | |
1551 (setq s (copy-sequence s)) | |
1552 (while (string-match "\\." s) | |
1553 (aset s (match-beginning 0) ?-)) | |
1554 s) | |
1555 | |
1556 ;; This will perhaps be useful for modifying TEXINPUTS. | |
1557 ;; Expand each file name, separated by colons, in the string S. | |
1558 (defun tex-expand-files (s) | |
1559 (let (elts (start 0)) | |
1560 (while (string-match ":" s start) | |
1561 (setq elts (cons (substring s start (match-beginning 0)) elts)) | |
1562 (setq start (match-end 0))) | |
1563 (or (= start 0) | |
1564 (setq elts (cons (substring s start) elts))) | |
30888
e559f0aa6b2d
Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26270
diff
changeset
|
1565 (mapconcat (lambda (elt) |
e559f0aa6b2d
Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26270
diff
changeset
|
1566 (if (= (length elt) 0) elt (expand-file-name elt))) |
24109
e1e1bb544d84
(latex-run-command): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
23849
diff
changeset
|
1567 (nreverse elts) ":"))) |
85 | 1568 |
1569 (defun tex-shell-running () | |
1570 (and (get-process "tex-shell") | |
1571 (eq (process-status (get-process "tex-shell")) 'run))) | |
1572 | |
1573 (defun tex-kill-job () | |
1574 "Kill the currently running TeX job." | |
1575 (interactive) | |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1576 ;; quit-process leads to core dumps of the tex process (except if |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1577 ;; coredumpsize has limit 0kb as on many environments). One would |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1578 ;; like to use (kill-process proc 'lambda), however that construct |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1579 ;; does not work on some systems and kills the shell itself. |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1580 (quit-process (get-process "tex-shell") t)) |
85 | 1581 |
1582 (defun tex-recenter-output-buffer (linenum) | |
1583 "Redisplay buffer of TeX job output so that most recent output can be seen. | |
1584 The last line of the buffer is displayed on | |
1585 line LINE of the window, or centered if LINE is nil." | |
1586 (interactive "P") | |
1587 (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
|
1588 (old-buffer (current-buffer)) |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
1589 (window)) |
85 | 1590 (if (null tex-shell) |
1591 (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
|
1592 (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
|
1593 (save-selected-window |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
1594 (select-window window) |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
1595 (bury-buffer tex-shell) |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
1596 (goto-char (point-max)) |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
1597 (recenter (if linenum |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
1598 (prefix-numeric-value linenum) |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
1599 (/ (window-height) 2))))))) |
85 | 1600 |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1601 (defun tex-print (&optional alt) |
85 | 1602 "Print the .dvi file made by \\[tex-region], \\[tex-buffer] or \\[tex-file]. |
1577 | 1603 Runs the shell command defined by `tex-dvi-print-command'. If prefix argument |
1604 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
|
1605 (interactive "P") |
85 | 1606 (let ((print-file-name-dvi (tex-append tex-print-file ".dvi")) |
1607 test-name) | |
1608 (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
|
1609 (buffer-file-name) |
f27bcd1faf07
(tex-print): Better check for when to print current
Richard M. Stallman <rms@gnu.org>
parents:
10325
diff
changeset
|
1610 ;; Check that this buffer's printed file is up to date. |
85 | 1611 (file-newer-than-file-p |
1612 (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
|
1613 (buffer-file-name))) |
85 | 1614 (setq print-file-name-dvi test-name)) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1615 (if (not (file-exists-p print-file-name-dvi)) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1616 (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
|
1617 (if (tex-shell-running) |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1618 (tex-kill-job) |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1619 (tex-start-shell)) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1620 (tex-send-command |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1621 (if alt tex-alt-dvi-print-command tex-dvi-print-command) |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1622 print-file-name-dvi t)))) |
85 | 1623 |
4917
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
1624 (defun tex-alt-print () |
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
1625 "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
|
1626 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
|
1627 (interactive) |
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
1628 (tex-print t)) |
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
1629 |
85 | 1630 (defun tex-view () |
1631 "Preview the last `.dvi' file made by running TeX under Emacs. | |
1632 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
|
1633 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
|
1634 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
|
1635 because there is no standard value that would generally work." |
85 | 1636 (interactive) |
11617
9eaeed5c8a40
(tex-view): Nice error if tex-dvi-view-command is nil.
Richard M. Stallman <rms@gnu.org>
parents:
11235
diff
changeset
|
1637 (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
|
1638 (error "You must set `tex-dvi-view-command'")) |
85 | 1639 (let ((tex-dvi-print-command tex-dvi-view-command)) |
1640 (tex-print))) | |
1641 | |
1642 (defun tex-append (file-name suffix) | |
1643 "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
|
1644 Pascal-based TeX scans for the first period, C TeX uses the last. |
85 | 1645 No period is retained immediately before SUFFIX, |
1646 so normally SUFFIX starts with one." | |
1647 (if (stringp file-name) | |
4917
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
1648 (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
|
1649 trial-name) |
14383
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
1650 ;; 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
|
1651 ;; 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
|
1652 ;; 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
|
1653 ;; 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
|
1654 (setq trial-name |
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
1655 (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
|
1656 (substring file 0 |
10778
ace814499178
(tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents:
10572
diff
changeset
|
1657 (string-match "\\.[^.]*$" file)) |
4917
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
1658 suffix)) |
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
1659 (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
|
1660 (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
|
1661 trial-name |
10778
ace814499178
(tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents:
10572
diff
changeset
|
1662 ;; 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
|
1663 (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
|
1664 (substring file 0 |
10778
ace814499178
(tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents:
10572
diff
changeset
|
1665 (string-match "\\." file)) |
4917
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
1666 suffix))) |
85 | 1667 " ")) |
1668 | |
1669 (defun tex-show-print-queue () | |
1670 "Show the print queue that \\[tex-print] put your job on. | |
1577 | 1671 Runs the shell command defined by `tex-show-queue-command'." |
85 | 1672 (interactive) |
1673 (if (tex-shell-running) | |
1674 (tex-kill-job) | |
1675 (tex-start-shell)) | |
10572
c8717227f621
(tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents:
10341
diff
changeset
|
1676 (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
|
1677 (tex-display-shell)) |
85 | 1678 |
1679 (defun tex-bibtex-file () | |
1680 "Run BibTeX on the current buffer's file." | |
1681 (interactive) | |
1682 (if (tex-shell-running) | |
1683 (tex-kill-job) | |
1684 (tex-start-shell)) | |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
1685 (let (shell-dirtrack-verbose |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
1686 (tex-out-file |
85 | 1687 (tex-append (file-name-nondirectory (buffer-file-name)) "")) |
1688 (file-dir (file-name-directory (buffer-file-name)))) | |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1689 (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
|
1690 (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
|
1691 (tex-display-shell)) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1692 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1693 ;;;; |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1694 ;;;; LaTeX indentation |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1695 ;;;; |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1696 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1697 (defvar tex-indent-allhanging t) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1698 (defvar tex-indent-arg 4) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1699 (defvar tex-indent-basic 2) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1700 (defvar tex-indent-item tex-indent-basic) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1701 (defvar tex-indent-item-re "\\\\\\(bib\\)?item\\>") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1702 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1703 (easy-mmode-defsyntax tex-latex-indent-syntax-table |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1704 '((?$ . ".")) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1705 "Syntax table used while computing indentation." |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1706 :copy tex-mode-syntax-table) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1707 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1708 (defun latex-indent (&optional arg) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1709 (with-syntax-table tex-latex-indent-syntax-table |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1710 ;; TODO: Rather than ignore $, we should try to be more clever about it. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1711 (let ((indent |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1712 (save-excursion |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1713 (beginning-of-line) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1714 (latex-find-indent)))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1715 (if (< indent 0) (setq indent 0)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1716 (if (<= (current-column) (current-indentation)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1717 (indent-line-to indent) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1718 (save-excursion (indent-line-to indent)))))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1719 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1720 (defun latex-find-indent (&optional virtual) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1721 "Find the proper indentation of text after point. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1722 VIRTUAL if non-nil indicates that we're only trying to find the indentation |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1723 in order to determine the indentation of something else. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1724 There might be text before point." |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1725 (save-excursion |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1726 (skip-chars-forward " \t") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1727 (or |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1728 ;; Trust the current indentation, if such info is applicable. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1729 (and virtual (>= (current-indentation) (current-column)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1730 (current-indentation)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1731 ;; Put leading close-paren where the matching open brace would be. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1732 (and (eq (latex-syntax-after) ?\)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1733 (ignore-errors |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1734 (save-excursion |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1735 (latex-skip-close-parens) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1736 (latex-backward-sexp-1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1737 (latex-find-indent 'virtual)))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1738 ;; Default (maybe an argument) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1739 (let ((pos (point)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1740 (char (char-after)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1741 ;; Outdent \item if necessary. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1742 (indent (if (looking-at tex-indent-item-re) (- tex-indent-item) 0)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1743 up-list-pos) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1744 ;; Find the previous point which determines our current indentation. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1745 (condition-case err |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1746 (progn |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1747 (latex-backward-sexp-1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1748 (while (> (current-column) (current-indentation)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1749 (latex-backward-sexp-1))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1750 (scan-error |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1751 (setq up-list-pos (nth 2 err)))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1752 (if (integerp up-list-pos) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1753 ;; Have to indent relative to the open-paren. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1754 (progn |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1755 (goto-char up-list-pos) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1756 (if (and (not tex-indent-allhanging) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1757 (> pos (progn (latex-down-list) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1758 (forward-comment (point-max)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1759 (point)))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1760 ;; Align with the first element after the open-paren. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1761 (current-column) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1762 ;; We're the first element after a hanging brace. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1763 (goto-char up-list-pos) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1764 (+ indent tex-indent-basic (latex-find-indent 'virtual)))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1765 ;; We're now at the beginning of a line. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1766 (if (not (and (not virtual) (eq (char-after) ?\\))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1767 ;; Nothing particular here: just keep the same indentation. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1768 (+ indent (current-column)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1769 ;; We're now looking at a macro call. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1770 (if (looking-at tex-indent-item-re) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1771 ;; Indenting relative to an item, have to re-add the outdenting. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1772 (+ indent (current-column) tex-indent-item) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1773 (let ((col (current-column))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1774 (if (not (eq (char-syntax char) ?\()) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1775 ;; If the first char was not an open-paren, there's |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1776 ;; a risk that this is really not an argument to the |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1777 ;; macro at all. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1778 (+ indent col) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1779 (forward-sexp 1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1780 (if (< (line-end-position) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1781 (save-excursion (forward-comment (point-max)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1782 (point))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1783 ;; we're indenting the first argument. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1784 (min (current-column) (+ tex-indent-arg col)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1785 (skip-syntax-forward " ") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1786 (current-column))))))))))) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1787 |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1788 (run-hooks 'tex-mode-load-hook) |
85 | 1789 |
584 | 1790 (provide 'tex-mode) |
1791 | |
657
fec3f9a1e3e5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
584
diff
changeset
|
1792 ;;; tex-mode.el ends here |