Mercurial > emacs
annotate lisp/textmodes/tex-mode.el @ 58195:c12b583f54b9
Fixed these problems:
** Clicking on partially visible lines fails
From: David Kastrup <dak@gnu.org>
Date: 27 Apr 2004 16:42:58 +0200
I had gnus display a mouse-highlighted line (a URL from browse-url)
partially at the bottom of its window. If I click with middle mouse
key on it, the window gets recentered while I hold the mouse key
pressed. If I release it, the window returns into its old position
(cursor in top row) and nothing happens, presumably because the click
was not registered on the line itself, but on the magically
recentered version.
That is a nuisance. Recentering of even partially visible click
targets should only happen if window-point moves there, but not at
the time of the click. From the moment I hold down a key until it
gets released, the displayed window portion should not change, with
the sole exception of scrolling when dragging at the edge of the
screen.
(progn
(setq line-spacing 4)
(dotimes (i (window-height))
(insert "\n" (int-to-string i)))
(forward-line -2)
(recenter -1))
** Can't drag modeline when mouse-autoselect-window is set
From: Klaus Zeitler <kzeitler@lucent.com>
Date: Mon, 11 Oct 2004 11:14:49 +0200
1. start emacs -q --no-site-file
2. set variable mouse-autoselect-window to t
3. split-window-vertically
now I can drag the modeline only upwards but not downwards
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Sat, 13 Nov 2004 01:40:36 +0000 |
parents | 5e84f3fe94f0 |
children | 35f8fcf3abca 0fe073a08cef |
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 |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
3 ;; Copyright (C) 1985, 1986, 1989, 1992, 1994, 1995, 1996, 1997, 1998, 1999, |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
4 ;; 2002, 2003, 2004 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 |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
199 (defcustom tex-dvi-view-command |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
200 '(cond |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
201 ((eq window-system 'x) "xdvi") |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
202 ((eq window-system 'w32) "yap") |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
203 (t "dvi2tty * | cat -s")) |
7285 | 204 "*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
|
205 If it is a string, that specifies the command directly. |
7285 | 206 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
|
207 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
|
208 |
48170
a65d281d19f0
(tex-dvi-view-command): Value can be sexp.
Richard M. Stallman <rms@gnu.org>
parents:
48120
diff
changeset
|
209 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
|
210 :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
|
211 :group 'tex-view) |
85 | 212 |
957 | 213 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
214 (defcustom tex-show-queue-command "lpq" |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
215 "*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
|
216 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
|
217 :type 'string |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
218 :group 'tex-view) |
85 | 219 |
957 | 220 ;;;###autoload |
26270
14dbec3a82b4
(tex-default-mode): Changed to latex-mode.
Gerd Moellmann <gerd@gnu.org>
parents:
25414
diff
changeset
|
221 (defcustom tex-default-mode 'latex-mode |
85 | 222 "*Mode to enter for a new file that might be either TeX or LaTeX. |
223 This variable is used when it can't be determined whether the file | |
224 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
|
225 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
|
226 :type 'function |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
227 :group 'tex) |
85 | 228 |
957 | 229 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
230 (defcustom tex-open-quote "``" |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
231 "*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
|
232 :type 'string |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
233 :options '("``" "\"<" "\"`" "<<" "«") |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
234 :group 'tex) |
85 | 235 |
957 | 236 ;;;###autoload |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
237 (defcustom tex-close-quote "''" |
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
238 "*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
|
239 :type 'string |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
240 :options '("''" "\">" "\"'" ">>" "»") |
17435
b104a6fb7fa3
Add defgroup's; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents:
16807
diff
changeset
|
241 :group 'tex) |
85 | 242 |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
243 (defvar tex-last-temp-file nil |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
244 "Latest temporary file generated by \\[tex-region] and \\[tex-buffer]. |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
245 Deleted when the \\[tex-region] or \\[tex-buffer] is next run, or when the |
7285 | 246 tex shell terminates.") |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
247 |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
248 (defvar tex-command "tex" |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
249 "*Command to run TeX. |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
250 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
|
251 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
|
252 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
|
253 with blanks as separators. |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
254 |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
255 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
|
256 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
|
257 current buffer.") |
85 | 258 |
259 (defvar tex-trailer nil | |
260 "String appended after the end of a region sent to TeX by \\[tex-region].") | |
261 | |
262 (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
|
263 "Regular expression used by \\[tex-region] to find start of file's header.") |
85 | 264 |
265 (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
|
266 "Regular expression used by \\[tex-region] to find end of file's header.") |
85 | 267 |
268 (defvar tex-shell-cd-command "cd" | |
269 "Command to give to shell running TeX to change directory. | |
7285 | 270 The value of `tex-directory' is appended to this, separated by a space.") |
85 | 271 |
272 (defvar tex-zap-file nil | |
273 "Temporary file name used for text being sent as input to TeX. | |
274 Should be a simple file name with no extension or directory specification.") | |
275 | |
276 (defvar tex-last-buffer-texed nil | |
277 "Buffer which was last TeXed.") | |
278 | |
279 (defvar tex-print-file nil | |
280 "File name that \\[tex-print] prints. | |
281 Set by \\[tex-region], \\[tex-buffer], and \\[tex-file].") | |
282 | |
51525
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
283 (defvar tex-mode-syntax-table |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
284 (let ((st (make-syntax-table))) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
285 (modify-syntax-entry ?% "<" st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
286 (modify-syntax-entry ?\n ">" st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
287 (modify-syntax-entry ?\f ">" st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
288 (modify-syntax-entry ?\C-@ "w" st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
289 (modify-syntax-entry ?' "w" st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
290 (modify-syntax-entry ?@ "_" st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
291 (modify-syntax-entry ?* "_" st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
292 (modify-syntax-entry ?\t " " st) |
50943
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
293 ;; ~ is printed by TeX as a space, but it's semantics in the syntax |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
294 ;; of TeX is not `whitespace' (i.e. it's just like \hspace{foo}). |
51525
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
295 (modify-syntax-entry ?~ "." st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
296 (modify-syntax-entry ?$ "$$" st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
297 (modify-syntax-entry ?\\ "/" st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
298 (modify-syntax-entry ?\" "." st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
299 (modify-syntax-entry ?& "." st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
300 (modify-syntax-entry ?_ "." st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
301 (modify-syntax-entry ?^ "." st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
302 st) |
85 | 303 "Syntax table used while in TeX mode.") |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
304 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
305 ;;;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
306 ;;;; Imenu support |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
307 ;;;; |
85 | 308 |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
309 (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
|
310 "*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
|
311 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
|
312 :type 'string |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
313 :group 'tex) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
314 |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
315 (defvar latex-section-alist |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
316 '(("part" . 0) ("chapter" . 1) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
317 ("section" . 2) ("subsection" . 3) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
318 ("subsubsection" . 4) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
319 ("paragraph" . 5) ("subparagraph" . 6))) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
320 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
321 (defvar latex-metasection-list |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
322 '("documentstyle" "documentclass" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
323 "begin{document}" "end{document}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
324 "appendix" "frontmatter" "mainmatter" "backmatter")) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
325 |
15240
21998d33460f
(latex-imenu-create-index):
Richard M. Stallman <rms@gnu.org>
parents:
14734
diff
changeset
|
326 (defun latex-imenu-create-index () |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
327 "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
|
328 (let ((section-regexp |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
329 (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
|
330 "\\*?[ \t]*{")) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
331 (metasection-regexp |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
332 (concat "\\\\" (regexp-opt latex-metasection-list t))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
333 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
|
334 (save-excursion |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
335 ;; 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
|
336 ;; 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
|
337 (goto-char (point-min)) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
338 (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
|
339 (setq i0 0) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
340 (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
|
341 (setq i0 1) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
342 (setq i0 2))) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
343 |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
344 ;; Look for chapters and sections. |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
345 (goto-char (point-min)) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
346 (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
|
347 (let ((start (match-beginning 0)) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
348 (here (point)) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
349 (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
|
350 (match-beginning 1) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
351 (match-end 1)) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
352 latex-section-alist)))) |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
353 (backward-char 1) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
354 (condition-case err |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
355 (progn |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
356 ;; 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
|
357 ;; titles. |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
358 (forward-sexp 1) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
359 (push (cons (concat (apply 'concat |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
360 (make-list |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
361 (max 0 (- i i0)) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
362 latex-imenu-indent-string)) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
363 (buffer-substring-no-properties |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
364 here (1- (point)))) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
365 start) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
366 menu)) |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
367 (error nil)))) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
368 |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
369 ;; Look for included material. |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
370 (goto-char (point-min)) |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
371 (while (search-forward-regexp |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
372 "\\\\\\(include\\|input\\|verbatiminput\\|bibliography\\)\ |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
373 \[ \t]*{\\([^}\n]+\\)}" |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
374 nil t) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
375 (push (cons (concat "<<" (buffer-substring-no-properties |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
376 (match-beginning 2) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
377 (match-end 2)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
378 (if (= (char-after (match-beginning 1)) ?b) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
379 ".bbl" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
380 ".tex")) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
381 (match-beginning 0)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
382 menu)) |
18393
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
383 |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
384 ;; 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
|
385 (goto-char (point-min)) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
386 (while (search-forward-regexp metasection-regexp nil t) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
387 (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
|
388 |
f34e9defc58c
(latex-imenu-create-index): Make it much smarter.
Richard M. Stallman <rms@gnu.org>
parents:
17435
diff
changeset
|
389 ;; 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
|
390 (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
|
391 |
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 ;;;; Outline support |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
394 ;;;; |
12704
0b36e50fb5af
(latex-imenu-generic-expression): Var defined.
Karl Heuer <kwzh@gnu.org>
parents:
11617
diff
changeset
|
395 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
396 (defvar latex-outline-regexp |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
397 (concat "\\\\" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
398 (regexp-opt (append latex-metasection-list |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
399 (mapcar 'car latex-section-alist)) t))) |
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 (defun latex-outline-level () |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
402 (if (looking-at latex-outline-regexp) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
403 (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
|
404 1000)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
405 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
406 ;;;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
407 ;;;; Font-Lock support |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
408 ;;;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
409 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
410 ;(defvar tex-font-lock-keywords |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
411 ; ;; 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
|
412 ; '(("\\\\\\(begin\\|end\\|newcommand\\){\\([a-zA-Z0-9\\*]+\\)}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
413 ; 2 font-lock-function-name-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
414 ; ("\\\\\\(cite\\|label\\|pageref\\|ref\\){\\([^} \t\n]+\\)}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
415 ; 2 font-lock-constant-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
416 ; ;; 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
|
417 ; ;; not be able to display those fonts. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
418 ; ("{\\\\bf\\([^}]+\\)}" 1 'bold keep) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
419 ; ("{\\\\\\(em\\|it\\|sl\\)\\([^}]+\\)}" 2 'italic keep) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
420 ; ("\\\\\\([a-zA-Z@]+\\|.\\)" . font-lock-keyword-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
421 ; ("^[ \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
|
422 ; ;; 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
|
423 ; '(("\\\\\\(begin\\|end\\|newcommand\\){\\([a-zA-Z0-9\\*]+\\)}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
424 ; 2 font-lock-function-name-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
425 ; ("\\\\\\(cite\\|label\\|pageref\\|ref\\){\\([^} \t\n]+\\)}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
426 ; 2 font-lock-constant-face) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
427 ; ("^[ \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
|
428 ; "\\\\\\([a-zA-Z@]+\\|.\\)" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
429 ; ;; 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
|
430 ; ;; not be able to display those fonts. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
431 ; ;; LaTeX2e: \emph{This is emphasized}. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
432 ; ("\\\\emph{\\([^}]+\\)}" 1 'italic keep) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
433 ; ;; LaTeX2e: \textbf{This is bold}, \textit{...}, \textsl{...} |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
434 ; ("\\\\text\\(\\(bf\\)\\|it\\|sl\\){\\([^}]+\\)}" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
435 ; 3 (if (match-beginning 2) 'bold 'italic) keep) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
436 ; ;; 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
|
437 ; ("\\\\\\(\\(bf\\)\\|em\\|it\\|sl\\)\\>\\(\\([^}&\\]\\|\\\\[^\\]\\)+\\)" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
438 ; 3 (if (match-beginning 2) 'bold 'italic) keep)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
439 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
440 ;; 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
|
441 (defconst tex-font-lock-keywords-1 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
442 (eval-when-compile |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
443 (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
|
444 (headings (regexp-opt |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
445 '("title" "begin" "end" "chapter" "part" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
446 "section" "subsection" "subsubsection" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
447 "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
|
448 "newcommand" "renewcommand" "providecommand" |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
449 "newenvironment" "renewenvironment" |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
450 "newtheorem" "renewtheorem") |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
451 t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
452 (variables (regexp-opt |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
453 '("newcounter" "newcounter*" "setcounter" "addtocounter" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
454 "setlength" "addtolength" "settowidth") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
455 t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
456 (includes (regexp-opt |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
457 '("input" "include" "includeonly" "bibliography" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
458 "epsfig" "psfig" "epsf" "nofiles" "usepackage" |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
459 "documentstyle" "documentclass" "verbatiminput" |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
460 "includegraphics" "includegraphics*" |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
461 "url" "nolinkurl") |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
462 t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
463 ;; Miscellany. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
464 (slash "\\\\") |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
465 (opt " *\\(\\[[^]]*\\] *\\)*") |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
466 ;; This would allow highlighting \newcommand\CMD but requires |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
467 ;; adapting subgroup numbers below. |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
468 ;; (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
|
469 (arg "{\\(\\(?:[^{}\\]+\\|\\\\.\\|{[^}]*}\\)+\\)")) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
470 (list |
57698
5e84f3fe94f0
(tex-font-lock-keywords-1): Fix up the spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57639
diff
changeset
|
471 ;; font-lock-syntactic-keywords causes the \ of \end{verbatim} to be |
5e84f3fe94f0
(tex-font-lock-keywords-1): Fix up the spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57639
diff
changeset
|
472 ;; highlighted as tex-verbatim-face. Let's undo that. |
5e84f3fe94f0
(tex-font-lock-keywords-1): Fix up the spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57639
diff
changeset
|
473 ;; This is ugly and brittle :-( --Stef |
5e84f3fe94f0
(tex-font-lock-keywords-1): Fix up the spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57639
diff
changeset
|
474 '("^\\(\\\\\\)end" (1 (get-text-property (match-end 1) 'face) t)) |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
475 ;; display $$ math $$ |
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
476 ;; 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
|
477 ;; 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
|
478 ;; 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
|
479 ;; 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
|
480 (list "\\$\\$\\([^$]+\\)\\$\\$" 1 'tex-math-face) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
481 ;; Heading args. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
482 (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
|
483 ;; 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
|
484 ;; 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
|
485 ;; 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
|
486 ;; 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
|
487 ;; 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
|
488 ;; 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
|
489 ;; 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
|
490 ;; 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
|
491 ;; 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
|
492 ;; 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
|
493 ;; 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
|
494 ;; have a comment in ARG. |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
495 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
|
496 (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
|
497 1 'font-lock-function-name-face 'keep) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
498 ;; Variable args. |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
499 (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
|
500 ;; Include args. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
501 (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
|
502 ;; Definitions. I think. |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
503 '("^[ \t]*\\\\def *\\\\\\(\\(\\w\\|@\\)+\\)" |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
504 1 font-lock-function-name-face)))) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
505 "Subdued expressions to highlight in TeX modes.") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
506 |
57415
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
507 (defun tex-font-lock-append-prop (prop) |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
508 (unless (memq (get-text-property (match-end 1) 'face) |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
509 '(font-lock-comment-face tex-verbatim-face)) |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
510 prop)) |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
511 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
512 (defconst tex-font-lock-keywords-2 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
513 (append tex-font-lock-keywords-1 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
514 (eval-when-compile |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
515 (let* (;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
516 ;; 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
|
517 (bold (regexp-opt '("textbf" "textsc" "textup" |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
518 "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
|
519 (italic (regexp-opt '("textit" "textsl" "emph") t)) |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
520 ;; FIXME: unimplemented yet. |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
521 ;; (type (regexp-opt '("texttt" "textmd" "textrm" "textsf") t)) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
522 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
523 ;; 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
|
524 (citations (regexp-opt |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
525 '("label" "ref" "pageref" "vref" "eqref" |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
526 "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
|
527 ;; 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
|
528 ;; "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
|
529 ) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
530 t)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
531 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
532 ;; 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
|
533 (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
|
534 (specials-2 (regexp-opt |
7acf4e4617be
(tex-font-lock-keywords-2): Require non-letter after specials.
Andreas Schwab <schwab@suse.de>
parents:
38412
diff
changeset
|
535 '("linebreak" "nolinebreak" "pagebreak" "nopagebreak" |
7acf4e4617be
(tex-font-lock-keywords-2): Require non-letter after specials.
Andreas Schwab <schwab@suse.de>
parents:
38412
diff
changeset
|
536 "newline" "newpage" "clearpage" "cleardoublepage" |
7acf4e4617be
(tex-font-lock-keywords-2): Require non-letter after specials.
Andreas Schwab <schwab@suse.de>
parents:
38412
diff
changeset
|
537 "displaybreak" "allowdisplaybreaks" |
7acf4e4617be
(tex-font-lock-keywords-2): Require non-letter after specials.
Andreas Schwab <schwab@suse.de>
parents:
38412
diff
changeset
|
538 "enlargethispage") t)) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
539 (general "\\([a-zA-Z@]+\\**\\|[^ \t\n]\\)") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
540 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
541 ;; Miscellany. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
542 (slash "\\\\") |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
543 (opt " *\\(\\[[^]]*\\] *\\)*") |
48222
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
544 (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
|
545 (arg "{\\(\\(?:[^{}\\]+\\|\\\\.\\|{[^}]*}\\)+\\)")) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
546 (list |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
547 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
548 ;; Citation args. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
549 (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
|
550 ;; |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
551 ;; Text between `` quotes ''. |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
552 (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
|
553 "[^'\">{]+" ;a bit pessimistic |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
554 (regexp-opt `("''" "\">" "\"'" ">>" "»") t)) |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
555 'font-lock-string-face) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
556 ;; |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
557 ;; 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
|
558 (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
|
559 (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
|
560 1 'font-lock-warning-face) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
561 (concat slash general) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
562 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
563 ;; 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
|
564 ;; since we might not be able to display those fonts. |
57415
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
565 (list (concat slash bold " *" arg) 2 |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
566 '(tex-font-lock-append-prop 'bold) 'append) |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
567 (list (concat slash italic " *" arg) 2 |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
568 '(tex-font-lock-append-prop '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
|
569 ;; (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
|
570 ;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
571 ;; 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
|
572 (list (concat "\\\\\\(em\\|it\\|sl\\)\\>" args) |
57415
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
573 2 '(tex-font-lock-append-prop 'italic) 'append) |
48222
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
574 ;; 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
|
575 ;; {\em foo {\bf bar} bla} where both match. |
57415
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
576 (list (concat "\\\\\\(bf\\)\\>" args) |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
577 2 '(tex-font-lock-append-prop 'bold) 'append))))) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
578 "Gaudy expressions to highlight in TeX modes.") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
579 |
48222
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
580 (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
|
581 (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
|
582 '(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
|
583 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
|
584 ;; 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
|
585 (let ((odd nil) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
586 (pos pos)) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
587 (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
|
588 (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
|
589 odd)) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
590 (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
|
591 '(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
|
592 '(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
|
593 |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
594 (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
|
595 (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
|
596 (eval-when-compile |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
597 (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
|
598 (slash "\\\\") |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
599 ;; 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
|
600 ;; 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
|
601 ;; 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
|
602 ;; 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
|
603 ;; 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
|
604 (arg "{\\(?:[^{}\\]\\|\\\\.\\|{[^}]*}\\)*")) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
605 `((,(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
|
606 (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
|
607 append)))))) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
608 "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
|
609 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
610 (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
|
611 "Default expressions to highlight in TeX modes.") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
612 |
48222
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
613 (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
|
614 '("verbatim" "verbatim*")) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
615 |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
616 (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
|
617 (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
|
618 `((,(concat "^\\\\begin *{" verbs "}.*\\(\n\\)") 2 "|") |
57415
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
619 ;; Technically, we'd like to put the "|" property on the \n preceding |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
620 ;; the \end, but this would have 2 disadvantages: |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
621 ;; 1 - it's wrong if the verbatim env is empty (the same \n is used to |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
622 ;; start and end the fenced-string). |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
623 ;; 2 - font-lock considers the preceding \n as being part of the |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
624 ;; preceding line, so things gets screwed every time the previous |
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
625 ;; line is re-font-locked on its own. |
57698
5e84f3fe94f0
(tex-font-lock-keywords-1): Fix up the spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57639
diff
changeset
|
626 ;; There's a hack in tex-font-lock-keywords-1 to remove the verbatim |
5e84f3fe94f0
(tex-font-lock-keywords-1): Fix up the spurious
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57639
diff
changeset
|
627 ;; face from the \ but C-M-f still jumps to the wrong spot :-( --Stef |
57415
fdd8f0d7c67d
(tex-font-lock-append-prop): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57304
diff
changeset
|
628 (,(concat "^\\(\\\\\\)end *{" verbs "}\\(.?\\)") (1 "|") (3 "<")) |
48222
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
629 ;; ("^\\(\\\\\\)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
|
630 ;; ("^\\\\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
|
631 ("\\\\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
|
632 |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
633 (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
|
634 (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
|
635 (while (< beg end) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
636 (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
|
637 (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
|
638 (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
|
639 (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
|
640 (null (cddr prop))) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
641 (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
|
642 (setq beg next)))) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
643 |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
644 (defface superscript |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
645 '((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
|
646 "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
|
647 (defface subscript |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
648 '((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
|
649 "Face used for subscripts.") |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
650 |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
651 (defface tex-math-face |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
652 '((t :inherit font-lock-string-face)) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
653 "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
|
654 (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
|
655 (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
|
656 ;; '((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
|
657 '((t :family "courier")) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
658 "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
|
659 (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
|
660 |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
661 ;; 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
|
662 (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
|
663 (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
|
664 (cond |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
665 ((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
|
666 ((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
|
667 (t |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
668 (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
|
669 ;; 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
|
670 (save-excursion |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
671 (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
|
672 (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
|
673 (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
|
674 (unless (eobp) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
675 (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
|
676 tex-verbatim-face)))) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
677 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
678 |
85 | 679 (defun tex-define-common-keys (keymap) |
7285 | 680 "Define the keys that we want defined both in TeX mode and in the TeX shell." |
85 | 681 (define-key keymap "\C-c\C-k" 'tex-kill-job) |
682 (define-key keymap "\C-c\C-l" 'tex-recenter-output-buffer) | |
683 (define-key keymap "\C-c\C-q" 'tex-show-print-queue) | |
684 (define-key keymap "\C-c\C-p" 'tex-print) | |
685 (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
|
686 |
be43750c20d2
(tex-define-common-keys): Define menu items.
Richard M. Stallman <rms@gnu.org>
parents:
4768
diff
changeset
|
687 (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
|
688 |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
689 (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
|
690 '(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
|
691 (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
|
692 '(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
|
693 :enable (get-buffer "*tex-shell*"))) |
4900
be43750c20d2
(tex-define-common-keys): Define menu items.
Richard M. Stallman <rms@gnu.org>
parents:
4768
diff
changeset
|
694 (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
|
695 '("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
|
696 (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
|
697 '(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
|
698 :enable (stringp tex-print-file))) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
699 (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
|
700 '(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
|
701 (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
|
702 '(menu-item "Tex View" tex-view :enable (stringp tex-print-file)))) |
85 | 703 |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
704 (defvar tex-mode-map |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
705 (let ((map (make-sparse-keymap))) |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
706 (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
|
707 (tex-define-common-keys map) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
708 (define-key map "\"" 'tex-insert-quote) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
709 (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
|
710 (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
|
711 (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
|
712 (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
|
713 (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
|
714 (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
|
715 (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
|
716 (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
|
717 (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
|
718 (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
|
719 (define-key map "\C-c\C-f" 'tex-file) |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
720 (define-key map "\C-c\C-c" 'tex-compile) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
721 (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
|
722 (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
|
723 (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
|
724 (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
|
725 (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
|
726 (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
|
727 (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
|
728 '("BibTeX File" . tex-bibtex-file)) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
729 (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
|
730 '(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
|
731 (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
|
732 '("Validate Buffer" . tex-validate-buffer)) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
733 (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
|
734 '(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
|
735 (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
|
736 '("TeX Buffer" . tex-buffer)) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
737 (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
|
738 map) |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
739 "Keymap shared by TeX modes.") |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
740 |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
741 (defvar latex-mode-map |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
742 (let ((map (make-sparse-keymap))) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
743 (set-keymap-parent map tex-mode-map) |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
744 (define-key map "\C-c\C-s" 'latex-split-block) |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
745 map) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
746 "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
|
747 |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
748 (defvar plain-tex-mode-map |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
749 (let ((map (make-sparse-keymap))) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
750 (set-keymap-parent map tex-mode-map) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
751 map) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
752 "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
|
753 |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
754 (defvar tex-shell-map |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
755 (let ((m (make-sparse-keymap))) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
756 (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
|
757 (tex-define-common-keys m) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
758 m) |
7285 | 759 "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
|
760 Inherits `shell-mode-map' with a few additions.") |
85 | 761 |
14383
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
762 (defvar tex-face-alist |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
763 '((bold . "{\\bf ") |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
764 (italic . "{\\it ") |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
765 (bold-italic . "{\\bi ") ; hypothetical |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
766 (underline . "\\underline{") |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
767 (default . "{\\rm ")) |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
768 "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
|
769 |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
770 (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
|
771 `((italic . "{\\em ") |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
772 ,@tex-face-alist) |
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
773 "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
|
774 |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
775 ;; 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
|
776 ;; but then it would be too slow. |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
777 (defun tex-guess-mode () |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
778 (let ((mode tex-default-mode) slash comment) |
85 | 779 (save-excursion |
780 (goto-char (point-min)) | |
781 (while (and (setq slash (search-forward "\\" nil t)) | |
782 (setq comment (let ((search-end (point))) | |
783 (save-excursion | |
784 (beginning-of-line) | |
785 (search-forward "%" search-end t)))))) | |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
786 (when (and slash (not comment)) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
787 (setq mode |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
788 (if (looking-at |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
789 (eval-when-compile |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
790 (concat |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
791 (regexp-opt '("documentstyle" "documentclass" |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
792 "begin" "subsection" "section" |
50943
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
793 "part" "chapter" "newcommand" |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
794 "renewcommand") 'words) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
795 "\\|NeedsTeXFormat{LaTeX"))) |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
796 (if (and (looking-at |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
797 "document\\(style\\|class\\)\\(\\[.*\\]\\)?{slides}") |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
798 ;; SliTeX is almost never used any more nowadays. |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
799 (tex-executable-exists-p slitex-run-command)) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
800 'slitex-mode |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
801 'latex-mode) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
802 'plain-tex-mode)))) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
803 (funcall mode))) |
2598
2189edb30955
Removed spurious comment (obsoleted by ;;;###autoload).
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2588
diff
changeset
|
804 |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
805 ;; `tex-mode' plays two roles: it's the parent of several sub-modes |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
806 ;; but it's also the function that chooses between those submodes. |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
807 ;; To tell the difference between those two cases where the function |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
808 ;; might be called, we check `delay-mode-hooks'. |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
809 (define-derived-mode tex-mode text-mode "generic-TeX" |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
810 (tex-common-initialization)) |
50943
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
811 ;; We now move the function and define it again. This gives a warning |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
812 ;; in the byte-compiler :-( but it's difficult to avoid because |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
813 ;; `define-derived-mode' will necessarily define the function once |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
814 ;; and we need to define it a second time for `autoload' to get the |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
815 ;; proper docstring. |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
816 (defalias 'tex-mode-internal (symbol-function 'tex-mode)) |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
817 ;;;###autoload |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
818 (defun tex-mode () |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
819 "Major mode for editing files of input for TeX, LaTeX, or SliTeX. |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
820 Tries to determine (by looking at the beginning of the file) whether |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
821 this file is for plain TeX, LaTeX, or SliTeX and calls `plain-tex-mode', |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
822 `latex-mode', or `slitex-mode', respectively. If it cannot be determined, |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
823 such as if there are no commands in the file, the value of `tex-default-mode' |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
824 says which mode to use." |
50943
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
825 (interactive) |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
826 (if delay-mode-hooks |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
827 ;; We're called from one of the children already. |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
828 (tex-mode-internal) |
654c1513e74a
(tex-mode-syntax-table): ~ is not whitespace.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50592
diff
changeset
|
829 (tex-guess-mode))) |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
830 |
269 | 831 ;;;###autoload |
2571
b65cf676a09b
All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
832 (defalias 'TeX-mode 'tex-mode) |
269 | 833 ;;;###autoload |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
834 (defalias 'plain-TeX-mode 'plain-tex-mode) |
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
835 ;;;###autoload |
2571
b65cf676a09b
All fsets changed to defaliases.
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
836 (defalias 'LaTeX-mode 'latex-mode) |
85 | 837 |
256 | 838 ;;;###autoload |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
839 (define-derived-mode plain-tex-mode tex-mode "TeX" |
85 | 840 "Major mode for editing files of input for plain TeX. |
841 Makes $ and } display the characters they match. | |
842 Makes \" insert `` when it seems to be the beginning of a quotation, | |
843 and '' when it appears to be the end; it inserts \" only after a \\. | |
844 | |
845 Use \\[tex-region] to run TeX on the current region, plus a \"header\" | |
846 copied from the top of the file (containing macro definitions, etc.), | |
847 running TeX under a special subshell. \\[tex-buffer] does the whole buffer. | |
848 \\[tex-file] saves the buffer and then processes the file. | |
849 \\[tex-print] prints the .dvi file made by any of these. | |
850 \\[tex-view] previews the .dvi file made by any of these. | |
851 \\[tex-bibtex-file] runs bibtex on the file of the current buffer. | |
852 | |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
853 Use \\[tex-validate-buffer] to check buffer for paragraphs containing |
85 | 854 mismatched $'s or braces. |
855 | |
856 Special commands: | |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
857 \\{plain-tex-mode-map} |
85 | 858 |
859 Mode variables: | |
860 tex-run-command | |
861 Command string used by \\[tex-region] or \\[tex-buffer]. | |
862 tex-directory | |
863 Directory in which to create temporary files for TeX jobs | |
864 run by \\[tex-region] or \\[tex-buffer]. | |
865 tex-dvi-print-command | |
866 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
|
867 tex-alt-dvi-print-command |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
868 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
|
869 argument) to print a .dvi file. |
85 | 870 tex-dvi-view-command |
871 Command string used by \\[tex-view] to preview a .dvi file. | |
872 tex-show-queue-command | |
873 Command string used by \\[tex-show-print-queue] to show the print | |
874 queue that \\[tex-print] put your job on. | |
875 | |
7285 | 876 Entering Plain-tex mode runs the hook `text-mode-hook', then the hook |
877 `tex-mode-hook', and finally the hook `plain-tex-mode-hook'. When the | |
878 special subshell is initiated, the hook `tex-shell-hook' is run." | |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
879 (set (make-local-variable 'tex-command) tex-run-command) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
880 (set (make-local-variable 'tex-start-of-header) "%\\*\\*start of header") |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
881 (set (make-local-variable 'tex-end-of-header) "%\\*\\*end of header") |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
882 (set (make-local-variable 'tex-trailer) "\\bye\n")) |
85 | 883 |
256 | 884 ;;;###autoload |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
885 (define-derived-mode latex-mode tex-mode "LaTeX" |
85 | 886 "Major mode for editing files of input for LaTeX. |
887 Makes $ and } display the characters they match. | |
888 Makes \" insert `` when it seems to be the beginning of a quotation, | |
889 and '' when it appears to be the end; it inserts \" only after a \\. | |
890 | |
891 Use \\[tex-region] to run LaTeX on the current region, plus the preamble | |
892 copied from the top of the file (containing \\documentstyle, etc.), | |
893 running LaTeX under a special subshell. \\[tex-buffer] does the whole buffer. | |
894 \\[tex-file] saves the buffer and then processes the file. | |
895 \\[tex-print] prints the .dvi file made by any of these. | |
896 \\[tex-view] previews the .dvi file made by any of these. | |
897 \\[tex-bibtex-file] runs bibtex on the file of the current buffer. | |
898 | |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
899 Use \\[tex-validate-buffer] to check buffer for paragraphs containing |
85 | 900 mismatched $'s or braces. |
901 | |
902 Special commands: | |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
903 \\{latex-mode-map} |
85 | 904 |
905 Mode variables: | |
906 latex-run-command | |
907 Command string used by \\[tex-region] or \\[tex-buffer]. | |
908 tex-directory | |
909 Directory in which to create temporary files for LaTeX jobs | |
910 run by \\[tex-region] or \\[tex-buffer]. | |
911 tex-dvi-print-command | |
912 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
|
913 tex-alt-dvi-print-command |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
914 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
|
915 argument) to print a .dvi file. |
85 | 916 tex-dvi-view-command |
917 Command string used by \\[tex-view] to preview a .dvi file. | |
918 tex-show-queue-command | |
919 Command string used by \\[tex-show-print-queue] to show the print | |
920 queue that \\[tex-print] put your job on. | |
921 | |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
922 Entering Latex mode runs the hook `text-mode-hook', then |
7285 | 923 `tex-mode-hook', and finally `latex-mode-hook'. When the special |
924 subshell is initiated, `tex-shell-hook' is run." | |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
925 (set (make-local-variable 'tex-command) latex-run-command) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
926 (set (make-local-variable 'tex-start-of-header) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
927 "\\\\document\\(style\\|class\\)") |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
928 (set (make-local-variable 'tex-end-of-header) "\\\\begin\\s-*{document}") |
53185
85f57f9a360f
(latex-mode): `tex-trailer' is not a regexp.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52957
diff
changeset
|
929 (set (make-local-variable 'tex-trailer) "\\end{document}\n") |
5425
3dd5ff54e1cd
(slitex-mode, latex-mode): Set paragraph-start and
Richard M. Stallman <rms@gnu.org>
parents:
5262
diff
changeset
|
930 ;; 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
|
931 ;; 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
|
932 ;; 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
|
933 (setq paragraph-start |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
934 (concat "[ \t]*\\(\\$\\$\\|" |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
935 "\\\\[][]\\|" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
936 "\\\\" (regexp-opt (append |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
937 (mapcar 'car latex-section-alist) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
938 '("begin" "label" "end" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
939 "item" "bibitem" "newline" "noindent" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
940 "newpage" "footnote" "marginpar" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
941 "parbox" "caption")) t) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
942 "\\>\\|\\\\[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
|
943 "\\>\\)")) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
944 (setq paragraph-separate |
33363
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
945 (concat "[\f%]\\|[ \t]*\\($\\|" |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
946 "\\\\[][]\\|" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
947 "\\\\" (regexp-opt (append |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
948 (mapcar 'car latex-section-alist) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
949 '("begin" "label" "end" )) t) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
950 "\\>\\|\\\\\\(" (regexp-opt '("item" "bibitem" "newline" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
951 "noindent" "newpage" "footnote" |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
952 "marginpar" "parbox" "caption")) |
33363
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
953 "\\|\\$\\$\\|[a-z]*\\(space\\|skip\\|page[a-z]*\\)" |
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
954 "\\>\\)[ \t]*\\($\\|%\\)\\)")) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
955 (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
|
956 'latex-imenu-create-index) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
957 (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
|
958 (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
|
959 (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
|
960 (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
|
961 (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
|
962 (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
|
963 (set (make-local-variable 'forward-sexp-function) 'latex-forward-sexp) |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
964 (set (make-local-variable 'skeleton-end-hook) nil)) |
85 | 965 |
4768
9d84105b1248
(slitex-mode): Add ###autoload magic cookie.
Brian Fox <bfox@gnu.org>
parents:
4376
diff
changeset
|
966 ;;;###autoload |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
967 (define-derived-mode slitex-mode latex-mode "SliTeX" |
85 | 968 "Major mode for editing files of input for SliTeX. |
969 Makes $ and } display the characters they match. | |
970 Makes \" insert `` when it seems to be the beginning of a quotation, | |
971 and '' when it appears to be the end; it inserts \" only after a \\. | |
972 | |
973 Use \\[tex-region] to run SliTeX on the current region, plus the preamble | |
974 copied from the top of the file (containing \\documentstyle, etc.), | |
975 running SliTeX under a special subshell. \\[tex-buffer] does the whole buffer. | |
976 \\[tex-file] saves the buffer and then processes the file. | |
977 \\[tex-print] prints the .dvi file made by any of these. | |
978 \\[tex-view] previews the .dvi file made by any of these. | |
979 \\[tex-bibtex-file] runs bibtex on the file of the current buffer. | |
980 | |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
981 Use \\[tex-validate-buffer] to check buffer for paragraphs containing |
85 | 982 mismatched $'s or braces. |
983 | |
984 Special commands: | |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
985 \\{slitex-mode-map} |
85 | 986 |
987 Mode variables: | |
988 slitex-run-command | |
989 Command string used by \\[tex-region] or \\[tex-buffer]. | |
990 tex-directory | |
991 Directory in which to create temporary files for SliTeX jobs | |
992 run by \\[tex-region] or \\[tex-buffer]. | |
993 tex-dvi-print-command | |
994 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
|
995 tex-alt-dvi-print-command |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
996 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
|
997 argument) to print a .dvi file. |
85 | 998 tex-dvi-view-command |
999 Command string used by \\[tex-view] to preview a .dvi file. | |
1000 tex-show-queue-command | |
1001 Command string used by \\[tex-show-print-queue] to show the print | |
1002 queue that \\[tex-print] put your job on. | |
1003 | |
7285 | 1004 Entering SliTeX mode runs the hook `text-mode-hook', then the hook |
1005 `tex-mode-hook', then the hook `latex-mode-hook', and finally the hook | |
1006 `slitex-mode-hook'. When the special subshell is initiated, the hook | |
1007 `tex-shell-hook' is run." | |
85 | 1008 (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
|
1009 (setq tex-start-of-header "\\\\documentstyle{slides}\\|\\\\documentclass{slides}")) |
85 | 1010 |
1011 (defun tex-common-initialization () | |
18587
3290767e31d8
(tex-common-initialization):
Richard M. Stallman <rms@gnu.org>
parents:
18393
diff
changeset
|
1012 ;; 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
|
1013 (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
|
1014 ;; 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
|
1015 (set (make-local-variable 'paragraph-start) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1016 "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$") |
5425
3dd5ff54e1cd
(slitex-mode, latex-mode): Set paragraph-start and
Richard M. Stallman <rms@gnu.org>
parents:
5262
diff
changeset
|
1017 ;; 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
|
1018 ;; 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
|
1019 (set (make-local-variable 'paragraph-separate) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1020 "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$[ \t]*$") |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1021 (set (make-local-variable 'comment-start) "%") |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1022 (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
|
1023 (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
|
1024 "\\(\\(^\\|[^\\\n]\\)\\(\\\\\\\\\\)*\\)\\(%+ *\\)") |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1025 (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
|
1026 (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
|
1027 'tex-categorize-whitespace) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1028 (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
|
1029 (lambda (face end) |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1030 (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
|
1031 (if face-text |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1032 face-text |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1033 (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
|
1034 (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
|
1035 (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
|
1036 (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
|
1037 '((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
|
1038 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
|
1039 nil nil ((?$ . "\"")) nil |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1040 ;; Who ever uses that anyway ??? |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1041 (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
|
1042 (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
|
1043 . 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
|
1044 (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
|
1045 . 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
|
1046 (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
|
1047 . 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
|
1048 (parse-sexp-lookup-properties . t))) |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1049 ;; 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
|
1050 (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
|
1051 ;; Other vars that should be buffer-local. |
85 | 1052 (make-local-variable 'tex-command) |
1053 (make-local-variable 'tex-start-of-header) | |
1054 (make-local-variable 'tex-end-of-header) | |
1055 (make-local-variable 'tex-trailer)) | |
1056 | |
1057 (defun tex-categorize-whitespace (backward-limit) | |
1058 ;; compare-windows-whitespace is set to this. | |
1059 ;; This is basically a finite-state machine. | |
1060 ;; Returns a symbol telling how TeX would treat | |
1061 ;; the whitespace we are looking at: null, space, or par. | |
1062 (let ((category 'null) | |
1063 (not-finished t)) | |
1064 (skip-chars-backward " \t\n\f" backward-limit) | |
1065 (while not-finished | |
1066 (cond ((looking-at "[ \t]+") | |
1067 (goto-char (match-end 0)) | |
18931
43b52e6a35c2
(tex-categorize-whitespace): Use eq, not eql.
Richard M. Stallman <rms@gnu.org>
parents:
18587
diff
changeset
|
1068 (if (eq category 'null) |
85 | 1069 (setq category 'space))) |
1070 ((looking-at "\n") | |
18931
43b52e6a35c2
(tex-categorize-whitespace): Use eq, not eql.
Richard M. Stallman <rms@gnu.org>
parents:
18587
diff
changeset
|
1071 (cond ((eq category 'newline) |
85 | 1072 (setq category 'par) |
1073 (setq not-finished nil)) | |
1074 (t | |
1075 (setq category 'newline) ;a strictly internal state | |
1076 (goto-char (match-end 0))))) | |
1077 ((looking-at "\f+") | |
1078 (setq category 'par) | |
1079 (setq not-finished nil)) | |
1080 (t | |
1081 (setq not-finished nil)))) | |
1082 (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
|
1083 (if (eq category 'newline) |
85 | 1084 'space ;TeX doesn't distinguish |
1085 category))) | |
1086 | |
1087 (defun tex-insert-quote (arg) | |
1088 "Insert the appropriate quote marks for TeX. | |
2836
d95acb2243f9
(tex-insert-quote): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents:
2598
diff
changeset
|
1089 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
|
1090 \(normally '') depending on the context. With prefix argument, always |
85 | 1091 inserts \" characters." |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1092 (interactive "*P") |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1093 (if (or arg (memq (char-syntax (preceding-char)) '(?/ ?\\)) |
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1094 (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
|
1095 (save-excursion |
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1096 (backward-char (length tex-open-quote)) |
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1097 (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
|
1098 (looking-at (regexp-quote tex-close-quote))) |
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1099 (delete-char (length tex-open-quote)) |
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1100 t))) |
85 | 1101 (self-insert-command (prefix-numeric-value arg)) |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1102 (insert (if (memq (char-syntax (preceding-char)) '(?\( ?> ?\ )) |
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1103 tex-open-quote tex-close-quote)))) |
85 | 1104 |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
1105 (defun tex-validate-buffer () |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
1106 "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
|
1107 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
|
1108 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
|
1109 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
|
1110 on the line for the invalidity you want to see." |
85 | 1111 (interactive) |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1112 (let ((buffer (current-buffer)) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1113 (prevpos (point-min)) |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
1114 (linenum nil) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
1115 (num-matches 0)) |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1116 (with-output-to-temp-buffer "*Occur*" |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1117 (princ "Mismatches:\n") |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
1118 (with-current-buffer standard-output |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1119 (occur-mode) |
45055
b9c9078b245d
(tex-validate-buffer): Use `occur-revert-arguments' instead of setting
Colin Walters <walters@gnu.org>
parents:
44884
diff
changeset
|
1120 ;; 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
|
1121 ;; 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
|
1122 (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
|
1123 (save-excursion |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1124 (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
|
1125 (while (and (not (bobp))) |
15644
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
1126 (let ((end (point)) |
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
1127 prev-end) |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1128 ;; Scan the previous paragraph for invalidities. |
15644
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
1129 (if (search-backward "\n\n" nil t) |
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
1130 (progn |
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
1131 (setq prev-end (point)) |
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
1132 (forward-char 2)) |
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
1133 (goto-char (setq prev-end (point-min)))) |
85 | 1134 (or (tex-validate-region (point) end) |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
1135 (let* ((end (line-beginning-position 2)) |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1136 start tem) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1137 (beginning-of-line) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1138 (setq start (point)) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1139 ;; 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
|
1140 ;; in a cumulative fashion. |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1141 (if linenum |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1142 (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
|
1143 (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
|
1144 (setq prevpos (point)) |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1145 ;; Mention this mismatch in *Occur*. |
4376
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1146 ;; 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
|
1147 ;; 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
|
1148 (save-excursion |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1149 (setq tem (point-marker)) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1150 (set-buffer standard-output) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1151 (goto-char (point-min)) |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1152 ;; Skip "Mismatches:" header line. |
109294166e68
(validate-tex-buffer): Record mismatches in *Occur*.
Richard M. Stallman <rms@gnu.org>
parents:
3591
diff
changeset
|
1153 (forward-line 1) |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
1154 (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
|
1155 (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
|
1156 (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
|
1157 (forward-char (- start end)) |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
1158 (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
|
1159 (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
|
1160 (add-text-properties |
745b05b3e5ed
(tex-validate-buffer): Add help-echo to mouse-highlighted text.
Eli Zaretskii <eliz@gnu.org>
parents:
37952
diff
changeset
|
1161 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
|
1162 '(mouse-face highlight |
745b05b3e5ed
(tex-validate-buffer): Add help-echo to mouse-highlighted text.
Eli Zaretskii <eliz@gnu.org>
parents:
37952
diff
changeset
|
1163 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
|
1164 (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
|
1165 'occur-target tem))))) |
15644
3b4678aa4e9f
(tex-validate-region): Skip fwd over whitespace
Karl Heuer <kwzh@gnu.org>
parents:
15513
diff
changeset
|
1166 (goto-char prev-end)))) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1167 (with-current-buffer standard-output |
56792
db21eaa33109
(tex-validate-buffer): Distinguish between 0, 1, and many mismatches.
John Paul Wallington <jpw@pobox.com>
parents:
55677
diff
changeset
|
1168 (let ((no-matches (zerop num-matches))) |
db21eaa33109
(tex-validate-buffer): Distinguish between 0, 1, and many mismatches.
John Paul Wallington <jpw@pobox.com>
parents:
55677
diff
changeset
|
1169 (if no-matches |
db21eaa33109
(tex-validate-buffer): Distinguish between 0, 1, and many mismatches.
John Paul Wallington <jpw@pobox.com>
parents:
55677
diff
changeset
|
1170 (insert "None!\n")) |
db21eaa33109
(tex-validate-buffer): Distinguish between 0, 1, and many mismatches.
John Paul Wallington <jpw@pobox.com>
parents:
55677
diff
changeset
|
1171 (if (interactive-p) |
56843
4520af567a84
(tex-validate-buffer): Use distinct strings rather than
John Paul Wallington <jpw@pobox.com>
parents:
56792
diff
changeset
|
1172 (message (cond (no-matches "No mismatches found") |
4520af567a84
(tex-validate-buffer): Use distinct strings rather than
John Paul Wallington <jpw@pobox.com>
parents:
56792
diff
changeset
|
1173 ((= num-matches 1) "1 mismatch found") |
4520af567a84
(tex-validate-buffer): Use distinct strings rather than
John Paul Wallington <jpw@pobox.com>
parents:
56792
diff
changeset
|
1174 (t "%d mismatches found")) |
4520af567a84
(tex-validate-buffer): Use distinct strings rather than
John Paul Wallington <jpw@pobox.com>
parents:
56792
diff
changeset
|
1175 num-matches))))))) |
85 | 1176 |
1177 (defun tex-validate-region (start end) | |
1178 "Check for mismatched braces or $'s in region. | |
1179 Returns t if no mismatches. Returns nil and moves point to suspect | |
1180 area if a mismatch is found." | |
1181 (interactive "r") | |
1182 (let ((failure-point nil) (max-possible-sexps (- end start))) | |
1183 (save-excursion | |
1184 (condition-case () | |
1185 (save-restriction | |
1186 (narrow-to-region start end) | |
20203
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
1187 ;; First check that the open and close parens balance in numbers. |
85 | 1188 (goto-char start) |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
1189 (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
|
1190 (forward-sexp 1)) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
1191 ;; Now check that like matches like. |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
1192 (goto-char start) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
1193 (while (progn (skip-syntax-forward "^(") |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
1194 (not (eobp))) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
1195 (let ((match (matching-paren (following-char)))) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
1196 (save-excursion |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
1197 (forward-sexp 1) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
1198 (or (= (preceding-char) match) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
1199 (error "Mismatched parentheses")))) |
f1a4588c8075
(tex-validate-region): Really check
Karl Heuer <kwzh@gnu.org>
parents:
18931
diff
changeset
|
1200 (forward-char 1))) |
85 | 1201 (error |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1202 (skip-syntax-forward " .>") |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1203 (setq failure-point (point))))) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1204 (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
|
1205 (not failure-point))) |
85 | 1206 |
1207 (defun tex-terminate-paragraph (inhibit-validation) | |
1208 "Insert two newlines, breaking a paragraph for TeX. | |
7285 | 1209 Check for mismatched braces or $s in paragraph being terminated. |
85 | 1210 A prefix arg inhibits the checking." |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1211 (interactive "*P") |
85 | 1212 (or inhibit-validation |
1213 (save-excursion | |
1214 (tex-validate-region | |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1215 (save-excursion |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1216 (search-backward "\n\n" nil 'move) |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1217 (point)) |
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
1218 (point))) |
85 | 1219 (message "Paragraph being closed appears to contain a mismatch")) |
1220 (insert "\n\n")) | |
1221 | |
48222
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1222 (define-skeleton tex-insert-braces |
85 | 1223 "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
|
1224 nil |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1225 ?\{ _ ?}) |
85 | 1226 |
21121
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1227 ;; 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
|
1228 ;; 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
|
1229 ;; of a \verb construct. |
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1230 (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
|
1231 (save-excursion |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1232 (skip-chars-backward " ") |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1233 ;; 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
|
1234 (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
|
1235 (let ((opoint (point)) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1236 inside) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1237 (beginning-of-line) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1238 (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
|
1239 (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
|
1240 (setq inside t))) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1241 inside)))) |
21121
dd5c2baa6674
(latex-mode): Set fill-nobreak-predicate.
Richard M. Stallman <rms@gnu.org>
parents:
20203
diff
changeset
|
1242 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1243 (defvar latex-block-default "enumerate") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1244 |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1245 (defvar latex-block-args-alist |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1246 '(("array" nil ?\{ (skeleton-read "Format: ") ?\}) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1247 ("tabular" nil ?\{ (skeleton-read "Format: ") ?\}) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1248 ("minipage" nil ?\{ (skeleton-read "Size: ") ?\}) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1249 ("picture" nil ?\( (skeleton-read "SizeX,SizeY: ") ?\)) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1250 ;; FIXME: This is right for Prosper, but not for seminar. |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1251 ;; ("slide" nil ?\{ (skeleton-read "Title: ") ?\}) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1252 ) |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1253 "Skeleton element to use for arguments to particular environments. |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1254 Every element of the list has the form (NAME . SKEL-ELEM) where NAME is |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1255 the name of the environment and SKEL-ELEM is an element to use in |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1256 a skeleton (see `skeleton-insert').") |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1257 |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1258 (defvar latex-block-body-alist |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1259 '(("enumerate" nil '(latex-insert-item) > _) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1260 ("itemize" nil '(latex-insert-item) > _) |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1261 ("table" nil "\\caption{" > (skeleton-read "Caption: ") "}" > \n |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1262 '(if (and (boundp 'reftex-mode) reftex-mode) (reftex-label "table")) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1263 \n _) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1264 ("figure" nil > _ \n "\\caption{" > (skeleton-read "Caption: ") "}" > \n |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1265 '(if (and (boundp 'reftex-mode) reftex-mode) (reftex-label "table")))) |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1266 "Skeleton element to use for the body of particular environments. |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1267 Every element of the list has the form (NAME . SKEL-ELEM) where NAME is |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1268 the name of the environment and SKEL-ELEM is an element to use in |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1269 a skeleton (see `skeleton-insert').") |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1270 |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1271 ;; 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
|
1272 (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
|
1273 (define-skeleton latex-insert-block |
51525
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
1274 "Create a matching pair of lines \\begin{NAME} and \\end{NAME} at point. |
85 | 1275 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
|
1276 (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
|
1277 latex-block-default) |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1278 (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
|
1279 latex-standard-block-names) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1280 nil nil nil nil latex-block-default))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1281 (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
|
1282 (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
|
1283 (member choice latex-block-names)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1284 ;; Remember new block names for later completion. |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1285 (push choice latex-block-names)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1286 choice) |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1287 \n "\\begin{" str "}" |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1288 (cdr (assoc str latex-block-args-alist)) |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1289 > \n (or (cdr (assoc str latex-block-body-alist)) '(nil > _)) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1290 (unless (bolp) '\n) |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1291 "\\end{" str "}" > \n) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1292 |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1293 (define-skeleton latex-insert-item |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1294 "Insert a \item macro." |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1295 nil |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1296 \n "\\item " >) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1297 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1298 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1299 ;;;; |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1300 ;;;; LaTeX syntax navigation |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1301 ;;;; |
85 | 1302 |
51533
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1303 (defmacro tex-search-noncomment (&rest body) |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1304 "Execute BODY as long as it return non-nil and point is in a comment. |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1305 Return the value returned by the last execution of BODY." |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1306 (declare (debug t)) |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1307 (let ((res-sym (make-symbol "result"))) |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1308 `(let (,res-sym) |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1309 (while |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1310 (and (setq ,res-sym (progn ,@body)) |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1311 (save-excursion (skip-chars-backward "^\n%") (not (bolp))))) |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1312 ,res-sym))) |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1313 |
85 | 1314 (defun tex-last-unended-begin () |
7285 | 1315 "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
|
1316 (condition-case nil |
51533
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1317 (while (and (tex-search-noncomment |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1318 (re-search-backward "\\\\\\(begin\\|end\\)\\s *{")) |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1319 (looking-at "\\\\end")) |
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1320 (tex-last-unended-begin)) |
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1321 (search-failed (error "Couldn't find unended \\begin")))) |
85 | 1322 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1323 (defun tex-next-unmatched-end () |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1324 "Leave point at the end of the next `\\end' that is unended." |
51533
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1325 (while (and (tex-search-noncomment |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1326 (re-search-forward "\\\\\\(begin\\|end\\)\\s *{[^}]+}")) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1327 (save-excursion (goto-char (match-beginning 0)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1328 (looking-at "\\\\begin"))) |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1329 (tex-next-unmatched-end))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1330 |
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
|
1331 (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
|
1332 "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
|
1333 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
|
1334 (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
|
1335 (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
|
1336 (save-excursion |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1337 (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
|
1338 (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
|
1339 (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
|
1340 (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
|
1341 |
32045
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1342 (defun latex-backward-sexp-1 () |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1343 "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
|
1344 (let ((pos (point)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1345 (forward-sexp-function)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1346 (backward-sexp 1) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1347 (if (looking-at "\\\\begin\\>") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1348 (signal 'scan-error |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1349 (list "Containing expression ends prematurely" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1350 (point) (prog1 (point) (goto-char pos)))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1351 (when (eq (char-after) ?{) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1352 (let ((newpos (point))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1353 (when (ignore-errors (backward-sexp 1) t) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1354 (if (looking-at "\\\\end\\>") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1355 (tex-last-unended-begin) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1356 (goto-char newpos)))))))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1357 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1358 (defun latex-forward-sexp-1 () |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1359 "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
|
1360 (let ((pos (point)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1361 (forward-sexp-function)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1362 (forward-sexp 1) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1363 (let ((newpos (point))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1364 (skip-syntax-backward "/w") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1365 (cond |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1366 ((looking-at "\\\\end\\>") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1367 (signal 'scan-error |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1368 (list "Containing expression ends prematurely" |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1369 (point) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1370 (prog1 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1371 (progn (ignore-errors (forward-sexp 2)) (point)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1372 (goto-char pos))))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1373 ((looking-at "\\\\begin\\>") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1374 (goto-char (match-end 0)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1375 (tex-next-unmatched-end)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1376 (t (goto-char newpos)))))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1377 |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1378 (defun latex-forward-sexp (&optional arg) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1379 "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
|
1380 (interactive "P") |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1381 (unless arg (setq arg 1)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1382 (let ((pos (point))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1383 (condition-case err |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1384 (while (/= arg 0) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1385 (setq arg |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1386 (if (> arg 0) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1387 (progn (latex-forward-sexp-1) (1- arg)) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1388 (progn (latex-backward-sexp-1) (1+ arg))))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1389 (scan-error |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1390 (goto-char pos) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1391 (signal (car err) (cdr err)))))) |
74db1ffe4fe8
(latex-metasection-list): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
31990
diff
changeset
|
1392 |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1393 (defun latex-syntax-after () |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1394 "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
|
1395 (if (looking-at "\\\\end\\>") ?\) (char-syntax (following-char)))) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1396 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1397 (defun latex-skip-close-parens () |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1398 "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
|
1399 (let ((forward-sexp-function nil)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1400 (while (progn (skip-syntax-forward " )") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1401 (looking-at "\\\\end\\>")) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1402 (forward-sexp 2)))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1403 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1404 (defun latex-down-list () |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1405 "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
|
1406 (forward-comment (point-max)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1407 (let ((forward-sexp-function nil)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1408 (if (not (looking-at "\\\\begin\\>")) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1409 (down-list 1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1410 (forward-sexp 1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1411 ;; Skip arguments. |
48222
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1412 (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
|
1413 (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
|
1414 (forward-sexp)))))) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1415 |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1416 (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
|
1417 (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
|
1418 "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
|
1419 (save-excursion |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1420 (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
|
1421 (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
|
1422 (match-string 1))) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1423 \n "\\end" str > \n) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1424 |
48222
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1425 (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
|
1426 "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
|
1427 (save-excursion |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1428 (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
|
1429 (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
|
1430 (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
|
1431 (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
|
1432 (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
|
1433 (progn |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1434 (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
|
1435 (forward-sexp 1)) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1436 (point))))))) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
1437 \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
|
1438 |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1439 (defconst tex-discount-args-cmds |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1440 '("begin" "end" "input" "special" "cite" "ref" "include" "includeonly" |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1441 "documentclass" "usepackage" "label") |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1442 "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
|
1443 |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1444 (defun tex-count-words (begin end) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1445 "Count the number of words in the buffer." |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1446 (interactive |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1447 (if (and transient-mark-mode mark-active) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1448 (list (region-beginning) (region-end)) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1449 (list (point-min) (point-max)))) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1450 ;; 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
|
1451 (save-excursion |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1452 (goto-char begin) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1453 (let ((count 0)) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1454 (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
|
1455 (if (not (eq (char-syntax (preceding-char)) ?/)) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1456 (progn |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1457 ;; Don't count single-char words. |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1458 (unless (looking-at ".\\>") (incf count)) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1459 (forward-char 1)) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1460 (let ((cmd |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1461 (buffer-substring-no-properties |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1462 (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
|
1463 (forward-char 1)) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1464 (point))))) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1465 (when (member cmd tex-discount-args-cmds) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1466 (skip-chars-forward "*") |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1467 (forward-comment (point-max)) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1468 (when (looking-at "\\[") |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1469 (forward-sexp 1) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1470 (forward-comment (point-max))) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1471 (if (not (looking-at "{")) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1472 (forward-char 1) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1473 (forward-sexp 1)))))) |
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1474 (message "%s words" count)))) |
37942
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
1475 |
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
1476 |
85 | 1477 |
1478 ;;; Invoking TeX in an inferior shell. | |
1479 | |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1480 ;; 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
|
1481 ;; gets stuck, the user can switch to the shell window and type at it. |
85 | 1482 |
37896
5cc52d5c2f2b
(tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
36105
diff
changeset
|
1483 ;; The utility functions: |
85 | 1484 |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1485 (define-derived-mode tex-shell shell-mode "TeX-Shell" |
54423
802a91a2e43a
(tex-shell): Set error parsing function here.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
53489
diff
changeset
|
1486 (set (make-local-variable 'compilation-parse-errors-function) |
802a91a2e43a
(tex-shell): Set error parsing function here.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
53489
diff
changeset
|
1487 'tex-compilation-parse-errors) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1488 (compilation-shell-minor-mode t)) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1489 |
7834
fc1c95bf734b
(tex-start-shell): Add autoload.
Richard M. Stallman <rms@gnu.org>
parents:
7827
diff
changeset
|
1490 ;;;###autoload |
85 | 1491 (defun tex-start-shell () |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1492 (with-current-buffer |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1493 (make-comint |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1494 "tex-shell" |
34139
358adc86d127
(tex-start-shell): Obey shell-file-name.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33789
diff
changeset
|
1495 (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
|
1496 nil) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1497 (let ((proc (get-process "tex-shell"))) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1498 (set-process-sentinel proc 'tex-shell-sentinel) |
56792
db21eaa33109
(tex-validate-buffer): Distinguish between 0, 1, and many mismatches.
John Paul Wallington <jpw@pobox.com>
parents:
55677
diff
changeset
|
1499 (set-process-query-on-exit-flag proc nil) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1500 (tex-shell) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1501 (while (zerop (buffer-size)) |
10572
c8717227f621
(tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents:
10341
diff
changeset
|
1502 (sleep-for 1))))) |
c8717227f621
(tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents:
10341
diff
changeset
|
1503 |
23761
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1504 (defun tex-feed-input () |
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1505 "Send input to the tex shell process. |
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1506 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
|
1507 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
|
1508 (interactive) |
37942
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
1509 (set-buffer (tex-shell-buf)) |
23761
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1510 (comint-send-input) |
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1511 (tex-recenter-output-buffer nil)) |
a99c30431979
(tex-feed-input): New function.
Richard M. Stallman <rms@gnu.org>
parents:
23642
diff
changeset
|
1512 |
10572
c8717227f621
(tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents:
10341
diff
changeset
|
1513 (defun tex-display-shell () |
c8717227f621
(tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents:
10341
diff
changeset
|
1514 "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
|
1515 (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
|
1516 (tex-recenter-output-buffer nil)) |
85 | 1517 |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1518 (defun tex-shell-sentinel (proc msg) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1519 (cond ((null (buffer-name (process-buffer proc))) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1520 ;; buffer killed |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1521 (set-process-buffer proc nil) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1522 (tex-delete-last-temp-files)) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1523 ((memq (process-status proc) '(signal exit)) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1524 (tex-delete-last-temp-files)))) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1525 |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1526 (defun tex-set-buffer-directory (buffer directory) |
85 | 1527 "Set BUFFER's default directory to be DIRECTORY." |
1528 (setq directory (file-name-as-directory (expand-file-name directory))) | |
1529 (if (not (file-directory-p directory)) | |
1530 (error "%s is not a directory" directory) | |
1531 (save-excursion | |
1532 (set-buffer buffer) | |
1533 (setq default-directory directory)))) | |
1534 | |
5088
73a1b31b673f
(tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents:
5087
diff
changeset
|
1535 (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
|
1536 (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
|
1537 |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1538 (defun tex-shell-proc () |
37942
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
1539 (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
|
1540 (defun tex-shell-buf () |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1541 (process-buffer (tex-shell-proc))) |
37942
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
1542 (defun tex-shell-buf-no-error () |
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
1543 (let ((proc (tex-shell-running))) |
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
1544 (and proc (process-buffer proc)))) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1545 |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1546 (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
|
1547 "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
|
1548 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
|
1549 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
|
1550 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
|
1551 evaluates to a command string. |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1552 |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1553 Return the process in which TeX is running." |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1554 (save-excursion |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1555 (let* ((cmd (eval command)) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1556 (proc (tex-shell-proc)) |
5262
b3a689b41d39
(tex-common-initialization): Make paragraph-start
Richard M. Stallman <rms@gnu.org>
parents:
5088
diff
changeset
|
1557 (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
|
1558 (star (string-match "\\*" cmd)) |
5087
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1559 (string |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1560 (concat |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1561 (if file |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1562 (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
|
1563 file (substring cmd (1+ star))) |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1564 (concat cmd " " file)) |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1565 cmd) |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1566 (if background "&" "")))) |
5262
b3a689b41d39
(tex-common-initialization): Make paragraph-start
Richard M. Stallman <rms@gnu.org>
parents:
5088
diff
changeset
|
1567 ;; 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
|
1568 (set-buffer buf) |
5088
73a1b31b673f
(tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents:
5087
diff
changeset
|
1569 ;; 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
|
1570 ;; 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
|
1571 (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
|
1572 (accept-process-output proc)) |
5087
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1573 (goto-char (process-mark proc)) |
a7b2df620d1a
(tex-start-shell): Don't use -v option.
Richard M. Stallman <rms@gnu.org>
parents:
4917
diff
changeset
|
1574 (insert string) |
5088
73a1b31b673f
(tex-send-command): Wait for output first,
Richard M. Stallman <rms@gnu.org>
parents:
5087
diff
changeset
|
1575 (comint-send-input) |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1576 (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
|
1577 proc))) |
85 | 1578 |
6479
855f4f2d24da
(tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents:
5427
diff
changeset
|
1579 (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
|
1580 "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
|
1581 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
|
1582 (if tex-last-temp-file |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1583 (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
|
1584 (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
|
1585 (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
|
1586 (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
|
1587 (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
|
1588 dir)))) |
7536
efecdee78026
(tex-delete-last-temp-files): Don't fail on non-existent directory.
Karl Heuer <kwzh@gnu.org>
parents:
7298
diff
changeset
|
1589 (while list |
6479
855f4f2d24da
(tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents:
5427
diff
changeset
|
1590 (if not-all |
855f4f2d24da
(tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents:
5427
diff
changeset
|
1591 (and |
855f4f2d24da
(tex-delete-last-temp-files): New arg NOT-ALL.
Richard M. Stallman <rms@gnu.org>
parents:
5427
diff
changeset
|
1592 ;; 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
|
1593 (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
|
1594 (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
|
1595 (delete-file (concat dir (car list)))) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1596 (setq list (cdr list)))))) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
1597 |
741
587f7a98341d
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
739
diff
changeset
|
1598 (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
|
1599 |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1600 ;; |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1601 ;; Machinery to guess the command that the user wants to execute. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1602 ;; |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1603 |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1604 (defvar tex-compile-history nil) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1605 |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1606 (defvar tex-input-files-re |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1607 (eval-when-compile |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1608 (concat "\\." (regexp-opt '("tex" "texi" "texinfo" |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1609 "bbl" "ind" "sty" "cls") t) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1610 ;; Include files with no dots (for directories). |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1611 "\\'\\|\\`[^.]+\\'"))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1612 |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1613 (defcustom tex-use-reftex t |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1614 "If non-nil, use RefTeX's list of files to determine what command to use." |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1615 :type 'boolean) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1616 |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1617 (defvar tex-compile-commands |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1618 '(((concat "pdf" tex-command |
51562
65f7a99a6241
(tex-compile-commands): Handle tex-start-commands like tex-start-tex does.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51533
diff
changeset
|
1619 " " (if (< 0 (length tex-start-commands)) |
65f7a99a6241
(tex-compile-commands): Handle tex-start-commands like tex-start-tex does.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51533
diff
changeset
|
1620 (shell-quote-argument tex-start-commands)) " %f") |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1621 t "%r.pdf") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1622 ((concat tex-command |
51562
65f7a99a6241
(tex-compile-commands): Handle tex-start-commands like tex-start-tex does.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51533
diff
changeset
|
1623 " " (if (< 0 (length tex-start-commands)) |
65f7a99a6241
(tex-compile-commands): Handle tex-start-commands like tex-start-tex does.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51533
diff
changeset
|
1624 (shell-quote-argument tex-start-commands)) " %f") |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1625 t "%r.dvi") |
52957
a4241f6b64e7
(tex-compile-commands): Add `yap' and `ps2pdf'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52401
diff
changeset
|
1626 ("yap %r &" "%r.dvi") |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1627 ("xdvi %r &" "%r.dvi") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1628 ("advi %r &" "%r.dvi") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1629 ("bibtex %r" "%r.aux" "%r.bbl") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1630 ("makeindex %r" "%r.idx" "%r.ind") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1631 ("texindex %r.??") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1632 ("dvipdfm %r" "%r.dvi" "%r.pdf") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1633 ("dvipdf %r" "%r.dvi" "%r.pdf") |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1634 ("dvips -o %r.ps %r" "%r.dvi" "%r.ps") |
52957
a4241f6b64e7
(tex-compile-commands): Add `yap' and `ps2pdf'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52401
diff
changeset
|
1635 ("ps2pdf %r.ps" "%r.ps" "%r.pdf") |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1636 ("gv %r.ps &" "%r.ps") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1637 ("gv %r.pdf &" "%r.pdf") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1638 ("xpdf %r.pdf &" "%r.pdf") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1639 ("lpr %r.ps" "%r.ps")) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1640 "List of commands for `tex-compile'. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1641 Each element should be of the form (FORMAT IN OUT) where |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1642 FORMAT is an expression that evaluates to a string that can contain |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1643 - `%r' the main file name without extension. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1644 - `%f' the main file name. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1645 IN can be either a string (with the same % escapes in it) indicating |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1646 the name of the input file, or t to indicate that the input is all |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1647 the TeX files of the document, or nil if we don't know. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1648 OUT describes the output file and is either a %-escaped string |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1649 or nil to indicate that there is no output file.") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1650 |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1651 ;; defsubst* gives better byte-code than defsubst. |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1652 (defsubst* tex-string-prefix-p (str1 str2) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1653 "Return non-nil if STR1 is a prefix of STR2" |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1654 (eq t (compare-strings str2 nil (length str1) str1 nil nil))) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1655 |
33363
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1656 (defun tex-guess-main-file (&optional all) |
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1657 "Find a likely `tex-main-file'. |
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1658 Looks for hints in other buffers in the same directory or in |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1659 ALL other buffers. If ALL is `sub' only look at buffers in parent directories |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1660 of the current buffer." |
33363
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1661 (let ((dir default-directory) |
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1662 (header-re tex-start-of-header)) |
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1663 (catch 'found |
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1664 ;; 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
|
1665 (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
|
1666 (with-current-buffer buf |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1667 (when (and (cond |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1668 ((null all) (equal dir default-directory)) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1669 ((eq all 'sub) (tex-string-prefix-p default-directory dir)) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1670 (t)) |
33363
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1671 (stringp tex-main-file)) |
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1672 (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
|
1673 ;; 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
|
1674 (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
|
1675 (with-current-buffer buf |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1676 (when (and (cond |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1677 ((null all) (equal dir default-directory)) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1678 ((eq all 'sub) (tex-string-prefix-p default-directory dir)) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1679 (t)) |
33363
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1680 buffer-file-name |
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1681 ;; (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
|
1682 ;; (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
|
1683 (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
|
1684 (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
|
1685 (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
|
1686 (goto-char (point-min)) |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1687 (re-search-forward |
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1688 header-re (+ (point) 10000) t)))) |
33363
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1689 (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
|
1690 |
34139
358adc86d127
(tex-start-shell): Obey shell-file-name.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33789
diff
changeset
|
1691 (defun tex-main-file () |
358adc86d127
(tex-start-shell): Obey shell-file-name.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33789
diff
changeset
|
1692 "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
|
1693 (let* ((file (or tex-main-file |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1694 ;; Compatibility with AUCTeX. |
51796
09e60f24d0c4
(tex-main-file): Use with-no-warnings.
Richard M. Stallman <rms@gnu.org>
parents:
51562
diff
changeset
|
1695 (with-no-warnings |
09e60f24d0c4
(tex-main-file): Use with-no-warnings.
Richard M. Stallman <rms@gnu.org>
parents:
51562
diff
changeset
|
1696 (when (and (boundp 'TeX-master) (stringp TeX-master)) |
09e60f24d0c4
(tex-main-file): Use with-no-warnings.
Richard M. Stallman <rms@gnu.org>
parents:
51562
diff
changeset
|
1697 (make-local-variable 'tex-main-file) |
09e60f24d0c4
(tex-main-file): Use with-no-warnings.
Richard M. Stallman <rms@gnu.org>
parents:
51562
diff
changeset
|
1698 (setq tex-main-file TeX-master))) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1699 ;; Try to guess the main file. |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1700 (if (not buffer-file-name) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1701 (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
|
1702 (file-relative-name |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1703 (if (save-excursion |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1704 (goto-char (point-min)) |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1705 (re-search-forward tex-start-of-header |
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1706 (+ (point) 10000) t)) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1707 ;; This is the main file. |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1708 buffer-file-name |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1709 ;; 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
|
1710 (or (tex-guess-main-file) |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1711 (tex-guess-main-file 'sub) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1712 ;; (tex-guess-main-file t) |
34139
358adc86d127
(tex-start-shell): Obey shell-file-name.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33789
diff
changeset
|
1713 buffer-file-name))))))) |
52957
a4241f6b64e7
(tex-compile-commands): Add `yap' and `ps2pdf'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52401
diff
changeset
|
1714 (if (or (file-exists-p file) (string-match "\\.tex\\'" file)) |
a4241f6b64e7
(tex-compile-commands): Add `yap' and `ps2pdf'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52401
diff
changeset
|
1715 file (concat file ".tex")))) |
33363
1a5b4e0146bc
(standard-latex-block-names): Add "math".
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33113
diff
changeset
|
1716 |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1717 (defun tex-summarize-command (cmd) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1718 (if (not (stringp cmd)) "" |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1719 (mapconcat 'identity |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1720 (mapcar (lambda (s) (car (split-string s))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1721 (split-string cmd "\\s-*\\(?:;\\|&&\\)\\s-*")) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1722 "&"))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1723 |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1724 (defun tex-uptodate-p (file) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1725 "Return non-nil if FILE is not uptodate w.r.t the document source files. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1726 FILE is typically the output DVI or PDF file." |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1727 ;; We should check all the files included !!! |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1728 (and |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1729 ;; Clearly, the target must exist. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1730 (file-exists-p file) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1731 ;; And the last run must not have asked for a rerun. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1732 ;; FIXME: this should check that the last run was done on the same file. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1733 (let ((buf (condition-case nil (tex-shell-buf) (error nil)))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1734 (when buf |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1735 (with-current-buffer buf |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1736 (save-excursion |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1737 (goto-char (point-max)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1738 (and (re-search-backward |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1739 "(see the transcript file for additional information)" nil t) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1740 (> (save-excursion |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1741 (or (re-search-backward "\\[[0-9]+\\]" nil t) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1742 (point-min))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1743 (save-excursion |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1744 (or (re-search-backward "Rerun" nil t) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1745 (point-min))))))))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1746 ;; And the input files must not have been changed in the meantime. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1747 (let ((files (if (and tex-use-reftex |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1748 (fboundp 'reftex-scanning-info-available-p) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1749 (reftex-scanning-info-available-p)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1750 (reftex-all-document-files) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1751 (list (file-name-directory (expand-file-name file))))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1752 (ignored-dirs-re |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1753 (concat |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1754 (regexp-opt |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1755 (delq nil (mapcar (lambda (s) (if (eq (aref s (1- (length s))) ?/) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1756 (substring s 0 (1- (length s))))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1757 completion-ignored-extensions)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1758 t) "\\'")) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1759 (uptodate t)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1760 (while (and files uptodate) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1761 (let ((f (pop files))) |
52957
a4241f6b64e7
(tex-compile-commands): Add `yap' and `ps2pdf'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52401
diff
changeset
|
1762 (if (and (file-directory-p f) |
a4241f6b64e7
(tex-compile-commands): Add `yap' and `ps2pdf'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52401
diff
changeset
|
1763 ;; Avoid infinite loops. |
a4241f6b64e7
(tex-compile-commands): Add `yap' and `ps2pdf'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52401
diff
changeset
|
1764 (not (file-symlink-p f))) |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1765 (unless (string-match ignored-dirs-re f) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1766 (setq files (nconc |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1767 (directory-files f t tex-input-files-re) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1768 files))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1769 (when (file-newer-than-file-p f file) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1770 (setq uptodate nil))))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1771 uptodate))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1772 |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1773 |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1774 (autoload 'format-spec "format-spec") |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1775 |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1776 (defvar tex-executable-cache nil) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1777 (defun tex-executable-exists-p (name) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1778 "Like `executable-find' but with a cache." |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1779 (let ((cache (assoc name tex-executable-cache))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1780 (if cache (cdr cache) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1781 (let ((executable (executable-find name))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1782 (push (cons name executable) tex-executable-cache) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1783 executable)))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1784 |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1785 (defun tex-command-executable (cmd) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1786 (let ((s (if (stringp cmd) cmd (eval (car cmd))))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1787 (substring s 0 (string-match "[ \t]\\|\\'" s)))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1788 |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1789 (defun tex-command-active-p (cmd fspec) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1790 "Return non-nil if the CMD spec might need to be run." |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1791 (let ((in (nth 1 cmd)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1792 (out (nth 2 cmd))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1793 (if (stringp in) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1794 (let ((file (format-spec in fspec))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1795 (when (file-exists-p file) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1796 (or (not out) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1797 (file-newer-than-file-p |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1798 file (format-spec out fspec))))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1799 (when (and (eq in t) (stringp out)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1800 (not (tex-uptodate-p (format-spec out fspec))))))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1801 |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1802 (defun tex-compile-default (fspec) |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1803 "Guess a default command given the `format-spec' FSPEC." |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1804 ;; TODO: Learn to do latex+dvips! |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1805 (let ((cmds nil) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1806 (unchanged-in nil)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1807 ;; Only consider active commands. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1808 (dolist (cmd tex-compile-commands) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1809 (when (tex-executable-exists-p (tex-command-executable cmd)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1810 (if (tex-command-active-p cmd fspec) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1811 (push cmd cmds) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1812 (push (nth 1 cmd) unchanged-in)))) |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1813 ;; If no command seems to be applicable, arbitrarily pick the first one. |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1814 (unless cmds |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
1815 (setq cmds (list (car tex-compile-commands)))) |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1816 ;; Remove those commands whose input was considered stable for |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1817 ;; some other command (typically if (t . "%.pdf") is inactive |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1818 ;; then we're using pdflatex and the fact that the dvi file |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1819 ;; is inexistent doesn't matter). |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1820 (let ((tmp nil)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1821 (dolist (cmd cmds) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1822 (unless (member (nth 1 cmd) unchanged-in) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1823 (push cmd tmp))) |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1824 ;; Only remove if there's something left. |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1825 (if tmp (setq cmds tmp))) |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1826 ;; Remove commands whose input is not uptodate either. |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1827 (let ((outs (delq nil (mapcar (lambda (x) (nth 2 x)) cmds))) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1828 (tmp nil)) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1829 (dolist (cmd cmds) |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1830 (unless (member (nth 1 cmd) outs) |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1831 (push cmd tmp))) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1832 ;; Only remove if there's something left. |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1833 (if tmp (setq cmds tmp))) |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1834 ;; Select which file we're going to operate on (the latest). |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1835 (let ((latest (nth 1 (car cmds)))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1836 (dolist (cmd (prog1 (cdr cmds) (setq cmds (list (car cmds))))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1837 (if (equal latest (nth 1 cmd)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1838 (push cmd cmds) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1839 (unless (eq latest t) ;Can't beat that! |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1840 (if (or (not (stringp latest)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1841 (eq (nth 1 cmd) t) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1842 (and (stringp (nth 1 cmd)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1843 (file-newer-than-file-p |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1844 (format-spec (nth 1 cmd) fspec) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1845 (format-spec latest fspec)))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1846 (setq latest (nth 1 cmd) cmds (list cmd))))))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1847 ;; Expand the command spec into the actual text. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1848 (dolist (cmd (prog1 cmds (setq cmds nil))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1849 (push (cons (eval (car cmd)) (cdr cmd)) cmds)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1850 ;; Select the favorite command from the history. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1851 (let ((hist tex-compile-history) |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1852 re hist-cmd) |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1853 (while hist |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1854 (setq hist-cmd (pop hist)) |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1855 (setq re (concat "\\`" |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1856 (regexp-quote (tex-command-executable hist-cmd)) |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1857 "\\([ \t]\\|\\'\\)")) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1858 (dolist (cmd cmds) |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1859 ;; If the hist entry uses the same command and applies to a file |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1860 ;; of the same type (e.g. `gv %r.pdf' vs `gv %r.ps'), select cmd. |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1861 (and (string-match re (car cmd)) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1862 (or (not (string-match "%[fr]\\([-._[:alnum:]]+\\)" (car cmd))) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1863 (string-match (regexp-quote (match-string 1 (car cmd))) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1864 hist-cmd)) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1865 (setq hist nil cmds (list cmd))))) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1866 ;; Substitute and return. |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1867 (if (and hist-cmd |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1868 (string-match (concat "[' \t\"]" (format-spec "%r" fspec) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1869 "\\([;&' \t\"]\\|\\'\\)") hist-cmd)) |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1870 ;; The history command was already applied to the same file, |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1871 ;; so just reuse it. |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1872 hist-cmd |
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1873 (if cmds (format-spec (caar cmds) fspec)))))) |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1874 |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1875 (defun tex-compile (dir cmd) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1876 "Run a command CMD on current TeX buffer's file in DIR." |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1877 ;; FIXME: Use time-stamps on files to decide the next op. |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1878 (interactive |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1879 (let* ((file (tex-main-file)) |
51533
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1880 (default-directory |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1881 (prog1 (file-name-directory (expand-file-name file)) |
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1882 (setq file (file-name-nondirectory file)))) |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1883 (root (file-name-sans-extension file)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1884 (fspec (list (cons ?r (comint-quote-filename root)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1885 (cons ?f (comint-quote-filename file)))) |
51336
c1252b2b2582
(latex-block-args-alist, latex-block-body-alist): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51005
diff
changeset
|
1886 (default (tex-compile-default fspec))) |
51533
fd5c388dd142
(tex-search-noncomment): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51525
diff
changeset
|
1887 (list default-directory |
51005
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1888 (completing-read |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1889 (format "Command [%s]: " (tex-summarize-command default)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1890 (mapcar (lambda (x) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1891 (list (format-spec (eval (car x)) fspec))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1892 tex-compile-commands) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1893 nil nil nil 'tex-compile-history default)))) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1894 (save-some-buffers (not compilation-ask-about-save) nil) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1895 (if (tex-shell-running) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1896 (tex-kill-job) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1897 (tex-start-shell)) |
aeb075459c1d
(tex-compile-history, tex-input-files-re)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
50943
diff
changeset
|
1898 (tex-send-tex-command cmd dir)) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1899 |
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
1900 (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
|
1901 "Start a TeX run, using COMMAND on FILE." |
23322 | 1902 (let* ((star (string-match "\\*" command)) |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1903 (compile-command |
23322 | 1904 (if star |
1905 (concat (substring command 0 star) | |
1906 (comint-quote-filename file) | |
1907 (substring command (1+ star))) | |
1908 (concat command " " | |
46367
56af7a7485ae
Set encoding to utf-8.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
46120
diff
changeset
|
1909 tex-start-options |
44884
6c699f1e076c
(tex-start-options): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
43691
diff
changeset
|
1910 (if (< 0 (length tex-start-commands)) |
24330
fee8d10bbb21
(tex-run-command, latex-run-command)
Richard M. Stallman <rms@gnu.org>
parents:
24273
diff
changeset
|
1911 (concat |
44884
6c699f1e076c
(tex-start-options): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
43691
diff
changeset
|
1912 (shell-quote-argument tex-start-commands) " ")) |
23322 | 1913 (comint-quote-filename file))))) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1914 (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
|
1915 |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1916 (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
|
1917 (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
|
1918 (and buf (with-current-buffer buf |
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
1919 default-directory)))) |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1920 (not dir)) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1921 (let (shell-dirtrack-verbose) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1922 (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
|
1923 (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
|
1924 (setq compilation-last-buffer (current-buffer)) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1925 (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
|
1926 ;; Don't parse previous compilations. |
33472
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1927 (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
|
1928 (tex-display-shell) |
1de979dabe6f
(tex-font-lock-keywords-1): Use `keep'
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33363
diff
changeset
|
1929 (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
|
1930 |
33789
3cb3c23bbe84
(tex-font-lock-keywords-1): Fix ARG regexp to skip quoted braces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33477
diff
changeset
|
1931 (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
|
1932 (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
|
1933 (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
|
1934 (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
|
1935 (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
|
1936 (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
|
1937 (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
|
1938 (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
|
1939 (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
|
1940 ;; 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
|
1941 (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
|
1942 st) |
3cb3c23bbe84
(tex-font-lock-keywords-1): Fix ARG regexp to skip quoted braces.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
33477
diff
changeset
|
1943 "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
|
1944 |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1945 (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
|
1946 "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
|
1947 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
|
1948 |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1949 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
|
1950 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
|
1951 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
|
1952 for the error messages." |
21314
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1953 (require 'thingatpt) |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
1954 (setq compilation-error-list nil) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1955 (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
|
1956 (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
|
1957 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
|
1958 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
|
1959 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
|
1960 ;; 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
|
1961 (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
|
1962 ;; Parse messages. |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1963 (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
|
1964 (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
|
1965 (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
|
1966 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
|
1967 (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
|
1968 "^l\\.\\([0-9]+\\) \\(\\.\\.\\.\\)?\\(.*\\)$" nil 'move)) |
54423
802a91a2e43a
(tex-shell): Set error parsing function here.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
53489
diff
changeset
|
1969 (let* ((this-error (copy-marker begin-of-error)) |
56792
db21eaa33109
(tex-validate-buffer): Distinguish between 0, 1, and many mismatches.
John Paul Wallington <jpw@pobox.com>
parents:
55677
diff
changeset
|
1970 (linenum (string-to-number (match-string 1))) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1971 (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
|
1972 (filename |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1973 (save-excursion |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1974 (with-syntax-table tex-error-parse-syntax-table |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1975 (backward-up-list 1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1976 (skip-syntax-forward "(_") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1977 (while (not (file-readable-p (thing-at-point 'filename))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1978 (skip-syntax-backward "(_") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1979 (backward-up-list 1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1980 (skip-syntax-forward "(_")) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
1981 (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
|
1982 (new-file |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
1983 (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
|
1984 (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
|
1985 (error-location |
55677
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1986 (with-current-buffer |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1987 (if (equal filename (concat tex-zap-file ".tex")) |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1988 tex-last-buffer-texed |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1989 (find-file-noselect filename)) |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1990 (save-excursion |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1991 (if new-file |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1992 (progn (goto-line linenum) (setq last-position nil)) |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1993 (goto-char last-position) |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1994 (forward-line (- linenum last-linenum))) |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1995 ;; first try a forward search for the error text, |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1996 ;; then a backward search limited by the last error. |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1997 (let ((starting-point (point))) |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1998 (or (re-search-forward error-text nil t) |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
1999 (re-search-backward error-text last-position t) |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
2000 (goto-char starting-point))) |
624ac8a21b21
(tex-compilation-parse-errors): Save excursion in source buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
54423
diff
changeset
|
2001 (point-marker))))) |
24129
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
2002 (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
|
2003 (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
|
2004 (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
|
2005 (>= 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
|
2006 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
|
2007 (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
|
2008 (>= 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
|
2009 new-file) |
18c751deec0d
(tex-define-common-keys): Remove key binding of tex-feed-input.
Richard M. Stallman <rms@gnu.org>
parents:
24109
diff
changeset
|
2010 (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
|
2011 (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
|
2012 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
|
2013 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
|
2014 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
|
2015 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
|
2016 (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
|
2017 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
|
2018 (goto-char end-of-error))))) |
25414
7c4808c6804b
(tex-compilation-parse-errors):
Richard M. Stallman <rms@gnu.org>
parents:
24527
diff
changeset
|
2019 (set-marker compilation-parsing-end (point)) |
57639
7e77ec815f3a
(tex-compilation-parse-errors): Don't output messages.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57415
diff
changeset
|
2020 (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
|
2021 |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
2022 ;;; The commands: |
85 | 2023 |
2024 (defun tex-region (beg end) | |
2025 "Run TeX on the current region, via a temporary file. | |
2026 The file's name comes from the variable `tex-zap-file' and the | |
2027 variable `tex-directory' says where to put it. | |
2028 | |
2029 If the buffer has a header, the header is given to TeX before the | |
2030 region itself. The buffer's header is all lines between the strings | |
2031 defined by `tex-start-of-header' and `tex-end-of-header' inclusive. | |
2032 The header must start in the first 100 lines of the buffer. | |
2033 | |
2034 The value of `tex-trailer' is given to TeX as input after the region. | |
2035 | |
2036 The value of `tex-command' specifies the command to use to run TeX." | |
2037 (interactive "r") | |
2038 (if (tex-shell-running) | |
2039 (tex-kill-job) | |
2040 (tex-start-shell)) | |
2041 (or tex-zap-file | |
2042 (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
|
2043 ;; 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
|
2044 ;; 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
|
2045 ;; \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
|
2046 ;; 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
|
2047 ;; tex-directory is ".". |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2048 (let* ((zap-directory |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
2049 (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
|
2050 (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
|
2051 zap-directory))) |
9450
af39d29d1386
(compare-windows-whitespace): Eliminate initial value.
Richard M. Stallman <rms@gnu.org>
parents:
8890
diff
changeset
|
2052 ;; 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
|
2053 (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
|
2054 (tex-delete-last-temp-files t)) |
85 | 2055 ;; Write the new temp file. |
2056 (save-excursion | |
2057 (save-restriction | |
2058 (widen) | |
2059 (goto-char (point-min)) | |
2060 (forward-line 100) | |
2061 (let ((search-end (point)) | |
16807
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2062 (default-directory zap-directory) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2063 (already-output 0)) |
85 | 2064 (goto-char (point-min)) |
16807
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2065 |
16777
b655268ba44f
(tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16493
diff
changeset
|
2066 ;; 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
|
2067 (and tex-first-line-header-regexp |
b655268ba44f
(tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16493
diff
changeset
|
2068 (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
|
2069 (write-region (point) |
16807
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2070 (progn (forward-line 1) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2071 (setq already-output (point))) |
16777
b655268ba44f
(tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16493
diff
changeset
|
2072 tex-out-file nil nil)) |
b655268ba44f
(tex-first-line-header-regexp): New variable.
Richard M. Stallman <rms@gnu.org>
parents:
16493
diff
changeset
|
2073 |
16807
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2074 ;; Write out the header, if there is one, |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2075 ;; 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
|
2076 ;; 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
|
2077 (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
|
2078 (let (hbeg) |
85 | 2079 (beginning-of-line) |
2080 (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
|
2081 (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
|
2082 (let (hend) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2083 (forward-line 1) |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
2084 (setq hend (point)) ;mark end of header |
16807
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2085 (write-region (max (min hbeg beg) already-output) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2086 hend |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2087 tex-out-file |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2088 (not (zerop already-output)) nil) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2089 (setq already-output hend))))) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2090 |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2091 ;; Write out the specified region |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2092 ;; (but don't repeat anything already written). |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2093 (write-region (max beg already-output) end |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2094 tex-out-file |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2095 (not (zerop already-output)) nil)) |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2096 ;; Write the trailer, if any. |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2097 ;; 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
|
2098 ;; is not hidden in a comment. |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2099 (if tex-trailer |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2100 (write-region (concat "\n" tex-trailer) nil |
f8d567e52662
(tex-region): Correctly handle possible
Richard M. Stallman <rms@gnu.org>
parents:
16777
diff
changeset
|
2101 tex-out-file t nil)))) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
2102 ;; Record the file name to be deleted afterward. |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
2103 (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
|
2104 ;; 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
|
2105 ;; 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
|
2106 ;; 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
|
2107 (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
|
2108 (setq tex-print-file tex-out-file))) |
85 | 2109 |
2110 (defun tex-buffer () | |
2111 "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
|
2112 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
|
2113 See \\[tex-file] for an alternative." |
85 | 2114 (interactive) |
2115 (tex-region (point-min) (point-max))) | |
2116 | |
2117 (defun tex-file () | |
2118 "Prompt to save all buffers and run TeX (or LaTeX) on current buffer's file. | |
2119 This function is more useful than \\[tex-buffer] when you need the | |
2120 `.aux' file of LaTeX to have the correct name." | |
2121 (interactive) | |
46120
7177a47bc557
(tex-file): call `save-some-buffers' before `tex-main-file'
Sam Steingold <sds@gnu.org>
parents:
45055
diff
changeset
|
2122 (when tex-offer-save |
7177a47bc557
(tex-file): call `save-some-buffers' before `tex-main-file'
Sam Steingold <sds@gnu.org>
parents:
45055
diff
changeset
|
2123 (save-some-buffers)) |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
2124 (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
|
2125 (file-dir (file-name-directory (expand-file-name source-file)))) |
85 | 2126 (if (tex-shell-running) |
2127 (tex-kill-job) | |
2128 (tex-start-shell)) | |
31968
dc896c1b6a26
(latex-imenu-indent-string): Add a space.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
30888
diff
changeset
|
2129 (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
|
2130 (setq tex-print-file (expand-file-name source-file)))) |
85 | 2131 |
2132 (defun tex-generate-zap-file-name () | |
2133 "Generate a unique name suitable for use as a file name." | |
2134 ;; Include the shell process number and host name | |
2135 ;; 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
|
2136 ;; 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
|
2137 ;; 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
|
2138 (format "_TZ_%d-%s" |
85 | 2139 (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
|
2140 (subst-char-in-string ?. ?- (system-name)))) |
85 | 2141 |
2142 ;; This will perhaps be useful for modifying TEXINPUTS. | |
2143 ;; Expand each file name, separated by colons, in the string S. | |
2144 (defun tex-expand-files (s) | |
2145 (let (elts (start 0)) | |
2146 (while (string-match ":" s start) | |
2147 (setq elts (cons (substring s start (match-beginning 0)) elts)) | |
2148 (setq start (match-end 0))) | |
2149 (or (= start 0) | |
2150 (setq elts (cons (substring s start) elts))) | |
30888
e559f0aa6b2d
Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26270
diff
changeset
|
2151 (mapconcat (lambda (elt) |
e559f0aa6b2d
Don't quote lambda.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
26270
diff
changeset
|
2152 (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
|
2153 (nreverse elts) ":"))) |
85 | 2154 |
2155 (defun tex-shell-running () | |
36105
595ee2f062cf
tex-shell-running: Check the process buffer too
Sam Steingold <sds@gnu.org>
parents:
34139
diff
changeset
|
2156 (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
|
2157 (when proc |
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
2158 (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
|
2159 (buffer-live-p (process-buffer proc))) |
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
2160 ;; return the TeX process on success |
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
2161 proc |
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
2162 ;; get rid of the process permanently |
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
2163 ;; 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
|
2164 ;; 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
|
2165 (delete-process proc))))) |
85 | 2166 |
2167 (defun tex-kill-job () | |
2168 "Kill the currently running TeX job." | |
2169 (interactive) | |
37942
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
2170 ;; `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
|
2171 ;; 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
|
2172 ;; 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
|
2173 ;; 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
|
2174 (let ((proc (get-process "tex-shell"))) |
0f57d8b106f1
fix live process/dead buffer bub on w32
Sam Steingold <sds@gnu.org>
parents:
37896
diff
changeset
|
2175 (when proc (quit-process proc t)))) |
85 | 2176 |
2177 (defun tex-recenter-output-buffer (linenum) | |
2178 "Redisplay buffer of TeX job output so that most recent output can be seen. | |
2179 The last line of the buffer is displayed on | |
2180 line LINE of the window, or centered if LINE is nil." | |
2181 (interactive "P") | |
2182 (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
|
2183 (window)) |
85 | 2184 (if (null tex-shell) |
2185 (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
|
2186 (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
|
2187 (save-selected-window |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
2188 (select-window window) |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
2189 (bury-buffer tex-shell) |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
2190 (goto-char (point-max)) |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
2191 (recenter (if linenum |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
2192 (prefix-numeric-value linenum) |
bdca7f3626c0
(tex-file): Fix paren error in last change.
Richard M. Stallman <rms@gnu.org>
parents:
16356
diff
changeset
|
2193 (/ (window-height) 2))))))) |
85 | 2194 |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
2195 (defun tex-print (&optional alt) |
85 | 2196 "Print the .dvi file made by \\[tex-region], \\[tex-buffer] or \\[tex-file]. |
1577 | 2197 Runs the shell command defined by `tex-dvi-print-command'. If prefix argument |
2198 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
|
2199 (interactive "P") |
85 | 2200 (let ((print-file-name-dvi (tex-append tex-print-file ".dvi")) |
2201 test-name) | |
2202 (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
|
2203 (buffer-file-name) |
f27bcd1faf07
(tex-print): Better check for when to print current
Richard M. Stallman <rms@gnu.org>
parents:
10325
diff
changeset
|
2204 ;; Check that this buffer's printed file is up to date. |
85 | 2205 (file-newer-than-file-p |
2206 (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
|
2207 (buffer-file-name))) |
85 | 2208 (setq print-file-name-dvi test-name)) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
2209 (if (not (file-exists-p print-file-name-dvi)) |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
2210 (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
|
2211 (if (tex-shell-running) |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
2212 (tex-kill-job) |
7d4a55d38b2c
(tex-send-command): Return the process.
Richard M. Stallman <rms@gnu.org>
parents:
21121
diff
changeset
|
2213 (tex-start-shell)) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
2214 (tex-send-command |
24273
803ec3bfa983
When compiling, require compare-w and skeleton
Richard M. Stallman <rms@gnu.org>
parents:
24222
diff
changeset
|
2215 (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
|
2216 (shell-quote-argument |
0af848ed2cae
(tex-print): Call shell-quote-argument on the file name.
Richard M. Stallman <rms@gnu.org>
parents:
48222
diff
changeset
|
2217 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
|
2218 t)))) |
85 | 2219 |
4917
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
2220 (defun tex-alt-print () |
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
2221 "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
|
2222 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
|
2223 (interactive) |
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
2224 (tex-print t)) |
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
2225 |
85 | 2226 (defun tex-view () |
2227 "Preview the last `.dvi' file made by running TeX under Emacs. | |
2228 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
|
2229 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
|
2230 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
|
2231 because there is no standard value that would generally work." |
85 | 2232 (interactive) |
11617
9eaeed5c8a40
(tex-view): Nice error if tex-dvi-view-command is nil.
Richard M. Stallman <rms@gnu.org>
parents:
11235
diff
changeset
|
2233 (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
|
2234 (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
|
2235 (let ((tex-dvi-print-command (eval tex-dvi-view-command))) |
85 | 2236 (tex-print))) |
2237 | |
2238 (defun tex-append (file-name suffix) | |
2239 "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
|
2240 Pascal-based TeX scans for the first period, C TeX uses the last. |
85 | 2241 No period is retained immediately before SUFFIX, |
2242 so normally SUFFIX starts with one." | |
2243 (if (stringp file-name) | |
4917
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
2244 (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
|
2245 trial-name) |
14383
af281a43a3bb
(tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents:
13399
diff
changeset
|
2246 ;; 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
|
2247 ;; 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
|
2248 ;; 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
|
2249 ;; 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
|
2250 (setq trial-name |
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
2251 (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
|
2252 (substring file 0 |
10778
ace814499178
(tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents:
10572
diff
changeset
|
2253 (string-match "\\.[^.]*$" file)) |
4917
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
2254 suffix)) |
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
2255 (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
|
2256 (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
|
2257 trial-name |
10778
ace814499178
(tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents:
10572
diff
changeset
|
2258 ;; 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
|
2259 (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
|
2260 (substring file 0 |
10778
ace814499178
(tex-append): Try splitting on last period, then
Richard M. Stallman <rms@gnu.org>
parents:
10572
diff
changeset
|
2261 (string-match "\\." file)) |
4917
550746214170
(tex-alt-print): New function for menu bar.
Richard M. Stallman <rms@gnu.org>
parents:
4908
diff
changeset
|
2262 suffix))) |
85 | 2263 " ")) |
2264 | |
2265 (defun tex-show-print-queue () | |
2266 "Show the print queue that \\[tex-print] put your job on. | |
1577 | 2267 Runs the shell command defined by `tex-show-queue-command'." |
85 | 2268 (interactive) |
2269 (if (tex-shell-running) | |
2270 (tex-kill-job) | |
2271 (tex-start-shell)) | |
10572
c8717227f621
(tex-display-shell): Pass nil as arg to
Richard M. Stallman <rms@gnu.org>
parents:
10341
diff
changeset
|
2272 (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
|
2273 (tex-display-shell)) |
85 | 2274 |
2275 (defun tex-bibtex-file () | |
2276 "Run BibTeX on the current buffer's file." | |
2277 (interactive) | |
2278 (if (tex-shell-running) | |
2279 (tex-kill-job) | |
2280 (tex-start-shell)) | |
24222
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
2281 (let (shell-dirtrack-verbose |
8b2cecc76fe3
(tex-mode-map): Replace validate-tex-buffer by
Markus Rost <rost@math.uni-bielefeld.de>
parents:
24173
diff
changeset
|
2282 (tex-out-file |
85 | 2283 (tex-append (file-name-nondirectory (buffer-file-name)) "")) |
2284 (file-dir (file-name-directory (buffer-file-name)))) | |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
2285 (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
|
2286 (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
|
2287 (tex-display-shell)) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2288 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2289 ;;;; |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2290 ;;;; LaTeX indentation |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2291 ;;;; |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2292 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2293 (defvar tex-indent-allhanging t) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2294 (defvar tex-indent-arg 4) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2295 (defvar tex-indent-basic 2) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2296 (defvar tex-indent-item tex-indent-basic) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2297 (defvar tex-indent-item-re "\\\\\\(bib\\)?item\\>") |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2298 (defvar latex-noindent-environments '("document")) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2299 |
51525
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
2300 (defvar tex-latex-indent-syntax-table |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
2301 (let ((st (make-syntax-table tex-mode-syntax-table))) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
2302 (modify-syntax-entry ?$ "." st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
2303 (modify-syntax-entry ?\( "." st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
2304 (modify-syntax-entry ?\) "." st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
2305 st) |
ebea7b586362
(tex-mode-syntax-table, tex-latex-indent-syntax-table):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51336
diff
changeset
|
2306 "Syntax table used while computing indentation.") |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2307 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2308 (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
|
2309 (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
|
2310 tex-verbatim-face)) |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2311 'noindent |
48222
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
2312 (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
|
2313 ;; 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
|
2314 (let ((indent |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
2315 (save-excursion |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
2316 (beginning-of-line) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
2317 (latex-find-indent)))) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
2318 (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
|
2319 (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
|
2320 (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
|
2321 (save-excursion (indent-line-to indent))))))) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2322 |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2323 (defun latex-find-indent (&optional virtual) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2324 "Find the proper indentation of text after point. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2325 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
|
2326 in order to determine the indentation of something else. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2327 There might be text before point." |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2328 (save-excursion |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2329 (skip-chars-forward " \t") |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2330 (or |
48222
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
2331 ;; 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
|
2332 (and (= (point-min) (line-beginning-position)) 0) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2333 ;; 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
|
2334 (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
|
2335 (current-column)) |
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
2336 ;; 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
|
2337 (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
|
2338 (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
|
2339 0) |
32479
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2340 ;; 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
|
2341 (and (eq (latex-syntax-after) ?\)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2342 (ignore-errors |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2343 (save-excursion |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2344 (latex-skip-close-parens) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2345 (latex-backward-sexp-1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2346 (latex-find-indent 'virtual)))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2347 ;; Default (maybe an argument) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2348 (let ((pos (point)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2349 ;; Outdent \item if necessary. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2350 (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
|
2351 up-list-pos) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2352 ;; Find the previous point which determines our current indentation. |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2353 (condition-case err |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2354 (progn |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2355 (latex-backward-sexp-1) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2356 (while (> (current-column) (current-indentation)) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2357 (latex-backward-sexp-1))) |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2358 (scan-error |
783ed0889617
Require CL when compiling.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
32045
diff
changeset
|
2359 (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
|
2360 (cond |
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2361 ((= (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
|
2362 ((integerp up-list-pos) |
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2363 ;; 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
|
2364 (goto-char up-list-pos) |
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2365 (if (and (not tex-indent-allhanging) |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2366 (save-excursion |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2367 ;; Make sure we're an argument to a macro and |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2368 ;; that the macro is at the beginning of a line. |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2369 (condition-case nil |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2370 (progn |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2371 (while (eq (char-syntax (char-after)) ?\() |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2372 (forward-sexp -1)) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2373 (and (eq (char-syntax (char-after)) ?/) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2374 (progn (skip-chars-backward " \t&") |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2375 (bolp)))) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2376 (scan-error nil))) |
37952
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2377 (> pos (progn (latex-down-list) |
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2378 (forward-comment (point-max)) |
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2379 (point)))) |
48222
14763abde487
(latex-standard-block-names): Rename from standard-latex-block-names.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48170
diff
changeset
|
2380 ;; 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
|
2381 (current-column) |
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2382 ;; 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
|
2383 (goto-char up-list-pos) |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2384 (+ (if (and (looking-at "\\\\begin *{\\([^\n}]+\\)") |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2385 (member (match-string 1) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2386 latex-noindent-environments)) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2387 0 tex-indent-basic) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2388 indent (latex-find-indent 'virtual)))) |
37952
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2389 ;; 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
|
2390 ((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
|
2391 ;; 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
|
2392 (+ indent (current-column))) |
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2393 ;; We're now looking at a macro call. |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2394 ((looking-at tex-indent-item-re) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2395 ;; 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
|
2396 (+ indent (current-column) tex-indent-item)) |
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2397 (t |
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2398 (let ((col (current-column))) |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2399 (if (or (not (eq (char-syntax (or (char-after pos) ?\ )) ?\()) |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2400 ;; Can't be an arg if there's an empty line inbetween. |
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2401 (save-excursion (re-search-forward "^[ \t]*$" pos t))) |
37952
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2402 ;; 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
|
2403 ;; 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
|
2404 ;; macro at all. |
53489
e7d6a284bd5a
(latex-find-indent): Avoid error at end of buf.
Richard M. Stallman <rms@gnu.org>
parents:
53185
diff
changeset
|
2405 (+ indent col) |
e7d6a284bd5a
(latex-find-indent): Avoid error at end of buf.
Richard M. Stallman <rms@gnu.org>
parents:
53185
diff
changeset
|
2406 (forward-sexp 1) |
e7d6a284bd5a
(latex-find-indent): Avoid error at end of buf.
Richard M. Stallman <rms@gnu.org>
parents:
53185
diff
changeset
|
2407 (if (< (line-end-position) |
e7d6a284bd5a
(latex-find-indent): Avoid error at end of buf.
Richard M. Stallman <rms@gnu.org>
parents:
53185
diff
changeset
|
2408 (save-excursion (forward-comment (point-max)) |
e7d6a284bd5a
(latex-find-indent): Avoid error at end of buf.
Richard M. Stallman <rms@gnu.org>
parents:
53185
diff
changeset
|
2409 (point))) |
37952
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2410 ;; we're indenting the first argument. |
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2411 (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
|
2412 (skip-syntax-forward " ") |
4192225498c7
(latex-find-indent): Handle the BOBP case.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
37942
diff
changeset
|
2413 (current-column)))))))))) |
50592
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2414 ;;; DocTeX support |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2415 |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2416 (defun doctex-font-lock-^^A () |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2417 (if (eq (char-after (line-beginning-position)) ?\%) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2418 (progn |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2419 (put-text-property |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2420 (1- (match-beginning 1)) (match-beginning 1) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2421 'syntax-table |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2422 (if (= (1+ (line-beginning-position)) (match-beginning 1)) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2423 ;; The `%' is a single-char comment, which Emacs |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2424 ;; syntax-table can't deal with. We could turn it |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2425 ;; into a non-comment, or use `\n%' or `%^' as the comment. |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2426 ;; Instead, we include it in the ^^A comment. |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2427 (eval-when-compile (string-to-syntax "< b")) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2428 (eval-when-compile (string-to-syntax ">")))) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2429 (let ((end (line-end-position))) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2430 (if (< end (point-max)) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2431 (put-text-property |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2432 end (1+ end) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2433 'syntax-table |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2434 (eval-when-compile (string-to-syntax "> b"))))) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2435 (eval-when-compile (string-to-syntax "< b"))))) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2436 |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2437 (defun doctex-font-lock-syntactic-face-function (state) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2438 ;; Mark DocTeX documentation, which is parsed as a style A comment |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2439 ;; starting in column 0. |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2440 (if (or (nth 3 state) (nth 7 state) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2441 (not (memq (char-before (nth 8 state)) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2442 '(?\n nil)))) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2443 ;; Anything else is just as for LaTeX. |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2444 (tex-font-lock-syntactic-face-function state) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2445 font-lock-doc-face)) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2446 |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2447 (defvar doctex-font-lock-syntactic-keywords |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2448 (append |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2449 tex-font-lock-syntactic-keywords |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2450 ;; For DocTeX comment-in-doc. |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2451 `(("\\(\\^\\)\\^A" (1 (doctex-font-lock-^^A)))))) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2452 |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2453 (defvar doctex-font-lock-keywords |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2454 (append tex-font-lock-keywords |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2455 '(("^%<[^>]*>" (0 font-lock-preprocessor-face t))))) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2456 |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2457 ;;;###autoload |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2458 (define-derived-mode doctex-mode latex-mode "DocTeX" |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2459 "Major mode to edit DocTeX files." |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2460 (setq font-lock-defaults |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2461 (cons (append (car font-lock-defaults) '(doctex-font-lock-keywords)) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2462 (mapcar |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2463 (lambda (x) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2464 (case (car-safe x) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2465 (font-lock-syntactic-keywords |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2466 (cons (car x) 'doctex-font-lock-syntactic-keywords)) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2467 (font-lock-syntactic-face-function |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2468 (cons (car x) 'doctex-font-lock-syntactic-face-function)) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2469 (t x))) |
73473fb92184
(latex-mode-map): Bind latex-split-block to C-c C-s.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
48931
diff
changeset
|
2470 (cdr font-lock-defaults))))) |
739
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
2471 |
0bb85f26b79c
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
657
diff
changeset
|
2472 (run-hooks 'tex-mode-load-hook) |
85 | 2473 |
584 | 2474 (provide 'tex-mode) |
2475 | |
57304
8d5af2441eda
(tex-dvi-view-command): Use `yap' on w32.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
56843
diff
changeset
|
2476 ;; arch-tag: c0a680b1-63aa-4547-84b9-4193c29c0080 |
657
fec3f9a1e3e5
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
584
diff
changeset
|
2477 ;;; tex-mode.el ends here |