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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
7690653b9231 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 10204
diff changeset
6 ;; Maintainer: FSF
814
38b2499cb3e9 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
7 ;; Keywords: tex
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 758
diff changeset
8
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
9 ;; Contributions over the years by William F. Schelter, Dick King,
10215
7690653b9231 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 10204
diff changeset
10 ;; Stephen Gildea, Michael Prange, Jacob Gore, and Edward M. Reingold.
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
11
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
12 ;; This file is part of GNU Emacs.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
13
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
14 ;; GNU Emacs is free software; you can redistribute it and/or modify
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 758
diff changeset
16 ;; the Free Software Foundation; either version 2, or (at your option)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
17 ;; any later version.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
18
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
19 ;; GNU Emacs is distributed in the hope that it will be useful,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
22 ;; GNU General Public License for more details.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
23
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
24 ;; You should have received a copy of the GNU General Public License
14383
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
25 ;; along with GNU Emacs; see the file COPYING. If not, write to the
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
26 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
af281a43a3bb (tex-face-alist, tex-latex-face-alist): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 13399
diff changeset
27 ;; Boston, MA 02111-1307, USA.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
28
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
56
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
97
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
105
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
162
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
170
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
182 If this string contains an asterisk (`*'), that is replaced by the file name;
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
185 If two printers are not enough of a choice, you can set the variable
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
197
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
212
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
219
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
222 "*Mode to enter for a new file that might be either TeX or LaTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
223 This variable is used when it can't be determined whether the file
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
228
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
235
957
2619b7a9c11e entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 870
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
258
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
259 (defvar tex-trailer nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
260 "String appended after the end of a region sent to TeX by \\[tex-region].")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
261
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
264
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
267
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
268 (defvar tex-shell-cd-command "cd"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
269 "Command to give to shell running TeX to change directory.
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
270 The value of `tex-directory' is appended to this, separated by a space.")
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
271
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
272 (defvar tex-zap-file nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
273 "Temporary file name used for text being sent as input to TeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
274 Should be a simple file name with no extension or directory specification.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
275
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
276 (defvar tex-last-buffer-texed nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
277 "Buffer which was last TeXed.")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
278
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
279 (defvar tex-print-file nil
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
280 "File name that \\[tex-print] prints.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
281 Set by \\[tex-region], \\[tex-buffer], and \\[tex-file].")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
679 (defun tex-define-common-keys (keymap)
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
680 "Define the keys that we want defined both in TeX mode and in the TeX shell."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
681 (define-key keymap "\C-c\C-k" 'tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
682 (define-key keymap "\C-c\C-l" 'tex-recenter-output-buffer)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
683 (define-key keymap "\C-c\C-q" 'tex-show-print-queue)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
684 (define-key keymap "\C-c\C-p" 'tex-print)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
779 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
780 (goto-char (point-min))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
781 (while (and (setq slash (search-forward "\\" nil t))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
782 (setq comment (let ((search-end (point)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
783 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
784 (beginning-of-line)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
2ca8cdb96a9f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 256
diff changeset
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
2ca8cdb96a9f *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 256
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
837
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 85
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
840 "Major mode for editing files of input for plain TeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
841 Makes $ and } display the characters they match.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
842 Makes \" insert `` when it seems to be the beginning of a quotation,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
843 and '' when it appears to be the end; it inserts \" only after a \\.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
844
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
845 Use \\[tex-region] to run TeX on the current region, plus a \"header\"
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
846 copied from the top of the file (containing macro definitions, etc.),
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
847 running TeX under a special subshell. \\[tex-buffer] does the whole buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
848 \\[tex-file] saves the buffer and then processes the file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
849 \\[tex-print] prints the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
850 \\[tex-view] previews the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
851 \\[tex-bibtex-file] runs bibtex on the file of the current buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
854 mismatched $'s or braces.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
855
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
858
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
859 Mode variables:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
860 tex-run-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
861 Command string used by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
862 tex-directory
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
863 Directory in which to create temporary files for TeX jobs
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
864 run by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
865 tex-dvi-print-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
870 tex-dvi-view-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
871 Command string used by \\[tex-view] to preview a .dvi file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
872 tex-show-queue-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
873 Command string used by \\[tex-show-print-queue] to show the print
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
874 queue that \\[tex-print] put your job on.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
875
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
876 Entering Plain-tex mode runs the hook `text-mode-hook', then the hook
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
877 `tex-mode-hook', and finally the hook `plain-tex-mode-hook'. When the
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
883
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 85
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
886 "Major mode for editing files of input for LaTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
887 Makes $ and } display the characters they match.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
888 Makes \" insert `` when it seems to be the beginning of a quotation,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
889 and '' when it appears to be the end; it inserts \" only after a \\.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
890
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
891 Use \\[tex-region] to run LaTeX on the current region, plus the preamble
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
892 copied from the top of the file (containing \\documentstyle, etc.),
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
893 running LaTeX under a special subshell. \\[tex-buffer] does the whole buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
894 \\[tex-file] saves the buffer and then processes the file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
895 \\[tex-print] prints the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
896 \\[tex-view] previews the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
897 \\[tex-bibtex-file] runs bibtex on the file of the current buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
900 mismatched $'s or braces.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
901
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
904
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
905 Mode variables:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
906 latex-run-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
907 Command string used by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
908 tex-directory
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
909 Directory in which to create temporary files for LaTeX jobs
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
910 run by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
911 tex-dvi-print-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
916 tex-dvi-view-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
917 Command string used by \\[tex-view] to preview a .dvi file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
918 tex-show-queue-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
919 Command string used by \\[tex-show-print-queue] to show the print
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
920 queue that \\[tex-print] put your job on.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
923 `tex-mode-hook', and finally `latex-mode-hook'. When the special
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
968 "Major mode for editing files of input for SliTeX.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
969 Makes $ and } display the characters they match.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
970 Makes \" insert `` when it seems to be the beginning of a quotation,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
971 and '' when it appears to be the end; it inserts \" only after a \\.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
972
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
973 Use \\[tex-region] to run SliTeX on the current region, plus the preamble
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
974 copied from the top of the file (containing \\documentstyle, etc.),
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
975 running SliTeX under a special subshell. \\[tex-buffer] does the whole buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
976 \\[tex-file] saves the buffer and then processes the file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
977 \\[tex-print] prints the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
978 \\[tex-view] previews the .dvi file made by any of these.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
979 \\[tex-bibtex-file] runs bibtex on the file of the current buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
982 mismatched $'s or braces.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
983
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
986
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
987 Mode variables:
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
988 slitex-run-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
989 Command string used by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
990 tex-directory
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
991 Directory in which to create temporary files for SliTeX jobs
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
992 run by \\[tex-region] or \\[tex-buffer].
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
993 tex-dvi-print-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
998 tex-dvi-view-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
999 Command string used by \\[tex-view] to preview a .dvi file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1000 tex-show-queue-command
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1001 Command string used by \\[tex-show-print-queue] to show the print
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1002 queue that \\[tex-print] put your job on.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1003
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
1004 Entering SliTeX mode runs the hook `text-mode-hook', then the hook
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
1005 `tex-mode-hook', then the hook `latex-mode-hook', and finally the hook
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
1006 `slitex-mode-hook'. When the special subshell is initiated, the hook
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
1007 `tex-shell-hook' is run."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1010
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1052 (make-local-variable 'tex-command)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1053 (make-local-variable 'tex-start-of-header)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1054 (make-local-variable 'tex-end-of-header)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1055 (make-local-variable 'tex-trailer))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1056
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1057 (defun tex-categorize-whitespace (backward-limit)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1058 ;; compare-windows-whitespace is set to this.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1059 ;; This is basically a finite-state machine.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1060 ;; Returns a symbol telling how TeX would treat
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1061 ;; the whitespace we are looking at: null, space, or par.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1062 (let ((category 'null)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1063 (not-finished t))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1064 (skip-chars-backward " \t\n\f" backward-limit)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1065 (while not-finished
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1066 (cond ((looking-at "[ \t]+")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1069 (setq category 'space)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1072 (setq category 'par)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1073 (setq not-finished nil))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1074 (t
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1075 (setq category 'newline) ;a strictly internal state
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1076 (goto-char (match-end 0)))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1077 ((looking-at "\f+")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1078 (setq category 'par)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1079 (setq not-finished nil))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1080 (t
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1081 (setq not-finished nil))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1084 'space ;TeX doesn't distinguish
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1085 category)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1086
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1087 (defun tex-insert-quote (arg)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1176
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1177 (defun tex-validate-region (start end)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1178 "Check for mismatched braces or $'s in region.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1179 Returns t if no mismatches. Returns nil and moves point to suspect
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1180 area if a mismatch is found."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1181 (interactive "r")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1182 (let ((failure-point nil) (max-possible-sexps (- end start)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1183 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1184 (condition-case ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1185 (save-restriction
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1206
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1207 (defun tex-terminate-paragraph (inhibit-validation)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1208 "Insert two newlines, breaking a paragraph for TeX.
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
1209 Check for mismatched braces or $s in paragraph being terminated.
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1212 (or inhibit-validation
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1213 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1219 (message "Paragraph being closed appears to contain a mismatch"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1220 (insert "\n\n"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1314 (defun tex-last-unended-begin ()
7285
27e6ef8494b2 Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 6632
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1477
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1478 ;;; Invoking TeX in an inferior shell.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1482
37896
5cc52d5c2f2b (tex-mode-syntax-table): Add ^.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36105
diff changeset
1483 ;; The utility functions:
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1527 "Set BUFFER's default directory to be DIRECTORY."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1528 (setq directory (file-name-as-directory (expand-file-name directory)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1529 (if (not (file-directory-p directory))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1530 (error "%s is not a directory" directory)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1531 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1532 (set-buffer buffer)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
1533 (setq default-directory directory))))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
26cc35857be5 (tex-run-command): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 23296
diff changeset
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
26cc35857be5 (tex-run-command): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 23296
diff changeset
1904 (if star
26cc35857be5 (tex-run-command): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 23296
diff changeset
1905 (concat (substring command 0 star)
26cc35857be5 (tex-run-command): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 23296
diff changeset
1906 (comint-quote-filename file)
26cc35857be5 (tex-run-command): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 23296
diff changeset
1907 (substring command (1+ star)))
26cc35857be5 (tex-run-command): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 23296
diff changeset
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
26cc35857be5 (tex-run-command): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 23296
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2023
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2024 (defun tex-region (beg end)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2025 "Run TeX on the current region, via a temporary file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2026 The file's name comes from the variable `tex-zap-file' and the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2027 variable `tex-directory' says where to put it.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2028
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2029 If the buffer has a header, the header is given to TeX before the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2030 region itself. The buffer's header is all lines between the strings
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2031 defined by `tex-start-of-header' and `tex-end-of-header' inclusive.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2032 The header must start in the first 100 lines of the buffer.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2033
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2034 The value of `tex-trailer' is given to TeX as input after the region.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2035
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2036 The value of `tex-command' specifies the command to use to run TeX."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2037 (interactive "r")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2038 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2039 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2040 (tex-start-shell))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2041 (or tex-zap-file
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2055 ;; Write the new temp file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2056 (save-excursion
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2057 (save-restriction
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2058 (widen)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2059 (goto-char (point-min))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2060 (forward-line 100)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2079 (beginning-of-line)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2109
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2110 (defun tex-buffer ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2114 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2115 (tex-region (point-min) (point-max)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2116
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2117 (defun tex-file ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2118 "Prompt to save all buffers and run TeX (or LaTeX) on current buffer's file.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2119 This function is more useful than \\[tex-buffer] when you need the
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2120 `.aux' file of LaTeX to have the correct name."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2126 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2127 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2131
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2132 (defun tex-generate-zap-file-name ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2133 "Generate a unique name suitable for use as a file name."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2134 ;; Include the shell process number and host name
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2141
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2142 ;; This will perhaps be useful for modifying TEXINPUTS.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2143 ;; Expand each file name, separated by colons, in the string S.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2144 (defun tex-expand-files (s)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2145 (let (elts (start 0))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2146 (while (string-match ":" s start)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2147 (setq elts (cons (substring s start (match-beginning 0)) elts))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2148 (setq start (match-end 0)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2149 (or (= start 0)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2154
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2166
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2167 (defun tex-kill-job ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2168 "Kill the currently running TeX job."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2176
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2177 (defun tex-recenter-output-buffer (linenum)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2178 "Redisplay buffer of TeX job output so that most recent output can be seen.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2179 The last line of the buffer is displayed on
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2180 line LINE of the window, or centered if LINE is nil."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2181 (interactive "P")
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2184 (if (null tex-shell)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2194
739
0bb85f26b79c *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 657
diff changeset
2195 (defun tex-print (&optional alt)
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2196 "Print the .dvi file made by \\[tex-region], \\[tex-buffer] or \\[tex-file].
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 957
diff changeset
2197 Runs the shell command defined by `tex-dvi-print-command'. If prefix argument
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 957
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2200 (let ((print-file-name-dvi (tex-append tex-print-file ".dvi"))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2201 test-name)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2205 (file-newer-than-file-p
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2226 (defun tex-view ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2227 "Preview the last `.dvi' file made by running TeX under Emacs.
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2236 (tex-print)))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2237
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2238 (defun tex-append (file-name suffix)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2241 No period is retained immediately before SUFFIX,
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2242 so normally SUFFIX starts with one."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2263 " "))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2264
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2265 (defun tex-show-print-queue ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2266 "Show the print queue that \\[tex-print] put your job on.
1577
a52da8d63ff3 Doc fix.
Christopher Zaborsky <rogue@erratum.com>
parents: 957
diff changeset
2267 Runs the shell command defined by `tex-show-queue-command'."
85
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2268 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2269 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2270 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2274
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2275 (defun tex-bibtex-file ()
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2276 "Run BibTeX on the current buffer's file."
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2277 (interactive)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2278 (if (tex-shell-running)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2279 (tex-kill-job)
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2283 (tex-append (file-name-nondirectory (buffer-file-name)) ""))
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
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
253ec6b277ee Initial revision
root <root>
parents:
diff changeset
2473
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 269
diff changeset
2474 (provide 'tex-mode)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 269
diff changeset
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