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