* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
@ 2022-02-03 15:09 David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-21 2:11 ` Dmitry Gutov
` (3 more replies)
0 siblings, 4 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-02-03 15:09 UTC (permalink / raw)
To: 53749
[-- Attachment #1.1: Type: text/plain, Size: 2058 bytes --]
I've recently been trying to use xref commands with a tags table in a
TeX repository, and many of the results are sub-optimal. This is a
known issue -- within living memory there have been at least two
discussions related to it on help-gnu-emacs:
https://lists.gnu.org/archive/html/help-gnu-emacs/2018-06/msg00126.html
https://lists.gnu.org/archive/html/help-gnu-emacs/2021-07/msg00436.html
Neither discussion resulted in any code, at least not that I can find,
and the issues mentioned there remain. For example,
xref-find-definitions on, say, '\mycommand' returns
No definitions found for: mycommand.
(The absence of the escape char in the search string makes the search
fail, as the tag name in the table will be '\mycommand'.)
Similarly, any xref command on 'my:citekey' will only search by default
for the half of the symbol under point, stopping at the colon.
There are many other behaviors that are suboptimal, as well, so in the
end I wrote a new xref backend for TeX buffers (cloning large portions
of the default etags backend), and wondered whether it might be welcome
in GNU Emacs.
A few remarks:
1. The code should work as it stands both in the AUCTeX and the in-tree
modes. The AUCTeX hooks I've included in the patch are provisional, as
I would want to discuss with them how they would want to handle it,
should the patch be accepted in some form.
2. Along the way I found some issues with how etags parses TeX files,
issues which affect the usefulness of the xref commands, so I've made
changes in etags.c as well. When running the test suite for etags the
only diffs occurred in the TeX-related sections of the resulting tags
file, and location information in those sections was good.
3. The patch as it stands enables all the changes by default to give
what I judge to be the best out-of-the-box experience, but wiser heads
may well have other ideas.
4. If it looks like the patch will make it into Emacs in some form, I'm
going to need to assign copyright, so I'd appreciate help with getting
that started.
Thanks,
David.
[-- Attachment #1.2: Type: text/html, Size: 2444 bytes --]
[-- Attachment #2: 0001-Provide-an-xref-backend-for-TeX-buffers.patch --]
[-- Type: text/x-patch, Size: 23052 bytes --]
From 9f5b2547fef5597f9c41e1c46f99746095a0834c Mon Sep 17 00:00:00 2001
From: David Fussner <dfussner@googlemail.com>
Date: Wed, 2 Feb 2022 13:31:51 +0000
Subject: [PATCH] Provide an xref backend for TeX buffers
* lib-src/etags.c (TeX_commands): Improve parsing of commands in TeX
buffers.
(TEX_defenv): Expand list of commands to tag by default in TeX
buffers.
(TeX_help):
* doc/emacs/maintaining.texi (Tag Syntax): Document new tagged
commands.
* lisp/textmodes/tex-mode.el (tex--xref-backend): New function to name
xref backend.
(tex-common-initialization): Set up xref backend for in-tree TeX
modes.
(tex-set-auctex-xref-backend): New function to do the same for AUCTeX
modes.
(xref-backend-identifier-at-point)
(xref-backend-identifier-completion-table)
(xref-backend-identifier-completion-ignore-case)
(xref-backend-definitions, xref-backend-apropos)
(xref-backend-references): New TeX implementations of the generic xref
backend functions.
(tex-xref-apropos-regexp, tex-xref-references-in-directory): New
helper functions for backend.
(tex-thingatpt-modes-list): New var.
(tex-thingatpt-is-texsymbol): New defcustom.
(tex-set-thingatpt-symbol): New command to apply value of previous
buffer-locally.
(tex--symbol-or-texsymbol): New helper function for previous.
(tex-thingatpt--beginning-of-texsymbol)
(tex-thingatpt--end-of-texsymbol): New functions to define texsymbol
"thing" for 'thing-at-point'.
(tex-thingatpt-syntax-table, tex-escape-char): New vars to do the
same.
(tex--thing-at-point): New function to return texsymbol
'thing-at-point'.
(tex-thingatpt-include-escape, tex-xref-try-alternate-forms): New
defcustoms to refine behavior of the xref backend.
(tex--include-escape-p): New function to do the same.
---
doc/emacs/maintaining.texi | 9 +-
lib-src/etags.c | 83 ++++++++--
lisp/textmodes/tex-mode.el | 331 +++++++++++++++++++++++++++++++++++++
3 files changed, 411 insertions(+), 12 deletions(-)
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index edcc6075f7..1de435246e 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -2565,8 +2565,13 @@ Tag Syntax
@code{\section}, @code{\subsection}, @code{\subsubsection},
@code{\eqno}, @code{\label}, @code{\ref}, @code{\cite},
@code{\bibitem}, @code{\part}, @code{\appendix}, @code{\entry},
-@code{\index}, @code{\def}, @code{\newcommand}, @code{\renewcommand},
-@code{\newenvironment} and @code{\renewenvironment} are tags.
+@code{\index}, @code{\def}, @code{\edef}, @code{\gdef}, @code{\xdef},
+@code{\newcommand}, @code{\renewcommand}, @code{\newenvironment},
+@code{\renewenvironment}, @code{\DeclareRobustCommand},
+@code{\newrobustcmd}, @code{\renewrobustcmd}, @code{\let},
+@code{\csdef}, @code{\csedef}, @code{\csgdef}, @code{\csxdef},
+@code{\csletcs}, and @code{\cslet} are tags. So too are the arguments
+of any starred variants of these commands, when such variants exist.
Other commands can make tags as well, if you specify them in the
environment variable @env{TEXTAGS} before invoking @command{etags}. The
diff --git a/lib-src/etags.c b/lib-src/etags.c
index aa5bc8839d..e5269aa456 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -793,8 +793,12 @@ #define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
"In LaTeX text, the argument of any of the commands '\\chapter',\n\
'\\section', '\\subsection', '\\subsubsection', '\\eqno', '\\label',\n\
'\\ref', '\\cite', '\\bibitem', '\\part', '\\appendix', '\\entry',\n\
-'\\index', '\\def', '\\newcommand', '\\renewcommand',\n\
-'\\newenvironment' or '\\renewenvironment' is a tag.\n\
+'\\index', '\\def', '\\edef', '\\gdef', '\\xdef', '\\newcommand',\n\
+'\\renewcommand', '\\newenvironment', '\\renewenvironment',\n\
+'\\DeclareRobustCommand, '\\newrobustcmd', '\\renewrobustcmd',\n\
+'\\let', '\\csdef', '\\csedef', '\\csgdef', '\\csxdef', '\\csletcs',\n\
+or '\\cslet' is a tag. So is the argument of any of the starred\n\
+variants of these commands, when a starred variant exists.\n\
\n\
Other commands can be specified by setting the environment variable\n\
'TEXTAGS' to a colon-separated list like, for example,\n\
@@ -5673,11 +5677,19 @@ Scheme_functions (FILE *inf)
static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */
/* Default set of control sequences to put into TEX_toktab.
- The value of environment var TEXTAGS is prepended to this. */
+ The value of environment var TEXTAGS is prepended to this.
+ (2021) Add variants of '\def', some additional LaTeX commands,
+ and common variants from the 'etoolbox' package. Also, add
+ starred variants of the commands if they exist. Starred
+ variants need to appear before their unstarred versions. */
static const char *TEX_defenv = "\
-:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
-:part:appendix:entry:index:def\
-:newcommand:renewcommand:newenvironment:renewenvironment";
+:chapter*:section*:subsection*:subsubsection*:part*:label:ref\
+:chapter:section:subsection:subsubsection:eqno:cite:bibitem\
+:part:appendix:entry:index:def:edef:gdef:xdef:newcommand*:newcommand\
+:renewcommand*:renewcommand:newenvironment*:newenvironment\
+:renewenvironment*:renewenvironment:DeclareRobustCommand*\
+:DeclareRobustCommand:renewrobustcmd*:renewrobustcmd:newrobustcmd*\
+:newrobustcmd:let:csdef:csedef:csgdef:csxdef:csletcs:cslet";
static void TEX_decode_env (const char *, const char *);
@@ -5736,19 +5748,70 @@ TeX_commands (FILE *inf)
{
char *p;
ptrdiff_t namelen, linelen;
- bool opgrp = false;
+ bool opgrp = false, one_esc = false;
cp = skip_spaces (cp + key->len);
+ /* Skip the optional arguments to commands in the tags list so
+ that these arguments don't end up as the name of the tag.
+ The name will instead come from the argument in curly braces
+ that follows the optional ones. */
+ if (*cp == '[' || *cp == '(')
+ {
+ while (*cp != TEX_opgrp && *cp != '\0')
+ cp++;
+ }
if (*cp == TEX_opgrp)
{
opgrp = true;
cp++;
}
+ /* Jumping to a TeX command definition doesn't work in at
+ least some of the editors that use ctags. Changes in
+ tex-mode.el in GNU Emacs address these issues for etags;
+ uncomment the following five lines to get a quick & dirty
+ improvement in programs using ctags as well, though some
+ parts of the behavior will remain suboptimal. The
+ undocumented ctags option '--no-duplicates' may help. */
+
+ /* if (CTAGS && *cp == TEX_esc) */
+ /* { */
+ /* cp++; */
+ /* one_esc = true; */
+ /* } */
+
+ /* Add optional argument brackets '(' and '[' so that these
+ arguments don't appear in tag names. Also add '=' as it's
+ relational in the vast majority of cases. */
for (p = cp;
- (!c_isspace (*p) && *p != '#' &&
- *p != TEX_opgrp && *p != TEX_clgrp);
+ (!c_isspace (*p) && *p != '#' && *p != '=' &&
+ *p != '[' && *p != '(' && *p != TEX_opgrp &&
+ *p != TEX_clgrp);
p++)
- continue;
+ /* Allow only one escape char in a tag name, which
+ (primarily) enables tagging a TeX command's different,
+ possibly temporary, '\let' bindings. */
+ if (*p == TEX_esc)
+ {
+ if (!one_esc)
+ {
+ one_esc = true;
+ continue;
+ }
+ else
+ break;
+ }
+ else
+ continue;
+ /* Re-scan to catch (highly unusual) cases where a
+ command name is of the form '\('. */
+ if ((*p == '(' || *p == '[') && (p - cp) < 2)
+ {
+ for (p = cp;
+ (!c_isspace (*p) && *p != '#' &&
+ *p != TEX_opgrp && *p != TEX_clgrp);
+ p++)
+ continue;
+ }
namelen = p - cp;
linelen = lb.len;
if (!opgrp || *p == TEX_clgrp)
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index ab94036d01..3a7178c055 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -1291,6 +1291,9 @@ tex-common-initialization
(syntax-propertize-rules latex-syntax-propertize-rules))
;; TABs in verbatim environments don't do what you think.
(setq-local indent-tabs-mode nil)
+ ;; Set up xref backend in TeX buffers.
+ (add-hook 'xref-backend-functions #'tex--xref-backend nil t)
+ (tex-set-thingatpt-symbol)
;; Other vars that should be buffer-local.
(make-local-variable 'tex-command)
(make-local-variable 'tex-start-of-header)
@@ -3659,6 +3662,334 @@ tex-chktex
(process-send-region tex-chktex--process (point-min) (point-max))
(process-send-eof tex-chktex--process))))
+\f
+;;; Xref backend
+
+;; Here we define an xref backend for TeX, adapting the default etags
+;; backend so that the main xref user commands (including
+;; `xref-find-definitions', `xref-find-apropos', and
+;; `xref-find-references' [on M-., C-M-., and M-?, respectively]) work
+;; in TeX buffers. This mostly involves defining a new THING for
+;; `thing-at-point' (texsymbol), then substituting that THING for
+;; `symbol' in TeX buffers, at least by (configurable) default. The
+;; TeX escape character will by default appear in the resulting string
+;; only when the xref command uses string search and not regexp
+;; search, though this too is configurable. The new THING type also
+;; improves the accuracy of other commands that use `thing-at-point'
+;; in TeX buffers, like `project-find-regexp'. TODO: Include commands
+;; that call `bounds-of-thing-at-point' (for example
+;; `isearch-forward-thing-at-point') in the mechanism.
+
+(defvar tex-thingatpt-modes-list
+ '(tex-mode doctex-mode latex-mode plain-tex-mode slitex-mode)
+ "Major modes where `thing-at-point' may use the `texsymbol' type.
+
+When a buffer's `major-mode' is in this list, and when
+`tex-thingatpt-is-texsymbol' is t (the default), any command in
+that buffer that calls `thing-at-point' with a `symbol' argument
+actually uses the `texsymbol' argument, instead.")
+
+(defcustom tex-thingatpt-is-texsymbol t
+ "When non-nil replace `symbol' by `texsymbol' for `thing-at-point'.
+
+This applies only to TeX buffers. The `texsymbol' \"thing\"
+modifies the standard `symbol' for use in such buffers.
+
+When nil, restore the default behavior of `thing-at-point' in TeX
+buffers.
+
+Custom will automatically apply changes in all TeX buffers, but
+if you set the variable outside of Custom it won't take effect
+until you apply it with \\[tex-set-thingatpt-symbol]. Without a
+prefix argument (\\[universal-argument]) this applies only to the
+current buffer, but with one it applies to all TeX buffers in
+`buffer-list'. (TeX buffers are those whose `major-mode' is a
+member of `tex-thingatpt-modes-list'.)"
+ :type 'boolean
+ :group 'tex-file
+ :initialize #'custom-initialize-default
+ :set (lambda (var val)
+ (set-default var val)
+ (tex-set-thingatpt-symbol t))
+ :version "29.1")
+
+(defcustom tex-thingatpt-include-escape '(xref-find-definitions
+ xref-find-definitions-other-window
+ xref-find-definitions-other-frame)
+ "If non-nil, include `tex-escape-char' in `thing-at-point'.
+
+This variable only takes effect when `tex-thingatpt-is-texsymbol'
+is t (the default), changing the argument passed to
+`thing-at-point' from `symbol' to `texsymbol'. When that is the
+case, the values of this variable act as follows:
+
+When t, `thing-at-point' will always include a
+`tex-escape-char' (usually `\\'), should one be present, in the
+string it returns in TeX buffers.
+
+When nil, `thing-at-point' will never include the
+`tex-escape-char' in the string it returns in TeX buffers.
+
+Otherwise, it's a list of commands for which `thing-at-point'
+will always include the `tex-escape-char' in the string it
+returns. The three xref commands listed by default may cease to
+function properly in TeX buffers if set to nil, but setting
+`tex-xref-try-alternate-forms' to t will rectify that."
+ :type '(choice (const :tag "Always include tex-escape-char" t)
+ (const :tag "Never include tex-escape-char" nil)
+ (set :tag "Include tex-escape-char for these commands"
+ (repeat :inline t (symbol :tag "command"))))
+ :group 'tex-file
+ :version "29.1")
+
+(defcustom tex-xref-try-alternate-forms nil
+ "Non-nil means find definitions of alternate forms of commands.
+
+If `xref-find-definitions' returns nil for the current form of
+the TeX command name, try the alternative form, which will have
+the `tex-escape-char' (usually `\\') either stripped from or
+prepended to the current form, depending on whether or not the
+current form starts with that character.
+
+This may be particularly useful in documents that mix `\\def' and
+`\\csdef' when defining commands."
+ :type 'boolean
+ :group 'tex-file
+ :version "29.1")
+
+(defvar tex-escape-char ?\\
+ "The current TeX escape character.
+
+The `etags' program only recognizes `\\' (92) and `!' (33) as
+escape characters in TeX documents, and if it detects the latter
+it also uses `<>' as the TeX grouping construct rather than `{}'.
+Setting this variable to anything other than `\\' or `!' will not
+be useful without changes to `etags', at least for commands that
+search tags tables, such as \\[xref-find-definitions] and \
+\\[xref-find-apropos].")
+
+(defvar tex-thingatpt-syntax-table
+ (let* ((ost (if (boundp 'TeX-mode-syntax-table)
+ TeX-mode-syntax-table
+ tex-mode-syntax-table))
+ (st (make-syntax-table ost)))
+ (modify-syntax-entry ?# "'" st)
+ (modify-syntax-entry ?= "'" st)
+ (modify-syntax-entry ?` "'" st)
+ (modify-syntax-entry ?\" "'" st)
+ (modify-syntax-entry ?' "'" st)
+ st)
+ "Syntax table for delimiting `thing-at-point' in TeX buffers.
+
+When `tex-thingatpt-is-texsymbol' is t, this syntax table helps
+to define what a `texsymbol' is.")
+
+(defun tex--xref-backend () 'tex)
+
+;; Setup AUCTeX modes. (Should this be in AUCTeX itself?)
+
+(add-hook 'TeX-mode-hook #'tex-set-auctex-xref-backend)
+(add-hook 'TeX-mode-hook #'tex-set-thingatpt-symbol)
+
+(defun tex-set-auctex-xref-backend ()
+ (add-hook 'xref-backend-functions #'tex--xref-backend nil t))
+
+(declare-function xref-item-location "xref")
+(declare-function xref--project-root "xref" (project))
+(declare-function xref--convert-hits "xref" (hits regexp))
+(declare-function apropos-parse-pattern "apropos" (pattern))
+(declare-function semantic-symref-perform-search "semantic/symref")
+(declare-function semantic-symref-instantiate "semantic/symref")
+(declare-function project-external-roots "project")
+(declare-function find-tag--completion-ignore-case "etags")
+(declare-function etags--xref-find-definitions "etags")
+(declare-function etags--xref-apropos-additional "etags" (regexp))
+(declare-function cl-delete-if "cl-seq")
+(defvar etags-xref-prefer-current-file)
+
+(cl-defmethod xref-backend-identifier-at-point ((_backend (eql 'tex)))
+ (require 'etags)
+ (thing-at-point 'symbol t))
+
+(cl-defmethod xref-backend-identifier-completion-table ((_backend
+ (eql 'tex)))
+ (tags-lazy-completion-table))
+
+(cl-defmethod xref-backend-identifier-completion-ignore-case ((_backend
+ (eql 'tex)))
+ (find-tag--completion-ignore-case))
+
+(cl-defmethod xref-backend-definitions ((_backend (eql 'tex)) symbol)
+ (let* ((file (and buffer-file-name (expand-file-name buffer-file-name)))
+ (alt-sym (if (char-equal tex-escape-char (aref symbol 0))
+ (substring symbol 1)
+ (concat (string tex-escape-char) symbol)))
+ (prelim-definitions (etags--xref-find-definitions symbol))
+ (definitions (if (or prelim-definitions
+ (not tex-xref-try-alternate-forms))
+ prelim-definitions
+ (etags--xref-find-definitions alt-sym)))
+ same-file-definitions)
+ (when (and etags-xref-prefer-current-file file)
+ (setq definitions
+ (cl-delete-if
+ (lambda (definition)
+ (when (equal file
+ (xref-location-group
+ (xref-item-location definition)))
+ (push definition same-file-definitions)
+ t))
+ definitions))
+ (setq definitions (nconc (nreverse same-file-definitions)
+ definitions)))
+ definitions))
+
+(cl-defmethod xref-backend-apropos ((_backend (eql 'tex)) pattern)
+ (let ((regexp (tex-xref-apropos-regexp pattern)))
+ (nconc
+ (or
+ (etags--xref-find-definitions regexp t)
+ (etags--xref-find-definitions pattern t))
+ (etags--xref-apropos-additional regexp))))
+
+(cl-defmethod xref-backend-references ((_backend (eql 'tex)) identifier)
+ (mapcan
+ (lambda (dir)
+ (message "Searching %s..." dir)
+ (redisplay)
+ (prog1
+ (tex-xref-references-in-directory identifier dir)
+ (message "Searching %s... done" dir)))
+ (let ((pr (project-current t)))
+ (cons
+ (xref--project-root pr)
+ (project-external-roots pr)))))
+
+(defun tex-xref-apropos-regexp (pattern)
+ "Return a regexp from PATTERN similar to `apropos'.
+
+Unlike the standard xref function, if `regexp-quote' returns a
+string different from the original PATTERN, the TeX function
+passes that modified string, rather than PATTERN itself, to
+`apropos-parse-pattern'."
+ (let ((re (regexp-quote pattern)))
+ (apropos-parse-pattern
+ (if (string-equal re pattern)
+ ;; Split into words
+ (or (split-string pattern "[ \t]+" t)
+ (user-error "No word list given"))
+ re))))
+
+(defun tex-xref-references-in-directory (symbol dir)
+ "Find all references to SYMBOL in directory DIR.
+Return a list of xref values.
+
+This function uses the Semantic Symbol Reference API. In TeX
+buffers the value returned when passing SYMBOL to `regexp-quote'
+becomes the default search term. If this symref instantiation
+finds no matches, a second tries again with the original SYMBOL
+as search term, instead. Both searches set keyword `searchtype:'
+to \\='regexp instead of xref's \\='symbol.
+
+See `semantic-symref-tool-alist' for details on which tools are
+used, and when. See also `xref-references-in-directory' and
+comments in its code, the latter copied into the TeX
+implementation for convenience."
+ (cl-assert (directory-name-p dir))
+ (require 'semantic/symref)
+ (defvar semantic-symref-tool)
+ (defvar ede-minor-mode)
+
+ ;; Some symref backends use `ede-project-root-directory' as the root
+ ;; directory for the search, rather than `default-directory'. Since
+ ;; the caller has specified `dir', we bind `ede-minor-mode' to nil
+ ;; to force the backend to use `default-directory'.
+ (let* ((ede-minor-mode nil)
+ (default-directory dir)
+ ;; FIXME: Remove CScope and Global from the recognized tools?
+ ;; The current implementations interpret the symbol search as
+ ;; "find all calls to the given function", but not function
+ ;; definition. And they return nothing when passed a variable
+ ;; name, even a global one.
+ (semantic-symref-tool 'detect)
+ (case-fold-search nil)
+ (texsymbol (regexp-quote symbol))
+ (inst (semantic-symref-instantiate :searchfor texsymbol
+ :searchtype 'regexp
+ :searchscope 'subdirs
+ :resulttype 'line-and-text))
+ (alt-inst (semantic-symref-instantiate :searchfor symbol
+ :searchtype 'regexp
+ :searchscope 'subdirs
+ :resulttype 'line-and-text)))
+ (or
+ (xref--convert-hits (semantic-symref-perform-search inst)
+ (format "%s" texsymbol))
+ (xref--convert-hits (semantic-symref-perform-search alt-inst)
+ (format "%s" symbol)))))
+
+(put 'texsymbol 'beginning-op 'tex-thingatpt--beginning-of-texsymbol)
+
+(put 'texsymbol 'end-op 'tex-thingatpt--end-of-texsymbol)
+
+(defun tex-set-thingatpt-symbol (&optional all)
+ "Set meaning of `thing-at-point' `symbol' in (ALL?) TeX buffers.
+
+When `tex-thingatpt-is-texsymbol' is t, set `thing-at-point' to
+use the `texsymbol' \"thing\" instead of `symbol', otherwise
+maintain or restore the default. Without an optional ALL make
+changes only in current buffer, with ALL make changes in all TeX
+buffers in `buffer-list'."
+ (interactive "P")
+ (require 'thingatpt)
+ (if all
+ (dolist (buf (buffer-list))
+ (with-current-buffer buf
+ (tex--symbol-or-texsymbol)))
+ (tex--symbol-or-texsymbol)))
+
+(defun tex--symbol-or-texsymbol ()
+ (when (memq major-mode tex-thingatpt-modes-list)
+ (if tex-thingatpt-is-texsymbol
+ (setq-local thing-at-point-provider-alist
+ (add-to-list 'thing-at-point-provider-alist
+ '(symbol . tex--thing-at-point)))
+ (setq-local thing-at-point-provider-alist
+ (delete '(symbol . tex--thing-at-point)
+ thing-at-point-provider-alist)))))
+
+(defun tex--thing-at-point ()
+ "Pass `thing' type `texsymbol' to `bounds-of-thing-at-point'.
+
+When `tex-thingatpt-is-texsymbol' is t, calls in TeX buffers to
+`thing-at-point' with argument `symbol' will use this function."
+ (let* ((sytab (make-syntax-table tex-thingatpt-syntax-table))
+ (bounds (with-syntax-table sytab
+ (unless (char-equal tex-escape-char ?\\)
+ (modify-syntax-entry ?\\ "_")
+ (modify-syntax-entry tex-escape-char "\\")
+ (modify-syntax-entry ?< "(>")
+ (modify-syntax-entry ?> ")<"))
+ (bounds-of-thing-at-point 'texsymbol))))
+ (when bounds
+ (buffer-substring-no-properties (car bounds) (cdr bounds)))))
+
+(defun tex--include-escape-p (command)
+ (or (eq tex-thingatpt-include-escape t)
+ (memq command tex-thingatpt-include-escape)))
+
+(defun tex-thingatpt--beginning-of-texsymbol ()
+ "Move point to the beginning of the current TeX symbol."
+ (and (re-search-backward "\\([][()]\\|\\(\\sw\\|\\s_\\|\\s.\\)+\\)")
+ (skip-syntax-backward "w_.")
+ (when (tex--include-escape-p this-command)
+ (skip-syntax-backward "\\/"))))
+
+(defun tex-thingatpt--end-of-texsymbol ()
+ "Move point to the end of the current TeX symbol."
+ (and (re-search-forward "\\([][()]\\|\\(\\sw\\|\\s_\\|\\s.\\)+\\)")
+ (skip-syntax-forward "w_.")))
+
(make-obsolete-variable 'tex-mode-load-hook
"use `with-eval-after-load' instead." "28.1")
(run-hooks 'tex-mode-load-hook)
--
2.17.6
^ permalink raw reply related [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-03 15:09 bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-02-21 2:11 ` Dmitry Gutov
2022-02-21 9:48 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-08 13:25 ` Lars Ingebrigtsen
2022-02-21 12:35 ` Arash Esbati
` (2 subsequent siblings)
3 siblings, 2 replies; 106+ messages in thread
From: Dmitry Gutov @ 2022-02-21 2:11 UTC (permalink / raw)
To: David Fussner, 53749
Hi!
Let us first discuss whether we could make do without an additional Xref
backend. Just to make sure.
On 03.02.2022 17:09, David Fussner via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
> Similarly, any xref command on 'my:citekey' will only search by default
> for the half of the symbol under point, stopping at the colon.
etags's implementation of 'xref-backend-identifier-at-point' calls
'find-tag--default', which consults 'find-tag-default-function' and
(get major-mode 'find-tag-default-function).
So if your main goal was to alter which string gets searched for (based
on text around point), you can define a function which returns the
necessary string (as you did in the patch) and then either set
'find-tag-default-function' to that function, or put it on the
'find-tag-default-function' property for the respective major mode
functions.
> There are many other behaviors that are suboptimal, as well, so in the
> end I wrote a new xref backend for TeX buffers (cloning large portions
> of the default etags backend), and wondered whether it might be welcome
> in GNU Emacs.
Could you point out the other changes which were required?
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-21 2:11 ` Dmitry Gutov
@ 2022-02-21 9:48 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-21 17:28 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-21 23:55 ` Dmitry Gutov
2022-09-08 13:25 ` Lars Ingebrigtsen
1 sibling, 2 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-02-21 9:48 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 53749
(Resending to include the mailing list -- sorry!)
Hi Dmitry,
Many thanks for looking into this.
>
> So if your main goal was to alter which string gets searched for (based
> on text around point), you can define a function which returns the
> necessary string (as you did in the patch) and then either set
> 'find-tag-default-function' to that function, or put it on the
> 'find-tag-default-function' property for the respective major mode
> functions.
>
> > There are many other behaviors that are suboptimal, as well, so in the
> > end I wrote a new xref backend for TeX buffers (cloning large portions
> > of the default etags backend), and wondered whether it might be welcome
> > in GNU Emacs.
>
> Could you point out the other changes which were required?
As you've noticed, I tried at first to get by without a new backend,
but I ran into a few issues that I couldn't solve that way, hence the
current patch. A couple of examples:
1. TeX is very generous with the characters it includes in its
symbols, so what looks like a standard symbol to it can look like a
regexp either to grep or to emacs, so I needed to changes things in
xref-find-apropos and in xref-find-references to take this into
account. (See tex-xref-apropos-regexp and
tex-xref-references-in-directory.) Sometimes using a search string
that had been put through regexp-quote was wrong, as when a user
provided their own regexp in the minibuffer, so in both those cases I
provided fallbacks to a different search in case the default search
came up empty. I couldn't see how to do this without a new backend.
2. A package like biblatex creates what amounts to a separate
namespace using the \newbibmacro mechanism, so pretty much every
biblatex style has both a \cite command and a cite bibmacro, and I
wanted to allow emacs to differentiate between them when using
xref-find-definitions. Because users of the etoolbox package (like
biblatex) may well mix commands with and without the escape char "\",
I also provided a variable to allow users to find when a \command is
called using \csuse{command} instead. Again, this required a fallback
search (see xref-backend-definitions) which I couldn't see how to
provide without a new backend.
Does this make any sense? I can give more specific examples if you
like -- try running xref-find-references on a TeX command with "@" in
it. (If memory serves, that behaved badly here on an unpatched emacs,
but maybe I'm misremembering.)
David.
On Mon, 21 Feb 2022 at 02:11, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> Hi!
>
> Let us first discuss whether we could make do without an additional Xref
> backend. Just to make sure.
>
> On 03.02.2022 17:09, David Fussner via Bug reports for GNU Emacs, the
> Swiss army knife of text editors wrote:
> > Similarly, any xref command on 'my:citekey' will only search by default
> > for the half of the symbol under point, stopping at the colon.
>
> etags's implementation of 'xref-backend-identifier-at-point' calls
> 'find-tag--default', which consults 'find-tag-default-function' and
> (get major-mode 'find-tag-default-function).
>
> So if your main goal was to alter which string gets searched for (based
> on text around point), you can define a function which returns the
> necessary string (as you did in the patch) and then either set
> 'find-tag-default-function' to that function, or put it on the
> 'find-tag-default-function' property for the respective major mode
> functions.
>
> > There are many other behaviors that are suboptimal, as well, so in the
> > end I wrote a new xref backend for TeX buffers (cloning large portions
> > of the default etags backend), and wondered whether it might be welcome
> > in GNU Emacs.
>
> Could you point out the other changes which were required?
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-03 15:09 bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-21 2:11 ` Dmitry Gutov
@ 2022-02-21 12:35 ` Arash Esbati
2022-02-21 14:03 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-25 20:16 ` Augusto Stoffel
2024-09-14 17:26 ` Mattias Engdegård
3 siblings, 1 reply; 106+ messages in thread
From: Arash Esbati @ 2022-02-21 12:35 UTC (permalink / raw)
To: 53749; +Cc: dfussner
David Fussner via "Bug reports for GNU Emacs, the Swiss army knife of
text editors" <bug-gnu-emacs@gnu.org> writes:
> diff --git a/lib-src/etags.c b/lib-src/etags.c
> index aa5bc8839d..e5269aa456 100644
> --- a/lib-src/etags.c
> +++ b/lib-src/etags.c
> [...]
> /* Default set of control sequences to put into TEX_toktab.
> - The value of environment var TEXTAGS is prepended to this. */
> + The value of environment var TEXTAGS is prepended to this.
> + (2021) Add variants of '\def', some additional LaTeX commands,
> + and common variants from the 'etoolbox' package. Also, add
> + starred variants of the commands if they exist. Starred
> + variants need to appear before their unstarred versions. */
> static const char *TEX_defenv = "\
> -:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
> -:part:appendix:entry:index:def\
> -:newcommand:renewcommand:newenvironment:renewenvironment";
> +:chapter*:section*:subsection*:subsubsection*:part*:label:ref\
> +:chapter:section:subsection:subsubsection:eqno:cite:bibitem\
> +:part:appendix:entry:index:def:edef:gdef:xdef:newcommand*:newcommand\
> +:renewcommand*:renewcommand:newenvironment*:newenvironment\
> +:renewenvironment*:renewenvironment:DeclareRobustCommand*\
> +:DeclareRobustCommand:renewrobustcmd*:renewrobustcmd:newrobustcmd*\
> +:newrobustcmd:let:csdef:csedef:csgdef:csxdef:csletcs:cslet";
Hi David,
thanks for looking into this. While you're at it, can you also please
add support for the former xparse \newcommand variants which are now
(now is October 2020) part of LaTeX kernel, namely:
\NewDocumentCommand
\RenewDocumentCommand
\ProvideDocumentCommand
\DeclareDocumentCommand
\NewDocumentEnvironment
\RenewDocumentEnvironment
\ProvideDocumentEnvironment
\DeclareDocumentEnvironment
\NewExpandableDocumentCommand
\RenewExpandableDocumentCommand
\ProvideExpandableDocumentCommand
\DeclareExpandableDocumentCommand
TIA. Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-21 12:35 ` Arash Esbati
@ 2022-02-21 14:03 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-02-21 14:03 UTC (permalink / raw)
To: Arash Esbati; +Cc: 53749
Hi Arash,
Thank you for the list! I had fully intended to add the new LaTeX 3
commands but managed somehow to forget. If you see anything else I've
omitted please let me know.
David.
On Mon, 21 Feb 2022 at 12:36, Arash Esbati <arash@gnu.org> wrote:
>
> David Fussner via "Bug reports for GNU Emacs, the Swiss army knife of
> text editors" <bug-gnu-emacs@gnu.org> writes:
>
> > diff --git a/lib-src/etags.c b/lib-src/etags.c
> > index aa5bc8839d..e5269aa456 100644
> > --- a/lib-src/etags.c
> > +++ b/lib-src/etags.c
> > [...]
> > /* Default set of control sequences to put into TEX_toktab.
> > - The value of environment var TEXTAGS is prepended to this. */
> > + The value of environment var TEXTAGS is prepended to this.
> > + (2021) Add variants of '\def', some additional LaTeX commands,
> > + and common variants from the 'etoolbox' package. Also, add
> > + starred variants of the commands if they exist. Starred
> > + variants need to appear before their unstarred versions. */
> > static const char *TEX_defenv = "\
> > -:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
> > -:part:appendix:entry:index:def\
> > -:newcommand:renewcommand:newenvironment:renewenvironment";
> > +:chapter*:section*:subsection*:subsubsection*:part*:label:ref\
> > +:chapter:section:subsection:subsubsection:eqno:cite:bibitem\
> > +:part:appendix:entry:index:def:edef:gdef:xdef:newcommand*:newcommand\
> > +:renewcommand*:renewcommand:newenvironment*:newenvironment\
> > +:renewenvironment*:renewenvironment:DeclareRobustCommand*\
> > +:DeclareRobustCommand:renewrobustcmd*:renewrobustcmd:newrobustcmd*\
> > +:newrobustcmd:let:csdef:csedef:csgdef:csxdef:csletcs:cslet";
>
> Hi David,
>
> thanks for looking into this. While you're at it, can you also please
> add support for the former xparse \newcommand variants which are now
> (now is October 2020) part of LaTeX kernel, namely:
>
> \NewDocumentCommand
> \RenewDocumentCommand
> \ProvideDocumentCommand
> \DeclareDocumentCommand
> \NewDocumentEnvironment
> \RenewDocumentEnvironment
> \ProvideDocumentEnvironment
> \DeclareDocumentEnvironment
> \NewExpandableDocumentCommand
> \RenewExpandableDocumentCommand
> \ProvideExpandableDocumentCommand
> \DeclareExpandableDocumentCommand
>
> TIA. Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-21 9:48 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-02-21 17:28 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-21 23:56 ` Dmitry Gutov
2022-02-21 23:55 ` Dmitry Gutov
1 sibling, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-02-21 17:28 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 53749
Hi Dmitry,
I found a bit of time to test, and the problem with "@" in command
names appears when a search string for xref-find-references ends with
"@". The results returned will miss out valid hits, depending on what
follows the "@" in the actual command name in the TeX file.
Hope this might help,
David.
On Mon, 21 Feb 2022 at 09:48, David Fussner <dfussner@googlemail.com> wrote:
>
> (Resending to include the mailing list -- sorry!)
>
> Hi Dmitry,
>
> Many thanks for looking into this.
>
> >
> > So if your main goal was to alter which string gets searched for (based
> > on text around point), you can define a function which returns the
> > necessary string (as you did in the patch) and then either set
> > 'find-tag-default-function' to that function, or put it on the
> > 'find-tag-default-function' property for the respective major mode
> > functions.
> >
> > > There are many other behaviors that are suboptimal, as well, so in the
> > > end I wrote a new xref backend for TeX buffers (cloning large portions
> > > of the default etags backend), and wondered whether it might be welcome
> > > in GNU Emacs.
> >
> > Could you point out the other changes which were required?
>
> As you've noticed, I tried at first to get by without a new backend,
> but I ran into a few issues that I couldn't solve that way, hence the
> current patch. A couple of examples:
>
> 1. TeX is very generous with the characters it includes in its
> symbols, so what looks like a standard symbol to it can look like a
> regexp either to grep or to emacs, so I needed to changes things in
> xref-find-apropos and in xref-find-references to take this into
> account. (See tex-xref-apropos-regexp and
> tex-xref-references-in-directory.) Sometimes using a search string
> that had been put through regexp-quote was wrong, as when a user
> provided their own regexp in the minibuffer, so in both those cases I
> provided fallbacks to a different search in case the default search
> came up empty. I couldn't see how to do this without a new backend.
>
> 2. A package like biblatex creates what amounts to a separate
> namespace using the \newbibmacro mechanism, so pretty much every
> biblatex style has both a \cite command and a cite bibmacro, and I
> wanted to allow emacs to differentiate between them when using
> xref-find-definitions. Because users of the etoolbox package (like
> biblatex) may well mix commands with and without the escape char "\",
> I also provided a variable to allow users to find when a \command is
> called using \csuse{command} instead. Again, this required a fallback
> search (see xref-backend-definitions) which I couldn't see how to
> provide without a new backend.
>
> Does this make any sense? I can give more specific examples if you
> like -- try running xref-find-references on a TeX command with "@" in
> it. (If memory serves, that behaved badly here on an unpatched emacs,
> but maybe I'm misremembering.)
>
> David.
>
> On Mon, 21 Feb 2022 at 02:11, Dmitry Gutov <dgutov@yandex.ru> wrote:
> >
> > Hi!
> >
> > Let us first discuss whether we could make do without an additional Xref
> > backend. Just to make sure.
> >
> > On 03.02.2022 17:09, David Fussner via Bug reports for GNU Emacs, the
> > Swiss army knife of text editors wrote:
> > > Similarly, any xref command on 'my:citekey' will only search by default
> > > for the half of the symbol under point, stopping at the colon.
> >
> > etags's implementation of 'xref-backend-identifier-at-point' calls
> > 'find-tag--default', which consults 'find-tag-default-function' and
> > (get major-mode 'find-tag-default-function).
> >
> > So if your main goal was to alter which string gets searched for (based
> > on text around point), you can define a function which returns the
> > necessary string (as you did in the patch) and then either set
> > 'find-tag-default-function' to that function, or put it on the
> > 'find-tag-default-function' property for the respective major mode
> > functions.
> >
> > > There are many other behaviors that are suboptimal, as well, so in the
> > > end I wrote a new xref backend for TeX buffers (cloning large portions
> > > of the default etags backend), and wondered whether it might be welcome
> > > in GNU Emacs.
> >
> > Could you point out the other changes which were required?
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-21 9:48 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-21 17:28 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-02-21 23:55 ` Dmitry Gutov
1 sibling, 0 replies; 106+ messages in thread
From: Dmitry Gutov @ 2022-02-21 23:55 UTC (permalink / raw)
To: David Fussner; +Cc: 53749
On 21.02.2022 11:48, David Fussner wrote:
> Sometimes using a search string
> that had been put through regexp-quote was wrong, as when a user
> provided their own regexp in the minibuffer, so in both those cases I
> provided fallbacks to a different search in case the default search
> came up empty. I couldn't see how to do this without a new backend.
One way to deal with that is to treat all user inputs as regexps there.
Perhaps some will have to be more verbose that ideal, but as long as the
user is familiar with the regexp syntax, the behavior will be both
powerful and predictable.
> 2. A package like biblatex creates what amounts to a separate
> namespace using the \newbibmacro mechanism, so pretty much every
> biblatex style has both a \cite command and a cite bibmacro, and I
> wanted to allow emacs to differentiate between them when using
> xref-find-definitions. Because users of the etoolbox package (like
> biblatex) may well mix commands with and without the escape char "\",
> I also provided a variable to allow users to find when a \command is
> called using \csuse{command} instead. Again, this required a fallback
> search (see xref-backend-definitions) which I couldn't see how to
> provide without a new backend.
Could those be be disambiguated when the tags are scanned, instead? Then
the user will tailor their input to find the one or the other.
Or if we want more fuzzier matching, perhaps creating mode-specific
values of etags-xref-find-definitions-tag-order could help.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-21 17:28 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-02-21 23:56 ` Dmitry Gutov
2022-02-22 15:19 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Dmitry Gutov @ 2022-02-21 23:56 UTC (permalink / raw)
To: David Fussner; +Cc: 53749
On 21.02.2022 19:28, David Fussner wrote:
> Hi Dmitry,
>
> I found a bit of time to test, and the problem with "@" in command
> names appears when a search string for xref-find-references ends with
> "@". The results returned will miss out valid hits, depending on what
> follows the "@" in the actual command name in the TeX file.
Sorry, I have very little familiarity with TeX.
Do you have a step-by-step scenario? Perhaps using one of the .texi
manuals already existing in the repo?
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-21 23:56 ` Dmitry Gutov
@ 2022-02-22 15:19 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-23 2:21 ` Dmitry Gutov
0 siblings, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-02-22 15:19 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 53749
[-- Attachment #1: Type: text/plain, Size: 3748 bytes --]
Hi Dmitry,
> Do you have a step-by-step scenario? Perhaps using one of the .texi
> manuals already existing in the repo?
I can't find a good example in the emacs repo, but I'll try to talk through
what happens with a code snippet from biblatex.sty, which I hope will
explain some of the issues we're discussing, even if it is a little
artificial.
\DeclareBiblatexOption{global,type}[string]{uniquename}[true]{%
\ifcsdef{blx@opt@uniquename@#1}
{\letcs\blx@uniquename{blx@opt@uniquename@#1}}
{\blx@err@invopt{uniquename=#1}{}}}
\def\blx@opt@uniquename@false{false}
\def\blx@opt@uniquename@init{init}
\def\blx@opt@uniquename@true{full}
\def\blx@opt@uniquename@full{full}
\def\blx@opt@uniquename@allinit{allinit}
\def\blx@opt@uniquename@allfull{allfull}
\def\blx@opt@uniquename@mininit{mininit}
\def\blx@opt@uniquename@minfull{minfull}
If you do M-? on \ifcsdef{blx@opt@uniquename@#1} using the default backend,
the default search string is blx@opt@uniquename@, and you'll get two hits,
that line and the following one. Stepping through
xref-references-in-directory shows that the semantic-symref search (using
grep) only finds those two using the :searchtype 'symbol, and they're
returned. If you change 'symbol to 'regexp, grep finds all the matches in
that code snippet, but then xref--convert-hits uses (format "\\_<%s\\_>"),
which again loses all but the first two hits when it scans the list
provided by grep. Either grep or emacs here will miss out on valid hits
unless you change both the semantic-symref instantiation and the format
specification.
> One way to deal with that is to treat all user inputs as regexps there.
Perhaps some will have to be more verbose that ideal, but as > long as
the user is familiar with the regexp syntax, the behavior will be both
powerful and predictable
If I understand you right, I think that's what I'm trying to do, but
allowing for users who perhaps aren't too familiar with emacs regexps and
who might typically just accept the default search string offered by xref.
> Could those be disambiguated when the tags are scanned, instead? Then
the user will tailor their input to find the one or the other.
If I understand you correctly, that's also what I try to do -- each tagged
command in the tags file is searched by the name of the tag, which in these
cases will either start with the escape char or not. Looking at the
biblatex snippet, if you come across \csuse{blx@opt@uniquename@false}
somewhere in a file, and you want to see what the definition is, you can't
know apriori how it was defined, with \def or with \csdef. This snippet
above mixes both styles, and I hoped that a user would be allowed to choose
whether to search for both styles without necessarily having to try both
forms of the string in separate searches. In fact, as the code stands, it
only does the second search if the first one fails, so it still more or
less keeps the two command-naming styles separate.
The simplest fix is to remove the escape char from all tag names, which I
suggest to users of ctags in some commented-out code in etags.c. This does
lose the ability to differentiate \def'ed commands and \csdef'd ones,
especially as in some circumstances they can have the same name. I'm not
sure how great a loss that is, on the other hand. Is that what you had in
mind?
> Or if we want more fuzzier matching, perhaps creating mode-specific
values of etags-xref-find-definitions-tag-order could help.
Yeah, you're right, I'm pretty sure I could use a buffer-local value of
that variable to get xref-find-definitions to do the fuzzy matching I'm
after. Does the discussion above at all help to convince you that there
are other issues that might still require a new backend?
David.
[-- Attachment #2: Type: text/html, Size: 4259 bytes --]
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-22 15:19 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-02-23 2:21 ` Dmitry Gutov
2022-02-23 10:45 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Dmitry Gutov @ 2022-02-23 2:21 UTC (permalink / raw)
To: David Fussner; +Cc: 53749
Hi David,
On 22.02.2022 17:19, David Fussner wrote:
> > Do you have a step-by-step scenario? Perhaps using one of the .texi
> > manuals already existing in the repo?
>
> I can't find a good example in the emacs repo, but I'll try to talk
> through what happens with a code snippet from biblatex.sty, which I hope
> will explain some of the issues we're discussing, even if it is a little
> artificial.
Thank you.
> \DeclareBiblatexOption{global,type}[string]{uniquename}[true]{%
> \ifcsdef{blx@opt@uniquename@#1}
> {\letcs\blx@uniquename{blx@opt@uniquename@#1}}
> {\blx@err@invopt{uniquename=#1}{}}}
> \def\blx@opt@uniquename@false{false}
> \def\blx@opt@uniquename@init{init}
> \def\blx@opt@uniquename@true{full}
> \def\blx@opt@uniquename@full{full}
> \def\blx@opt@uniquename@allinit{allinit}
> \def\blx@opt@uniquename@allfull{allfull}
> \def\blx@opt@uniquename@mininit{mininit}
> \def\blx@opt@uniquename@minfull{minfull}
>
> If you do M-? on \ifcsdef{blx@opt@uniquename@#1} using the default
> backend, the default search string is blx@opt@uniquename@, and you'll
> get two hits, that line and the following one. Stepping through
> xref-references-in-directory shows that the semantic-symref search
> (using grep) only finds those two using the :searchtype 'symbol, and
> they're returned. If you change 'symbol to 'regexp, grep finds all the
> matches in that code snippet, but then xref--convert-hits uses (format
> "\\_<%s\\_>"), which again loses all but the first two hits when it
> scans the list provided by grep. Either grep or emacs here will miss
> out on valid hits unless you change both the semantic-symref
> instantiation and the format specification.
That might call for a different implementation of 'references' indeed.
But could you make 'blx@opt@uniquename' the default search string in
that example? Does that make sense?
And if not, all in all, I wouldn't worry too much about
xref-find-references, since TeX is more of a text format (IMHO) than a
program with well-defined identifiers. Perhaps using project-find-regexp
most of the time will save you a lot of the trouble?
> > One way to deal with that is to treat all user inputs as regexps
> there. Perhaps some will have to be more verbose that ideal, but as
> > long as the user is familiar with the regexp syntax, the behavior
> will be both powerful and predictable
>
> If I understand you right, I think that's what I'm trying to do, but
> allowing for users who perhaps aren't too familiar with emacs regexps
> and who might typically just accept the default search string offered by
> xref.
I'm not sure how I feel about the extra "fuzziness" in the behavior
which comes with this approach.
> > Could those be disambiguated when the tags are scanned, instead?
> Then the user will tailor their input to find the one or the other.
>
> If I understand you correctly, that's also what I try to do -- each
> tagged command in the tags file is searched by the name of the tag,
> which in these cases will either start with the escape char or not.
> Looking at the biblatex snippet, if you come across
> \csuse{blx@opt@uniquename@false} somewhere in a file, and you want to
> see what the definition is, you can't know apriori how it was defined,
> with \def or with \csdef. This snippet above mixes both styles, and I
> hoped that a user would be allowed to choose whether to search for both
> styles without necessarily having to try both forms of the string in
> separate searches. In fact, as the code stands, it only does the second
> search if the first one fails, so it still more or less keeps the two
> command-naming styles separate.
The parser could create both qualified (with \def or \csdef) and
unqualified entries for the same definition. Maybe make it optional
(with -Q argument to etags). Then the user could search using any of
these formats.
> > Or if we want more fuzzier matching, perhaps creating mode-specific
> values of etags-xref-find-definitions-tag-order could help.
>
> Yeah, you're right, I'm pretty sure I could use a buffer-local value of
> that variable to get xref-find-definitions to do the fuzzy matching I'm
> after. Does the discussion above at all help to convince you that there
> are other issues that might still require a new backend?
The suggestion about a buffer-local value of that var was made in the
context of trying to make it work with the current etags backend. At
least, in the first patch. If only because I don't really like to see
duplicated code.
If we find another place where we really want to diverge, we could also
try adding some behavior-altering variable first.
After that, we might as well add a new backend (I'm not really against
it, just prefer to exhaust other options first), but hopefully someone
else (more familiar with tex-mode) could take over this discussion at
that point, and the subsequent responsibility for the added code. That
person could be yourself too, under right conditions.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-23 2:21 ` Dmitry Gutov
@ 2022-02-23 10:45 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-24 2:23 ` Dmitry Gutov
0 siblings, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-02-23 10:45 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 53749
Hi Dmitry,
Thanks again for looking at all this, and for your patience.
On Wed, 23 Feb 2022 at 02:21, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> That might call for a different implementation of 'references' indeed.
>
> But could you make 'blx@opt@uniquename' the default search string in
> that example? Does that make sense?
>
I guess it might be possible to come up with a regexp to suppress the
@ in some positions in the string, but the bad news is that if you M-?
with that search string you get no results at all with the default
backend. Grep finds the same two as before, but the default format
specification eliminates even those. So you're left looking at a
string in your buffer and xref is telling you it isn't there.
> And if not, all in all, I wouldn't worry too much about
> xref-find-references, since TeX is more of a text format (IMHO) than a
> program with well-defined identifiers. Perhaps using project-find-regexp
> most of the time will save you a lot of the trouble?
>
You're quite right that C-x p g works well in this instance, and I
tried to improve how thing-at-point finds search strings in TeX
buffers for this command. I guess TeX is a little bit of a bad fit
both for text modes and for prog modes, but I confess I'm still uneasy
at the thought of M-? returning such misleading results. What would
you think about putting project-find-regexp on M-? in TeX buffers?
That is, assuming I don't find reasonably common TeX constructs that
defeat it?
> > If I understand you right, I think that's what I'm trying to do, but
> > allowing for users who perhaps aren't too familiar with emacs regexps
> > and who might typically just accept the default search string offered by
> > xref.
>
> I'm not sure how I feel about the extra "fuzziness" in the behavior
> which comes with this approach.
I see your point here.
>
> The parser could create both qualified (with \def or \csdef) and
> unqualified entries for the same definition. Maybe make it optional
> (with -Q argument to etags). Then the user could search using any of
> these formats.
>
I guess we could make etags do some of the work, perhaps adding also a
distinction between tagged commands that require this duplication
(\def & \csdef) and those that don't (\chapter). Aside from making
tags files a lot bigger, and possibly adding another option to a
program already overloaded with them -- neither of which is a
showstopper -- I suspect it could work pretty well for
xref-find-definitions.
>
> The suggestion about a buffer-local value of that var was made in the
> context of trying to make it work with the current etags backend. At
> least, in the first patch. If only because I don't really like to see
> duplicated code.
>
> If we find another place where we really want to diverge, we could also
> try adding some behavior-altering variable first.
>
> After that, we might as well add a new backend (I'm not really against
> it, just prefer to exhaust other options first), but hopefully someone
> else (more familiar with tex-mode) could take over this discussion at
> that point, and the subsequent responsibility for the added code. That
> person could be yourself too, under right conditions.
I certainly concur about duplicated code, and I really did try hard to
get by without a new backend, but I won't pretend that I exhausted all
or even nearly all of the possibilities. If I'm understanding you
correctly, you'd prefer a few, small changes to the backend code in
etags.el (and xref.el), should that be necessary, to a whole new
backend which limits changes to tex-mode.el. If this understanding is
reasonably accurate, I can have another look at earlier iterations of
the code to see what I missed, and perhaps come up with something that
works right without so much duplication. It may well take me some
time, so apologies in advance for being slow.
David.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-23 10:45 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-02-24 2:23 ` Dmitry Gutov
2022-02-24 13:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Dmitry Gutov @ 2022-02-24 2:23 UTC (permalink / raw)
To: David Fussner; +Cc: 53749
Hi David,
On 23.02.2022 12:45, David Fussner via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
> I guess it might be possible to come up with a regexp to suppress the
> @ in some positions in the string, but the bad news is that if you M-?
> with that search string you get no results at all with the default
> backend. Grep finds the same two as before, but the default format
> specification eliminates even those. So you're left looking at a
> string in your buffer and xref is telling you it isn't there.
That's odd. I've tried searching for 'blx@opt@uniquename' inside \...@,
and 'grep -w' successfully finds it. Post-processing fails, apparently,
but that depends on the contents of the syntax table. So one solution
might be to update tex-mode's syntax table.
>> And if not, all in all, I wouldn't worry too much about
>> xref-find-references, since TeX is more of a text format (IMHO) than a
>> program with well-defined identifiers. Perhaps using project-find-regexp
>> most of the time will save you a lot of the trouble?
>>
>
> You're quite right that C-x p g works well in this instance, and I
> tried to improve how thing-at-point finds search strings in TeX
> buffers for this command. I guess TeX is a little bit of a bad fit
> both for text modes and for prog modes, but I confess I'm still uneasy
> at the thought of M-? returning such misleading results. What would
> you think about putting project-find-regexp on M-? in TeX buffers?
> That is, assuming I don't find reasonably common TeX constructs that
> defeat it?
At the face of it, the suggestion seems odd (those command's features
and user expectations are different), but it wouldn't be out of the
question to circle back to it later.
>> The parser could create both qualified (with \def or \csdef) and
>> unqualified entries for the same definition. Maybe make it optional
>> (with -Q argument to etags). Then the user could search using any of
>> these formats.
>>
>
> I guess we could make etags do some of the work, perhaps adding also a
> distinction between tagged commands that require this duplication
> (\def & \csdef) and those that don't (\chapter). Aside from making
> tags files a lot bigger, and possibly adding another option to a
> program already overloaded with them -- neither of which is a
> showstopper -- I suspect it could work pretty well for
> xref-find-definitions.
IIUC tag files for LaTeX aren't going to be particularly big anyway
(book projects are almost always smaller than even a mid-sized software
project), so the size might never be a problem.
But then again, I could be very wrong about that.
>> The suggestion about a buffer-local value of that var was made in the
>> context of trying to make it work with the current etags backend. At
>> least, in the first patch. If only because I don't really like to see
>> duplicated code.
>>
>> If we find another place where we really want to diverge, we could also
>> try adding some behavior-altering variable first.
>>
>> After that, we might as well add a new backend (I'm not really against
>> it, just prefer to exhaust other options first), but hopefully someone
>> else (more familiar with tex-mode) could take over this discussion at
>> that point, and the subsequent responsibility for the added code. That
>> person could be yourself too, under right conditions.
>
> I certainly concur about duplicated code, and I really did try hard to
> get by without a new backend, but I won't pretend that I exhausted all
> or even nearly all of the possibilities. If I'm understanding you
> correctly, you'd prefer a few, small changes to the backend code in
> etags.el (and xref.el), should that be necessary, to a whole new
> backend which limits changes to tex-mode.el. If this understanding is
> reasonably accurate, I can have another look at earlier iterations of
> the code to see what I missed, and perhaps come up with something that
> works right without so much duplication. It may well take me some
> time, so apologies in advance for being slow.
Yes, please.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-24 2:23 ` Dmitry Gutov
@ 2022-02-24 13:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-02-24 13:15 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 53749
Thanks Dmitry. I'll post back here when I've got something.
David.
On Thu, 24 Feb 2022 at 02:23, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> Hi David,
>
> On 23.02.2022 12:45, David Fussner via Bug reports for GNU Emacs, the
> Swiss army knife of text editors wrote:
>
> > I guess it might be possible to come up with a regexp to suppress the
> > @ in some positions in the string, but the bad news is that if you M-?
> > with that search string you get no results at all with the default
> > backend. Grep finds the same two as before, but the default format
> > specification eliminates even those. So you're left looking at a
> > string in your buffer and xref is telling you it isn't there.
>
> That's odd. I've tried searching for 'blx@opt@uniquename' inside \...@,
> and 'grep -w' successfully finds it. Post-processing fails, apparently,
> but that depends on the contents of the syntax table. So one solution
> might be to update tex-mode's syntax table.
>
> >> And if not, all in all, I wouldn't worry too much about
> >> xref-find-references, since TeX is more of a text format (IMHO) than a
> >> program with well-defined identifiers. Perhaps using project-find-regexp
> >> most of the time will save you a lot of the trouble?
> >>
> >
> > You're quite right that C-x p g works well in this instance, and I
> > tried to improve how thing-at-point finds search strings in TeX
> > buffers for this command. I guess TeX is a little bit of a bad fit
> > both for text modes and for prog modes, but I confess I'm still uneasy
> > at the thought of M-? returning such misleading results. What would
> > you think about putting project-find-regexp on M-? in TeX buffers?
> > That is, assuming I don't find reasonably common TeX constructs that
> > defeat it?
>
> At the face of it, the suggestion seems odd (those command's features
> and user expectations are different), but it wouldn't be out of the
> question to circle back to it later.
>
> >> The parser could create both qualified (with \def or \csdef) and
> >> unqualified entries for the same definition. Maybe make it optional
> >> (with -Q argument to etags). Then the user could search using any of
> >> these formats.
> >>
> >
> > I guess we could make etags do some of the work, perhaps adding also a
> > distinction between tagged commands that require this duplication
> > (\def & \csdef) and those that don't (\chapter). Aside from making
> > tags files a lot bigger, and possibly adding another option to a
> > program already overloaded with them -- neither of which is a
> > showstopper -- I suspect it could work pretty well for
> > xref-find-definitions.
>
> IIUC tag files for LaTeX aren't going to be particularly big anyway
> (book projects are almost always smaller than even a mid-sized software
> project), so the size might never be a problem.
>
> But then again, I could be very wrong about that.
>
> >> The suggestion about a buffer-local value of that var was made in the
> >> context of trying to make it work with the current etags backend. At
> >> least, in the first patch. If only because I don't really like to see
> >> duplicated code.
> >>
> >> If we find another place where we really want to diverge, we could also
> >> try adding some behavior-altering variable first.
> >>
> >> After that, we might as well add a new backend (I'm not really against
> >> it, just prefer to exhaust other options first), but hopefully someone
> >> else (more familiar with tex-mode) could take over this discussion at
> >> that point, and the subsequent responsibility for the added code. That
> >> person could be yourself too, under right conditions.
> >
> > I certainly concur about duplicated code, and I really did try hard to
> > get by without a new backend, but I won't pretend that I exhausted all
> > or even nearly all of the possibilities. If I'm understanding you
> > correctly, you'd prefer a few, small changes to the backend code in
> > etags.el (and xref.el), should that be necessary, to a whole new
> > backend which limits changes to tex-mode.el. If this understanding is
> > reasonably accurate, I can have another look at earlier iterations of
> > the code to see what I missed, and perhaps come up with something that
> > works right without so much duplication. It may well take me some
> > time, so apologies in advance for being slow.
>
> Yes, please.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-03 15:09 bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-21 2:11 ` Dmitry Gutov
2022-02-21 12:35 ` Arash Esbati
@ 2022-02-25 20:16 ` Augusto Stoffel
2022-02-26 9:29 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-14 17:26 ` Mattias Engdegård
3 siblings, 1 reply; 106+ messages in thread
From: Augusto Stoffel @ 2022-02-25 20:16 UTC (permalink / raw)
To: 53749; +Cc: dfussner
Hi David,
I took a superficial look at this thread, and this seems very nice.
I was wondering why you want to be able to find the definition of macros
with @ in their name. Those are "private" macros that the user
shouldn't have occasion to use. Is it for a TeX programmer mode?
Let me also mention a library I wrote for analyzing TeX code (accessible
to Emacs via LSP):
https://github.com/astoff/digestif
It's written in Lua (can run on the LuaTeX interpreter) and uses PEGs
for flexible parsing. If you want to be very ambitious about what you
are able to parse, I think regexps are not sufficient.
Digestif can handle \cite{messed up reference} just fine, for example.
On Thu, 3 Feb 2022 at 15:09, David Fussner via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org> wrote:
> I've recently been trying to use xref commands with a tags table in a
> TeX repository, and many of the results are sub-optimal. This is a
> known issue -- within living memory there have been at least two
> discussions related to it on help-gnu-emacs:
>
> https://lists.gnu.org/archive/html/help-gnu-emacs/2018-06/msg00126.html
> https://lists.gnu.org/archive/html/help-gnu-emacs/2021-07/msg00436.html
>
> Neither discussion resulted in any code, at least not that I can find,
> and the issues mentioned there remain. For example,
> xref-find-definitions on, say, '\mycommand' returns
>
> No definitions found for: mycommand.
>
> (The absence of the escape char in the search string makes the search
> fail, as the tag name in the table will be '\mycommand'.)
>
> Similarly, any xref command on 'my:citekey' will only search by default
> for the half of the symbol under point, stopping at the colon.
>
> There are many other behaviors that are suboptimal, as well, so in the
> end I wrote a new xref backend for TeX buffers (cloning large portions
> of the default etags backend), and wondered whether it might be welcome
> in GNU Emacs.
>
> A few remarks:
>
> 1. The code should work as it stands both in the AUCTeX and the in-tree
> modes. The AUCTeX hooks I've included in the patch are provisional, as
> I would want to discuss with them how they would want to handle it,
> should the patch be accepted in some form.
>
> 2. Along the way I found some issues with how etags parses TeX files,
> issues which affect the usefulness of the xref commands, so I've made
> changes in etags.c as well. When running the test suite for etags the
> only diffs occurred in the TeX-related sections of the resulting tags
> file, and location information in those sections was good.
>
> 3. The patch as it stands enables all the changes by default to give
> what I judge to be the best out-of-the-box experience, but wiser heads
> may well have other ideas.
>
> 4. If it looks like the patch will make it into Emacs in some form, I'm
> going to need to assign copyright, so I'd appreciate help with getting
> that started.
>
> Thanks,
>
> David.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-25 20:16 ` Augusto Stoffel
@ 2022-02-26 9:29 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-26 10:56 ` Augusto Stoffel
0 siblings, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-02-26 9:29 UTC (permalink / raw)
To: Augusto Stoffel; +Cc: 53749
Hi Augusto,
On Fri, 25 Feb 2022 at 20:16, Augusto Stoffel <arstoffel@gmail.com> wrote:
>
> Hi David,
>
> I took a superficial look at this thread, and this seems very nice.
Thanks!
>
> I was wondering why you want to be able to find the definition of macros
> with @ in their name. Those are "private" macros that the user
> shouldn't have occasion to use. Is it for a TeX programmer mode?
I confess that TeX developers are indeed one of the main targets for
the feature as I envisioned it. For creating and following \labels,
\refs, and \cites (of all sorts) I find RefTeX very handy, as well as
for jumping around \chapters and \sections and the like. What I miss
when developing are the code-navigation features of something like
xref, which are (from the user point of view) both simple and
powerful. My modest goal was to make Emacs' extensive infrastructure
work a little better out of the box for TeX documents, especially for
styles and other collections of macros.
>
> Let me also mention a library I wrote for analyzing TeX code (accessible
> to Emacs via LSP):
>
> https://github.com/astoff/digestif
>
> It's written in Lua (can run on the LuaTeX interpreter) and uses PEGs
> for flexible parsing. If you want to be very ambitious about what you
> are able to parse, I think regexps are not sufficient.
>
> Digestif can handle \cite{messed up reference} just fine, for example.
>
This looks very nice indeed, and if I'm reading it right provides a
replacement both for RefTeX and for the code-navigation features I'm
trying to implement. I figure I'll continue trying to get improved
out-of-the-box features into core, and if I manage to satisfy Dmitry
we'll then have a choice, but in any case I'm going to have a longer
look at digestif when I get some time.
Thanks for the hint!
David.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-26 9:29 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-02-26 10:56 ` Augusto Stoffel
2022-02-27 18:42 ` Arash Esbati
0 siblings, 1 reply; 106+ messages in thread
From: Augusto Stoffel @ 2022-02-26 10:56 UTC (permalink / raw)
To: David Fussner; +Cc: 53749
On Sat, 26 Feb 2022 at 09:29, David Fussner <dfussner@googlemail.com> wrote:
> Hi Augusto,
>
> On Fri, 25 Feb 2022 at 20:16, Augusto Stoffel <arstoffel@gmail.com> wrote:
>>
>> Hi David,
>
>>
>> I took a superficial look at this thread, and this seems very nice.
>
> Thanks!
>
>>
>> I was wondering why you want to be able to find the definition of macros
>> with @ in their name. Those are "private" macros that the user
>> shouldn't have occasion to use. Is it for a TeX programmer mode?
>
> I confess that TeX developers are indeed one of the main targets for
> the feature as I envisioned it. For creating and following \labels,
> \refs, and \cites (of all sorts) I find RefTeX very handy, as well as
> for jumping around \chapters and \sections and the like. What I miss
> when developing are the code-navigation features of something like
> xref, which are (from the user point of view) both simple and
> powerful. My modest goal was to make Emacs' extensive infrastructure
> work a little better out of the box for TeX documents, especially for
> styles and other collections of macros.
Sorry for entering a tangent, but here's one more thing I dislike about
RefTeX you might want to consider. If you type \label{something}, as
opposed to using the RefTeX command to add a label (or if you edit the
label by hand) then RefTeX will not reparse the document and get out of
sync. Or at least that was the case when I still used RefTeX. So it
might be worth considering some cache invalidation scheme there.
(Digestif has caching for multifile documents, but parsing a single file
is fast enough that this is not a problem I need to worry :-).)
>>
>> Let me also mention a library I wrote for analyzing TeX code (accessible
>> to Emacs via LSP):
>>
>> https://github.com/astoff/digestif
>>
>> It's written in Lua (can run on the LuaTeX interpreter) and uses PEGs
>> for flexible parsing. If you want to be very ambitious about what you
>> are able to parse, I think regexps are not sufficient.
>>
>> Digestif can handle \cite{messed up reference} just fine, for example.
>>
>
> This looks very nice indeed, and if I'm reading it right provides a
> replacement both for RefTeX and for the code-navigation features I'm
> trying to implement.
That's right. Also command completion (including snippets, if that's
your thing) and Eldoc.
> I figure I'll continue trying to get improved
> out-of-the-box features into core, and if I manage to satisfy Dmitry
> we'll then have a choice, but in any case I'm going to have a longer
> look at digestif when I get some time.
Let me mention one last thing, since you seem interested in a TeX
programming mode.
Digestif will not work great out of the box for programming because it
correctly considers @ to have catcode "other" (so it can't be part of
the name of a command). But this is trivial to change and, in fact,
Digestif already has a "latex-prog" mode that simulates the correct
catcodes. It would be easy to include a "latex-expl3" mode as well.
The problem is that there's no way for Emacs to communicate that one of
these programming modes is to be used. This could be fixed in two ways:
A. by creating latex-prog and latex-expl3 derived modes in Emacs, or
B. adding heuristics to Digestif to decide if a given file is "document"
or "code".
Do you have any thoughts about A? Would there be any other benefits in
Emacs to justify the latex-prog and latex-expl3 major modes? It seems
that (at least in AUCTeX) @ is always considered a letter, which may be
innocuous but is kinda wrong.
>
> Thanks for the hint!
>
> David.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-26 10:56 ` Augusto Stoffel
@ 2022-02-27 18:42 ` Arash Esbati
2022-02-28 9:09 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Arash Esbati @ 2022-02-27 18:42 UTC (permalink / raw)
To: Augusto Stoffel; +Cc: 53749, David Fussner
Augusto Stoffel <arstoffel@gmail.com> writes:
> If you type \label{something}, as opposed to using the RefTeX command
> to add a label (or if you edit the label by hand) then RefTeX will not
> reparse the document and get out of sync.
If you know the known labels to RefTeX are out of sync, you can issue
`C-c )' with a prefix argument:
,----[ C-h f reftex-reference RET ]
| reftex-reference is an interactive native compiled Lisp function in
| ‘reftex-ref.el’.
|
| (reftex-reference &optional TYPE NO-INSERT CUT)
|
| Make a LaTeX reference. Look only for labels of a certain TYPE.
| With prefix arg, force to rescan buffer for labels. This should only be
| necessary if you have recently entered labels yourself without using
| reftex-label. Rescanning of the buffer can also be requested from the
| label selection menu.
| The function returns the selected label or nil.
| If NO-INSERT is non-nil, do not insert \ref command, just return label.
| When called with 2 C-u prefix args, disable magic word recognition.
|
| Probably introduced at or before Emacs version 20.1.
|
`----
Or in the labels *RefTeX select* buffer, you have these choices:
r / C-u r Reparse document / Reparse entire document.
I usually hit r when I don't find the label I'm looking for.
> Or at least that was the case when I still used RefTeX. So it might
> be worth considering some cache invalidation scheme there.
The question is if it's worth the effort where a remedy is already in
place.
Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-27 18:42 ` Arash Esbati
@ 2022-02-28 9:09 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-28 11:54 ` Arash Esbati
2022-02-28 13:05 ` Augusto Stoffel
0 siblings, 2 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-02-28 9:09 UTC (permalink / raw)
To: Arash Esbati; +Cc: 53749, Augusto Stoffel
Hi Augusto,
For what it's worth, I've always just done what Arash suggests when
RefTeX gets out of sync, and haven't had any issues with it that I can
remember. (To be fair, my use cases haven't exactly been exotic.)
> The problem is that there's no way for Emacs to communicate that one of
> these programming modes is to be used. This could be fixed in two ways:
>
> A. by creating latex-prog and latex-expl3 derived modes in Emacs, or
>
> B. adding heuristics to Digestif to decide if a given file is "document"
> or "code".
>
> Do you have any thoughts about A? Would there be any other benefits in
> Emacs to justify the latex-prog and latex-expl3 major modes? It seems
> that (at least in AUCTeX) @ is always considered a letter, which may be
> innocuous but is kinda wrong.
The only thought I have is that it sounds like a new major mode would
be overkill for what you need here. I would think that a variable or
defcustom might do the trick, or at most maybe a minor mode? When
navigating code I really want to be able to follow the commands to
their source no matter whether the command is internal or for users,
though I can see how in a code-completion setting you might want to be
able to separate the two more cleanly. Obviously, I'm not the person
you need to convince about all of this -- that would be Arash and the
emacs maintainers, themselves.
Best,
David.
On Sun, 27 Feb 2022 at 18:43, Arash Esbati <arash@gnu.org> wrote:
>
> Augusto Stoffel <arstoffel@gmail.com> writes:
>
> > If you type \label{something}, as opposed to using the RefTeX command
> > to add a label (or if you edit the label by hand) then RefTeX will not
> > reparse the document and get out of sync.
>
> If you know the known labels to RefTeX are out of sync, you can issue
> `C-c )' with a prefix argument:
>
> ,----[ C-h f reftex-reference RET ]
> | reftex-reference is an interactive native compiled Lisp function in
> | ‘reftex-ref.el’.
> |
> | (reftex-reference &optional TYPE NO-INSERT CUT)
> |
> | Make a LaTeX reference. Look only for labels of a certain TYPE.
> | With prefix arg, force to rescan buffer for labels. This should only be
> | necessary if you have recently entered labels yourself without using
> | reftex-label. Rescanning of the buffer can also be requested from the
> | label selection menu.
> | The function returns the selected label or nil.
> | If NO-INSERT is non-nil, do not insert \ref command, just return label.
> | When called with 2 C-u prefix args, disable magic word recognition.
> |
> | Probably introduced at or before Emacs version 20.1.
> |
> `----
>
> Or in the labels *RefTeX select* buffer, you have these choices:
>
> r / C-u r Reparse document / Reparse entire document.
>
> I usually hit r when I don't find the label I'm looking for.
>
> > Or at least that was the case when I still used RefTeX. So it might
> > be worth considering some cache invalidation scheme there.
>
> The question is if it's worth the effort where a remedy is already in
> place.
>
> Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-28 9:09 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-02-28 11:54 ` Arash Esbati
2022-02-28 13:11 ` Augusto Stoffel
2022-02-28 13:05 ` Augusto Stoffel
1 sibling, 1 reply; 106+ messages in thread
From: Arash Esbati @ 2022-02-28 11:54 UTC (permalink / raw)
To: David Fussner; +Cc: 53749, Augusto Stoffel
David Fussner <dfussner@googlemail.com> writes:
>> The problem is that there's no way for Emacs to communicate that one of
>> these programming modes is to be used. This could be fixed in two ways:
>>
>> A. by creating latex-prog and latex-expl3 derived modes in Emacs, or
>>
>> B. adding heuristics to Digestif to decide if a given file is "document"
>> or "code".
>>
>> Do you have any thoughts about A? Would there be any other benefits in
>> Emacs to justify the latex-prog and latex-expl3 major modes? It seems
>> that (at least in AUCTeX) @ is always considered a letter, which may be
>> innocuous but is kinda wrong.
>
> The only thought I have is that it sounds like a new major mode would
> be overkill for what you need here. I would think that a variable or
> defcustom might do the trick, or at most maybe a minor mode?
Sorry if I'm missing something here, I wasn't tracking this thread. But
does doctex-mode (or docTeX in AUCTeX) fit the bill here?
Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-28 9:09 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-28 11:54 ` Arash Esbati
@ 2022-02-28 13:05 ` Augusto Stoffel
1 sibling, 0 replies; 106+ messages in thread
From: Augusto Stoffel @ 2022-02-28 13:05 UTC (permalink / raw)
To: David Fussner; +Cc: 53749, Arash Esbati
On Mon, 28 Feb 2022 at 09:09, David Fussner <dfussner@googlemail.com> wrote:
> For what it's worth, I've always just done what Arash suggests when
> RefTeX gets out of sync, and haven't had any issues with it that I can
> remember. (To be fair, my use cases haven't exactly been exotic.)
Sure, I'm aware you have to do the manual resync when using RefTeX. I
just think it's a totally unnecessary hurdle at this time and age. I
used to advice the RefTeX commands so they would reparse the document
every time, and this worked just fine. (Granted, I never worked on
anything over 100 pages or so, but it should also be possible to reparse
individual files of a multifile project so that the file sizes never
become an issue.)
>> The problem is that there's no way for Emacs to communicate that one of
>> these programming modes is to be used. This could be fixed in two ways:
>>
>> A. by creating latex-prog and latex-expl3 derived modes in Emacs, or
>>
>> B. adding heuristics to Digestif to decide if a given file is "document"
>> or "code".
>>
>> Do you have any thoughts about A? Would there be any other benefits in
>> Emacs to justify the latex-prog and latex-expl3 major modes? It seems
>> that (at least in AUCTeX) @ is always considered a letter, which may be
>> innocuous but is kinda wrong.
>
> The only thought I have is that it sounds like a new major mode would
> be overkill for what you need here. I would think that a variable or
> defcustom might do the trick, or at most maybe a minor mode? When
> navigating code I really want to be able to follow the commands to
> their source no matter whether the command is internal or for users,
> though I can see how in a code-completion setting you might want to be
> able to separate the two more cleanly. Obviously, I'm not the person
> you need to convince about all of this -- that would be Arash and the
> emacs maintainers, themselves.
Okay, thanks for your insight.
>
> Best,
>
> David.
>
> On Sun, 27 Feb 2022 at 18:43, Arash Esbati <arash@gnu.org> wrote:
>>
>> Augusto Stoffel <arstoffel@gmail.com> writes:
>>
>> > If you type \label{something}, as opposed to using the RefTeX command
>> > to add a label (or if you edit the label by hand) then RefTeX will not
>> > reparse the document and get out of sync.
>>
>> If you know the known labels to RefTeX are out of sync, you can issue
>> `C-c )' with a prefix argument:
>>
>> ,----[ C-h f reftex-reference RET ]
>> | reftex-reference is an interactive native compiled Lisp function in
>> | ‘reftex-ref.el’.
>> |
>> | (reftex-reference &optional TYPE NO-INSERT CUT)
>> |
>> | Make a LaTeX reference. Look only for labels of a certain TYPE.
>> | With prefix arg, force to rescan buffer for labels. This should only be
>> | necessary if you have recently entered labels yourself without using
>> | reftex-label. Rescanning of the buffer can also be requested from the
>> | label selection menu.
>> | The function returns the selected label or nil.
>> | If NO-INSERT is non-nil, do not insert \ref command, just return label.
>> | When called with 2 C-u prefix args, disable magic word recognition.
>> |
>> | Probably introduced at or before Emacs version 20.1.
>> |
>> `----
>>
>> Or in the labels *RefTeX select* buffer, you have these choices:
>>
>> r / C-u r Reparse document / Reparse entire document.
>>
>> I usually hit r when I don't find the label I'm looking for.
>>
>> > Or at least that was the case when I still used RefTeX. So it might
>> > be worth considering some cache invalidation scheme there.
>>
>> The question is if it's worth the effort where a remedy is already in
>> place.
>>
>> Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-28 11:54 ` Arash Esbati
@ 2022-02-28 13:11 ` Augusto Stoffel
2022-02-28 19:04 ` Arash Esbati
0 siblings, 1 reply; 106+ messages in thread
From: Augusto Stoffel @ 2022-02-28 13:11 UTC (permalink / raw)
To: Arash Esbati; +Cc: 53749, David Fussner
On Mon, 28 Feb 2022 at 12:54, Arash Esbati <arash@gnu.org> wrote:
> Sorry if I'm missing something here, I wasn't tracking this thread. But
> does doctex-mode (or docTeX in AUCTeX) fit the bill here?
Ah, I forgot about that one. I mean basically that, but for files like
plain.tex or tikz.code.tex; or also when writing a .sty file directly
for personal purposes only.
But since tex-mode and derived ones always pretend @ is a letter, I
guess there's no real need for a dedicated TeX programming mode.
Now, how about expl3 code, where _ and : are letters too?
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-28 13:11 ` Augusto Stoffel
@ 2022-02-28 19:04 ` Arash Esbati
2022-03-01 8:46 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Arash Esbati @ 2022-02-28 19:04 UTC (permalink / raw)
To: Augusto Stoffel; +Cc: 53749, David Fussner
Augusto Stoffel <arstoffel@gmail.com> writes:
> Now, how about expl3 code, where _ and : are letters too?
AUCTeX has a style file expl3.el[1] which changes the syntax for "_" and
":". Can't tell about the builtin tex/latex-mode.
Best, Arash
Footnotes:
[1] http://git.savannah.gnu.org/cgit/auctex.git/tree/style/expl3.el
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-28 19:04 ` Arash Esbati
@ 2022-03-01 8:46 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-03-01 8:46 UTC (permalink / raw)
To: Arash Esbati; +Cc: 53749, Augusto Stoffel
Unless I'm missing something, the in-tree code hasn't (yet) made any
syntax changes for expl3.
Best,
David.
On Mon, 28 Feb 2022 at 19:04, Arash Esbati <arash@gnu.org> wrote:
>
> Augusto Stoffel <arstoffel@gmail.com> writes:
>
> > Now, how about expl3 code, where _ and : are letters too?
>
> AUCTeX has a style file expl3.el[1] which changes the syntax for "_" and
> ":". Can't tell about the builtin tex/latex-mode.
>
> Best, Arash
>
> Footnotes:
> [1] http://git.savannah.gnu.org/cgit/auctex.git/tree/style/expl3.el
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-21 2:11 ` Dmitry Gutov
2022-02-21 9:48 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-09-08 13:25 ` Lars Ingebrigtsen
2022-09-08 13:34 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 1 reply; 106+ messages in thread
From: Lars Ingebrigtsen @ 2022-09-08 13:25 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 53749, David Fussner
Dmitry Gutov <dgutov@yandex.ru> writes:
> Let us first discuss whether we could make do without an additional
> Xref backend. Just to make sure.
(I'm going through old bug reports that unfortunately weren't resolved
at the time.)
I've only skimmed this bug report, so I might well have missed
something. Was there a conclusion here as to what should be done? It
looks like useful functionality to me (but it's been years since I've
written tex-y stuff).
In any case, if this is to be applied, we'd need to have a copyright
assignment to the FSF on file. David, would you be willing to sign
that?
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-09-08 13:25 ` Lars Ingebrigtsen
@ 2022-09-08 13:34 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-08 13:39 ` Lars Ingebrigtsen
0 siblings, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-08 13:34 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: 53749, Dmitry Gutov
Hi Lars,
The conclusion at the time was that the patch needed reworking before
Dmitry was happy with it, and I've not yet found enough time to do so,
though I'm still fully intending to make the necessary changes. Please
leave the bug open so I can restart the conversation when I have a
better patch. (Oh, and I'm more than happy to sign the copyright
assignment whenever Dmitry judges the patch to be ready.)
Thanks for the reminder.
David.
On Thu, 8 Sept 2022 at 14:25, Lars Ingebrigtsen <larsi@gnus.org> wrote:
>
> Dmitry Gutov <dgutov@yandex.ru> writes:
>
> > Let us first discuss whether we could make do without an additional
> > Xref backend. Just to make sure.
>
> (I'm going through old bug reports that unfortunately weren't resolved
> at the time.)
>
> I've only skimmed this bug report, so I might well have missed
> something. Was there a conclusion here as to what should be done? It
> looks like useful functionality to me (but it's been years since I've
> written tex-y stuff).
>
> In any case, if this is to be applied, we'd need to have a copyright
> assignment to the FSF on file. David, would you be willing to sign
> that?
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-09-08 13:34 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-09-08 13:39 ` Lars Ingebrigtsen
2022-09-08 15:50 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Lars Ingebrigtsen @ 2022-09-08 13:39 UTC (permalink / raw)
To: David Fussner; +Cc: 53749, Dmitry Gutov
David Fussner <dfussner@googlemail.com> writes:
> The conclusion at the time was that the patch needed reworking before
> Dmitry was happy with it, and I've not yet found enough time to do so,
> though I'm still fully intending to make the necessary changes. Please
> leave the bug open so I can restart the conversation when I have a
> better patch.
Of course.
> (Oh, and I'm more than happy to sign the copyright
> assignment whenever Dmitry judges the patch to be ready.)
Here's the form to get started:
Please email the following information to assign@gnu.org, and we
will send you the assignment form for your past and future changes.
Please use your full legal name (in ASCII characters) as the subject
line of the message.
----------------------------------------------------------------------
REQUEST: SEND FORM FOR PAST AND FUTURE CHANGES
[What is the name of the program or package you're contributing to?]
Emacs
[Did you copy any files or text written by someone else in these changes?
Even if that material is free software, we need to know about it.]
[Do you have an employer who might have a basis to claim to own
your changes? Do you attend a school which might make such a claim?]
[For the copyright registration, what country are you a citizen of?]
[What year were you born?]
[Please write your email address here.]
[Please write your postal address here.]
[Which files have you changed so far, and which new files have you written
so far?]
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-09-08 13:39 ` Lars Ingebrigtsen
@ 2022-09-08 15:50 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-03 9:08 ` Stefan Kangas
0 siblings, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-09-08 15:50 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: 53749, Dmitry Gutov
Thanks Lars, will do.
On Thu, 8 Sept 2022 at 14:39, Lars Ingebrigtsen <larsi@gnus.org> wrote:
>
> David Fussner <dfussner@googlemail.com> writes:
>
> > The conclusion at the time was that the patch needed reworking before
> > Dmitry was happy with it, and I've not yet found enough time to do so,
> > though I'm still fully intending to make the necessary changes. Please
> > leave the bug open so I can restart the conversation when I have a
> > better patch.
>
> Of course.
>
> > (Oh, and I'm more than happy to sign the copyright
> > assignment whenever Dmitry judges the patch to be ready.)
>
> Here's the form to get started:
>
>
> Please email the following information to assign@gnu.org, and we
> will send you the assignment form for your past and future changes.
>
> Please use your full legal name (in ASCII characters) as the subject
> line of the message.
> ----------------------------------------------------------------------
> REQUEST: SEND FORM FOR PAST AND FUTURE CHANGES
>
> [What is the name of the program or package you're contributing to?]
> Emacs
>
> [Did you copy any files or text written by someone else in these changes?
> Even if that material is free software, we need to know about it.]
>
> [Do you have an employer who might have a basis to claim to own
> your changes? Do you attend a school which might make such a claim?]
>
> [For the copyright registration, what country are you a citizen of?]
>
> [What year were you born?]
>
> [Please write your email address here.]
>
> [Please write your postal address here.]
>
> [Which files have you changed so far, and which new files have you written
> so far?]
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-09-08 15:50 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-09-03 9:08 ` Stefan Kangas
2023-09-03 10:03 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Stefan Kangas @ 2023-09-03 9:08 UTC (permalink / raw)
To: David Fussner; +Cc: 53749, Lars Ingebrigtsen, Dmitry Gutov
David Fussner <dfussner@googlemail.com> writes:
> Thanks Lars, will do.
>
> On Thu, 8 Sept 2022 at 14:39, Lars Ingebrigtsen <larsi@gnus.org> wrote:
>>
>> David Fussner <dfussner@googlemail.com> writes:
>>
>> > The conclusion at the time was that the patch needed reworking before
>> > Dmitry was happy with it, and I've not yet found enough time to do so,
>> > though I'm still fully intending to make the necessary changes. Please
>> > leave the bug open so I can restart the conversation when I have a
>> > better patch.
>>
>> Of course.
That was a year ago. Have you made any progress here?
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-03 9:08 ` Stefan Kangas
@ 2023-09-03 10:03 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-03 10:46 ` Stefan Kangas
0 siblings, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-09-03 10:03 UTC (permalink / raw)
To: Stefan Kangas; +Cc: 53749, Lars Ingebrigtsen, Dmitry Gutov
[-- Attachment #1: Type: text/plain, Size: 891 bytes --]
Hi Stefan
Thanks for the nudge. I do in fact have a patch that I'm just about finding
time to test, so I'll try to get it to the list within a week or two.
Thanks, and best,
David.
On Sun, 3 Sept 2023, 10:08 Stefan Kangas, <stefankangas@gmail.com> wrote:
> David Fussner <dfussner@googlemail.com> writes:
>
> > Thanks Lars, will do.
> >
> > On Thu, 8 Sept 2022 at 14:39, Lars Ingebrigtsen <larsi@gnus.org> wrote:
> >>
> >> David Fussner <dfussner@googlemail.com> writes:
> >>
> >> > The conclusion at the time was that the patch needed reworking before
> >> > Dmitry was happy with it, and I've not yet found enough time to do so,
> >> > though I'm still fully intending to make the necessary changes. Please
> >> > leave the bug open so I can restart the conversation when I have a
> >> > better patch.
> >>
> >> Of course.
>
> That was a year ago. Have you made any progress here?
>
[-- Attachment #2: Type: text/html, Size: 1693 bytes --]
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-03 10:03 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-09-03 10:46 ` Stefan Kangas
2023-09-13 11:10 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Stefan Kangas @ 2023-09-03 10:46 UTC (permalink / raw)
To: David Fussner; +Cc: 53749, Lars Ingebrigtsen, Dmitry Gutov
David Fussner <dfussner@googlemail.com> writes:
> Thanks for the nudge. I do in fact have a patch that I'm just about finding
> time to test, so I'll try to get it to the list within a week or two.
Sounds good, and thank you.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-03 10:46 ` Stefan Kangas
@ 2023-09-13 11:10 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-13 13:42 ` Stefan Kangas
2023-09-13 15:23 ` Dmitry Gutov
0 siblings, 2 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-09-13 11:10 UTC (permalink / raw)
To: Stefan Kangas; +Cc: 53749, Lars Ingebrigtsen, Dmitry Gutov
[-- Attachment #1: Type: text/plain, Size: 1592 bytes --]
Hi Dmitry,
I've belatedly found some time to get the xref commands working better
in TeX buffers, this time using the default etags backend, as you
requested last year. The basic strategy remains the same -- create a
new thing-at-point argument "texsymbol" which replaces "symbol" in a
definable set of major modes, then pass the resulting search term to
xref. Changes in etags.c ensure that the various TeX modes and the
tags tables are cooperating with each other, and I added a new option
to etags (--tex-alt-forms) to handle some of the complexities of the
TeX escape character (as you suggested). I also manipulate some
variables buffer-locally to make things like project-find-regexp and
isearch-forward-thing-at-point work better in such buffers.
I attach a patch against current master. There is another patch which
contains changes to the test suite in test/manual/etags, but I'll
leave that one in case the changes I've made to etags.c need further
work.
I've sent patches to AUCTeX trying to fix a couple of issues there
with xref-find-references. There's more work to be done on related
issues in tex-mode.el, too, but this patch is a start.
Thanks,
David.
P.S. I'm also starting the copyright assignment process, in case these
changes prove acceptable.
On Sun, 3 Sept 2023 at 11:46, Stefan Kangas <stefankangas@gmail.com> wrote:
>
> David Fussner <dfussner@googlemail.com> writes:
>
> > Thanks for the nudge. I do in fact have a patch that I'm just about finding
> > time to test, so I'll try to get it to the list within a week or two.
>
> Sounds good, and thank you.
[-- Attachment #2: 0001-Fix-behavior-of-xref-commands-in-TeX-buffers.patch --]
[-- Type: text/x-patch, Size: 23126 bytes --]
From d5a77bd1dc45e0638df3e4c763a168912c93b5b5 Mon Sep 17 00:00:00 2001
From: David Fussner <dfussner@googlemail.com>
Date: Wed, 13 Sep 2023 11:59:54 +0100
Subject: [PATCH] Fix behavior of xref commands in TeX buffers
* lib-src/etags.c (longopts): Add new option --tex-alt-forms.
(TeX_commands): Improve parsing of commands in TeX buffers.
(TEX_defenv): Expand list of commands to tag by default in TeX
buffers.
(TeX_help):
* doc/emacs/maintaining.texi (Tag Syntax): Document new tagged
commands and new user option.
(Identifier Search): Add note about auto-mode-alist and
xref-find-references.
* lisp/textmodes/tex-mode.el (tex-common-initialization): Set up xref
modifications for in-tree TeX modes.
(tex-thingatpt-modes-list): New var.
(tex-thingatpt-is-texsymbol): New defcustom.
(tex-set-thingatpt-symbol): New command to apply value of previous
buffer-locally.
(tex--symbol-or-texsymbol): New helper function for previous.
(tex--thing-at-point): New function to return texsymbol
'thing-at-point'.
(tex-thingatpt--beginning-of-texsymbol)
(tex-thingatpt--end-of-texsymbol): New functions to define texsymbol
"thing" for 'thing-at-point'.
(tex-thingatpt-syntax-table, tex-escape-char): New vars to do the
same.
(tex-thingatpt-include-escape): New defcustom to refine behavior of
previous.
(tex--include-escape-p): New function to do the same.
(tex-thingatpt-syntax-table): New function to access and modify the
syntax table of the same name.
---
doc/emacs/maintaining.texi | 33 +++++-
lib-src/etags.c | 122 ++++++++++++++++++---
lisp/textmodes/tex-mode.el | 216 +++++++++++++++++++++++++++++++++++++
3 files changed, 357 insertions(+), 14 deletions(-)
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index a95335f3df2..44b8b304026 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -2457,6 +2457,13 @@ Identifier Search
referenced. The XREF mode commands are available in this buffer, see
@ref{Xref Commands}.
+When invoked in a buffer whose major mode uses the @code{etags}
+backend, @kbd{M-?} searches files and buffers whose major mode matches
+that of the original buffer. It guesses that mode from file
+extensions, so if @kbd{M-?} seems to be skipping relevant buffers or
+files, try customizing the variable @code{auto-mode-alist} to include
+the missing extensions (@pxref{Choosing Modes}).
+
@vindex xref-auto-jump-to-first-xref
If the value of the variable @code{xref-auto-jump-to-first-xref} is
@code{t}, @code{xref-find-references} automatically jumps to the first
@@ -2672,8 +2679,23 @@ Tag Syntax
@code{\section}, @code{\subsection}, @code{\subsubsection},
@code{\eqno}, @code{\label}, @code{\ref}, @code{\cite},
@code{\bibitem}, @code{\part}, @code{\appendix}, @code{\entry},
-@code{\index}, @code{\def}, @code{\newcommand}, @code{\renewcommand},
-@code{\newenvironment} and @code{\renewenvironment} are tags.
+@code{\index}, @code{\def}, @code{\edef}, @code{\gdef}, @code{\xdef},
+@code{\newcommand}, @code{\renewcommand}, @code{\newenvironment},
+@code{\renewenvironment}, @code{\DeclareRobustCommand},
+@code{\newrobustcmd}, @code{\renewrobustcmd}, @code{\providecommand},
+@code{\providerobustcmd}, @code{\NewDocumentCommand},
+@code{\RenewDocumentCommand}, @code{\ProvideDocumentCommand},
+@code{\DeclareDocumentCommand}, @code{\NewExpandableDocumentCommand},
+@code{\RenewExpandableDocumentCommand},
+@code{\ProvideExpandableDocumentCommand},
+@code{\DeclareExpandableDocumentCommand},
+@code{\NewDocumentEnvironment}, @code{\RenewDocumentEnvironment},
+@code{\ProvideDocumentEnvironment},
+@code{\DeclareDocumentEnvironment}, @code{\csdef}, @code{\csedef},
+@code{\csgdef}, @code{\csxdef}, @code{\csletcs}, @code{\cslet},
+@code{\letcs}, and @code{\let} are tags. So too are the arguments of
+any starred variants of these commands, when such variants currently
+exist.
Other commands can make tags as well, if you specify them in the
environment variable @env{TEXTAGS} before invoking @command{etags}. The
@@ -2689,6 +2711,13 @@ Tag Syntax
specifies (using Bourne shell syntax) that the commands
@samp{\mycommand} and @samp{\myothercommand} also define tags.
+The @samp{--tex-alt-forms} option causes each tag to have two names,
+one with and one without the @TeX{} escape character, usually
+@samp{\}. This may be helpful when mixing traditional @TeX{} or
+@LaTeX{} constructs (@samp{\def}) with newer constructs from the
+@samp{etoolbox} package (@samp{\csdef}). Use of this option will
+double the size of any @TeX{}-related sections in your tags file.
+
@item
In Lisp code, any function defined with @code{defun}, any variable
defined with @code{defvar} or @code{defconst}, and in general the
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 147ecbd7c1b..3a6682fe451 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -475,6 +475,7 @@ #define xrnew(op, n, m) ((op) = xnrealloc (op, n, (m) * sizeof *(op)))
static bool ignoreindent; /* -I: ignore indentation in C */
static int packages_only; /* --packages-only: in Ada, only tag packages*/
static int class_qualify; /* -Q: produce class-qualified tags in C++/Java */
+static int tex_alt_forms; /* --tex-alt-forms: tag names w/ and w/o escape */
static int debug; /* --debug */
/* STDIN is defined in LynxOS system headers */
@@ -509,6 +510,7 @@ #define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
{ "no-regex", no_argument, NULL, 'R' },
{ "ignore-case-regex", required_argument, NULL, 'c' },
{ "parse-stdin", required_argument, NULL, STDIN },
+ { "tex-alt-forms", no_argument, &tex_alt_forms, 1 },
{ "version", no_argument, NULL, 'V' },
#if CTAGS /* Ctags options */
@@ -792,12 +794,28 @@ #define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
"In LaTeX text, the argument of any of the commands '\\chapter',\n\
'\\section', '\\subsection', '\\subsubsection', '\\eqno', '\\label',\n\
'\\ref', '\\cite', '\\bibitem', '\\part', '\\appendix', '\\entry',\n\
-'\\index', '\\def', '\\newcommand', '\\renewcommand',\n\
-'\\newenvironment' or '\\renewenvironment' is a tag.\n\
+'\\index', '\\def', '\\edef', '\\gdef', '\\xdef', '\\newcommand',\n\
+'\\renewcommand', '\\newenvironment', '\\renewenvironment',\n\
+'\\DeclareRobustCommand, '\\newrobustcmd', '\\renewrobustcmd',\n\
+'\\providecommand', '\\providerobustcmd', '\\NewDocumentCommand',\n\
+'\\RenewDocumentCommand', '\\ProvideDocumentCommand',\n\
+'\\DeclareDocumentCommand', '\\NewExpandableDocumentCommand',\n\
+'\\RenewExpandableDocumentCommand', '\\ProvideExpandableDocumentCommand',\n\
+'\\DeclareExpandableDocumentCommand', '\\NewDocumentEnvironment',\n\
+'\\RenewDocumentEnvironment', '\\ProvideDocumentEnvironment',\n\
+'\\DeclareDocumentEnvironment', '\\csdef', '\\csedef', '\\csgdef',\n\
+'\\csxdef', '\\csletcs', '\\cslet', '\\letcs', or '\\let' is a tag.\n\
+So is the argument of any of the starred variants of these commands,\n\
+when a starred variant currently exists.\n\
\n\
Other commands can be specified by setting the environment variable\n\
'TEXTAGS' to a colon-separated list like, for example,\n\
- TEXTAGS=\"mycommand:myothercommand\".";
+ TEXTAGS=\"mycommand:myothercommand\".\n\
+\n\
+The '--tex-alt-forms' option causes each tag to have two names, one\n\
+with and one without the TeX escape char, usually '\\'. This may be\n\
+helpful when mixing traditional TeX or LaTeX constructs ('\\def')\n\
+with newer constructs from the 'etoolbox' package ('\\csdef').";
static const char *Texinfo_suffixes [] =
@@ -5735,12 +5753,27 @@ Scheme_functions (FILE *inf)
static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */
-/* Default set of control sequences to put into TEX_toktab.
- The value of environment var TEXTAGS is prepended to this. */
+/* Default set of control sequences to put into TEX_toktab. The value of
+ environment var TEXTAGS is prepended to this. (2023) Add variants of
+ '\def', some additional LaTeX (and former xparse) commands, and common
+ variants from the 'etoolbox' package. Also, add starred variants of the
+ commands if they exist. */
static const char *TEX_defenv = "\
-:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
-:part:appendix:entry:index:def\
-:newcommand:renewcommand:newenvironment:renewenvironment";
+:chapter*:section*:subsection*:subsubsection*:part*:label:ref\
+:chapter:section:subsection:subsubsection:eqno:cite:bibitem:part\
+:appendix:entry:index:def:edef:gdef:xdef:newcommand*:newcommand\
+:renewcommand*:renewcommand:newenvironment*:newenvironment\
+:renewenvironment*:renewenvironment:DeclareRobustCommand*\
+:DeclareRobustCommand:renewrobustcmd*:renewrobustcmd\
+:newrobustcmd*:newrobustcmd:providecommand*:providecommand\
+:providerobustcmd*:providerobustcmd:NewDocumentCommand\
+:RenewDocumentCommand:ProvideDocumentCommand\
+:DeclareDocumentCommand:NewExpandableDocumentCommand\
+:RenewExpandableDocumentCommand:ProvideExpandableDocumentCommand\
+:DeclareExpandableDocumentCommand:NewDocumentEnvironment\
+:RenewDocumentEnvironment:ProvideDocumentEnvironment\
+:DeclareDocumentEnvironment:csdef:csedef:csgdef:csxdef:csletcs\
+:cslet:letcs:let";
static void TEX_decode_env (const char *, const char *);
@@ -5752,6 +5785,7 @@ TeX_commands (FILE *inf)
{
char *cp;
linebuffer *key;
+ char newname[UCHAR_MAX];
char TEX_esc = '\0';
char TEX_opgrp UNINIT, TEX_clgrp UNINIT;
@@ -5799,19 +5833,73 @@ TeX_commands (FILE *inf)
{
char *p;
ptrdiff_t namelen, linelen;
- bool opgrp = false;
+ bool opgrp = false, one_esc = false;
cp = skip_spaces (cp + key->len);
+ /* Skip the optional arguments to commands in the tags list so
+ that these arguments don't end up as the name of the tag.
+ The name will instead come from the argument in curly braces
+ that follows the optional ones. */
+ if (*cp == '[' || *cp == '(')
+ {
+ while (*cp != TEX_opgrp && *cp != '\0')
+ cp++;
+ }
if (*cp == TEX_opgrp)
{
opgrp = true;
cp++;
}
+ /* Jumping to a TeX command definition doesn't work in at least
+ some of the editors that use ctags. Using the
+ '--tex-alt-forms' option to strip TEX_esc should provide
+ minor improvements, though overall the behavior is still
+ suboptimal. (With --tex-alt-forms we print each tag twice,
+ once with and once without TEX_esc in the tag name. See
+ below.) The undocumented ctags option '--no-duplicates' may
+ also help. Changes in tex-mode.el in GNU Emacs address the
+ majority of these issues for etags, though the
+ '--tex-alt-forms' option can also be useful there. */
+
+ if (tex_alt_forms && *cp == TEX_esc)
+ {
+ cp++;
+ one_esc = true;
+ }
+
+ /* Add optional argument brackets '(' and '[' to the loop test
+ so that these arguments don't appear in tag names. Also add
+ '=' as it's relational in the vast majority of cases. */
for (p = cp;
- (!c_isspace (*p) && *p != '#' &&
- *p != TEX_opgrp && *p != TEX_clgrp);
+ (!c_isspace (*p) && *p != '#' && *p != '=' &&
+ *p != '[' && *p != '(' && *p != TEX_opgrp &&
+ *p != TEX_clgrp);
p++)
- continue;
+ /* Allow only one escape char in a tag name, which
+ (primarily) enables tagging a TeX command's different,
+ possibly temporary, '\let' bindings. */
+ if (*p == TEX_esc)
+ {
+ if (!one_esc)
+ {
+ one_esc = true;
+ continue;
+ }
+ else
+ break;
+ }
+ else
+ continue;
+ /* Re-run the scan to catch (highly unusual) cases where a
+ command name is of the form '\('. */
+ if ((*p == '(' || *p == '[') && (p - cp) < 2)
+ {
+ for (p = cp;
+ (!c_isspace (*p) && *p != '#' &&
+ *p != TEX_opgrp && *p != TEX_clgrp);
+ p++)
+ continue;
+ }
namelen = p - cp;
linelen = lb.len;
if (!opgrp || *p == TEX_clgrp)
@@ -5820,6 +5908,16 @@ TeX_commands (FILE *inf)
p++;
linelen = p - lb.buffer + 1;
}
+ /* With --tex-alt-forms we strip any TEX_esc from the name (see
+ above), print the tag with TEX_esc prepended to the bare tag
+ name, then print the same tag again with the bare tag
+ name. */
+ if (tex_alt_forms)
+ {
+ snprintf (newname, UCHAR_MAX, "%c%s", TEX_esc, cp);
+ make_tag (newname, namelen + 1, true,
+ lb.buffer, linelen, lineno, linecharno);
+ }
make_tag (cp, namelen, true,
lb.buffer, linelen, lineno, linecharno);
goto tex_next_line; /* We only tag a line once */
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index a26e7b9c83a..3de4a093e09 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -1277,6 +1277,8 @@ tex-common-initialization
(syntax-propertize-rules latex-syntax-propertize-rules))
;; TABs in verbatim environments don't do what you think.
(setq-local indent-tabs-mode nil)
+ ;; Set up xref backend in TeX buffers.
+ (tex-set-thingatpt-symbol)
;; Other vars that should be buffer-local.
(make-local-variable 'tex-command)
(make-local-variable 'tex-start-of-header)
@@ -3724,6 +3726,220 @@ tex-chktex
(kill-buffer (process-buffer process)))))))
(process-send-region tex-chktex--process (point-min) (point-max))
(process-send-eof tex-chktex--process))))
+\f
+;;; Xref / Etags tweaks
+
+;; Rather than define a new xref backend for TeX, we tweak the default
+;; etags backend so that the main xref user commands (including
+;; `xref-find-definitions', `xref-find-apropos', and
+;; `xref-find-references' [on M-., C-M-., and M-?, respectively]) work
+;; in TeX buffers. This mostly involves defining a new THING for
+;; `thing-at-point' (texsymbol), then substituting that THING for
+;; `symbol' in TeX buffers, at least by (configurable) default. The
+;; TeX escape character will by default appear in the resulting string
+;; only when the xref command uses string search and not regexp
+;; search, though this too is configurable. The new THING type also
+;; improves the accuracy of other commands that use `thing-at-point'
+;; in TeX buffers, like `isearch-forward-thing-at-point' (on M-s M-.)
+;; and `project-find-regexp' (on C-x p g). Indeed,
+;; `project-find-regexp' sometimes works better in TeX buffers than
+;; `xref-find-references'.
+
+(defvar tex-thingatpt-modes-list
+ '(tex-mode doctex-mode latex-mode plain-tex-mode slitex-mode ams-tex-mode)
+ "Major modes where `thing-at-point' may use the `texsymbol' type.
+
+When a buffer's `major-mode' is in this list, and when
+`tex-thingatpt-is-texsymbol' is t (the default), any command in
+that buffer that calls `thing-at-point' with a `symbol' argument
+actually uses the `texsymbol' argument, instead.")
+
+(defcustom tex-thingatpt-is-texsymbol t
+ "When non-nil replace `symbol' by `texsymbol' for `thing-at-point'.
+
+This applies only to TeX buffers. The `texsymbol' \"thing\"
+modifies the standard `symbol' for use in such buffers.
+
+When nil, restore the default behavior of `thing-at-point' in TeX
+buffers.
+
+Custom will automatically apply changes in all TeX buffers, but
+if you set the variable outside of Custom it won't take effect
+until you apply it with \\[tex-set-thingatpt-symbol]. Without a
+prefix argument (\\[universal-argument]) this applies only to the
+current buffer, but with one it applies to all TeX buffers in
+`buffer-list'. (TeX buffers are those whose `major-mode' is a
+member of `tex-thingatpt-modes-list'.)"
+ :type 'boolean
+ :group 'tex-file
+ :group 'TeX-misc
+ :initialize #'custom-initialize-default
+ :set (lambda (var val)
+ (set-default var val)
+ (tex-set-thingatpt-symbol t))
+ :version "30.1")
+
+(defcustom tex-thingatpt-include-escape '(xref-find-definitions
+ xref-find-definitions-other-window
+ xref-find-definitions-other-frame)
+ "If non-nil, include `tex-escape-char' in `thing-at-point'.
+
+This variable only takes effect when `tex-thingatpt-is-texsymbol'
+is t (the default), changing the argument passed to
+`thing-at-point' from `symbol' to `texsymbol'. When that is the
+case, the values of this variable act as follows:
+
+When t, `thing-at-point' will always include a
+`tex-escape-char' (usually `\\'), should one be present, in the
+string it returns in TeX buffers.
+
+When nil, `thing-at-point' will never include the
+`tex-escape-char' in the string it returns in TeX buffers.
+
+Otherwise, it's a list of commands for which `thing-at-point'
+will always include the `tex-escape-char' in the string it
+returns. The three xref commands listed by default may cease to
+function properly in TeX buffers if set to nil, but using the
+`--tex-alt-forms' option when creating your tags table with
+`etags' will rectify that."
+ :type '(choice (const :tag "Always include tex-escape-char" t)
+ (const :tag "Never include tex-escape-char" nil)
+ (set :tag "Include tex-escape-char for these commands"
+ (repeat :inline t (symbol :tag "command"))))
+ :group 'tex-file
+ :group 'TeX-misc
+ :version "30.1")
+
+(defvar tex-escape-char ?\\
+ "The current, possibly buffer-local, TeX escape character.
+
+The `etags' program only recognizes `\\' (92) and `!' (33) as
+escape characters in TeX documents, and if it detects the latter
+it also uses `<>' as the TeX grouping construct rather than `{}'.
+Setting this variable to anything other than `\\' or `!' is
+possible but will not be useful without changes to `etags', at
+least for commands that search tags tables, such as
+`xref-find-definitions' (\\[xref-find-definitions]) and \
+`xref-find-apropos' (\\[xref-find-apropos]).")
+
+(defvar tex-thingatpt-syntax-table
+ (let* ((ost (if (boundp 'TeX-mode-syntax-table)
+ TeX-mode-syntax-table
+ tex-mode-syntax-table))
+ (st (make-syntax-table ost)))
+ (modify-syntax-entry ?# "'" st)
+ (modify-syntax-entry ?= "'" st)
+ (modify-syntax-entry ?` "'" st)
+ (modify-syntax-entry ?\" "'" st)
+ (modify-syntax-entry ?' "'" st)
+ st)
+ "Syntax table for delimiting `thing-at-point' in TeX buffers.
+
+When `tex-thingatpt-is-texsymbol' is t, this syntax table helps
+to define what a `texsymbol' is. To access it use the
+`tex-thingatpt-syntax-table' function.")
+
+(defun tex-thingatpt-syntax-table ()
+ "Return a syntax table for `thing-at-point' in TeX buffers.
+
+It modifies the pre-defined syntax table depending both on the
+setting of the `tex-escape-char' variable, which may be buffer
+local, and on whether we're using AUCTeX or the in-tree tex-mode."
+ (let ((nst (make-syntax-table tex-thingatpt-syntax-table))
+ (escsy (if (boundp 'TeX-mode-syntax-table)
+ ?\\
+ ?/)))
+ (cond ((char-equal tex-escape-char ?\\))
+ ((char-equal tex-escape-char ?!)
+ (modify-syntax-entry ?\\ "_" nst)
+ (modify-syntax-entry tex-escape-char (char-to-string escsy) nst)
+ (modify-syntax-entry ?< "(>" nst)
+ (modify-syntax-entry ?> ")<" nst))
+ (t
+ (modify-syntax-entry ?\\ "_" nst)
+ (modify-syntax-entry tex-escape-char (char-to-string escsy) nst)))
+ nst))
+
+;; Setup AUCTeX modes. (Should this be in AUCTeX itself?)
+(add-hook 'TeX-mode-hook #'tex-set-thingatpt-symbol)
+
+;; `xref-find-references' needs this when called from a latex-mode
+;; buffer in order to search files or buffers with a .tex suffix
+;; (including the buffer from which it has been called). We append it
+;; to `auto-mode-alist' so as not to interfere with the usual
+;; mode-setting apparatus.
+(add-to-list 'auto-mode-alist '("\\.[tT]e[xX]\\'" . latex-mode) t)
+
+(dolist (texmode tex-thingatpt-modes-list)
+ (put texmode 'find-tag-default-function 'tex--thing-at-point))
+
+(put 'texsymbol 'beginning-op 'tex-thingatpt--beginning-of-texsymbol)
+
+(put 'texsymbol 'end-op 'tex-thingatpt--end-of-texsymbol)
+
+(declare-function cl-substitute "cl-seq" (cl-new cl-old cl-seq &rest cl-keys))
+
+(defun tex-set-thingatpt-symbol (&optional all)
+ "Set meaning of `thing-at-point' `symbol' in (ALL?) TeX buffers.
+
+When `tex-thingatpt-is-texsymbol' is t, set `thing-at-point' to
+use the `texsymbol' \"thing\" instead of `symbol', otherwise
+maintain or restore the default. Without an optional ALL make
+changes only in current buffer, with ALL make changes in all TeX
+buffers in `buffer-list'."
+ (interactive "P")
+ (require 'thingatpt)
+ (if all
+ (dolist (buf (buffer-list))
+ (with-current-buffer buf
+ (tex--symbol-or-texsymbol)))
+ (tex--symbol-or-texsymbol)))
+
+(defun tex--symbol-or-texsymbol ()
+ (when (memq major-mode tex-thingatpt-modes-list)
+ (if tex-thingatpt-is-texsymbol
+ (setq-local thing-at-point-provider-alist
+ (add-to-list 'thing-at-point-provider-alist
+ '(symbol . tex--thing-at-point))
+ isearch-forward-thing-at-point
+ (cl-substitute 'texsymbol 'symbol
+ isearch-forward-thing-at-point))
+ (setq-local thing-at-point-provider-alist
+ (delete '(symbol . tex--thing-at-point)
+ thing-at-point-provider-alist)
+ isearch-forward-thing-at-point
+ (cl-substitute 'symbol 'texsymbol
+ isearch-forward-thing-at-point)))))
+
+(defun tex--thing-at-point ()
+ "Pass `thing' type `texsymbol' to `bounds-of-thing-at-point'.
+
+When `tex-thingatpt-is-texsymbol' is t, calls in TeX buffers to
+`thing-at-point' with argument `symbol' will instead use the
+argument `texsymbol'. Otherwise it will call `find-tag-default'."
+ (if tex-thingatpt-is-texsymbol
+ (let ((bounds (bounds-of-thing-at-point 'texsymbol)))
+ (when bounds
+ (buffer-substring-no-properties (car bounds) (cdr bounds))))
+ (find-tag-default)))
+
+(defun tex--include-escape-p (command)
+ (or (eq tex-thingatpt-include-escape t)
+ (memq command tex-thingatpt-include-escape)))
+
+(defun tex-thingatpt--beginning-of-texsymbol ()
+ "Move point to the beginning of the current TeX symbol."
+ (with-syntax-table (tex-thingatpt-syntax-table)
+ (and (re-search-backward "\\([][()]\\|\\(\\sw\\|\\s_\\|\\s.\\)+\\)")
+ (skip-syntax-backward "w_.")
+ (when (tex--include-escape-p this-command)
+ (skip-syntax-backward "\\/")))))
+
+(defun tex-thingatpt--end-of-texsymbol ()
+ "Move point to the end of the current TeX symbol."
+ (with-syntax-table (tex-thingatpt-syntax-table)
+ (and (re-search-forward "\\([][()]\\|\\(\\sw\\|\\s_\\|\\s.\\)+\\)")
+ (skip-syntax-forward "w_."))))
(make-obsolete-variable 'tex-mode-load-hook
"use `with-eval-after-load' instead." "28.1")
--
2.35.8
^ permalink raw reply related [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-13 11:10 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-09-13 13:42 ` Stefan Kangas
2023-09-13 15:23 ` Dmitry Gutov
1 sibling, 0 replies; 106+ messages in thread
From: Stefan Kangas @ 2023-09-13 13:42 UTC (permalink / raw)
To: David Fussner; +Cc: 53749, Lars Ingebrigtsen, Dmitry Gutov
David Fussner <dfussner@googlemail.com> writes:
> P.S. I'm also starting the copyright assignment process, in case these
> changes prove acceptable.
That's great, thanks.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-13 11:10 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-13 13:42 ` Stefan Kangas
@ 2023-09-13 15:23 ` Dmitry Gutov
2023-09-13 17:01 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-13 19:16 ` Eli Zaretskii
1 sibling, 2 replies; 106+ messages in thread
From: Dmitry Gutov @ 2023-09-13 15:23 UTC (permalink / raw)
To: David Fussner, Stefan Kangas; +Cc: 53749, Lars Ingebrigtsen
Hi David!
Thanks for the new patch.
I'm skipping over the etags parser changes (others might comment, I'm
just assuming they are good).
And "thing at point" code is, I think, at your discretion (if the result
is useful, then that seems good). I would probably not call the function
the same way given that we don't install this "thing" globally, just
using it from several the major modes in a particular way. Anyway, that
is a minor affair.
I'd like to suggest two simplifications for the xref-related stuff, if
those work for you.
On 13/09/2023 14:10, David Fussner via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
> <...> I also manipulate some
> variables buffer-locally to make things like project-find-regexp and
> isearch-forward-thing-at-point work better in such buffers.
These won't be affected either way, right? Because project-find-regexp
defaults its input to (thing-at-point 'symbol t), and isearch...
probably also uses "symbol" if you ask it to.
So... why not just make tex-thingatpt-include-escape a boolean? What
commands need to be distinguished that way? I think 'find-tag' (it's
obsolete but still used sometimes) would need to obey this var as well.
And the second thing: you're putting the symbol on major modes.
+(dolist (texmode tex-thingatpt-modes-list)
+ (put texmode 'find-tag-default-function 'tex--thing-at-point))
Why not set the variable find-tag-default-function instead? That seems
easier and more appropriate to do inside a major mode function.
Thanks.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-13 15:23 ` Dmitry Gutov
@ 2023-09-13 17:01 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-13 23:59 ` Dmitry Gutov
2023-09-13 19:16 ` Eli Zaretskii
1 sibling, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-09-13 17:01 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 53749, Lars Ingebrigtsen, Stefan Kangas
Hi Dmitry,
Thanks for the feedback!
> These won't be affected either way, right? Because project-find-regexp
> defaults its input to (thing-at-point 'symbol t), and isearch...
> probably also uses "symbol" if you ask it to.
>
> So... why not just make tex-thingatpt-include-escape a boolean? What
> commands need to be distinguished that way? I think 'find-tag' (it's
> obsolete but still used sometimes) would need to obey this var as well.
xref-find-apropos and xref-find-references don't work well (or at all)
with the escape char included in the search string, so I was keeping
that char away from them. (The buffer-local variables I manipulate for
project-find-regexp and isearch-forward-thing-at-point have to do with
ensuring they use the texsymbol thing in the first place -- see
tex--symbol-or-texsymbol.) Does that make sense?
I'll look at find-tag, too; thanks for pointing that out.
> Why not set the variable find-tag-default-function instead? That seems
> easier and more appropriate to do inside a major mode function.
I settled on putting the symbol on the modes because I thought it was
simpler than setting the variable buffer-locally in all the in-tree
and AUCTeX modes, but I'll revisit this and see whether I can come up
with something better.
Thanks again.
On Wed, 13 Sept 2023 at 16:23, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> Hi David!
>
> Thanks for the new patch.
>
> I'm skipping over the etags parser changes (others might comment, I'm
> just assuming they are good).
>
> And "thing at point" code is, I think, at your discretion (if the result
> is useful, then that seems good). I would probably not call the function
> the same way given that we don't install this "thing" globally, just
> using it from several the major modes in a particular way. Anyway, that
> is a minor affair.
>
> I'd like to suggest two simplifications for the xref-related stuff, if
> those work for you.r along the lines of your
>
> On 13/09/2023 14:10, David Fussner via Bug reports for GNU Emacs, the
> Swiss army knife of text editors wrote:
>
> > <...> I also manipulate some
> > variables buffer-locally to make things like project-find-regexp and
> > isearch-forward-thing-at-point work better in such buffers.
>
> These won't be affected either way, right? Because project-find-regexp
> defaults its input to (thing-at-point 'symbol t), and isearch...
> probably also uses "symbol" if you ask it to.
>
> So... why not just make tex-thingatpt-include-escape a boolean? What
> commands need to be distinguished that way? I think 'find-tag' (it's
> obsolete but still used sometimes) would need to obey this var as well.
>
> And the second thing: you're putting the symbol on major modes.
>
> +(dolist (texmode tex-thingatpt-modes-list)
> + (put texmode 'find-tag-default-function 'tex--thing-at-point))
>
> Why not set the variable find-tag-default-function instead? That seems
> easier and more appropriate to do inside a major mode function.r along the lines of your
>
> Thanks.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-13 15:23 ` Dmitry Gutov
2023-09-13 17:01 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-09-13 19:16 ` Eli Zaretskii
2023-09-13 20:25 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 1 reply; 106+ messages in thread
From: Eli Zaretskii @ 2023-09-13 19:16 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 53749, larsi, stefankangas, dfussner
> Cc: 53749@debbugs.gnu.org, Lars Ingebrigtsen <larsi@gnus.org>
> Date: Wed, 13 Sep 2023 18:23:13 +0300
> From: Dmitry Gutov <dgutov@yandex.ru>
>
> I'm skipping over the etags parser changes (others might comment, I'm
> just assuming they are good).
They look OK to me at first glance, but we need to make sure the etags
tests still succeed after this change, and the new option should be
documented in the man page. Bonus points for adding to the etags test
suite a test where this option is activated.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-13 19:16 ` Eli Zaretskii
@ 2023-09-13 20:25 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-14 5:14 ` Eli Zaretskii
0 siblings, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-09-13 20:25 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 53749, Lars Ingebrigtsen, Stefan Kangas, Dmitry Gutov
[-- Attachment #1: Type: text/plain, Size: 864 bytes --]
Thanks Eli.
I'll have a look at the man page, and also at an additional test for the
suite. I did run the test suite, and all the diffs were where they should
be; I can send a patch that I have if you'd like, but if I'm going to add
tests maybe you'd prefer to wait?
On Wed, 13 Sept 2023, 20:16 Eli Zaretskii, <eliz@gnu.org> wrote:
> > Cc: 53749@debbugs.gnu.org, Lars Ingebrigtsen <larsi@gnus.org>
> > Date: Wed, 13 Sep 2023 18:23:13 +0300
> > From: Dmitry Gutov <dgutov@yandex.ru>
> >
> > I'm skipping over the etags parser changes (others might comment, I'm
> > just assuming they are good).
>
> They look OK to me at first glance, but we need to make sure the etags
> tests still succeed after this change, and the new option should be
> documented in the man page. Bonus points for adding to the etags test
> suite a test where this option is activated.
>
[-- Attachment #2: Type: text/html, Size: 1470 bytes --]
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-13 17:01 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-09-13 23:59 ` Dmitry Gutov
2023-09-14 6:10 ` Eli Zaretskii
2023-09-14 16:11 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 2 replies; 106+ messages in thread
From: Dmitry Gutov @ 2023-09-13 23:59 UTC (permalink / raw)
To: David Fussner; +Cc: 53749, Lars Ingebrigtsen, Stefan Kangas
On 13/09/2023 20:01, David Fussner via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
>> These won't be affected either way, right? Because project-find-regexp
>> defaults its input to (thing-at-point 'symbol t), and isearch...
>> probably also uses "symbol" if you ask it to.
>>
>> So... why not just make tex-thingatpt-include-escape a boolean? What
>> commands need to be distinguished that way? I think 'find-tag' (it's
>> obsolete but still used sometimes) would need to obey this var as well.
>
> xref-find-apropos and xref-find-references don't work well (or at all)
> with the escape char included in the search string, so I was keeping
> that char away from them. (The buffer-local variables I manipulate for
> project-find-regexp and isearch-forward-thing-at-point have to do with
> ensuring they use the texsymbol thing in the first place -- see
> tex--symbol-or-texsymbol.) Does that make sense?
Hmm, I suppose I skipped over that part of the patch too quickly.
Here's a potential problem with replacing the notion of "symbol": some
other existing code (also working with TeX/LaTeX) might disagree, as it
might have some existing notion of what a "symbol" in those modes is (as
defined by the syntax table).
In general, we change the notion of a symbol by either changing the
mode's syntax table, or by augmenting its effect using
syntax-propertize-function (which, for example, could propertize the
backslashes inside the buffer as "symbol constituent"). The latter might
actually be a change that would affect how 'M-x xref-find-references'
works (it will likely start to consider those \tags as symbol
occurrences together with the backslash). But like other changes of what
is considered to be a "symbol" in a major mode, it could conflict with
existing code.
Anyway, I'm not saying you have to change the approach, but that's
something to be aware of.
And to look at it from another direction: if the default implementation
of xref-find-references (and etags uses the very generic one) doesn't
work for you, perhaps it would be worth it to define a TeX-specific Xref
backend. That would perhaps take 20-30 lines of code total, most of them
delegating to the etags backend, or the default impl. But while
delegating, you can modify the passed argument - e.g. if it included a
backslash, you could forward it to the default impl for "find
references" without a backslash. Or - alternatively - call
(project-find-regexp "...") with a more complex regexp of your choice.
The first alternative could look like this:
(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags))
identifier)
(xref-backend-references 'etags (string-remove-prefix "\\"
identifier)))
> I'll look at find-tag, too; thanks for pointing that out.
Doing the above choice on the level of Xref backend's methods
would/should automatically make it work for all commands appropriately.
>> Why not set the variable find-tag-default-function instead? That seems
>> easier and more appropriate to do inside a major mode function.
>
> I settled on putting the symbol on the modes because I thought it was
> simpler than setting the variable buffer-locally in all the in-tree
> and AUCTeX modes, but I'll revisit this and see whether I can come up
> with something better.
Do AUCTeX modes inherit from tex-mode? Or all call
tex-common-initialization? Then you could set that variable locally
inside that function once.
All in all, it might not be wise to modify the behavior of third-party
packages from inside Emacs this way (they might have other expectations,
or there's going to appear a new major mode that needs the same
treatment anyway).
Setting a variable to be used through mode inheritance or delegation is
fine, but if that doesn't help, I would probably stop at defining a
helper function or two and documenting how it should be used. And then
maybe work with AUCTeX people to get the remaining necessary changes in
from their side (or just leaving that up to the user, depending on how
functional the default config ends up being).
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-13 20:25 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-09-14 5:14 ` Eli Zaretskii
0 siblings, 0 replies; 106+ messages in thread
From: Eli Zaretskii @ 2023-09-14 5:14 UTC (permalink / raw)
To: David Fussner; +Cc: 53749, larsi, stefankangas, dgutov
> From: David Fussner <dfussner@googlemail.com>
> Date: Wed, 13 Sep 2023 21:25:28 +0100
> Cc: Dmitry Gutov <dgutov@yandex.ru>, Stefan Kangas <stefankangas@gmail.com>, 53749@debbugs.gnu.org,
> Lars Ingebrigtsen <larsi@gnus.org>
>
> I'll have a look at the man page, and also at an additional test for the suite. I did run the test suite, and
> all the diffs were where they should be; I can send a patch that I have if you'd like, but if I'm going to
> add tests maybe you'd prefer to wait?
Sure, we will wait. There's no rush. Let's have a complete patch
that covers all the aspects of this, and install it in one go.
Meanwhile you will also have time to work on the other review
comments.
Thanks.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-13 23:59 ` Dmitry Gutov
@ 2023-09-14 6:10 ` Eli Zaretskii
2023-09-15 18:45 ` Tassilo Horn
2023-09-14 16:11 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 1 reply; 106+ messages in thread
From: Eli Zaretskii @ 2023-09-14 6:10 UTC (permalink / raw)
To: Dmitry Gutov, Stefan Monnier, Tassilo Horn
Cc: 53749, larsi, stefankangas, dfussner
> Cc: 53749@debbugs.gnu.org, Lars Ingebrigtsen <larsi@gnus.org>,
> Stefan Kangas <stefankangas@gmail.com>
> Date: Thu, 14 Sep 2023 02:59:33 +0300
> From: Dmitry Gutov <dgutov@yandex.ru>
>
> On 13/09/2023 20:01, David Fussner via Bug reports for GNU Emacs, the
> Swiss army knife of text editors wrote:
>
> >> These won't be affected either way, right? Because project-find-regexp
> >> defaults its input to (thing-at-point 'symbol t), and isearch...
> >> probably also uses "symbol" if you ask it to.
> >>
> >> So... why not just make tex-thingatpt-include-escape a boolean? What
> >> commands need to be distinguished that way? I think 'find-tag' (it's
> >> obsolete but still used sometimes) would need to obey this var as well.
> >
> > xref-find-apropos and xref-find-references don't work well (or at all)
> > with the escape char included in the search string, so I was keeping
> > that char away from them. (The buffer-local variables I manipulate for
> > project-find-regexp and isearch-forward-thing-at-point have to do with
> > ensuring they use the texsymbol thing in the first place -- see
> > tex--symbol-or-texsymbol.) Does that make sense?
>
> Hmm, I suppose I skipped over that part of the patch too quickly.
>
> Here's a potential problem with replacing the notion of "symbol": some
> other existing code (also working with TeX/LaTeX) might disagree, as it
> might have some existing notion of what a "symbol" in those modes is (as
> defined by the syntax table).
>
> In general, we change the notion of a symbol by either changing the
> mode's syntax table, or by augmenting its effect using
> syntax-propertize-function (which, for example, could propertize the
> backslashes inside the buffer as "symbol constituent"). The latter might
> actually be a change that would affect how 'M-x xref-find-references'
> works (it will likely start to consider those \tags as symbol
> occurrences together with the backslash). But like other changes of what
> is considered to be a "symbol" in a major mode, it could conflict with
> existing code.
>
> Anyway, I'm not saying you have to change the approach, but that's
> something to be aware of.
>
> And to look at it from another direction: if the default implementation
> of xref-find-references (and etags uses the very generic one) doesn't
> work for you, perhaps it would be worth it to define a TeX-specific Xref
> backend. That would perhaps take 20-30 lines of code total, most of them
> delegating to the etags backend, or the default impl. But while
> delegating, you can modify the passed argument - e.g. if it included a
> backslash, you could forward it to the default impl for "find
> references" without a backslash. Or - alternatively - call
> (project-find-regexp "...") with a more complex regexp of your choice.
> The first alternative could look like this:
>
> (cl-defmethod xref-backend-references ((_backend (eql 'tex-etags))
> identifier)
> (xref-backend-references 'etags (string-remove-prefix "\\"
> identifier)))
>
> > I'll look at find-tag, too; thanks for pointing that out.
>
> Doing the above choice on the level of Xref backend's methods
> would/should automatically make it work for all commands appropriately.
>
> >> Why not set the variable find-tag-default-function instead? That seems
> >> easier and more appropriate to do inside a major mode function.
> >
> > I settled on putting the symbol on the modes because I thought it was
> > simpler than setting the variable buffer-locally in all the in-tree
> > and AUCTeX modes, but I'll revisit this and see whether I can come up
> > with something better.
>
> Do AUCTeX modes inherit from tex-mode? Or all call
> tex-common-initialization? Then you could set that variable locally
> inside that function once.
>
> All in all, it might not be wise to modify the behavior of third-party
> packages from inside Emacs this way (they might have other expectations,
> or there's going to appear a new major mode that needs the same
> treatment anyway).
>
> Setting a variable to be used through mode inheritance or delegation is
> fine, but if that doesn't help, I would probably stop at defining a
> helper function or two and documenting how it should be used. And then
> maybe work with AUCTeX people to get the remaining necessary changes in
> from their side (or just leaving that up to the user, depending on how
> functional the default config ends up being).
I think we should add Stefan and Tassilo (CCed) to this discussion, as
they might have valuable comments about this.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-13 23:59 ` Dmitry Gutov
2023-09-14 6:10 ` Eli Zaretskii
@ 2023-09-14 16:11 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-14 23:55 ` Dmitry Gutov
1 sibling, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-09-14 16:11 UTC (permalink / raw)
To: Dmitry Gutov, Eli Zaretskii; +Cc: 53749, Lars Ingebrigtsen, Stefan Kangas
Hi Dmitry,
Once again, many thanks for the feedback. I'm still not certain I
agree about the risks involved in creating a new "thing" type, as it
really only appears in a small number of commands and then only in TeX
buffers, and generally I tried to design the code to keep out of the
way of anything outside of such buffers, but needless to say you see
further and more clearly than I can. I've been reviewing your comments
and my code, and have a few ideas and questions about how to go
forward. Though I haven't coded it yet, it's possible that the
simplest (and least intrusive) approach to follow would do something
like this:
1. Get rid of the new texsymbol "thing" and just use a buffer-local
value of find-tag-default-function and a rather more thoroughly
modified syntax table to control what "symbol" means, but _only_ in
the context of commands that use find-tag-default-function. I think
I'd lose the ability to change the behavior of
isearch-forward-thing-at-point and project-find-regexp, as I can't see
how to temporarily modify the syntax table there, though perhaps I'm
missing something.
2. Simply eliminate the TeX escape character entirely, both from tag
names in a TAGS file and from any thing-at-point in a TeX buffer. I
think this would eliminate the need to distinguish among the various
xref commands in terms of whether they can or can't handle the escape
character. It would also eliminate the need for the new user option in
etags.c, as there would no longer be any code to cope with the escape
character when finding a (thing-at-point 'symbol). This is slightly
less powerful than the default I proposed, but there are probably many
use cases where it won't matter at all (though it would for my own,
possibly eccentric, use case).
Does this sound to you like a plausible way forward?
I've tried to reach out to the AUCTeX developers to see what they
might want to do about setting the value of local variables there, and
anything they come up with should be doable.
Thanks again.
On Thu, 14 Sept 2023 at 00:59, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> On 13/09/2023 20:01, David Fussner via Bug reports for GNU Emacs, the
> Swiss army knife of text editors wrote:
>
> >> These won't be affected either way, right? Because project-find-regexp
> >> defaults its input to (thing-at-point 'symbol t), and isearch...
> >> probably also uses "symbol" if you ask it to.
> >>
> >> So... why not just make tex-thingatpt-include-escape a boolean? What
> >> commands need to be distinguished that way? I think 'find-tag' (it's
> >> obsolete but still used sometimes) would need to obey this var as well.
> >
> > xref-find-apropos and xref-find-references don't work well (or at all)
> > with the escape char included in the search string, so I was keeping
> > that char away from them. (The buffer-local variables I manipulate for
> > project-find-regexp and isearch-forward-thing-at-point have to do with
> > ensuring they use the texsymbol thing in the first place -- see
> > tex--symbol-or-texsymbol.) Does that make sense?
>
> Hmm, I suppose I skipped over that part of the patch too quickly.
>
> Here's a potential problem with replacing the notion of "symbol": some
> other existing code (also working with TeX/LaTeX) might disagree, as it
> might have some existing notion of what a "symbol" in those modes is (as
> defined by the syntax table).
>
> In general, we change the notion of a symbol by either changing the
> mode's syntax table, or by augmenting its effect using
> syntax-propertize-function (which, for example, could propertize the
> backslashes inside the buffer as "symbol constituent"). The latter might
> actually be a change that would affect how 'M-x xref-find-references'
> works (it will likely start to consider those \tags as symbol
> occurrences together with the backslash). But like other changes of what
> is considered to be a "symbol" in a major mode, it could conflict with
> existing code.
>
> Anyway, I'm not saying you have to change the approach, but that's
> something to be aware of.
>
> And to look at it from another direction: if the default implementation
> of xref-find-references (and etags uses the very generic one) doesn't
> work for you, perhaps it would be worth it to define a TeX-specific Xref
> backend. That would perhaps take 20-30 lines of code total, most of them
> delegating to the etags backend, or the default impl. But while
> delegating, you can modify the passed argument - e.g. if it included a
> backslash, you could forward it to the default impl for "find
> references" without a backslash. Or - alternatively - call
> (project-find-regexp "...") with a more complex regexp of your choice.
> The first alternative could look like this:
>
> (cl-defmethod xref-backend-references ((_backend (eql 'tex-etags))
> identifier)
> (xref-backend-references 'etags (string-remove-prefix "\\"
> identifier)))
>
> > I'll look at find-tag, too; thanks for pointing that out.
>
> Doing the above choice on the level of Xref backend's methods
> would/should automatically make it work for all commands appropriately.
>
> >> Why not set the variable find-tag-default-function instead? That seems
> >> easier and more appropriate to do inside a major mode function.
> >
> > I settled on putting the symbol on the modes because I thought it was
> > simpler than setting the variable buffer-locally in all the in-tree
> > and AUCTeX modes, but I'll revisit this and see whether I can come up
> > with something better.
>
> Do AUCTeX modes inherit from tex-mode? Or all call
> tex-common-initialization? Then you could set that variable locally
> inside that function once.
>
> All in all, it might not be wise to modify the behavior of third-party
> packages from inside Emacs this way (they might have other expectations,
> or there's going to appear a new major mode that needs the same
> treatment anyway).
>
> Setting a variable to be used through mode inheritance or delegation is
> fine, but if that doesn't help, I would probably stop at defining a
> helper function or two and documenting how it should be used. And then
> maybe work with AUCTeX people to get the remaining necessary changes in
> from their side (or just leaving that up to the user, depending on how
> functional the default config ends up being).
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-14 16:11 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-09-14 23:55 ` Dmitry Gutov
2023-09-15 6:47 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Dmitry Gutov @ 2023-09-14 23:55 UTC (permalink / raw)
To: David Fussner, Eli Zaretskii; +Cc: 53749, Lars Ingebrigtsen, Stefan Kangas
Hi David,
On 14/09/2023 19:11, David Fussner via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
> Once again, many thanks for the feedback. I'm still not certain I
> agree about the risks involved in creating a new "thing" type, as it
> really only appears in a small number of commands and then only in TeX
> buffers, and generally I tried to design the code to keep out of the
> way of anything outside of such buffers, but needless to say you see
> further and more clearly than I can. I've been reviewing your comments
> and my code, and have a few ideas and questions about how to go
> forward. Though I haven't coded it yet, it's possible that the
> simplest (and least intrusive) approach to follow would do something
> like this:
I agree that the risks are probably low, and my review stems from the
general approach that doing global modifications to the environment can
lead to problems. It might or might not happen in your case. If anything
happens, though, the same modifications tend to make it harder to
investigate, e.g. to find where a particular bit of behavior comes from.
So the more local an implementation of a feature can be, is generally
the better.
But I'm no maintainer of tex-mode, and whatever choices are made here
won't have effect outside of TeX, so if somebody wants to disagree with
me, they're more than welcome to.
> 1. Get rid of the new texsymbol "thing" and just use a buffer-local
> value of find-tag-default-function and a rather more thoroughly
> modified syntax table to control what "symbol" means, but _only_ in
> the context of commands that use find-tag-default-function. I think
> I'd lose the ability to change the behavior of
> isearch-forward-thing-at-point and project-find-regexp, as I can't see
> how to temporarily modify the syntax table there, though perhaps I'm
> missing something.
I'm suggesting this approach together with defining a "new" backend for
TeX. Quotes because while it's going to have its own name, it's mostly
going to perform forwarding to an existing backend (etags).
This should make it practical for you to treat identifiers in
xref-backend-definitions differently from that in
xref-backend-references and xref-backend-apropos.
If you define find-tag-default-function, you don't have to change the
syntax table too: it might be easier to search around with a regexp.
But for the new backend, you can also define the method
xref-backend-identifier-at-point, where you would invoke the necessary
bounds-of-thing logic. Then you won't need a change in
find-tag-default-function.
Either way, though, the major modes will need to set up
xref-backend-functions instead (with add-hook). This could also be done
in a minor mode, which you'd enable in any TeX-related major modes that
you use.
> 2. Simply eliminate the TeX escape character entirely, both from tag
> names in a TAGS file and from any thing-at-point in a TeX buffer. I
> think this would eliminate the need to distinguish among the various
> xref commands in terms of whether they can or can't handle the escape
> character. It would also eliminate the need for the new user option in
> etags.c, as there would no longer be any code to cope with the escape
> character when finding a (thing-at-point 'symbol). This is slightly
> less powerful than the default I proposed, but there are probably many
> use cases where it won't matter at all (though it would for my own,
> possibly eccentric, use case).
I wanted to ask whether including the backslash is important enough (it
should not matter too much for disambiguation), but I figured it must
be, otherwise you wouldn't go to all this effort.
If not, it would simplify things a lot, though.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-14 23:55 ` Dmitry Gutov
@ 2023-09-15 6:47 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-09-15 6:47 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: 53749, Eli Zaretskii, Lars Ingebrigtsen, Stefan Kangas
[-- Attachment #1: Type: text/plain, Size: 4134 bytes --]
Thanks Dmitry,
I'll make another stab at a "new" backend, as suggested. I'll have a look
at the escape char thing, too, and see how I feel about dropping it. It
shouldn't take 18 months this time!
Best,
David.
On Fri, 15 Sept 2023, 00:55 Dmitry Gutov, <dgutov@yandex.ru> wrote:
> Hi David,
>
> On 14/09/2023 19:11, David Fussner via Bug reports for GNU Emacs, the
> Swiss army knife of text editors wrote:
>
> > Once again, many thanks for the feedback. I'm still not certain I
> > agree about the risks involved in creating a new "thing" type, as it
> > really only appears in a small number of commands and then only in TeX
> > buffers, and generally I tried to design the code to keep out of the
> > way of anything outside of such buffers, but needless to say you see
> > further and more clearly than I can. I've been reviewing your comments
> > and my code, and have a few ideas and questions about how to go
> > forward. Though I haven't coded it yet, it's possible that the
> > simplest (and least intrusive) approach to follow would do something
> > like this:
>
> I agree that the risks are probably low, and my review stems from the
> general approach that doing global modifications to the environment can
> lead to problems. It might or might not happen in your case. If anything
> happens, though, the same modifications tend to make it harder to
> investigate, e.g. to find where a particular bit of behavior comes from.
> So the more local an implementation of a feature can be, is generally
> the better.
>
> But I'm no maintainer of tex-mode, and whatever choices are made here
> won't have effect outside of TeX, so if somebody wants to disagree with
> me, they're more than welcome to.
>
> > 1. Get rid of the new texsymbol "thing" and just use a buffer-local
> > value of find-tag-default-function and a rather more thoroughly
> > modified syntax table to control what "symbol" means, but _only_ in
> > the context of commands that use find-tag-default-function. I think
> > I'd lose the ability to change the behavior of
> > isearch-forward-thing-at-point and project-find-regexp, as I can't see
> > how to temporarily modify the syntax table there, though perhaps I'm
> > missing something.
>
> I'm suggesting this approach together with defining a "new" backend for
> TeX. Quotes because while it's going to have its own name, it's mostly
> going to perform forwarding to an existing backend (etags).
>
> This should make it practical for you to treat identifiers in
> xref-backend-definitions differently from that in
> xref-backend-references and xref-backend-apropos.
>
> If you define find-tag-default-function, you don't have to change the
> syntax table too: it might be easier to search around with a regexp.
>
> But for the new backend, you can also define the method
> xref-backend-identifier-at-point, where you would invoke the necessary
> bounds-of-thing logic. Then you won't need a change in
> find-tag-default-function.
>
> Either way, though, the major modes will need to set up
> xref-backend-functions instead (with add-hook). This could also be done
> in a minor mode, which you'd enable in any TeX-related major modes that
> you use.
>
> > 2. Simply eliminate the TeX escape character entirely, both from tag
> > names in a TAGS file and from any thing-at-point in a TeX buffer. I
> > think this would eliminate the need to distinguish among the various
> > xref commands in terms of whether they can or can't handle the escape
> > character. It would also eliminate the need for the new user option in
> > etags.c, as there would no longer be any code to cope with the escape
> > character when finding a (thing-at-point 'symbol). This is slightly
> > less powerful than the default I proposed, but there are probably many
> > use cases where it won't matter at all (though it would for my own,
> > possibly eccentric, use case).
>
> I wanted to ask whether including the backslash is important enough (it
> should not matter too much for disambiguation), but I figured it must
> be, otherwise you wouldn't go to all this effort.
>
> If not, it would simplify things a lot, though.
>
[-- Attachment #2: Type: text/html, Size: 5016 bytes --]
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-14 6:10 ` Eli Zaretskii
@ 2023-09-15 18:45 ` Tassilo Horn
2023-09-16 5:53 ` Ikumi Keita
0 siblings, 1 reply; 106+ messages in thread
From: Tassilo Horn @ 2023-09-15 18:45 UTC (permalink / raw)
To: Eli Zaretskii
Cc: 53749, Ikumi Keita, dfussner, stefankangas, Dmitry Gutov, larsi,
Stefan Monnier
Eli Zaretskii <eliz@gnu.org> writes:
Hi Eli & all, thanks for inviting me to the discussion. I'm adding
Keita, too, because he's currently the by far most active AUCTeX
developer.
>> Do AUCTeX modes inherit from tex-mode?
Not currently but in Keita's feature/fix-mode-names-overlap branch which
will probably become AUCTeX 14, I guess.
>> Or all call tex-common-initialization? Then you could set that
>> variable locally inside that function once.
Again, not right now but probably in the future.
>> All in all, it might not be wise to modify the behavior of
>> third-party packages from inside Emacs this way (they might have
>> other expectations, or there's going to appear a new major mode that
>> needs the same treatment anyway).
>>
>> Setting a variable to be used through mode inheritance or delegation
>> is fine, but if that doesn't help, I would probably stop at defining
>> a helper function or two and documenting how it should be used. And
>> then maybe work with AUCTeX people to get the remaining necessary
>> changes in from their side (or just leaving that up to the user,
>> depending on how functional the default config ends up being).
That sounds reasonable.
Bye,
Tassilo
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-15 18:45 ` Tassilo Horn
@ 2023-09-16 5:53 ` Ikumi Keita
2023-09-17 8:49 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Ikumi Keita @ 2023-09-16 5:53 UTC (permalink / raw)
To: Tassilo Horn
Cc: 53749, dfussner, Stefan Monnier, Dmitry Gutov, larsi,
Eli Zaretskii, stefankangas
Hi all,
>>>>> Tassilo Horn <tsdh@gnu.org> writes:
>>> Do AUCTeX modes inherit from tex-mode?
> Not currently but in Keita's feature/fix-mode-names-overlap branch
Currently, no. In feater/fix-mode-names-overlap branch, the major mode
iheritance relations are:
text-mode --+-- TeX-mode
+-- Texinfo-mode
TeX-mode --+-- plain-TeX-mode
+-- LaTeX-mode
+-- ConTeXt-mode
plain-TeX-mode --+-- AmSTeX-mode
+-- japanese-plain-TeX-mode
LaTeX-mode --+-- docTeX-mode
+-- japanese-LaTeX-mode
(There are ConTeXt-en-mode and ConTeXt-nl-mode as well, but my current
personal plain is to delete them.)
I don't think it's a good idea to inherit from tex-mode; it isn't
diffcult to change the "top" mode from text-mode with tex-mode, but in
that case LaTeX-mode can't have both built-in latex-mode and TeX-mode as
its parent mode.
(Maybe an exception is Texinfo-mode. It would make sense to have
built-in texinfo-mode as parent of Texinfo-mode. If there is a good
reason to do so, I won't object strongly.)
> which will probably become AUCTeX 14, I guess.
I hope so. :-)
>>> Or all call tex-common-initialization? Then you could set that
>>> variable locally inside that function once.
> Again, not right now but probably in the future.
Currently, they don't call tex-common-initialization, but we can do so
in TeX-mode. (But I haven't consider its pros and cons deeply yet.)
Best regards,
Ikumi Keita
#StandWithUkraine #StopWarInUkraine
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-16 5:53 ` Ikumi Keita
@ 2023-09-17 8:49 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 13:06 ` Arash Esbati
0 siblings, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-09-17 8:49 UTC (permalink / raw)
To: Ikumi Keita
Cc: 53749, Tassilo Horn, Stefan Monnier, Dmitry Gutov, larsi,
Eli Zaretskii, stefankangas
Hi Tassilo and Keita,
Thanks for the clarifications. If you look at the current patch to
tex-mode.el, there's one function call added to TeX-mode-hook, mainly
for my own testing purposes, but no matter what the final patch looks
like it should only similarly require a single function call in an
AUCTeX hook to activate the new xref code there, along with one in
tex-common-initialization for the in-tree modes. If and when all
parties are satisfied by the patch I'll certainly be in touch with you
to find out how you'd prefer to handle activating it (or not) in
AUCTeX. The current state of affairs is a convenience for me and for
anyone else who cares to test the code.
Thanks again,
David.
On Sat, 16 Sept 2023 at 06:53, Ikumi Keita <ikumi@ikumi.que.jp> wrote:
>
> Hi all,
>
> >>>>> Tassilo Horn <tsdh@gnu.org> writes:
> >>> Do AUCTeX modes inherit from tex-mode?
>
> > Not currently but in Keita's feature/fix-mode-names-overlap branch
>
> Currently, no. In feater/fix-mode-names-overlap branch, the major mode
> iheritance relations are:
>
> text-mode --+-- TeX-mode
> +-- Texinfo-mode
>
> TeX-mode --+-- plain-TeX-mode
> +-- LaTeX-mode
> +-- ConTeXt-mode
>
> plain-TeX-mode --+-- AmSTeX-mode
> +-- japanese-plain-TeX-mode
>
> LaTeX-mode --+-- docTeX-mode
> +-- japanese-LaTeX-mode
>
> (There are ConTeXt-en-mode and ConTeXt-nl-mode as well, but my current
> personal plain is to delete them.)
>
> I don't think it's a good idea to inherit from tex-mode; it isn't
> diffcult to change the "top" mode from text-mode with tex-mode, but in
> that case LaTeX-mode can't have both built-in latex-mode and TeX-mode as
> its parent mode.
>
> (Maybe an exception is Texinfo-mode. It would make sense to have
> built-in texinfo-mode as parent of Texinfo-mode. If there is a good
> reason to do so, I won't object strongly.)
>
> > which will probably become AUCTeX 14, I guess.
>
> I hope so. :-)
>
> >>> Or all call tex-common-initialization? Then you could set that
> >>> variable locally inside that function once.
>
> > Again, not right now but probably in the future.
>
> Currently, they don't call tex-common-initialization, but we can do so
> in TeX-mode. (But I haven't consider its pros and cons deeply yet.)
>
> Best regards,
> Ikumi Keita
> #StandWithUkraine #StopWarInUkraine
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2023-09-17 8:49 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-04-22 13:06 ` Arash Esbati
2024-04-22 14:56 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-29 14:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 2 replies; 106+ messages in thread
From: Arash Esbati @ 2024-04-22 13:06 UTC (permalink / raw)
To: David Fussner
Cc: 53749, Ikumi Keita, Dmitry Gutov, Stefan Monnier, Tassilo Horn,
Eli Zaretskii, stefankangas
David Fussner <dfussner@googlemail.com> writes:
> Thanks for the clarifications. If you look at the current patch to
> tex-mode.el, there's one function call added to TeX-mode-hook, mainly
> for my own testing purposes, but no matter what the final patch looks
> like it should only similarly require a single function call in an
> AUCTeX hook to activate the new xref code there, along with one in
> tex-common-initialization for the in-tree modes. If and when all
> parties are satisfied by the patch I'll certainly be in touch with you
> to find out how you'd prefer to handle activating it (or not) in
> AUCTeX. The current state of affairs is a convenience for me and for
> anyone else who cares to test the code.
Hi David,
I justed wanted to come back on this report and ask if there is any
progress? It would be nice to get Xref working within TeX buffers.
TIA. Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-22 13:06 ` Arash Esbati
@ 2024-04-22 14:56 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 16:15 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-23 12:04 ` Arash Esbati
2024-04-29 14:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 2 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-04-22 14:56 UTC (permalink / raw)
To: Arash Esbati
Cc: 53749, Ikumi Keita, Dmitry Gutov, Stefan Monnier, Tassilo Horn,
Eli Zaretskii, stefankangas
Hi Arash,
Thanks for the nudge. I am in fact in the final stages of preparing a
new patch to get xref working in TeX buffers. As usual, the main
complexities are in xref-find-references, and while I have you here I
wonder whether I could ask your thoughts about addressing one part of
this complexity.
The semantic/symref backend used by xref-find-references greps in
files matching the major-mode of the buffer where the user calls the
command. It looks in semantic-symref-filepattern-alist for
file-extensions matching the major-mode, and if that fails it looks in
auto-mode-alist. When both fail to produce any file extensions it
tells the user to customize semantic-symref-filepattern-alist. Also,
if it finds things in s-s-f-a, it doesn't go on to auto-mode-alist, so
s-s-f-a has to be complete in order to be useful. In effect, we need
s-s-f-a to hold all the extensions for all the modes that can appear
as values of major-mode, and I notice that AUCTeX has started to
populate that alist, though incompletely. I'm also aware that many
packages add their own extensions to files which are basically TeX or
LaTeX files, and I wonder whether we can really keep up with the whole
of CTAN in terms of providing complete lists of extensions for
s-s-f-a.
As an example of where we are, if you open a plain-tex-mode (or
plain-TeX-mode) file and M-? with point on some standard word you'll
currently get the message to customize s-s-f-a, because
auto-mode-alist has only tex-mode and s-s-f-a doesn't cover them,
either.
I ask you Arash, therefore, as an AUCTeX and emacs developer, and I
ask any other developers also, whether you'd prefer me just to put
together as complete a list as possible for addition to s-s-f-a --
with patches for AUCTeX for all the new modes there -- or, and this is
what I'm finishing up now, whether you'd consider it overkill to have
code that constructs (or modifies) entries in s-s-f-a by searching in
auto-mode-alist and in the buffer-list for all the file extensions
emacs knows about that relate to the current major-mode. Changes in
s-s-f-a wouldn't be persistent across sessions, but they would allow a
user to open a file with any file extension, run latex-mode, and M-?
would work in that buffer, and search that buffer from another buffer
with a related major-mode, all without needing any user intervention.
It would also allow customizations in auto-mode-alist to appear in
s-s-f-a automatically, which seems convenient to me.
If your answer is "show me the code", I'll do that shortly, but I
wondered whether anyone had any preliminary thoughts on the matter.
Best, and sorry for the long question,
David.
On Mon, 22 Apr 2024 at 14:06, Arash Esbati <arash@gnu.org> wrote:
>
> David Fussner <dfussner@googlemail.com> writes:
>
> > Thanks for the clarifications. If you look at the current patch to
> > tex-mode.el, there's one function call added to TeX-mode-hook, mainly
> > for my own testing purposes, but no matter what the final patch looks
> > like it should only similarly require a single function call in an
> > AUCTeX hook to activate the new xref code there, along with one in
> > tex-common-initialization for the in-tree modes. If and when all
> > parties are satisfied by the patch I'll certainly be in touch with you
> > to find out how you'd prefer to handle activating it (or not) in
> > AUCTeX. The current state of affairs is a convenience for me and for
> > anyone else who cares to test the code.
>
> Hi David,
>
> I justed wanted to come back on this report and ask if there is any
> progress? It would be nice to get Xref working within TeX buffers.
>
> TIA. Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-22 14:56 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-04-22 16:15 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 16:37 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-23 12:04 ` Arash Esbati
1 sibling, 1 reply; 106+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-04-22 16:15 UTC (permalink / raw)
To: David Fussner
Cc: 53749, Ikumi Keita, Dmitry Gutov, Arash Esbati, stefankangas,
Tassilo Horn, Eli Zaretskii
> auto-mode-alist. When both fail to produce any file extensions it
> tells the user to customize semantic-symref-filepattern-alist.
Yes, this is not ideal.
I think ideally we'd build a regexp from `auto-mode-alist` and
`major-mode-remap-alist/defaults`, tho it may require additional info.
E.g. we may need to complement that with additional "related modes"
(e.g. html modes may want to mention `php-mode` as "related").
Stefan
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-22 16:15 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-04-22 16:37 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 17:16 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-04-22 16:37 UTC (permalink / raw)
To: Stefan Monnier
Cc: 53749, Ikumi Keita, Dmitry Gutov, Arash Esbati, stefankangas,
Tassilo Horn, Eli Zaretskii
Thank you, Stefan -- I didn't know about
major-mode-remap-alist/defaults. Do you think TeX and friends are
handled by emacs distinctively enough to warrant keeping some
specialist extension-handling code in tex-mode.el, or do you think
some changes should be more generally available, in grep.el, say? (I'm
wondering whether it might be useful, for example, for
semantic-symref-derive-find-filepatterns to add extensions from
auto-mode-alist even when some extensions are found in
semantic-symref-filepattern-alist.)
David.
On Mon, 22 Apr 2024 at 17:15, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
>
> > auto-mode-alist. When both fail to produce any file extensions it
> > tells the user to customize semantic-symref-filepattern-alist.
>
> Yes, this is not ideal.
>
> I think ideally we'd build a regexp from `auto-mode-alist` and
> `major-mode-remap-alist/defaults`, tho it may require additional info.
>
> E.g. we may need to complement that with additional "related modes"
> (e.g. html modes may want to mention `php-mode` as "related").
>
>
> Stefan
>
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-22 16:37 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-04-22 17:16 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 17:25 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-24 0:09 ` Dmitry Gutov
0 siblings, 2 replies; 106+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-04-22 17:16 UTC (permalink / raw)
To: David Fussner
Cc: 53749, Ikumi Keita, Dmitry Gutov, Arash Esbati, stefankangas,
Tassilo Horn, Eli Zaretskii
> (I'm wondering whether it might be useful, for example, for
> semantic-symref-derive-find-filepatterns to add extensions from
> auto-mode-alist even when some extensions are found in
> semantic-symref-filepattern-alist.)
Assuming we can get good enough results from `auto-mode-alist and
friends, I think we'd want to mark `semantic-symref-filepattern-alist`
as obsolete.
But before that, we need to check the assumption.
In the short term, for AUCTeX the only workable option seems to be to
add entries to `semantic-symref-filepattern-alist`.
Stefan
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-22 17:16 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-04-22 17:25 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-24 0:09 ` Dmitry Gutov
1 sibling, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-04-22 17:25 UTC (permalink / raw)
To: Stefan Monnier
Cc: 53749, Ikumi Keita, Dmitry Gutov, Arash Esbati, Stefan Kangas,
Tassilo Horn, Eli Zaretskii
[-- Attachment #1: Type: text/plain, Size: 797 bytes --]
Thank you. I hope one or two others might join in, but I'll have some code
to look over in a few days, in any case.
David.
On Mon, 22 Apr 2024, 18:16 Stefan Monnier, <monnier@iro.umontreal.ca> wrote:
> > (I'm wondering whether it might be useful, for example, for
> > semantic-symref-derive-find-filepatterns to add extensions from
> > auto-mode-alist even when some extensions are found in
> > semantic-symref-filepattern-alist.)
>
> Assuming we can get good enough results from `auto-mode-alist and
> friends, I think we'd want to mark `semantic-symref-filepattern-alist`
> as obsolete.
> But before that, we need to check the assumption.
>
> In the short term, for AUCTeX the only workable option seems to be to
> add entries to `semantic-symref-filepattern-alist`.
>
>
> Stefan
>
>
[-- Attachment #2: Type: text/html, Size: 1192 bytes --]
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-22 14:56 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 16:15 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-04-23 12:04 ` Arash Esbati
2024-04-23 13:21 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 1 reply; 106+ messages in thread
From: Arash Esbati @ 2024-04-23 12:04 UTC (permalink / raw)
To: David Fussner
Cc: 53749, Ikumi Keita, Dmitry Gutov, Stefan Monnier, Tassilo Horn,
Eli Zaretskii, stefankangas
David Fussner <dfussner@googlemail.com> writes:
> Thanks for the nudge. I am in fact in the final stages of preparing a
> new patch to get xref working in TeX buffers.
Thanks for the update.
> The semantic/symref backend used by xref-find-references greps in
> files matching the major-mode of the buffer where the user calls the
> command. It looks in semantic-symref-filepattern-alist for
> file-extensions matching the major-mode, and if that fails it looks in
> auto-mode-alist. When both fail to produce any file extensions it
> tells the user to customize semantic-symref-filepattern-alist. Also,
> if it finds things in s-s-f-a, it doesn't go on to auto-mode-alist, so
> s-s-f-a has to be complete in order to be useful. In effect, we need
> s-s-f-a to hold all the extensions for all the modes that can appear
> as values of major-mode, and I notice that AUCTeX has started to
> populate that alist, though incompletely.
I'm not familiar with the way xref works, but reading the above, xref
doesn't care about modes set per file variables, is this correct?
> I'm also aware that many packages add their own extensions to files
> which are basically TeX or LaTeX files, and I wonder whether we can
> really keep up with the whole of CTAN in terms of providing complete
> lists of extensions for s-s-f-a.
I think this is almost impossible. Besides the effort, take for example
the .cnf extension which is used by other programs as well, so
associating it with LaTeX-mode wouldn't make sense, IMO. Finally, I
think many packages are written in .dtx format and the ones with many
files with different extensions (.def, .enc, .fd, ...) usually extract
them from the .dtx via an .ins file, so the edited source is inside the
.dtx, and we don't need to care about these extensions.
> As an example of where we are, if you open a plain-tex-mode (or
> plain-TeX-mode) file and M-? with point on some standard word you'll
> currently get the message to customize s-s-f-a, because
> auto-mode-alist has only tex-mode and s-s-f-a doesn't cover them,
> either.
This is possibly the next mess since .tex can be plain-TeX, ConTeXt,
LaTeX ... So in general, I second what Stefan M. wrote in his other
message, but respecting/using file local variables could help here (if
it doesn't work ATM, see above), e.g.:
--8<---------------cut here---------------start------------->8---
\beginsection 1. Introduction.
This is the start of the introduction.
\bye
%%% Local Variables:
%%% mode: plain-TeX
%%% TeX-master: t
%%% End:
--8<---------------cut here---------------end--------------->8---
HTH. Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-23 12:04 ` Arash Esbati
@ 2024-04-23 13:21 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-04-23 13:21 UTC (permalink / raw)
To: Arash Esbati
Cc: 53749, Ikumi Keita, Dmitry Gutov, Stefan Monnier, Tassilo Horn,
Eli Zaretskii, stefankangas
Thanks for the reply, Arash.
> I'm not familiar with the way xref works, but reading the above, xref
> doesn't care about modes set per file variables, is this correct?
As far as I know, the default xref-find-references deals strictly in
file extensions.
> I think this is almost impossible. Besides the effort, take for example
> the .cnf extension which is used by other programs as well, so
> associating it with LaTeX-mode wouldn't make sense, IMO.
Agreed -- this may be an argument against my current approach. I hope,
however, that the way xref-find-references searches by directory or by
project should limit spurious searching when a more common extension
appears on a TeX file.
> This is possibly the next mess since .tex can be plain-TeX, ConTeXt,
> LaTeX ...
I guess currently I'm thinking that this is sort of a feature, as
searching for symbols in files/buffers from many closely-related modes
may produce useful matches. The code I'm finishing up tends to search
more files rather than fewer, but it should be possible to prune this
if it's deemed too messy.
> So in general, I second what Stefan M. wrote in his other
> message, but respecting/using file local variables could help here.
Currently, the code takes into account file-local variables only by
including in the search list extensions of TeX-related buffers, which
may well only have become TeX-related due to such variables.
I'll post a patch as soon as I solve an outstanding issue or two, and
we'll see where we are.
Thank you indeed for your help,
David.
On Tue, 23 Apr 2024 at 13:04, Arash Esbati <arash@gnu.org> wrote:
>
> David Fussner <dfussner@googlemail.com> writes:
>
> > Thanks for the nudge. I am in fact in the final stages of preparing a
> > new patch to get xref working in TeX buffers.
>
> Thanks for the update.
>
> > The semantic/symref backend used by xref-find-references greps in
> > files matching the major-mode of the buffer where the user calls the
> > command. It looks in semantic-symref-filepattern-alist for
> > file-extensions matching the major-mode, and if that fails it looks in
> > auto-mode-alist. When both fail to produce any file extensions it
> > tells the user to customize semantic-symref-filepattern-alist. Also,
> > if it finds things in s-s-f-a, it doesn't go on to auto-mode-alist, so
> > s-s-f-a has to be complete in order to be useful. In effect, we need
> > s-s-f-a to hold all the extensions for all the modes that can appear
> > as values of major-mode, and I notice that AUCTeX has started to
> > populate that alist, though incompletely.
>
> I'm not familiar with the way xref works, but reading the above, xref
> doesn't care about modes set per file variables, is this correct?
>
> > I'm also aware that many packages add their own extensions to files
> > which are basically TeX or LaTeX files, and I wonder whether we can
> > really keep up with the whole of CTAN in terms of providing complete
> > lists of extensions for s-s-f-a.
>
> I think this is almost impossible. Besides the effort, take for example
> the .cnf extension which is used by other programs as well, so
> associating it with LaTeX-mode wouldn't make sense, IMO. Finally, I
> think many packages are written in .dtx format and the ones with many
> files with different extensions (.def, .enc, .fd, ...) usually extract
> them from the .dtx via an .ins file, so the edited source is inside the
> .dtx, and we don't need to care about these extensions.
>
> > As an example of where we are, if you open a plain-tex-mode (or
> > plain-TeX-mode) file and M-? with point on some standard word you'll
> > currently get the message to customize s-s-f-a, because
> > auto-mode-alist has only tex-mode and s-s-f-a doesn't cover them,
> > either.
>
> This is possibly the next mess since .tex can be plain-TeX, ConTeXt,
> LaTeX ... So in general, I second what Stefan M. wrote in his other
> message, but respecting/using file local variables could help here (if
> it doesn't work ATM, see above), e.g.:
>
> --8<---------------cut here---------------start------------->8---
> \beginsection 1. Introduction.
> This is the start of the introduction.
> \bye
>
> %%% Local Variables:
> %%% mode: plain-TeX
> %%% TeX-master: t
> %%% End:
> --8<---------------cut here---------------end--------------->8---
>
> HTH. Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-22 17:16 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 17:25 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-04-24 0:09 ` Dmitry Gutov
2024-04-24 9:02 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 1 reply; 106+ messages in thread
From: Dmitry Gutov @ 2024-04-24 0:09 UTC (permalink / raw)
To: Stefan Monnier, David Fussner
Cc: 53749, Ikumi Keita, Arash Esbati, stefankangas, Tassilo Horn,
Eli Zaretskii
On 22/04/2024 20:16, Stefan Monnier via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
>> (I'm wondering whether it might be useful, for example, for
>> semantic-symref-derive-find-filepatterns to add extensions from
>> auto-mode-alist even when some extensions are found in
>> semantic-symref-filepattern-alist.)
> Assuming we can get good enough results from `auto-mode-alist and
> friends, I think we'd want to mark `semantic-symref-filepattern-alist`
> as obsolete.
> But before that, we need to check the assumption.
Last I checked, semantic-symref-filepattern-alist had explicit entries
only for languages whose auto-mode-alist entries were deemed too complex
to parse out the matching extensions from the corresponding regexps.
Or had other difficulties like the c-or-c++-mode dispatcher.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-24 0:09 ` Dmitry Gutov
@ 2024-04-24 9:02 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-04-24 9:02 UTC (permalink / raw)
To: Dmitry Gutov
Cc: 53749, Ikumi Keita, Arash Esbati, stefankangas, Tassilo Horn,
Eli Zaretskii, Stefan Monnier
Thanks, Dmitry.
> Last I checked, semantic-symref-filepattern-alist had explicit entries
> only for languages whose auto-mode-alist entries were deemed too complex
> to parse out the matching extensions from the corresponding regexps.
>
> Or had other difficulties like the c-or-c++-mode dispatcher.
That makes sense, and clarifies a few things for me. I guess TeX has
the "plain-tex or latex or context or ams-tex" dispatcher and also
in-tree vs. AUCTeX mode names, both of which at least for the moment
make semantic-symref-filepattern-alist seem a better fit.
Best,
David.
On Wed, 24 Apr 2024 at 01:09, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> On 22/04/2024 20:16, Stefan Monnier via Bug reports for GNU Emacs, the
> Swiss army knife of text editors wrote:
> >> (I'm wondering whether it might be useful, for example, for
> >> semantic-symref-derive-find-filepatterns to add extensions from
> >> auto-mode-alist even when some extensions are found in
> >> semantic-symref-filepattern-alist.)
> > Assuming we can get good enough results from `auto-mode-alist and
> > friends, I think we'd want to mark `semantic-symref-filepattern-alist`
> > as obsolete.
> > But before that, we need to check the assumption.
>
> Last I checked, semantic-symref-filepattern-alist had explicit entries
> only for languages whose auto-mode-alist entries were deemed too complex
> to parse out the matching extensions from the corresponding regexps.
>
> Or had other difficulties like the c-or-c++-mode dispatcher.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-22 13:06 ` Arash Esbati
2024-04-22 14:56 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-04-29 14:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-02 0:43 ` Dmitry Gutov
` (2 more replies)
1 sibling, 3 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-04-29 14:15 UTC (permalink / raw)
To: Arash Esbati
Cc: 53749, Ikumi Keita, Dmitry Gutov, Stefan Monnier, Tassilo Horn,
Eli Zaretskii, stefankangas
[-- Attachment #1: Type: text/plain, Size: 2615 bytes --]
Hi Dmitry and Arash,
Here's my third attempt at a working xref backend for TeX. I'll try
quickly to summarize what's in it:
1. I've modified etags so that it creates findable tags for as many
different sorts of TeX construct as possible, including those written
in the new expl3 syntax. I've now removed the escape character from
the tag names, as this simplifies code all around.
2. 4 of the 6 xref backend functions just call the etags backend.
3. xref-backend-identifier-at-point is modified to provide new regexps
for delineating TeX symbols, and there's also code to cope with expl3
constructs slightly differently in M-? than in the other two main xref
commands.
4. xref-backend-references is a wrapper for the standard backend, the
wrapper doing two things: first, it tries to accumulate as many file
extensions for the current major-mode as emacs knows about, and second
it creates a bespoke syntax-propertize-function for strings that
aren't entirely composed of symbol or word characters. It applies this
function to file-visiting buffers and lets xref apply it in the
*xref-temp buffer, though I had to add a one-liner in xref.el to fix
what I believe is a minor bug there preventing syntax-propertize from
doing its work when the temp buffer holds text from a new file. (I can
provide a recipe for this if you want.)
5. Slightly unrelatedly, I've added new syntax-propertize-rules to
latex-mode so that expl3 constructs with the underscore aren't
fontified as subscripts, which makes such code unreadable. I'm happy
to split this off as another patch.
All comments gratefully received, and thanks,
David.
On Mon, 22 Apr 2024 at 14:06, Arash Esbati <arash@gnu.org> wrote:
>
> David Fussner <dfussner@googlemail.com> writes:
>
> > Thanks for the clarifications. If you look at the current patch to
> > tex-mode.el, there's one function call added to TeX-mode-hook, mainly
> > for my own testing purposes, but no matter what the final patch looks
> > like it should only similarly require a single function call in an
> > AUCTeX hook to activate the new xref code there, along with one in
> > tex-common-initialization for the in-tree modes. If and when all
> > parties are satisfied by the patch I'll certainly be in touch with you
> > to find out how you'd prefer to handle activating it (or not) in
> > AUCTeX. The current state of affairs is a convenience for me and for
> > anyone else who cares to test the code.
>
> Hi David,
>
> I justed wanted to come back on this report and ask if there is any
> progress? It would be nice to get Xref working within TeX buffers.
>
> TIA. Best, Arash
[-- Attachment #2: 0001-Provide-a-modified-xref-backend-for-TeX-buffers.patch --]
[-- Type: text/x-patch, Size: 30939 bytes --]
From 64a4f7c7b89b4475a3841b54288c25bcc4ebde3d Mon Sep 17 00:00:00 2001
From: David Fussner <dfussner@googlemail.com>
Date: Mon, 29 Apr 2024 15:05:03 +0100
Subject: [PATCH] Provide a modified xref backend for TeX buffers
* lib-src/etags.c (TeX_commands): Improve parsing of commands in TeX
buffers.
(TEX_defenv): Expand list of commands to tag by default in TeX
buffers.
(TeX_help):
* doc/emacs/maintaining.texi (Tag Syntax): Document new tagged
commands.
(Identifier Search): Add note about semantic-symref-filepattern-alist,
auto-mode-alist, and xref-find-references.
* lisp/progmodes/xref.el (xref--collect-matches): Ensure
syntax-propertize actually runs in the *xref-temp buffer for each
new file searched.
* lisp/textmodes/tex-mode.el (tex-font-lock-suscript): Disable
subscript face in expl3 constructs.
(latex-syntax-propertize-rules): Add two new rules to give symbol
syntax to the standard components of expl3 constructs.
(tex-common-initialization): Set up xref backend for in-tree TeX
modes.
(tex--thing-at-point, tex-thingatpt--beginning-of-symbol)
(tex-thingatpt--end-of-symbol, tex--bounds-of-symbol-at-point):
New functions to return 'thing-at-point' for xref backend.
(tex-esc-and-group-chars): New var to do the same.
(xref-backend-identifier-at-point): New TeX backend method to provide
symbols for processing by xref.
(xref-backend-identifier-completion-table)
(xref-backend-identifier-completion-ignore-case)
(xref-backend-definitions, xref-backend-apropos): Placeholders to
call the standard 'etags' xref backend methods.
(xref-backend-references): Wrapper to call the default xref backend
method, finding as many relevant files as possible and using a bespoke
syntax-propertize-function.
(tex--collect-file-extensions, tex-xref-syntax-function): Helper
function and macro for previous.
(tex-find-references-syntax-table, tex--buffers-list)
(tex--last-ref-syntax-flag, tex--old-syntax-function): New vars for
same.
---
doc/emacs/maintaining.texi | 34 +++-
lib-src/etags.c | 183 ++++++++++++++++++--
lisp/progmodes/xref.el | 1 +
lisp/textmodes/tex-mode.el | 336 ++++++++++++++++++++++++++++++++++++-
4 files changed, 537 insertions(+), 17 deletions(-)
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 579098c81b1..2fbb964a7a0 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -2529,6 +2529,15 @@ Identifier Search
referenced. The XREF mode commands are available in this buffer, see
@ref{Xref Commands}.
+When invoked in a buffer whose major mode uses the @code{etags} backend,
+@kbd{M-?} searches files and buffers whose major mode matches that of
+the original buffer. It guesses that mode from file extensions, so if
+@kbd{M-?} seems to be skipping relevant buffers or files, try
+customizing either the variable @code{semantic-symref-filepattern-alist}
+(if your buffer's major mode already has an entry in it), or
+@code{auto-mode-alist} (if not), thereby informing @code{xref} of the
+missing extensions (@pxref{Choosing Modes}).
+
@vindex xref-auto-jump-to-first-xref
If the value of the variable @code{xref-auto-jump-to-first-xref} is
@code{t}, @code{xref-find-references} automatically jumps to the first
@@ -2749,8 +2758,29 @@ Tag Syntax
@code{\section}, @code{\subsection}, @code{\subsubsection},
@code{\eqno}, @code{\label}, @code{\ref}, @code{\cite},
@code{\bibitem}, @code{\part}, @code{\appendix}, @code{\entry},
-@code{\index}, @code{\def}, @code{\newcommand}, @code{\renewcommand},
-@code{\newenvironment} and @code{\renewenvironment} are tags.
+@code{\index}, @code{\def}, @code{\edef}, @code{\gdef}, @code{\xdef},
+@code{\newcommand}, @code{\renewcommand}, @code{\newenvironment},
+@code{\renewenvironment}, @code{\DeclareRobustCommand},
+@code{\newrobustcmd}, @code{\renewrobustcmd}, @code{\providecommand},
+@code{\providerobustcmd}, @code{\NewDocumentCommand},
+@code{\RenewDocumentCommand}, @code{\ProvideDocumentCommand},
+@code{\DeclareDocumentCommand}, @code{\NewExpandableDocumentCommand},
+@code{\RenewExpandableDocumentCommand},
+@code{\ProvideExpandableDocumentCommand},
+@code{\DeclareExpandableDocumentCommand},
+@code{\NewDocumentEnvironment}, @code{\RenewDocumentEnvironment},
+@code{\ProvideDocumentEnvironment},
+@code{\DeclareDocumentEnvironment}, @code{\csdef}, @code{\csedef},
+@code{\csgdef}, @code{\csxdef}, @code{\csletcs}, @code{\cslet},
+@code{\letcs}, @code{\let}, \@code{\cs_new_protected_nopar},
+@code{\cs_new_protected}, @code{\cs_new_nopar}, @code{\cs_new_eq},
+@code{\cs_new}, @code{\cs_set_protected_nopar},
+@code{\cs_set_protected}, @code{\cs_set_nopar}, @code{\cs_set_eq},
+@code{\cs_set}, @code{\cs_gset_protected_nopar},
+@code{\cs_gset_protected}, @code{\cs_gset_nopar}, @code{\cs_gset_eq},
+@code{\cs_gset}, @code{\cs_generate_from_arg_count}, and
+@code{\cs_generate_variant} are tags. So too are the arguments of any
+starred variants of these commands.
Other commands can make tags as well, if you specify them in the
environment variable @env{TEXTAGS} before invoking @command{etags}. The
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 032cfa8010b..8b79e92abf1 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -792,8 +792,24 @@ #define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
"In LaTeX text, the argument of any of the commands '\\chapter',\n\
'\\section', '\\subsection', '\\subsubsection', '\\eqno', '\\label',\n\
'\\ref', '\\cite', '\\bibitem', '\\part', '\\appendix', '\\entry',\n\
-'\\index', '\\def', '\\newcommand', '\\renewcommand',\n\
-'\\newenvironment' or '\\renewenvironment' is a tag.\n\
+'\\index', '\\def', '\\edef', '\\gdef', '\\xdef', '\\newcommand',\n\
+'\\renewcommand', '\\newenvironment', '\\renewenvironment',\n\
+'\\DeclareRobustCommand', '\\newrobustcmd', '\\renewrobustcmd',\n\
+'\\providecommand', '\\providerobustcmd', '\\NewDocumentCommand',\n\
+'\\RenewDocumentCommand', '\\ProvideDocumentCommand',\n\
+'\\DeclareDocumentCommand', '\\NewExpandableDocumentCommand',\n\
+'\\RenewExpandableDocumentCommand', '\\ProvideExpandableDocumentCommand',\n\
+'\\DeclareExpandableDocumentCommand', '\\NewDocumentEnvironment',\n\
+'\\RenewDocumentEnvironment', '\\ProvideDocumentEnvironment',\n\
+'\\DeclareDocumentEnvironment','\\csdef', '\\csedef', '\\csgdef',\n\
+'\\csxdef', '\\csletcs', '\\cslet', '\\letcs', '\\let',\n\
+'\\cs_new_protected_nopar', '\\cs_new_protected', '\\cs_new_nopar',\n\
+'\\cs_new_eq', '\\cs_new', '\\cs_set_protected_nopar',\n\
+'\\cs_set_protected', '\\cs_set_nopar', '\\cs_set_eq', '\\cs_set',\n\
+'\\cs_gset_protected_nopar', '\\cs_gset_protected', '\\cs_gset_nopar',\n\
+'\\cs_gset_eq', '\\cs_gset', '\\cs_generate_from_arg_count', or\n\
+'\\cs_generate_variant' is a tag. So is the argument of any starred\n\
+variant of these commands.\n\
\n\
Other commands can be specified by setting the environment variable\n\
'TEXTAGS' to a colon-separated list like, for example,\n\
@@ -5736,11 +5752,25 @@ Scheme_functions (FILE *inf)
static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */
/* Default set of control sequences to put into TEX_toktab.
- The value of environment var TEXTAGS is prepended to this. */
+ The value of environment var TEXTAGS is prepended to this.
+ (2024) Add variants of '\def', some additional LaTeX (and
+ former xparse) commands, common variants from the
+ 'etoolbox' package, and the main expl3 commands. */
static const char *TEX_defenv = "\
-:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
-:part:appendix:entry:index:def\
-:newcommand:renewcommand:newenvironment:renewenvironment";
+:label:ref:chapter:section:subsection:subsubsection:eqno:cite:bibitem\
+:part:appendix:entry:index:def:edef:gdef:xdef:newcommand:renewcommand\
+:newenvironment:renewenvironment:DeclareRobustCommand:renewrobustcmd\
+:newrobustcmd:providecommand:providerobustcmd:NewDocumentCommand\
+:RenewDocumentCommand:ProvideDocumentCommand:DeclareDocumentCommand\
+:NewExpandableDocumentCommand:RenewExpandableDocumentCommand\
+:ProvideExpandableDocumentCommand:DeclareExpandableDocumentCommand\
+:NewDocumentEnvironment:RenewDocumentEnvironment\
+:ProvideDocumentEnvironment:DeclareDocumentEnvironment:csdef\
+:csedef:csgdef:csxdef:csletcs:cslet:letcs:let:cs_new_protected_nopar\
+:cs_new_protected:cs_new_nopar:cs_new_eq:cs_new:cs_set_protected_nopar\
+:cs_set_protected:cs_set_nopar:cs_set_eq:cs_set:cs_gset_protected_nopar\
+:cs_gset_protected:cs_gset_nopar:cs_gset_eq:cs_gset\
+:cs_generate_from_arg_count:cs_generate_variant";
static void TEX_decode_env (const char *, const char *);
@@ -5799,19 +5829,137 @@ TeX_commands (FILE *inf)
{
char *p;
ptrdiff_t namelen, linelen;
- bool opgrp = false;
+ bool opgrp = false, one_esc = false, is_explthree = false;
cp = skip_spaces (cp + key->len);
+
+ /* 1. The canonical expl3 syntax looks something like this:
+ \cs_new:Npn \__hook_tl_gput:Nn { \ERROR }. First, if we
+ want to tag any such commands, we include only the part
+ before the colon (cs_new) in TEX_defenv or TEXTAGS. Second,
+ etags skips the argument specifier (including the colon)
+ after the tag token, so that it doesn't become the tag name.
+ Third, we set the boolean 'is_explthree' to true so that we
+ can remove the argument specifier from the actual tag name
+ (__hook_tl_gput). This all allows us to include expl3
+ constructs in TEX_defenv or in the environment variable
+ TEXTAGS without requiring a change of separator, and it also
+ allows us to find the definition of variant commands (with
+ different argument specifiers) defined using, for example,
+ \cs_generate_variant:Nn. Please note that the expl3 spec
+ requires etags to pay more attention to whitespace in the
+ code.
+
+ 2. We also automatically remove the asterisk from starred
+ variants of all commands, without the need to include the
+ starred commands explicitly in TEX_defenv or TEXTAGS. */
+ if (*cp == ':')
+ {
+ while (!c_isspace (*cp) && *cp != TEX_opgrp)
+ cp++;
+ cp = skip_spaces (cp);
+ is_explthree = true;
+ }
+ else if (*cp == '*')
+ cp++;
+
+ /* Skip the optional arguments to commands in the tags list so
+ that these arguments don't end up as the name of the tag.
+ The name will instead come from the argument in curly braces
+ that follows the optional ones. */
+ while (*cp != '\0' && *cp != '%')
+ {
+ if (*cp == '[')
+ {
+ while (*cp != ']' && *cp != '\0' && *cp != '%')
+ cp++;
+ }
+ else if (*cp == '(')
+ {
+ while (*cp != ')' && *cp != '\0' && *cp != '%')
+ cp++;
+ }
+ else if (*cp == ']' || *cp == ')')
+ cp++;
+ else
+ break;
+ }
if (*cp == TEX_opgrp)
{
opgrp = true;
cp++;
+ cp = skip_spaces (cp); /* For expl3 code. */
}
+
+ /* Removing the TeX escape character from tag names simplifies
+ things for editors finding tagged commands in TeX buffers.
+ This applies to Emacs but also to the tag-finding behavior
+ of at least some of the editors that use ctags, though in
+ the latter case this will remain suboptimal. The
+ undocumented ctags option '--no-duplicates' may help. */
+ if (*cp == TEX_esc)
+ {
+ cp++;
+ one_esc = true;
+ }
+
+ /* Testing !c_isspace && !c_ispunct is simpler, but halts
+ processing at too many places. The list as it stands tries
+ both to ensure that tag names will derive from macro names
+ rather than from optional parameters to those macros, and
+ also to return findable names while still allowing for
+ unorthodox constructs. */
for (p = cp;
- (!c_isspace (*p) && *p != '#' &&
- *p != TEX_opgrp && *p != TEX_clgrp);
+ (!c_isspace (*p) && *p != '#' && *p != '=' &&
+ *p != '[' && *p != '(' && *p != TEX_opgrp &&
+ *p != TEX_clgrp && *p != '"' && *p != '\'' &&
+ *p != '%' && *p != ',' && *p != '|' && *p != '$');
p++)
- continue;
+ /* In expl3 code we remove the argument specification from
+ the tag name. More generally we allow only one (deleted)
+ escape char in a tag name, which (primarily) enables
+ tagging a TeX command's different, possibly temporary,
+ '\let' bindings. */
+ if (is_explthree && *p == ':')
+ break;
+ else if (*p == TEX_esc)
+ { /* Second part of test is for, e.g., \cslet. */
+ if (!one_esc && !opgrp)
+ {
+ one_esc = true;
+ continue;
+ }
+ else
+ break;
+ }
+ else
+ continue;
+ /* For TeX files, tags without a name are basically cruft, and
+ in some situations they can produce spurious and confusing
+ matches. Try to catch as many cases as possible where a
+ command name is of the form '\(', but avoid, as far as
+ possible, the spurious matches. */
+ if (p == cp)
+ {
+ switch (*p)
+ { /* Include =? */
+ case '(': case '[': case '"': case '\'':
+ case '\\': case '!': case '=': case ',':
+ case '|': case '$':
+ p++;
+ break;
+ case '{': case '}': case '<': case '>':
+ if (!opgrp)
+ {
+ p++;
+ if (*p == '\0' || *p == '%')
+ goto tex_next_line;
+ }
+ break;
+ default:
+ break;
+ }
+ }
namelen = p - cp;
linelen = lb.len;
if (!opgrp || *p == TEX_clgrp)
@@ -5820,9 +5968,18 @@ TeX_commands (FILE *inf)
p++;
linelen = p - lb.buffer + 1;
}
- make_tag (cp, namelen, true,
- lb.buffer, linelen, lineno, linecharno);
- goto tex_next_line; /* We only tag a line once */
+ if (namelen)
+ make_tag (cp, namelen, true,
+ lb.buffer, linelen, lineno, linecharno);
+ /* Lines with more than one \def or \let are surprisingly
+ common in TeX files, especially in the system files that
+ form the basis of the various TeX formats. This tags them
+ all. */
+ /* goto tex_next_line; /\* We only tag a line once *\/ */
+ while (*cp != '\0' && *cp != '%' && *cp != TEX_esc)
+ cp++;
+ if (*cp != TEX_esc)
+ goto tex_next_line;
}
}
tex_next_line:
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 755c3db04fd..1d2d4904b06 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -2129,6 +2129,7 @@ xref--collect-matches
(erase-buffer))
(insert text)
(goto-char (point-min))
+ (setq syntax-propertize--done 0)
(xref--collect-matches-1 regexp file line
(point)
(point-max)
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 97c950267c6..d990a2dbfa9 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -647,7 +647,8 @@ tex-font-lock-suscript
(setq pos (1- pos) odd (not odd)))
odd))
(if (eq (char-after pos) ?_)
- `(face subscript display (raise ,(car tex-font-script-display)))
+ (unless (equal (get-text-property pos 'syntax-table) '(3))
+ `(face subscript display (raise ,(car tex-font-script-display))))
`(face superscript display (raise ,(cadr tex-font-script-display))))))
(defun tex-font-lock-match-suscript (limit)
@@ -695,7 +696,25 @@ tex-verbatim-environments
("\\\\\\(?:end\\|begin\\) *\\({[^\n{}]*}\\)"
(1 (ignore
(tex-env-mark (match-beginning 0)
- (match-beginning 1) (match-end 1))))))))
+ (match-beginning 1) (match-end 1)))))
+ ;; The next two rules change the syntax of `:' and `_' in expl3
+ ;; constructs, so that `tex-font-lock-suscript' can fontify them
+ ;; more accurately.
+ ((concat "\\(\\(?:[\\\\[:space:]{]_\\|"
+ "[\\\\{[:space:]][^][_[:space:][:cntrl:][:digit:]\\\\{}()/=]+\\)"
+ "\\(?:_+\\(?:[^][[:space:][:cntrl:][:digit:]:\\\\{}()/#_=]+\\|"
+ "#+[1-9]\\)\\)+\\)\\([:_]?\\)")
+ (1 (ignore
+ (let* ((expr (buffer-substring-no-properties (match-beginning 1)
+ (match-end 1)))
+ (list (seq-positions expr ?_)))
+ (dolist (pos list)
+ (put-text-property (+ pos (match-beginning 1))
+ (1+ (+ pos (match-beginning 1)))
+ 'syntax-table (string-to-syntax "_"))))))
+ (2 "_"))
+ ("\\\\[[:alpha:]]+\\(:\\)[[:alpha:][:space:]\n]"
+ (1 "_")))))
(defun tex-env-mark (cmd start end)
(when (= cmd (line-beginning-position))
@@ -1291,6 +1310,8 @@ tex-common-initialization
(syntax-propertize-rules latex-syntax-propertize-rules))
;; TABs in verbatim environments don't do what you think.
(setq-local indent-tabs-mode nil)
+ ;; Set up xref backend in TeX buffers.
+ (add-hook 'xref-backend-functions #'tex--xref-backend nil t)
;; Other vars that should be buffer-local.
(make-local-variable 'tex-command)
(make-local-variable 'tex-start-of-header)
@@ -3742,6 +3763,317 @@ tex-chktex
(process-send-region tex-chktex--process (point-min) (point-max))
(process-send-eof tex-chktex--process))))
+\f
+;;; Xref backend
+
+;; Here we lightly adapt the default etags backend for xref so that
+;; the main xref user commands (including `xref-find-definitions',
+;; `xref-find-apropos', and `xref-find-references' [on M-., C-M-., and
+;; M-?, respectively]) work in TeX buffers. The only methods we
+;; actually modify are `xref-backend-identifier-at-point' and
+;; `xref-backend-references'. Many of the complications here, and in
+;; `etags' itself, are due to the necessity of parsing both the old
+;; TeX syntax and the new expl3 syntax, which will continue to appear
+;; together in documents for the foreseeable future. Synchronizing
+;; Emacs and `etags' this way aims to improve the user experience "out
+;; of the box."
+
+(defvar tex-esc-and-group-chars '(?\\ ?{ ?})
+ "The current TeX escape and grouping characters.
+
+The `etags' program only recognizes `\\' (92) and `!' (33) as
+escape characters in TeX documents, and if it detects the latter
+it also uses `<>' as the TeX grouping construct rather than `{}'.
+The TeX `xref-backend-identifier-at-point' method uses these
+three characters to delimit the `thing-at-point' in TeX buffers,
+so this variable should contain at least these three, though you
+can optionally add other characters if the default set of TeX
+symbol delimiters is inadequate for your documents. (The
+functions `tex-thingatpt--beginning-of-symbol'
+`tex-thingatpt--end-of-symbol' construct the regexp.) Setting
+the escape and grouping chars to anything other than `\\{}' or
+`!<>' will not be useful without changes to `etags', at least for
+commands that search tags tables, such as
+\\[xref-find-definitions] and \\[xref-find-apropos].")
+
+;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
+;; AUCTeX is doing the same for its modes.
+(defvar semantic-symref-filepattern-alist)
+(with-eval-after-load 'semantic/symref/grep
+ (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
+ "*.bbl" "*.drv" "*.hva")
+ semantic-symref-filepattern-alist)
+ (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
+ semantic-symref-filepattern-alist)
+ (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
+
+(defun tex--xref-backend () 'tex-etags)
+
+;; Setup AUCTeX modes (for testing purposes only).
+
+(add-hook 'TeX-mode-hook #'tex-set-auctex-xref-backend)
+
+(defun tex-set-auctex-xref-backend ()
+ (add-hook 'xref-backend-functions #'tex--xref-backend nil t))
+
+;; `xref-find-references' currently may need this when called from a
+;; latex-mode buffer in order to search files or buffers with a .tex
+;; suffix (including the buffer from which it has been called). We
+;; append it to `auto-mode-alist' so as not to interfere with the usual
+;; mode-setting apparatus. Changes here and in AUCTeX should soon
+;; render it unnecessary.
+(add-to-list 'auto-mode-alist '("\\.[tT]e[xX]\\'" . latex-mode) t)
+
+(cl-defmethod xref-backend-identifier-at-point ((_backend (eql 'tex-etags)))
+ (require 'etags)
+ (tex--thing-at-point))
+
+;; The detection of `_' and `:' is a primitive method for determining
+;; whether point is on an expl3 construct. It may fail in some
+;; instances.
+(defun tex--thing-at-point ()
+ "Demarcate `thing-at-point' for TeX `xref' backend."
+ (let ((bounds (tex--bounds-of-symbol-at-point)))
+ (when bounds
+ (let ((texsym (buffer-substring-no-properties (car bounds) (cdr bounds))))
+ (if (and (not (string-match-p "reference" (symbol-name this-command)))
+ (seq-contains-p texsym ?_)
+ (seq-contains-p texsym ?:))
+ (seq-take texsym (seq-position texsym ?:))
+ texsym)))))
+
+(defun tex-thingatpt--beginning-of-symbol ()
+ (and
+ (re-search-backward (concat "[]["
+ (mapconcat #'regexp-quote
+ (mapcar #'char-to-string
+ tex-esc-and-group-chars))
+ "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (forward-char)))
+
+(defun tex-thingatpt--end-of-symbol ()
+ (and
+ (re-search-forward (concat "[]["
+ (mapconcat #'regexp-quote
+ (mapcar #'char-to-string
+ tex-esc-and-group-chars))
+ "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (backward-char)))
+
+(defun tex--bounds-of-symbol-at-point ()
+ "Simplify `bounds-of-thing-at-point' for TeX `xref' backend."
+ (let ((orig (point)))
+ (ignore-errors
+ (save-excursion
+ (tex-thingatpt--end-of-symbol)
+ (tex-thingatpt--beginning-of-symbol)
+ (let ((beg (point)))
+ (if (<= beg orig)
+ (let ((real-end
+ (progn
+ (tex-thingatpt--end-of-symbol)
+ (point))))
+ (cond ((and (<= orig real-end) (< beg real-end))
+ (cons beg real-end))
+ ((and (= orig real-end) (= beg real-end))
+ (cons beg (1+ beg)))))))))));; For 1-char TeX commands.
+
+(cl-defmethod xref-backend-identifier-completion-table ((_backend
+ (eql 'tex-etags)))
+ (xref-backend-identifier-completion-table 'etags))
+
+(cl-defmethod xref-backend-identifier-completion-ignore-case ((_backend
+ (eql
+ 'tex-etags)))
+ (xref-backend-identifier-completion-ignore-case 'etags))
+
+(cl-defmethod xref-backend-definitions ((_backend (eql 'tex-etags)) symbol)
+ (xref-backend-definitions 'etags symbol))
+
+(cl-defmethod xref-backend-apropos ((_backend (eql 'tex-etags)) pattern)
+ (xref-backend-apropos 'etags pattern))
+
+;; The `xref-backend-references' method requires more code than the
+;; others for at least two main reasons: TeX authors have typically been
+;; free in their invention of new file types with new suffixes, and they
+;; have also tended sometimes to include non-symbol characters in
+;; command names. When combined with the default Semantic Symbol
+;; Reference API, these two characteristics of TeX code mean that a
+;; command like `xref-find-references' would often fail to find any hits
+;; for a symbol at point, including the one under point in the current
+;; buffer, or it would find only some instances and skip others.
+
+(defun tex-find-references-syntax-table ()
+ (let ((st (if (boundp 'TeX-mode-syntax-table)
+ (make-syntax-table TeX-mode-syntax-table)
+ (make-syntax-table tex-mode-syntax-table))))
+ st))
+
+(defmacro tex-xref-syntax-function (str beg end)
+ (let* (grpb tempstr
+ (shrtstr (if end
+ (progn
+ (setq tempstr (seq-take str (1- (length str))))
+ (if beg
+ (setq tempstr (seq-drop tempstr 1))
+ tempstr))
+ (seq-drop str 1)))
+ (grpa (if (and beg end)
+ (prog1
+ (list 1 "_")
+ (setq grpb (list 2 "_")))
+ (list 1 "_")))
+ (re (concat beg (regexp-quote shrtstr) end))
+ (temp-rule (if grpb
+ (list re grpa grpb)
+ (list re grpa))))
+ `(syntax-propertize-rules ,temp-rule)))
+
+(defun tex--collect-file-extensions ()
+ (let* ((mlist (when (rassq major-mode auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) major-mode))
+ auto-mode-alist)))
+ (lcsym (intern-soft (downcase (symbol-name major-mode))))
+ (lclist (and lcsym
+ (not (eq lcsym major-mode))
+ (rassq lcsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) lcsym))
+ auto-mode-alist)))
+ (shortsym (when (stringp mode-name)
+ (intern-soft (concat (string-trim-right mode-name "/.*")
+ "-mode"))))
+ (lcshortsym (when (stringp mode-name)
+ (intern-soft (downcase
+ (concat
+ (string-trim-right mode-name "/.*")
+ "-mode")))))
+ (shlist (and shortsym
+ (not (eq shortsym major-mode))
+ (not (eq shortsym lcsym))
+ (rassq shortsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) shortsym))
+ auto-mode-alist)))
+ (lcshlist (and lcshortsym
+ (not (eq lcshortsym major-mode))
+ (not (eq lcshortsym lcsym))
+ (rassq lcshortsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) lcshortsym))
+ auto-mode-alist)))
+ (exts (when (or mlist lclist shlist lcshlist)
+ (seq-union (seq-map #'car lclist)
+ (seq-union (seq-map #'car mlist)
+ (seq-union (seq-map #'car lcshlist)
+ (seq-map #'car shlist))))))
+ (ed-exts (when exts
+ (seq-map
+ (lambda (elt)
+ (concat "*" (string-trim elt "\\\\" "\\\\'")))
+ exts))))
+ ed-exts))
+
+(defvar tex--buffers-list nil)
+(defvar-local tex--last-ref-syntax-flag nil)
+(defvar-local tex--old-syntax-function nil)
+
+(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags)) identifier)
+ "Find references of IDENTIFIER in TeX buffers and files."
+ (require 'semantic/symref/grep)
+ (let (bufs texbufs
+ (mode major-mode))
+ (dolist (buf (buffer-list))
+ (if (eq (buffer-local-value 'major-mode buf) mode)
+ (push buf bufs)
+ (when (string-match-p ".*\\.[tT]e[xX]" (buffer-name buf))
+ (push buf texbufs))))
+ (unless (seq-set-equal-p tex--buffers-list bufs)
+ (let* ((amalist (tex--collect-file-extensions))
+ (extlist (alist-get mode semantic-symref-filepattern-alist))
+ (extlist-new (seq-uniq
+ (seq-union amalist extlist #'string-match-p))))
+ (setq tex--buffers-list bufs)
+ (dolist (buf bufs)
+ (when-let ((fbuf (buffer-file-name buf))
+ (ext (file-name-extension fbuf))
+ (finext (concat "*." ext))
+ ((not (seq-find (lambda (elt) (string-match-p elt finext))
+ extlist-new)))
+ ((push finext extlist-new)))))
+ (unless (seq-set-equal-p extlist-new extlist)
+ (setf (alist-get mode semantic-symref-filepattern-alist)
+ extlist-new))))
+ (let* (setsyntax
+ (punct (with-syntax-table (tex-find-references-syntax-table)
+ (seq-positions identifier (list ?w ?_)
+ (lambda (elt sycode)
+ (not (memq (char-syntax elt) sycode))))))
+ (end (and punct
+ (memq (1- (length identifier)) punct)
+ (> (length identifier) 1)
+ (concat "\\("
+ (regexp-quote
+ (string (elt identifier
+ (1- (length identifier)))))
+ "\\)")))
+ (beg (and punct
+ (memq 0 punct)
+ (concat "\\("
+ (regexp-quote (string (elt identifier 0)))
+ "\\)")))
+ (text-mode-hook
+ (if (or end beg)
+ (progn
+ (setq setsyntax (lambda ()
+ (setq-local syntax-propertize-function
+ (eval
+ `(tex-xref-syntax-function
+ ,identifier ,beg ,end)))
+ (setq-local TeX-style-hook-applied-p t)))
+ (cons setsyntax text-mode-hook))
+ text-mode-hook)))
+ (unless (memq 'doctex-mode (derived-mode-all-parents mode))
+ (setq bufs (append texbufs bufs)))
+ (dolist (buf bufs)
+ (with-current-buffer buf
+ (if (or end beg)
+ (progn
+ (unless (local-variable-p 'tex--old-syntax-function)
+ (setq tex--old-syntax-function syntax-propertize-function))
+ (setq-local syntax-propertize-function
+ (eval
+ `(tex-xref-syntax-function
+ ,identifier ,beg ,end)))
+ (setq syntax-propertize--done 0)
+ (setq tex--last-ref-syntax-flag t))
+ ;; If we've computed a bespoke `syntax-propertize-function'
+ ;; then this returns the buffer to the status quo ante
+ ;; bellum on the next invocation of M-? that searches it.
+ (when tex--last-ref-syntax-flag
+ (setq-local syntax-propertize-function
+ (eval
+ `(tex-xref-syntax-function
+ ,identifier nil nil)))
+ (setq syntax-propertize--done 0)))))
+ (unwind-protect
+ (xref-backend-references nil identifier)
+ (dolist (buf bufs)
+ (with-current-buffer buf
+ (when buffer-file-truename
+ (if (or end beg)
+ (setq-local syntax-propertize-function
+ tex--old-syntax-function)
+ (when tex--last-ref-syntax-flag
+ (setq-local syntax-propertize-function
+ tex--old-syntax-function)
+ (setq tex--last-ref-syntax-flag nil))))))))))
+
(make-obsolete-variable 'tex-mode-load-hook
"use `with-eval-after-load' instead." "28.1")
(run-hooks 'tex-mode-load-hook)
--
2.35.8
^ permalink raw reply related [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-29 14:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-02 0:43 ` Dmitry Gutov
2024-05-02 13:32 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-02 6:47 ` Arash Esbati
2024-05-03 14:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2 siblings, 1 reply; 106+ messages in thread
From: Dmitry Gutov @ 2024-05-02 0:43 UTC (permalink / raw)
To: David Fussner, Arash Esbati
Cc: 53749, Ikumi Keita, stefankangas, Tassilo Horn, Eli Zaretskii,
Stefan Monnier
On 29/04/2024 17:15, David Fussner via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
> though I had to add a one-liner in xref.el to fix
> what I believe is a minor bug there preventing syntax-propertize from
> doing its work when the temp buffer holds text from a new file. (I can
> provide a recipe for this if you want.)
Yes, could you please expand on it separately?
The rest of the patch description just makes sense to me, and I'd be
happy to leave (or not) the detailed review to whoever reviews TeX
contributions around here, but this is something I'll need to pay
special attention to.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-29 14:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-02 0:43 ` Dmitry Gutov
@ 2024-05-02 6:47 ` Arash Esbati
2024-05-02 13:34 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-03 14:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2 siblings, 1 reply; 106+ messages in thread
From: Arash Esbati @ 2024-05-02 6:47 UTC (permalink / raw)
To: David Fussner
Cc: 53749, Ikumi Keita, Dmitry Gutov, Stefan Monnier, Tassilo Horn,
Eli Zaretskii, stefankangas
David Fussner <dfussner@googlemail.com> writes:
> Here's my third attempt at a working xref backend for TeX. I'll try
> quickly to summarize what's in it:
>
> 1. I've modified etags so that it creates findable tags for as many
> different sorts of TeX construct as possible, including those written
> in the new expl3 syntax. I've now removed the escape character from
> the tag names, as this simplifies code all around.
Hi David,
Thanks. I trust your code works, so I have 2 minor comments.
> 5. Slightly unrelatedly, I've added new syntax-propertize-rules to
> latex-mode so that expl3 constructs with the underscore aren't
> fontified as subscripts, which makes such code unreadable. I'm happy
> to split this off as another patch.
I think this makes sense. AFAIK, Stefan M. looks after tex-mode.el, so
he can the review it.
> @@ -5736,11 +5752,25 @@ Scheme_functions (FILE *inf)
> static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */
>
> /* Default set of control sequences to put into TEX_toktab.
> - The value of environment var TEXTAGS is prepended to this. */
> + The value of environment var TEXTAGS is prepended to this.
> + (2024) Add variants of '\def', some additional LaTeX (and
> + former xparse) commands, common variants from the
> + 'etoolbox' package, and the main expl3 commands. */
> static const char *TEX_defenv = "\
> -:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
> -:part:appendix:entry:index:def\
> -:newcommand:renewcommand:newenvironment:renewenvironment";
> +:label:ref:chapter:section:subsection:subsubsection:eqno:cite:bibitem\
I suggest to add 'Ref' and 'footref' as well which are part of LaTeX
kernel.
> +(defvar tex-esc-and-group-chars '(?\\ ?{ ?})
(defvar tex-esc-and-group-chars '(?\\ ?\{ ?\})
> + "The current TeX escape and grouping characters.
Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-02 0:43 ` Dmitry Gutov
@ 2024-05-02 13:32 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-03 13:42 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-07 2:06 ` Dmitry Gutov
0 siblings, 2 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-02 13:32 UTC (permalink / raw)
To: Dmitry Gutov
Cc: 53749, Ikumi Keita, Arash Esbati, Stefan Monnier, Tassilo Horn,
Eli Zaretskii, stefankangas
[-- Attachment #1: Type: text/plain, Size: 2558 bytes --]
Hi Dmitry,
Thanks for looking over the patch. Here's the recipe for the purported
bug in xref.el:
1. Please apply my patch to tex-mode.el (and xref.el).
2. I've attached xref-bug.zip, which contains a directory with 4
identical LaTeX files and one LaTeX file with a single additional
character. Please extract it.
3. emacs -Q
4. C-x C-f xref-bug/mwea.ltx, and please don't visit the other 4
files.
5. Put point on \__hook_debug:n in line 6.
6. M-?, RTN, ... RTN, RTN.
The xref buffer should offer 5 hits, one from each file in the
directory.
7. Comment out the the line I added to xref--collect-matches,
byte-compile and load the file.
8. With point in the same place, M-?, RTN, ... RTN, RTN.
The xref buffer should offer 3 hits. The first is from the
file-visiting buffer (where I also set syntax-propertize--done to 0,
because in my testing there could be some issues here, too). The
second hit is from the first file opened in *xref-temp. Here,
syntax-propertize runs to line-end, and all is well. The next two
files are missed, because syntax-propertize--done is set to line-end
and they have exactly the same line length as file two, and therefore
syntax-propertize thinks that's good enough and doesn't actually
change anything. The fifth file has an additional character in line 6,
so syntax-propertize decides it needs to work on this line because
line-end > syntax-propertize--done.
You can put point on, say, \documentclass, and you'll get all 5 hits,
because this string doesn't begin or end with a non-word, non-symbol
character, and syntax-propertize doesn't need to run. You can make the
search string "\documentclass" and you'll get 2 hits, as line 1 has
the same length in all 5 files. (It's worth trying "\usepackage" as
the search string, too.)
That's my diagnosis anyway. Does it make sense?
Thanks,
David.
On Thu, 2 May 2024 at 01:43, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> On 29/04/2024 17:15, David Fussner via Bug reports for GNU Emacs, the
> Swiss army knife of text editors wrote:
> > though I had to add a one-liner in xref.el to fix
> > what I believe is a minor bug there preventing syntax-propertize from
> > doing its work when the temp buffer holds text from a new file. (I can
> > provide a recipe for this if you want.)
>
> Yes, could you please expand on it separately?
>
> The rest of the patch description just makes sense to me, and I'd be
> happy to leave (or not) the detailed review to whoever reviews TeX
> contributions around here, but this is something I'll need to pay
> special attention to.
[-- Attachment #2: xref-bug.zip --]
[-- Type: application/zip, Size: 1588 bytes --]
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-02 6:47 ` Arash Esbati
@ 2024-05-02 13:34 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-02 13:34 UTC (permalink / raw)
To: Arash Esbati
Cc: 53749, Ikumi Keita, Dmitry Gutov, Stefan Monnier, Tassilo Horn,
Eli Zaretskii, stefankangas
Thanks for the review, Arash, and I'll make those changes.
Best, David.
On Thu, 2 May 2024 at 07:47, Arash Esbati <arash@gnu.org> wrote:
>
> David Fussner <dfussner@googlemail.com> writes:
>
> > Here's my third attempt at a working xref backend for TeX. I'll try
> > quickly to summarize what's in it:
> >
> > 1. I've modified etags so that it creates findable tags for as many
> > different sorts of TeX construct as possible, including those written
> > in the new expl3 syntax. I've now removed the escape character from
> > the tag names, as this simplifies code all around.
>
> Hi David,
>
> Thanks. I trust your code works, so I have 2 minor comments.
>
> > 5. Slightly unrelatedly, I've added new syntax-propertize-rules to
> > latex-mode so that expl3 constructs with the underscore aren't
> > fontified as subscripts, which makes such code unreadable. I'm happy
> > to split this off as another patch.
>
> I think this makes sense. AFAIK, Stefan M. looks after tex-mode.el, so
> he can the review it.
>
> > @@ -5736,11 +5752,25 @@ Scheme_functions (FILE *inf)
> > static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */
> >
> > /* Default set of control sequences to put into TEX_toktab.
> > - The value of environment var TEXTAGS is prepended to this. */
> > + The value of environment var TEXTAGS is prepended to this.
> > + (2024) Add variants of '\def', some additional LaTeX (and
> > + former xparse) commands, common variants from the
> > + 'etoolbox' package, and the main expl3 commands. */
> > static const char *TEX_defenv = "\
> > -:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
> > -:part:appendix:entry:index:def\
> > -:newcommand:renewcommand:newenvironment:renewenvironment";
> > +:label:ref:chapter:section:subsection:subsubsection:eqno:cite:bibitem\
>
> I suggest to add 'Ref' and 'footref' as well which are part of LaTeX
> kernel.
>
> > +(defvar tex-esc-and-group-chars '(?\\ ?{ ?})
>
> (defvar tex-esc-and-group-chars '(?\\ ?\{ ?\})
>
> > + "The current TeX escape and grouping characters.
>
> Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-02 13:32 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-03 13:42 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-07 2:27 ` Dmitry Gutov
2024-05-07 2:06 ` Dmitry Gutov
1 sibling, 1 reply; 106+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-03 13:42 UTC (permalink / raw)
To: David Fussner
Cc: 53749, Ikumi Keita, Dmitry Gutov, Arash Esbati, stefankangas,
Tassilo Horn, Eli Zaretskii
> Thanks for looking over the patch. Here's the recipe for the purported
> bug in xref.el:
The problem stems from xref.el's constant abuse of
`inhibit-modification-hooks`. Binding this var to t should be done only
in exceptional circumstances and should ideally be accompanied by a
comment explaining why it's necessary.
Stefan
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-04-29 14:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-02 0:43 ` Dmitry Gutov
2024-05-02 6:47 ` Arash Esbati
@ 2024-05-03 14:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-04 8:26 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
` (3 more replies)
2 siblings, 4 replies; 106+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-03 14:10 UTC (permalink / raw)
To: David Fussner
Cc: 53749, Ikumi Keita, Tassilo Horn, Arash Esbati, stefankangas,
Dmitry Gutov, Eli Zaretskii
Hi,
Apparently I'm the `tex-mode.el` guy, so I tried to take a look.
> diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
> index 97c950267c6..d990a2dbfa9 100644
> --- a/lisp/textmodes/tex-mode.el
> +++ b/lisp/textmodes/tex-mode.el
> @@ -695,7 +696,25 @@ tex-verbatim-environments
> ("\\\\\\(?:end\\|begin\\) *\\({[^\n{}]*}\\)"
> (1 (ignore
> (tex-env-mark (match-beginning 0)
> - (match-beginning 1) (match-end 1))))))))
> + (match-beginning 1) (match-end 1)))))
> + ;; The next two rules change the syntax of `:' and `_' in expl3
> + ;; constructs, so that `tex-font-lock-suscript' can fontify them
> + ;; more accurately.
> + ((concat "\\(\\(?:[\\\\[:space:]{]_\\|"
> + "[\\\\{[:space:]][^][_[:space:][:cntrl:][:digit:]\\\\{}()/=]+\\)"
> + "\\(?:_+\\(?:[^][[:space:][:cntrl:][:digit:]:\\\\{}()/#_=]+\\|"
> + "#+[1-9]\\)\\)+\\)\\([:_]?\\)")
Can you add in the comment some URL pointing to some relevant expl3
documentation which "explains" why the above regexp makes sense?
Also I don't clearly see how the above regexp distinguishes expl3 code
from "normal" LaTeX code, so the comment should say something about it.
Side note: I'd avoid [:space:] whose exact meaning is rarely quite what
we need.
Side note: backslash doesn't need to be backslashed in [...].
> + (1 (ignore
> + (let* ((expr (buffer-substring-no-properties (match-beginning 1)
> + (match-end 1)))
> + (list (seq-positions expr ?_)))
> + (dolist (pos list)
> + (put-text-property (+ pos (match-beginning 1))
> + (1+ (+ pos (match-beginning 1)))
> + 'syntax-table (string-to-syntax "_"))))))
> + (2 "_"))
> + ("\\\\[[:alpha:]]+\\(:\\)[[:alpha:][:space:]\n]"
> + (1 "_")))))
Currently we "skip" inappropriate underscores via
`tex-font-lock-match-suscript` and/or by adding a particular `face` text
property rather than via `syntax-table/propertize`.
For algorithmic reasons, it's better to minimize the work done in
`syntax-propertize-function` as much as possible (font-lock is more lazy
than `syntax-propertize`), so I recommend you try and moving the above
to font-lock rules.
> +(defvar tex-esc-and-group-chars '(?\\ ?{ ?})
> + "The current TeX escape and grouping characters.
I recommend you backslash escape the { and } above (although it's not
indispensable, `emacs-lisp-mode` will parse the code better).
More importantly, the docstring doesn't explain what this list
means/does. E.g. does the order matter? Can it be longer than 3 elements?
From the current docstring I can't guess what would be the consequence
of adding/removing elements to/from this list.
> +;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
> +;; AUCTeX is doing the same for its modes.
> +(defvar semantic-symref-filepattern-alist)
> +(with-eval-after-load 'semantic/symref/grep
> + (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
> + "*.bbl" "*.drv" "*.hva")
> + semantic-symref-filepattern-alist)
> + (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
> + semantic-symref-filepattern-alist)
> + (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
We know `semantic-symref-filepattern-alist` will exist when
`semantic/symref/grep` is loaded, but not before, so I'd put the
`defvar` inside the `with-eval-after-load`.
> +;; Setup AUCTeX modes (for testing purposes only).
> +
> +(add-hook 'TeX-mode-hook #'tex-set-auctex-xref-backend)
> +
> +(defun tex-set-auctex-xref-backend ()
> + (add-hook 'xref-backend-functions #'tex--xref-backend nil t))
I assume this will be sent to AUCTeX and is not meant to be in
`tex-mode.el`, right?
> +;; `xref-find-references' currently may need this when called from a
> +;; latex-mode buffer in order to search files or buffers with a .tex
> +;; suffix (including the buffer from which it has been called). We
> +;; append it to `auto-mode-alist' so as not to interfere with the usual
> +;; mode-setting apparatus. Changes here and in AUCTeX should soon
> +;; render it unnecessary.
> +(add-to-list 'auto-mode-alist '("\\.[tT]e[xX]\\'" . latex-mode) t)
Maybe I have not followed the whole discussion closely enough, but at
least to me the above "soon" is very unclear.
I'll assume that this code will be removed before we install the patch.
If not, please explain in the comment why this specific hack is needed
and how it works.
> +(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags)) identifier)
> + "Find references of IDENTIFIER in TeX buffers and files."
> + (require 'semantic/symref/grep)
> + (let (bufs texbufs
> + (mode major-mode))
> + (dolist (buf (buffer-list))
> + (if (eq (buffer-local-value 'major-mode buf) mode)
> + (push buf bufs)
> + (when (string-match-p ".*\\.[tT]e[xX]" (buffer-name buf))
> + (push buf texbufs))))
> + (unless (seq-set-equal-p tex--buffers-list bufs)
> + (let* ((amalist (tex--collect-file-extensions))
> + (extlist (alist-get mode semantic-symref-filepattern-alist))
> + (extlist-new (seq-uniq
> + (seq-union amalist extlist #'string-match-p))))
After sinking the `defvar` above, you'll need to add a new `defvar` for
`semantic-symref-filepattern-alist` just after the `require`.
> + (setq-local syntax-propertize-function
> + (eval
> + `(tex-xref-syntax-function
> + ,identifier ,beg ,end)))
Why do we need to change `syntax-propertize-function` and why do we need
`eval`?
> + (setq syntax-propertize--done 0)
This is not sufficient. You want to `syntax-ppss-flush-cache`.
Stefan
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-03 14:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-04 8:26 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-04 14:32 ` Arash Esbati
` (2 subsequent siblings)
3 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-04 8:26 UTC (permalink / raw)
To: Stefan Monnier
Cc: 53749, Ikumi Keita, Tassilo Horn, Arash Esbati, stefankangas,
Dmitry Gutov, Eli Zaretskii
Thank you very much, Stefan, for taking the time to review the patch.
In short, it plainly needs some work, but I'm rather short of time
this weekend so will respond properly and I hope more coherently
Monday or Tuesday.
Best, David.
On Fri, 3 May 2024 at 15:11, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
>
> Hi,
>
> Apparently I'm the `tex-mode.el` guy, so I tried to take a look.
>
> > diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
> > index 97c950267c6..d990a2dbfa9 100644
> > --- a/lisp/textmodes/tex-mode.el
> > +++ b/lisp/textmodes/tex-mode.el
> > @@ -695,7 +696,25 @@ tex-verbatim-environments
> > ("\\\\\\(?:end\\|begin\\) *\\({[^\n{}]*}\\)"
> > (1 (ignore
> > (tex-env-mark (match-beginning 0)
> > - (match-beginning 1) (match-end 1))))))))
> > + (match-beginning 1) (match-end 1)))))
> > + ;; The next two rules change the syntax of `:' and `_' in expl3
> > + ;; constructs, so that `tex-font-lock-suscript' can fontify them
> > + ;; more accurately.
> > + ((concat "\\(\\(?:[\\\\[:space:]{]_\\|"
> > + "[\\\\{[:space:]][^][_[:space:][:cntrl:][:digit:]\\\\{}()/=]+\\)"
> > + "\\(?:_+\\(?:[^][[:space:][:cntrl:][:digit:]:\\\\{}()/#_=]+\\|"
> > + "#+[1-9]\\)\\)+\\)\\([:_]?\\)")
>
> Can you add in the comment some URL pointing to some relevant expl3
> documentation which "explains" why the above regexp makes sense?
> Also I don't clearly see how the above regexp distinguishes expl3 code
> from "normal" LaTeX code, so the comment should say something about it.
>
> Side note: I'd avoid [:space:] whose exact meaning is rarely quite what
> we need.
> Side note: backslash doesn't need to be backslashed in [...].
>
> > + (1 (ignore
> > + (let* ((expr (buffer-substring-no-properties (match-beginning 1)
> > + (match-end 1)))
> > + (list (seq-positions expr ?_)))
> > + (dolist (pos list)
> > + (put-text-property (+ pos (match-beginning 1))
> > + (1+ (+ pos (match-beginning 1)))
> > + 'syntax-table (string-to-syntax "_"))))))
> > + (2 "_"))
> > + ("\\\\[[:alpha:]]+\\(:\\)[[:alpha:][:space:]\n]"
> > + (1 "_")))))
>
> Currently we "skip" inappropriate underscores via
> `tex-font-lock-match-suscript` and/or by adding a particular `face` text
> property rather than via `syntax-table/propertize`.
>
> For algorithmic reasons, it's better to minimize the work done in
> `syntax-propertize-function` as much as possible (font-lock is more lazy
> than `syntax-propertize`), so I recommend you try and moving the above
> to font-lock rules.
>
> > +(defvar tex-esc-and-group-chars '(?\\ ?{ ?})
> > + "The current TeX escape and grouping characters.
>
> I recommend you backslash escape the { and } above (although it's not
> indispensable, `emacs-lisp-mode` will parse the code better).
> More importantly, the docstring doesn't explain what this list
> means/does. E.g. does the order matter? Can it be longer than 3 elements?
>
> From the current docstring I can't guess what would be the consequence
> of adding/removing elements to/from this list.
>
> > +;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
> > +;; AUCTeX is doing the same for its modes.
> > +(defvar semantic-symref-filepattern-alist)
> > +(with-eval-after-load 'semantic/symref/grep
> > + (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
> > + "*.bbl" "*.drv" "*.hva")
> > + semantic-symref-filepattern-alist)
> > + (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
> > + semantic-symref-filepattern-alist)
> > + (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
>
> We know `semantic-symref-filepattern-alist` will exist when
> `semantic/symref/grep` is loaded, but not before, so I'd put the
> `defvar` inside the `with-eval-after-load`.
>
> > +;; Setup AUCTeX modes (for testing purposes only).
> > +
> > +(add-hook 'TeX-mode-hook #'tex-set-auctex-xref-backend)
> > +
> > +(defun tex-set-auctex-xref-backend ()
> > + (add-hook 'xref-backend-functions #'tex--xref-backend nil t))
>
> I assume this will be sent to AUCTeX and is not meant to be in
> `tex-mode.el`, right?
>
> > +;; `xref-find-references' currently may need this when called from a
> > +;; latex-mode buffer in order to search files or buffers with a .tex
> > +;; suffix (including the buffer from which it has been called). We
> > +;; append it to `auto-mode-alist' so as not to interfere with the usual
> > +;; mode-setting apparatus. Changes here and in AUCTeX should soon
> > +;; render it unnecessary.
> > +(add-to-list 'auto-mode-alist '("\\.[tT]e[xX]\\'" . latex-mode) t)
>
> Maybe I have not followed the whole discussion closely enough, but at
> least to me the above "soon" is very unclear.
> I'll assume that this code will be removed before we install the patch.
> If not, please explain in the comment why this specific hack is needed
> and how it works.
>
> > +(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags)) identifier)
> > + "Find references of IDENTIFIER in TeX buffers and files."
> > + (require 'semantic/symref/grep)
> > + (let (bufs texbufs
> > + (mode major-mode))
> > + (dolist (buf (buffer-list))
> > + (if (eq (buffer-local-value 'major-mode buf) mode)
> > + (push buf bufs)
> > + (when (string-match-p ".*\\.[tT]e[xX]" (buffer-name buf))
> > + (push buf texbufs))))
> > + (unless (seq-set-equal-p tex--buffers-list bufs)
> > + (let* ((amalist (tex--collect-file-extensions))
> > + (extlist (alist-get mode semantic-symref-filepattern-alist))
> > + (extlist-new (seq-uniq
> > + (seq-union amalist extlist #'string-match-p))))
>
> After sinking the `defvar` above, you'll need to add a new `defvar` for
> `semantic-symref-filepattern-alist` just after the `require`.
>
> > + (setq-local syntax-propertize-function
> > + (eval
> > + `(tex-xref-syntax-function
> > + ,identifier ,beg ,end)))
>
> Why do we need to change `syntax-propertize-function` and why do we need
> `eval`?
>
> > + (setq syntax-propertize--done 0)
>
> This is not sufficient. You want to `syntax-ppss-flush-cache`.
>
>
> Stefan
>
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-03 14:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-04 8:26 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-04 14:32 ` Arash Esbati
2024-05-04 14:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-07 13:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-15 15:47 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
3 siblings, 1 reply; 106+ messages in thread
From: Arash Esbati @ 2024-05-04 14:32 UTC (permalink / raw)
To: Stefan Monnier
Cc: 53749, Ikumi Keita, Dmitry Gutov, David Fussner, stefankangas,
Tassilo Horn, Eli Zaretskii
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
>> index 97c950267c6..d990a2dbfa9 100644
>> --- a/lisp/textmodes/tex-mode.el
>> +++ b/lisp/textmodes/tex-mode.el
>> @@ -695,7 +696,25 @@ tex-verbatim-environments
>> ("\\\\\\(?:end\\|begin\\) *\\({[^\n{}]*}\\)"
>> (1 (ignore
>> (tex-env-mark (match-beginning 0)
>> - (match-beginning 1) (match-end 1))))))))
>> + (match-beginning 1) (match-end 1)))))
>> + ;; The next two rules change the syntax of `:' and `_' in expl3
>> + ;; constructs, so that `tex-font-lock-suscript' can fontify them
>> + ;; more accurately.
>> + ((concat "\\(\\(?:[\\\\[:space:]{]_\\|"
>> + "[\\\\{[:space:]][^][_[:space:][:cntrl:][:digit:]\\\\{}()/=]+\\)"
>> + "\\(?:_+\\(?:[^][[:space:][:cntrl:][:digit:]:\\\\{}()/#_=]+\\|"
>> + "#+[1-9]\\)\\)+\\)\\([:_]?\\)")
>
> Can you add in the comment some URL pointing to some relevant expl3
> documentation which "explains" why the above regexp makes sense?
> Also I don't clearly see how the above regexp distinguishes expl3 code
> from "normal" LaTeX code, so the comment should say something about
> it.
FWIW, I'm not sure if there is an URL for that, but in interface3.pdf,
chap.1, you'll find:
1.1 Naming functions and variables
LATEX3 does not use @ as a "letter"" for defining internal macros.
Instead, the symbols _ and : are used in internal macro names to provide
structure. The name of each function is divided into logical units using
_, while : separates the name of the function from the argument
specifier ("arg-spec"). This describes the arguments expected by the
function. In most cases, each argument is represented by a single
letter. The complete list of arg-spec letters for a function is referred
to as the signature of the function.
So expect things like this:
\tl_set:Nn \l_mya_tl { A }
\tl_set:Nn \l_myb_tl { B }
\tl_set:Nf \l_mya_tl { \l_mya_tl \l_myb_tl }
>> +;; Setup AUCTeX modes (for testing purposes only).
>> +
>> +(add-hook 'TeX-mode-hook #'tex-set-auctex-xref-backend)
>> +
>> +(defun tex-set-auctex-xref-backend ()
>> + (add-hook 'xref-backend-functions #'tex--xref-backend nil t))
>
> I assume this will be sent to AUCTeX and is not meant to be in
> `tex-mode.el`, right?
That would have been a question from my side, but I saw that "testing
purposes only" and skipped it for this round.
Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-04 14:32 ` Arash Esbati
@ 2024-05-04 14:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-04 21:15 ` Arash Esbati
0 siblings, 1 reply; 106+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-04 14:54 UTC (permalink / raw)
To: Arash Esbati
Cc: 53749, Ikumi Keita, Dmitry Gutov, David Fussner, stefankangas,
Tassilo Horn, Eli Zaretskii
> FWIW, I'm not sure if there is an URL for that, but in interface3.pdf,
> chap.1, you'll find:
[...]
> So expect things like this:
>
> \tl_set:Nn \l_mya_tl { A }
> \tl_set:Nn \l_myb_tl { B }
> \tl_set:Nf \l_mya_tl { \l_mya_tl \l_myb_tl }
But that is *also* valid LaTeX, with a different meaning (i.e. where
`_` has its subscript meaning). So we need some other info in order to
know which of the two we're dealing with.
Maybe that info is simply "assume LaTeX3 if the _ is followed by several
letters" or some such heuristic, but the comment should say so.
Stefan
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-04 14:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-04 21:15 ` Arash Esbati
0 siblings, 0 replies; 106+ messages in thread
From: Arash Esbati @ 2024-05-04 21:15 UTC (permalink / raw)
To: Stefan Monnier
Cc: 53749, Ikumi Keita, Dmitry Gutov, David Fussner, stefankangas,
Tassilo Horn, Eli Zaretskii
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> But that is *also* valid LaTeX, with a different meaning (i.e. where
> `_` has its subscript meaning). So we need some other info in order to
> know which of the two we're dealing with.
That's true. AFAIK, one has to deal with:
• \_ in ordinary text like foo\_bar
• _ in math mode like $a_b$
• expl3 macros like \tl_set:Nn
• expl3 macros like \__kernel_kern:n
> Maybe that info is simply "assume LaTeX3 if the _ is followed by several
> letters" or some such heuristic, but the comment should say so.
Last time I looked at this, my conclusion was: Deal with \_ and _ in
usual .tex files and expect expl3 macros in .dtx file only.
Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-02 13:32 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-03 13:42 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-07 2:06 ` Dmitry Gutov
1 sibling, 0 replies; 106+ messages in thread
From: Dmitry Gutov @ 2024-05-07 2:06 UTC (permalink / raw)
To: David Fussner
Cc: 53749, Ikumi Keita, Arash Esbati, Stefan Monnier, Tassilo Horn,
Eli Zaretskii, stefankangas
On 02/05/2024 16:32, David Fussner via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
> Hi Dmitry,
>
> Thanks for looking over the patch. Here's the recipe for the purported
> bug in xref.el:
>
> 1. Please apply my patch to tex-mode.el (and xref.el).
>
> 2. I've attached xref-bug.zip, which contains a directory with 4
> identical LaTeX files and one LaTeX file with a single additional
> character. Please extract it.
>
> 3. emacs -Q
>
> 4. C-x C-f xref-bug/mwea.ltx, and please don't visit the other 4
> files.
>
> 5. Put point on \__hook_debug:n in line 6.
>
> 6. M-?, RTN, ... RTN, RTN.
>
> The xref buffer should offer 5 hits, one from each file in the
> directory.
>
> 7. Comment out the the line I added to xref--collect-matches,
> byte-compile and load the file.
>
> 8. With point in the same place, M-?, RTN, ... RTN, RTN.
>
> The xref buffer should offer 3 hits. The first is from the
> file-visiting buffer (where I also set syntax-propertize--done to 0,
> because in my testing there could be some issues here, too). The
> second hit is from the first file opened in *xref-temp. Here,
> syntax-propertize runs to line-end, and all is well. The next two
> files are missed, because syntax-propertize--done is set to line-end
> and they have exactly the same line length as file two, and therefore
> syntax-propertize thinks that's good enough and doesn't actually
> change anything. The fifth file has an additional character in line 6,
> so syntax-propertize decides it needs to work on this line because
> line-end > syntax-propertize--done.
>
> You can put point on, say, \documentclass, and you'll get all 5 hits,
> because this string doesn't begin or end with a non-word, non-symbol
> character, and syntax-propertize doesn't need to run. You can make the
> search string "\documentclass" and you'll get 2 hits, as line 1 has
> the same length in all 5 files. (It's worth trying "\usepackage" as
> the search string, too.)
>
> That's my diagnosis anyway. Does it make sense?
Thank you, David, for the thorough scenario. I see the problem now.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-03 13:42 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-07 2:27 ` Dmitry Gutov
2024-05-09 3:00 ` Dmitry Gutov
0 siblings, 1 reply; 106+ messages in thread
From: Dmitry Gutov @ 2024-05-07 2:27 UTC (permalink / raw)
To: Stefan Monnier, David Fussner
Cc: 53749, Ikumi Keita, Arash Esbati, stefankangas, Tassilo Horn,
Eli Zaretskii
On 03/05/2024 16:42, Stefan Monnier via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
>> Thanks for looking over the patch. Here's the recipe for the purported
>> bug in xref.el:
> The problem stems from xref.el's constant abuse of
> `inhibit-modification-hooks`. Binding this var to t should be done only
> in exceptional circumstances and should ideally be accompanied by a
> comment explaining why it's necessary.
Well, the reason is performance: I've tried to wring out the most out of
it, given that we have to parse the buffer for syntax in Elisp, and
that'll always have a certain overhead.
The difference between inhibiting and not could be up to 20% of runtime.
David's fix makes things slower (just due to having us do the necessary
work), but still has an edge over having no inhibit-modification-hooks.
That remaining improvement is around 4-7% in my testing, though, so
maybe it's the point where we should prioritize simplicity.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-03 14:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-04 8:26 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-04 14:32 ` Arash Esbati
@ 2024-05-07 13:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-15 15:47 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
3 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-07 13:15 UTC (permalink / raw)
To: Stefan Monnier
Cc: 53749, Ikumi Keita, Tassilo Horn, Arash Esbati, stefankangas,
Dmitry Gutov, Eli Zaretskii
[-- Attachment #1: Type: text/plain, Size: 12692 bytes --]
Hi Stefan,
I apologize in advance if my reply gets lengthy.
> Also I don't clearly see how the above regexp distinguishes expl3 code
> from "normal" LaTeX code, so the comment should say something about it.
You are quite right that the regexp can (and does) match "normal"
LaTeX code, and I can see that this isn't acceptable as it stands. The
only way to be sure about ":" and "_" is to determine whether they're
inside a matched pair of \ExplSyntaxOn \ExplSyntaxOff macros (or in a
file which does something like \ProvidesExpl[File|Class]). The file
case can, I think, be sorted by modifying the syntax table as part of
setting up the relevant major modes. The temporary toggling of
ExplSyntax is trickier, but I have some proof-of-concept code that
adds a function to the `syntax-propertize-extend-region-functions'
hook that creates a list (`tex-expl-region-list`) of the start and end
of all such regions in a buffer and updates it whenever
`syntax-propertize` runs. In the `syntax-propertize-function` we test
whether hits are inside one of these regions and only change the
syntax when they are. (A very lightly-tested and incomplete patch on
top of my earlier patch is attached. It only applies to the "_" now,
but would need extending to the other sub-matches, too.)
> Currently we "skip" inappropriate underscores via
> `tex-font-lock-match-suscript` and/or by adding a particular `face` text
> property rather than via `syntax-table/propertize`.
>
> For algorithmic reasons, it's better to minimize the work done in
> `syntax-propertize-function` as much as possible (font-lock is more lazy
> than `syntax-propertize`), so I recommend you try and moving the above
> to font-lock rules.
The reason I've been using `syntax-propertize` rather than `font-lock`
is because the former may confer advantages when using
`xref-find-references`, but that in turn depends on how we decide to
define that function in the `tex-etags` backend. Please see below. In
any case, I think I can easily use `tex-expl-region-list` in a test
for how to fontify "_", so if you don't object to the addition of
`tex-expl-region-set` to the
`syntax-propertize-extend-region-functions' hook then we should be
able to get pretty close to a rigorous demarcation between "normal"
LaTeX and expl3 code in this context.
> > + (setq-local syntax-propertize-function
> > + (eval
> > + `(tex-xref-syntax-function
> > + ,identifier ,beg ,end)))
>
> Why do we need to change `syntax-propertize-function` and why do we need
> `eval`?
>
> > + (setq syntax-propertize--done 0)
>
> This is not sufficient. You want to `syntax-ppss-flush-cache`.
We only need `eval` because I'm confused about the handling of macros
-- I have some code in progress to fix this. As for why we need to
change `syntax-propertize-function`, that's the core of the issue with
`xref-find-references`. In the current patch, the wrapper for the
standard `xref-backend-references` gathers file extensions and also
tests whether the search string begins and/or ends with a non-word,
non-symbol character. In `xref-references-in-directory` the only hits
offered to the user match (format "\\_<%s\\_>" ...), so I create a
bespoke `syntax-propertize-function` to ensure that the search string
matches that format. (Actually, I would need to improve that to cope
with searches for "\command" in code that looks like
"\let\command\othercommand" -- even when the "\" has the right syntax
the search fails because the "t" in "let" doesn't.)
My mental model for `syntax-propertize` was/is insufficient, as you
point out, so your improvement ensures that buffers return to the
status quo ante after the search is complete, but it's still an open
question whether we want to do this at all. I see at least 3 options:
1. The maximalist approach, which tries to ensure that any TeX symbol
may be searched for successfully, even if the syntax of its components
is inconvenient. My patch is a (faulty) attempt at this.
2. The minimalist approach, providing no bespoke
`syntax-propertize-function`, and accepting failure when searching
some strings, especially strings which aren't offered up by
default. (In the above example, "command" would be the default offered
up, so manual intervention is needed to search for "\command".) In
this case I'd be very keen to have the expl3 "_" and ":" code actually
in `syntax-propertize`, because then searches for expl3 constructs
(without the "\") would work. (I'd also be very keen on having
something similar in AUCTeX, though their current method works fine in
most files.)
3. The non-standard approach, the `tex-etags` backend calling a
variant of `project-find-regexp` instead of `xref-backend-references`
when someone presses M-?. We could supply file extensions to search,
as now, and allow the choice of projects and/or directories, as now,
but the output will always be very non-standard, more like
`xref-backend-apropos` than `xref-backend-references`. The syntax of
the search string won't matter, and the problem will be "too many
hits" rather than "too few or none".
If you have any thoughts on the matter I'd be all ears.
> > +(add-to-list 'auto-mode-alist '("\\.[tT]e[xX]\\'" . latex-mode) t)
>
> Maybe I have not followed the whole discussion closely enough, but at
> least to me the above "soon" is very unclear.
> I'll assume that this code will be removed before we install the patch.
> If not, please explain in the comment why this specific hack is needed
> and how it works.
As soon as AUCTeX has "*.[tT]e[xX]" in its contributions to
`semantic-symref-filepattern-alist` this will be redundant. As it
stands, not searching *.tex files for symbols in LaTeX-mode buffers
is kind of terrible.
> > +;; Setup AUCTeX modes (for testing purposes only).
> > +
> > +(add-hook 'TeX-mode-hook #'tex-set-auctex-xref-backend)
> > +
> > +(defun tex-set-auctex-xref-backend ()
> > + (add-hook 'xref-backend-functions #'tex--xref-backend nil t))
>
> I assume this will be sent to AUCTeX and is not meant to be in
> `tex-mode.el`, right?
Yes.
Please assume I agree with all of your other corrections and
clarifications, and that I'll modify the patch accordingly. Once
again, thank you for the careful review, and my apologies for
occupying too much of your time.
Best, David.
On Fri, 3 May 2024 at 15:11, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
>
> Hi,
>
> Apparently I'm the `tex-mode.el` guy, so I tried to take a look.
>
> > diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
> > index 97c950267c6..d990a2dbfa9 100644
> > --- a/lisp/textmodes/tex-mode.el
> > +++ b/lisp/textmodes/tex-mode.el
> > @@ -695,7 +696,25 @@ tex-verbatim-environments
> > ("\\\\\\(?:end\\|begin\\) *\\({[^\n{}]*}\\)"
> > (1 (ignore
> > (tex-env-mark (match-beginning 0)
> > - (match-beginning 1) (match-end 1))))))))
> > + (match-beginning 1) (match-end 1)))))
> > + ;; The next two rules change the syntax of `:' and `_' in expl3
> > + ;; constructs, so that `tex-font-lock-suscript' can fontify them
> > + ;; more accurately.
> > + ((concat "\\(\\(?:[\\\\[:space:]{]_\\|"
> > + "[\\\\{[:space:]][^][_[:space:][:cntrl:][:digit:]\\\\{}()/=]+\\)"
> > + "\\(?:_+\\(?:[^][[:space:][:cntrl:][:digit:]:\\\\{}()/#_=]+\\|"
> > + "#+[1-9]\\)\\)+\\)\\([:_]?\\)")
>
> Can you add in the comment some URL pointing to some relevant expl3
> documentation which "explains" why the above regexp makes sense?
> Also I don't clearly see how the above regexp distinguishes expl3 code
> from "normal" LaTeX code, so the comment should say something about it.
>
> Side note: I'd avoid [:space:] whose exact meaning is rarely quite what
> we need.
> Side note: backslash doesn't need to be backslashed in [...].
>
> > + (1 (ignore
> > + (let* ((expr (buffer-substring-no-properties (match-beginning 1)
> > + (match-end 1)))
> > + (list (seq-positions expr ?_)))
> > + (dolist (pos list)
> > + (put-text-property (+ pos (match-beginning 1))
> > + (1+ (+ pos (match-beginning 1)))
> > + 'syntax-table (string-to-syntax "_"))))))
> > + (2 "_"))
> > + ("\\\\[[:alpha:]]+\\(:\\)[[:alpha:][:space:]\n]"
> > + (1 "_")))))
>
> Currently we "skip" inappropriate underscores via
> `tex-font-lock-match-suscript` and/or by adding a particular `face` text
> property rather than via `syntax-table/propertize`.
>
> For algorithmic reasons, it's better to minimize the work done in
> `syntax-propertize-function` as much as possible (font-lock is more lazy
> than `syntax-propertize`), so I recommend you try and moving the above
> to font-lock rules.
>
> > +(defvar tex-esc-and-group-chars '(?\\ ?{ ?})
> > + "The current TeX escape and grouping characters.
>
> I recommend you backslash escape the { and } above (although it's not
> indispensable, `emacs-lisp-mode` will parse the code better).
> More importantly, the docstring doesn't explain what this list
> means/does. E.g. does the order matter? Can it be longer than 3 elements?
>
> From the current docstring I can't guess what would be the consequence
> of adding/removing elements to/from this list.
>
> > +;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
> > +;; AUCTeX is doing the same for its modes.
> > +(defvar semantic-symref-filepattern-alist)
> > +(with-eval-after-load 'semantic/symref/grep
> > + (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
> > + "*.bbl" "*.drv" "*.hva")
> > + semantic-symref-filepattern-alist)
> > + (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
> > + semantic-symref-filepattern-alist)
> > + (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
>
> We know `semantic-symref-filepattern-alist` will exist when
> `semantic/symref/grep` is loaded, but not before, so I'd put the
> `defvar` inside the `with-eval-after-load`.
>
> > +;; Setup AUCTeX modes (for testing purposes only).
> > +
> > +(add-hook 'TeX-mode-hook #'tex-set-auctex-xref-backend)
> > +
> > +(defun tex-set-auctex-xref-backend ()
> > + (add-hook 'xref-backend-functions #'tex--xref-backend nil t))
>
> I assume this will be sent to AUCTeX and is not meant to be in
> `tex-mode.el`, right?
>
> > +;; `xref-find-references' currently may need this when called from a
> > +;; latex-mode buffer in order to search files or buffers with a .tex
> > +;; suffix (including the buffer from which it has been called). We
> > +;; append it to `auto-mode-alist' so as not to interfere with the usual
> > +;; mode-setting apparatus. Changes here and in AUCTeX should soon
> > +;; render it unnecessary.
> > +(add-to-list 'auto-mode-alist '("\\.[tT]e[xX]\\'" . latex-mode) t)
>
> Maybe I have not followed the whole discussion closely enough, but at
> least to me the above "soon" is very unclear.
> I'll assume that this code will be removed before we install the patch.
> If not, please explain in the comment why this specific hack is needed
> and how it works.
>
> > +(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags)) identifier)
> > + "Find references of IDENTIFIER in TeX buffers and files."
> > + (require 'semantic/symref/grep)
> > + (let (bufs texbufs
> > + (mode major-mode))
> > + (dolist (buf (buffer-list))
> > + (if (eq (buffer-local-value 'major-mode buf) mode)
> > + (push buf bufs)
> > + (when (string-match-p ".*\\.[tT]e[xX]" (buffer-name buf))
> > + (push buf texbufs))))
> > + (unless (seq-set-equal-p tex--buffers-list bufs)
> > + (let* ((amalist (tex--collect-file-extensions))
> > + (extlist (alist-get mode semantic-symref-filepattern-alist))
> > + (extlist-new (seq-uniq
> > + (seq-union amalist extlist #'string-match-p))))
>
> After sinking the `defvar` above, you'll need to add a new `defvar` for
> `semantic-symref-filepattern-alist` just after the `require`.
>
> > + (setq-local syntax-propertize-function
> > + (eval
> > + `(tex-xref-syntax-function
> > + ,identifier ,beg ,end)))
>
> Why do we need to change `syntax-propertize-function` and why do we need
> `eval`?
>
> > + (setq syntax-propertize--done 0)
>
> This is not sufficient. You want to `syntax-ppss-flush-cache`.
>
>
> Stefan
>
[-- Attachment #2: 0001-expl-region.patch --]
[-- Type: text/x-patch, Size: 2728 bytes --]
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index d990a2dbfa9..b2a6416f379 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -705,17 +705,36 @@ tex-verbatim-environments
"\\(?:_+\\(?:[^][[:space:][:cntrl:][:digit:]:\\\\{}()/#_=]+\\|"
"#+[1-9]\\)\\)+\\)\\([:_]?\\)")
(1 (ignore
- (let* ((expr (buffer-substring-no-properties (match-beginning 1)
- (match-end 1)))
- (list (seq-positions expr ?_)))
- (dolist (pos list)
- (put-text-property (+ pos (match-beginning 1))
- (1+ (+ pos (match-beginning 1)))
- 'syntax-table (string-to-syntax "_"))))))
+ (when tex-expl-region-list
+ (let ((match (match-beginning 1)))
+ (catch 'result
+ (dolist (range tex-expl-region-list)
+ (and (> match (car range))
+ (< match (cdr range))
+ (let* ((expr (buffer-substring-no-properties
+ (match-beginning 1)
+ (match-end 1)))
+ (list (seq-positions expr ?_)))
+ (dolist (pos list)
+ (put-text-property (+ pos (match-beginning 1))
+ (1+ (+ pos (match-beginning 1)))
+ 'syntax-table
+ (string-to-syntax "_"))))
+ (throw 'result t))))))))
(2 "_"))
("\\\\[[:alpha:]]+\\(:\\)[[:alpha:][:space:]\n]"
(1 "_")))))
+(defvar-local tex-expl-region-list nil)
+
+(defun tex-expl-region-set (_beg _end)
+ (setq tex-expl-region-list nil)
+ (goto-char (point-min))
+ (while (re-search-forward "\\ExplSyntaxOn" nil t)
+ (let ((new-beg (point))
+ (new-end (re-search-forward "\\ExplSyntaxOff" nil t)))
+ (add-to-list 'tex-expl-region-list (cons new-beg new-end) t))))
+
(defun tex-env-mark (cmd start end)
(when (= cmd (line-beginning-position))
(let ((arg (buffer-substring-no-properties (1+ start) (1- end))))
@@ -1308,6 +1327,8 @@ tex-common-initialization
#'tex--prettify-symbols-compose-p)
(setq-local syntax-propertize-function
(syntax-propertize-rules latex-syntax-propertize-rules))
+ (add-hook 'syntax-propertize-extend-region-functions
+ #'tex-expl-region-set nil t)
;; TABs in verbatim environments don't do what you think.
(setq-local indent-tabs-mode nil)
;; Set up xref backend in TeX buffers.
^ permalink raw reply related [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-07 2:27 ` Dmitry Gutov
@ 2024-05-09 3:00 ` Dmitry Gutov
2024-05-09 6:38 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
` (2 more replies)
0 siblings, 3 replies; 106+ messages in thread
From: Dmitry Gutov @ 2024-05-09 3:00 UTC (permalink / raw)
To: Stefan Monnier, David Fussner
Cc: 53749, Ikumi Keita, Arash Esbati, stefankangas, Tassilo Horn,
Eli Zaretskii
On 07/05/2024 05:27, Dmitry Gutov wrote:
> On 03/05/2024 16:42, Stefan Monnier via Bug reports for GNU Emacs, the
> Swiss army knife of text editors wrote:
>>> Thanks for looking over the patch. Here's the recipe for the purported
>>> bug in xref.el:
>> The problem stems from xref.el's constant abuse of
>> `inhibit-modification-hooks`. Binding this var to t should be done only
>> in exceptional circumstances and should ideally be accompanied by a
>> comment explaining why it's necessary.
>
> Well, the reason is performance: I've tried to wring out the most out of
> it, given that we have to parse the buffer for syntax in Elisp, and
> that'll always have a certain overhead.
>
> The difference between inhibiting and not could be up to 20% of runtime.
>
> David's fix makes things slower (just due to having us do the necessary
> work), but still has an edge over having no inhibit-modification-hooks.
>
> That remaining improvement is around 4-7% in my testing, though, so
> maybe it's the point where we should prioritize simplicity.
For now, I've pushed a fix in 86187d43e2d which seems to handle David's
scenario and address your review comment as well.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-09 3:00 ` Dmitry Gutov
@ 2024-05-09 6:38 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-09 10:49 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-13 20:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-09 6:38 UTC (permalink / raw)
To: Dmitry Gutov
Cc: 53749, Ikumi Keita, Arash Esbati, Stefan Kangas, Tassilo Horn,
Eli Zaretskii, Stefan Monnier
[-- Attachment #1: Type: text/plain, Size: 1359 bytes --]
Thank you, Dmitry! I'll run tests later today and get back to you.
David.
On Thu, 9 May 2024, 04:00 Dmitry Gutov, <dgutov@yandex.ru> wrote:
> On 07/05/2024 05:27, Dmitry Gutov wrote:
> > On 03/05/2024 16:42, Stefan Monnier via Bug reports for GNU Emacs, the
> > Swiss army knife of text editors wrote:
> >>> Thanks for looking over the patch. Here's the recipe for the purported
> >>> bug in xref.el:
> >> The problem stems from xref.el's constant abuse of
> >> `inhibit-modification-hooks`. Binding this var to t should be done only
> >> in exceptional circumstances and should ideally be accompanied by a
> >> comment explaining why it's necessary.
> >
> > Well, the reason is performance: I've tried to wring out the most out of
> > it, given that we have to parse the buffer for syntax in Elisp, and
> > that'll always have a certain overhead.
> >
> > The difference between inhibiting and not could be up to 20% of runtime.
> >
> > David's fix makes things slower (just due to having us do the necessary
> > work), but still has an edge over having no inhibit-modification-hooks.
> >
> > That remaining improvement is around 4-7% in my testing, though, so
> > maybe it's the point where we should prioritize simplicity.
>
> For now, I've pushed a fix in 86187d43e2d which seems to handle David's
> scenario and address your review comment as well.
>
[-- Attachment #2: Type: text/html, Size: 1871 bytes --]
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-09 3:00 ` Dmitry Gutov
2024-05-09 6:38 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-09 10:49 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-13 20:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-09 10:49 UTC (permalink / raw)
To: Dmitry Gutov
Cc: 53749, Ikumi Keita, Arash Esbati, stefankangas, Tassilo Horn,
Eli Zaretskii, Stefan Monnier
Hi Dmitry,
All of my tests work well now, thank you.
Best, David.
On Thu, 9 May 2024 at 04:00, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> On 07/05/2024 05:27, Dmitry Gutov wrote:
> > On 03/05/2024 16:42, Stefan Monnier via Bug reports for GNU Emacs, the
> > Swiss army knife of text editors wrote:
> >>> Thanks for looking over the patch. Here's the recipe for the purported
> >>> bug in xref.el:
> >> The problem stems from xref.el's constant abuse of
> >> `inhibit-modification-hooks`. Binding this var to t should be done only
> >> in exceptional circumstances and should ideally be accompanied by a
> >> comment explaining why it's necessary.
> >
> > Well, the reason is performance: I've tried to wring out the most out of
> > it, given that we have to parse the buffer for syntax in Elisp, and
> > that'll always have a certain overhead.
> >
> > The difference between inhibiting and not could be up to 20% of runtime.
> >
> > David's fix makes things slower (just due to having us do the necessary
> > work), but still has an edge over having no inhibit-modification-hooks.
> >
> > That remaining improvement is around 4-7% in my testing, though, so
> > maybe it's the point where we should prioritize simplicity.
>
> For now, I've pushed a fix in 86187d43e2d which seems to handle David's
> scenario and address your review comment as well.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-09 3:00 ` Dmitry Gutov
2024-05-09 6:38 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-09 10:49 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-13 20:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-14 21:24 ` Dmitry Gutov
2 siblings, 1 reply; 106+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-13 20:54 UTC (permalink / raw)
To: Dmitry Gutov
Cc: 53749, Ikumi Keita, David Fussner, Arash Esbati, stefankangas,
Tassilo Horn, Eli Zaretskii
> For now, I've pushed a fix in 86187d43e2d which seems to handle David's
> scenario and address your review comment as well.
The let-binding is done outside of `with-current-buffer`, so it relies
on the fact (itself problematic) that `inhibit-modification-hooks` is
not buffer-local.
Would it be OK to use a patch like the one below?
IIUC, in the `syntax-needed` case, the let-binding of
`inhibit-modification-hooks` is just not useful very (4-7% is not worth
the trouble), so its purpose is to speed up the other case.
Did I understand it right?
Also, what about the other two bindings of `inhibit-modification-hooks`?
Stefan
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index f9faec1b474..214e9cb6c09 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -1282,7 +1282,7 @@ xref--show-common-initialize
(erase-buffer)
(setq overlay-arrow-position nil)
(xref--insert-xrefs xref-alist)
- (add-hook 'post-command-hook 'xref--apply-truncation nil t)
+ (add-hook 'post-command-hook #'xref--apply-truncation nil t)
(goto-char (point-min))
(setq xref--original-window (assoc-default 'window alist)
xref--original-window-intent (assoc-default 'display-action alist))
@@ -2112,10 +2112,7 @@ xref--convert-hits
(defun xref--collect-matches (hit regexp tmp-buffer syntax-needed)
(pcase-let* ((`(,line ,file ,text) hit)
(file (and file (concat xref--hits-remote-id file)))
- (buf (xref--find-file-buffer file))
- ;; This is fairly dangerouns, but improves performance
- ;; for large lists, see https://debbugs.gnu.org/53749#227
- (inhibit-modification-hooks t))
+ (buf (xref--find-file-buffer file)))
(if buf
(with-current-buffer buf
(save-excursion
@@ -2130,6 +2130,9 @@
;; Using the temporary buffer is both a performance and a buffer
;; management optimization.
(with-current-buffer tmp-buffer
+ ;; This let is fairly dangerouns, but improves performance
+ ;; for large lists, see https://debbugs.gnu.org/53749#227
+ (let ((inhibit-modification-hooks t))
(erase-buffer)
(when (and syntax-needed
(not (equal file xref--temp-buffer-file-name)))
@@ -2144,7 +2147,7 @@
(setq-local xref--temp-buffer-file-name file)
(setq-local inhibit-read-only t)
(erase-buffer))
- (insert text)
+ (insert text))
(goto-char (point-min))
(when syntax-needed
(syntax-ppss-flush-cache (point)))
^ permalink raw reply related [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-13 20:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-14 21:24 ` Dmitry Gutov
2024-05-16 18:18 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Dmitry Gutov @ 2024-05-14 21:24 UTC (permalink / raw)
To: Stefan Monnier
Cc: 53749, Ikumi Keita, David Fussner, Arash Esbati, stefankangas,
Tassilo Horn, Eli Zaretskii
On 13/05/2024 23:54, Stefan Monnier via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
>> For now, I've pushed a fix in 86187d43e2d which seems to handle David's
>> scenario and address your review comment as well.
>
> The let-binding is done outside of `with-current-buffer`, so it relies
> on the fact (itself problematic) that `inhibit-modification-hooks` is
> not buffer-local.
Good point.
> Would it be OK to use a patch like the one below?
Sure, thank you. Pushed.
> IIUC, in the `syntax-needed` case, the let-binding of
> `inhibit-modification-hooks` is just not useful very (4-7% is not worth
> the trouble), so its purpose is to speed up the other case.
4-10% is the improvement for both cases (the "syntax needed" and not).
I could be on the fence whether it's "not useful" - on the one hand 4%
might not sound like much - on the other we already have this bit of
improvement which has no known bugs. And when you combine a few of such
performance hacks, the difference gets more noticeable.
Also, I'm eyeing another performance improvement (simplifying file type
detection) - the call to set-auto-mode is not fast. Simply commenting
this call out improves the performance by 4x or so - but we'll need a
simpler version of it instead, of course.
And with the above change (commenting out the set-auto-mode call), the
difference that the inhibit-modification-hooks hack makes is amplified:
it can get up to 20%. Ultimately it'll be somewhere in between, but this
sounds better, right?
> Also, what about the other two bindings of `inhibit-modification-hooks`?
The other two are used while the contents of the Xref buffer are printed
(or re-printed), so there's none of the syntax-ppss complications there.
The performance difference is 8.5% in my last measurement.
>
> Stefan
>
>
> diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
> index f9faec1b474..214e9cb6c09 100644
> --- a/lisp/progmodes/xref.el
> +++ b/lisp/progmodes/xref.el
> @@ -1282,7 +1282,7 @@ xref--show-common-initialize
> (erase-buffer)
> (setq overlay-arrow-position nil)
> (xref--insert-xrefs xref-alist)
> - (add-hook 'post-command-hook 'xref--apply-truncation nil t)
> + (add-hook 'post-command-hook #'xref--apply-truncation nil t)
> (goto-char (point-min))
> (setq xref--original-window (assoc-default 'window alist)
> xref--original-window-intent (assoc-default 'display-action alist))
> @@ -2112,10 +2112,7 @@ xref--convert-hits
> (defun xref--collect-matches (hit regexp tmp-buffer syntax-needed)
> (pcase-let* ((`(,line ,file ,text) hit)
> (file (and file (concat xref--hits-remote-id file)))
> - (buf (xref--find-file-buffer file))
> - ;; This is fairly dangerouns, but improves performance
> - ;; for large lists, see https://debbugs.gnu.org/53749#227
> - (inhibit-modification-hooks t))
> + (buf (xref--find-file-buffer file)))
> (if buf
> (with-current-buffer buf
> (save-excursion
> @@ -2130,6 +2130,9 @@
> ;; Using the temporary buffer is both a performance and a buffer
> ;; management optimization.
> (with-current-buffer tmp-buffer
> + ;; This let is fairly dangerouns, but improves performance
> + ;; for large lists, see https://debbugs.gnu.org/53749#227
> + (let ((inhibit-modification-hooks t))
> (erase-buffer)
> (when (and syntax-needed
> (not (equal file xref--temp-buffer-file-name)))
> @@ -2144,7 +2147,7 @@
> (setq-local xref--temp-buffer-file-name file)
> (setq-local inhibit-read-only t)
> (erase-buffer))
> - (insert text)
> + (insert text))
> (goto-char (point-min))
> (when syntax-needed
> (syntax-ppss-flush-cache (point)))
>
>
>
>
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-03 14:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
` (2 preceding siblings ...)
2024-05-07 13:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-15 15:47 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-16 7:53 ` Arash Esbati
3 siblings, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-15 15:47 UTC (permalink / raw)
To: Stefan Monnier
Cc: 53749, Ikumi Keita, Tassilo Horn, Arash Esbati, stefankangas,
Dmitry Gutov, Eli Zaretskii
[-- Attachment #1: Type: text/plain, Size: 7879 bytes --]
Hi Stefan,
I attach an updated patch for tex-mode and etags, in which I've
attempted to include all of your recommendations. A few notes:
1. I changed the name as well as the doc string of the variable
holding the TeX escape and grouping chars (now
`tex-thingatpt-exclude-chars`). I hope this makes it clearer.
2. I removed the regexp for detecting expl3 constructs, and now rely
on the mechanism I outlined in my previous work-in-progress patch:
(a) Test for expl3 class or package, set `tex-expl-file-p` to t.
(b) If not (a), add `tex-expl-region-set` to the
`syntax-propertize-extend-region-functions` hook to list all
regions between \ExplSyntaxOn and \ExplSyntaxOff
(`tex-expl-region-list`).
(c) Add test in `tex-font-lock-suscript` for (a) then (b), don't
subscript after the underscore when either is t.
3. I tried benchmarking `syntax-ppss-flush-cache` and
`font-lock-flush` before and after the changes. The former had a
maximum slowdown of 0.5% (usually less) and the latter a maximum of
0.2%, but if you want to see my methodology or suggest something to
try please let me know.
4. I left the bespoke `syntax-propertize-function` in the
`xref-backend-references` method uncompiled, as simple benchmarking
suggested no perceptible gain from byte compiling it. Using
`syntax-ppss-flush-cache` to restore the status quo ante in each
file-visiting buffer streamlined the code and made it do what it
was supposed to do.
Thanks again for your advice, and please let me know what still needs
work.
Best, David.
On Fri, 3 May 2024 at 15:11, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
>
> Hi,
>
> Apparently I'm the `tex-mode.el` guy, so I tried to take a look.
>
> > diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
> > index 97c950267c6..d990a2dbfa9 100644
> > --- a/lisp/textmodes/tex-mode.el
> > +++ b/lisp/textmodes/tex-mode.el
> > @@ -695,7 +696,25 @@ tex-verbatim-environments
> > ("\\\\\\(?:end\\|begin\\) *\\({[^\n{}]*}\\)"
> > (1 (ignore
> > (tex-env-mark (match-beginning 0)
> > - (match-beginning 1) (match-end 1))))))))
> > + (match-beginning 1) (match-end 1)))))
> > + ;; The next two rules change the syntax of `:' and `_' in expl3
> > + ;; constructs, so that `tex-font-lock-suscript' can fontify them
> > + ;; more accurately.
> > + ((concat "\\(\\(?:[\\\\[:space:]{]_\\|"
> > + "[\\\\{[:space:]][^][_[:space:][:cntrl:][:digit:]\\\\{}()/=]+\\)"
> > + "\\(?:_+\\(?:[^][[:space:][:cntrl:][:digit:]:\\\\{}()/#_=]+\\|"
> > + "#+[1-9]\\)\\)+\\)\\([:_]?\\)")
>
> Can you add in the comment some URL pointing to some relevant expl3
> documentation which "explains" why the above regexp makes sense?
> Also I don't clearly see how the above regexp distinguishes expl3 code
> from "normal" LaTeX code, so the comment should say something about it.
>
> Side note: I'd avoid [:space:] whose exact meaning is rarely quite what
> we need.
> Side note: backslash doesn't need to be backslashed in [...].
>
> > + (1 (ignore
> > + (let* ((expr (buffer-substring-no-properties (match-beginning 1)
> > + (match-end 1)))
> > + (list (seq-positions expr ?_)))
> > + (dolist (pos list)
> > + (put-text-property (+ pos (match-beginning 1))
> > + (1+ (+ pos (match-beginning 1)))
> > + 'syntax-table (string-to-syntax "_"))))))
> > + (2 "_"))
> > + ("\\\\[[:alpha:]]+\\(:\\)[[:alpha:][:space:]\n]"
> > + (1 "_")))))
>
> Currently we "skip" inappropriate underscores via
> `tex-font-lock-match-suscript` and/or by adding a particular `face` text
> property rather than via `syntax-table/propertize`.
>
> For algorithmic reasons, it's better to minimize the work done in
> `syntax-propertize-function` as much as possible (font-lock is more lazy
> than `syntax-propertize`), so I recommend you try and moving the above
> to font-lock rules.
>
> > +(defvar tex-esc-and-group-chars '(?\\ ?{ ?})
> > + "The current TeX escape and grouping characters.
>
> I recommend you backslash escape the { and } above (although it's not
> indispensable, `emacs-lisp-mode` will parse the code better).
> More importantly, the docstring doesn't explain what this list
> means/does. E.g. does the order matter? Can it be longer than 3 elements?
>
> From the current docstring I can't guess what would be the consequence
> of adding/removing elements to/from this list.
>
> > +;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
> > +;; AUCTeX is doing the same for its modes.
> > +(defvar semantic-symref-filepattern-alist)
> > +(with-eval-after-load 'semantic/symref/grep
> > + (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
> > + "*.bbl" "*.drv" "*.hva")
> > + semantic-symref-filepattern-alist)
> > + (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
> > + semantic-symref-filepattern-alist)
> > + (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
>
> We know `semantic-symref-filepattern-alist` will exist when
> `semantic/symref/grep` is loaded, but not before, so I'd put the
> `defvar` inside the `with-eval-after-load`.
>
> > +;; Setup AUCTeX modes (for testing purposes only).
> > +
> > +(add-hook 'TeX-mode-hook #'tex-set-auctex-xref-backend)
> > +
> > +(defun tex-set-auctex-xref-backend ()
> > + (add-hook 'xref-backend-functions #'tex--xref-backend nil t))
>
> I assume this will be sent to AUCTeX and is not meant to be in
> `tex-mode.el`, right?
>
> > +;; `xref-find-references' currently may need this when called from a
> > +;; latex-mode buffer in order to search files or buffers with a .tex
> > +;; suffix (including the buffer from which it has been called). We
> > +;; append it to `auto-mode-alist' so as not to interfere with the usual
> > +;; mode-setting apparatus. Changes here and in AUCTeX should soon
> > +;; render it unnecessary.
> > +(add-to-list 'auto-mode-alist '("\\.[tT]e[xX]\\'" . latex-mode) t)
>
> Maybe I have not followed the whole discussion closely enough, but at
> least to me the above "soon" is very unclear.
> I'll assume that this code will be removed before we install the patch.
> If not, please explain in the comment why this specific hack is needed
> and how it works.
>
> > +(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags)) identifier)
> > + "Find references of IDENTIFIER in TeX buffers and files."
> > + (require 'semantic/symref/grep)
> > + (let (bufs texbufs
> > + (mode major-mode))
> > + (dolist (buf (buffer-list))
> > + (if (eq (buffer-local-value 'major-mode buf) mode)
> > + (push buf bufs)
> > + (when (string-match-p ".*\\.[tT]e[xX]" (buffer-name buf))
> > + (push buf texbufs))))
> > + (unless (seq-set-equal-p tex--buffers-list bufs)
> > + (let* ((amalist (tex--collect-file-extensions))
> > + (extlist (alist-get mode semantic-symref-filepattern-alist))
> > + (extlist-new (seq-uniq
> > + (seq-union amalist extlist #'string-match-p))))
>
> After sinking the `defvar` above, you'll need to add a new `defvar` for
> `semantic-symref-filepattern-alist` just after the `require`.
>
> > + (setq-local syntax-propertize-function
> > + (eval
> > + `(tex-xref-syntax-function
> > + ,identifier ,beg ,end)))
>
> Why do we need to change `syntax-propertize-function` and why do we need
> `eval`?
>
> > + (setq syntax-propertize--done 0)
>
> This is not sufficient. You want to `syntax-ppss-flush-cache`.
>
>
> Stefan
>
[-- Attachment #2: 0002-Provide-a-modified-xref-backend-for-TeX-buffers.patch --]
[-- Type: text/x-patch, Size: 33084 bytes --]
From 87d83778ce8c35365937322183d101be234ac882 Mon Sep 17 00:00:00 2001
From: David Fussner <dfussner@googlemail.com>
Date: Wed, 15 May 2024 16:36:15 +0100
Subject: [PATCH] Provide a modified xref backend for TeX buffers
* lib-src/etags.c (TeX_commands): Improve parsing of commands in TeX
buffers.
(TEX_defenv): Expand list of commands to tag by default in TeX
buffers.
(TeX_help):
* doc/emacs/maintaining.texi (Tag Syntax): Document new tagged
commands.
(Identifier Search): Add note about semantic-symref-filepattern-alist,
auto-mode-alist, and xref-find-references.
* lisp/textmodes/tex-mode.el (tex-font-lock-suscript): Test for
underscore in expl3 files and regions, disable subscript face there.
(tex-common-initialization): Set up xref backend for in-tree TeX
modes. Detect expl3 files, and in others set up a list of expl3
regions.
(tex-expl-buffer-parse): New function called in previous.
(tex-expl-buffer-p): New var to hold the result of previous.
(tex-expl-region-set): New function added to
'syntax-propertize-extend-region-functions' hook.
(tex-expl-region-list): New var to hold the result of previous.
(tex--thing-at-point, tex-thingatpt--beginning-of-symbol)
(tex-thingatpt--end-of-symbol, tex--bounds-of-symbol-at-point):
New functions to return 'thing-at-point' for xref backend.
(tex-thingatpt-exclude-chars): New var to do the same.
(xref-backend-identifier-at-point): New TeX backend method to provide
symbols for processing by xref.
(xref-backend-identifier-completion-table)
(xref-backend-identifier-completion-ignore-case)
(xref-backend-definitions, xref-backend-apropos): Placeholders to
call the standard 'etags' xref backend methods.
(xref-backend-references): Wrapper to call the default xref backend
method, finding as many relevant files as possible and using a bespoke
syntax-propertize-function when required.
(tex--collect-file-extensions, tex-xref-syntax-function): Helper
functions for previous.
(tex-find-references-syntax-table, tex--buffers-list)
(tex--xref-syntax-fun, tex--old-syntax-function): New vars for same.
---
doc/emacs/maintaining.texi | 39 +++-
lib-src/etags.c | 189 +++++++++++++++++--
lisp/textmodes/tex-mode.el | 372 ++++++++++++++++++++++++++++++++++++-
3 files changed, 579 insertions(+), 21 deletions(-)
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 579098c81b1..a064103aa25 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -2529,6 +2529,15 @@ Identifier Search
referenced. The XREF mode commands are available in this buffer, see
@ref{Xref Commands}.
+When invoked in a buffer whose major mode uses the @code{etags} backend,
+@kbd{M-?} searches files and buffers whose major mode matches that of
+the original buffer. It guesses that mode from file extensions, so if
+@kbd{M-?} seems to be skipping relevant buffers or files, try
+customizing either the variable @code{semantic-symref-filepattern-alist}
+(if your buffer's major mode already has an entry in it), or
+@code{auto-mode-alist} (if not), thereby informing @code{xref} of the
+missing extensions (@pxref{Choosing Modes}).
+
@vindex xref-auto-jump-to-first-xref
If the value of the variable @code{xref-auto-jump-to-first-xref} is
@code{t}, @code{xref-find-references} automatically jumps to the first
@@ -2747,10 +2756,32 @@ Tag Syntax
@item
In @LaTeX{} documents, the arguments for @code{\chapter},
@code{\section}, @code{\subsection}, @code{\subsubsection},
-@code{\eqno}, @code{\label}, @code{\ref}, @code{\cite},
-@code{\bibitem}, @code{\part}, @code{\appendix}, @code{\entry},
-@code{\index}, @code{\def}, @code{\newcommand}, @code{\renewcommand},
-@code{\newenvironment} and @code{\renewenvironment} are tags.
+@code{\eqno}, @code{\label}, @code{\ref}, @code{\Ref}, @code{\footref},
+@code{\cite}, @code{\bibitem}, @code{\part}, @code{\appendix},
+@code{\entry}, @code{\index}, @code{\def}, @code{\edef}, @code{\gdef},
+@code{\xdef}, @code{\newcommand}, @code{\renewcommand},
+@code{\newenvironment}, @code{\renewenvironment},
+@code{\DeclareRobustCommand}, @code{\newrobustcmd},
+@code{\renewrobustcmd}, @code{\providecommand},
+@code{\providerobustcmd}, @code{\NewDocumentCommand},
+@code{\RenewDocumentCommand}, @code{\ProvideDocumentCommand},
+@code{\DeclareDocumentCommand}, @code{\NewExpandableDocumentCommand},
+@code{\RenewExpandableDocumentCommand},
+@code{\ProvideExpandableDocumentCommand},
+@code{\DeclareExpandableDocumentCommand},
+@code{\NewDocumentEnvironment}, @code{\RenewDocumentEnvironment},
+@code{\ProvideDocumentEnvironment}, @code{\DeclareDocumentEnvironment},
+@code{\csdef}, @code{\csedef}, @code{\csgdef}, @code{\csxdef},
+@code{\csletcs}, @code{\cslet}, @code{\letcs}, @code{\let},
+@code{\cs_new_protected_nopar}, @code{\cs_new_protected},
+@code{\cs_new_nopar}, @code{\cs_new_eq}, @code{\cs_new},
+@code{\cs_set_protected_nopar}, @code{\cs_set_protected},
+@code{\cs_set_nopar}, @code{\cs_set_eq}, @code{\cs_set},
+@code{\cs_gset_protected_nopar}, @code{\cs_gset_protected},
+@code{\cs_gset_nopar}, @code{\cs_gset_eq}, @code{\cs_gset},
+@code{\cs_generate_from_arg_count}, and @code{\cs_generate_variant} are
+tags. So too are the arguments of any starred variants of these
+commands.
Other commands can make tags as well, if you specify them in the
environment variable @env{TEXTAGS} before invoking @command{etags}. The
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 03bc55de03d..11fddc187c2 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -793,11 +793,27 @@ #define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
static const char *TeX_suffixes [] =
{ "bib", "clo", "cls", "ltx", "sty", "TeX", "tex", NULL };
static const char TeX_help [] =
-"In LaTeX text, the argument of any of the commands '\\chapter',\n\
-'\\section', '\\subsection', '\\subsubsection', '\\eqno', '\\label',\n\
-'\\ref', '\\cite', '\\bibitem', '\\part', '\\appendix', '\\entry',\n\
-'\\index', '\\def', '\\newcommand', '\\renewcommand',\n\
-'\\newenvironment' or '\\renewenvironment' is a tag.\n\
+"In LaTeX text, the argument of the commands '\\chapter', '\\section',\n\
+'\\subsection', '\\subsubsection', '\\eqno', '\\label', '\\ref',\n\
+'\\Ref', '\\footref', '\\cite', '\\bibitem', '\\part', '\\appendix',\n\
+'\\entry', '\\index', '\\def', '\\edef', '\\gdef', '\\xdef',\n\
+'\\newcommand', '\\renewcommand', '\\newrobustcmd', '\\renewrobustcmd',\n\
+'\\newenvironment', '\\renewenvironment', '\\DeclareRobustCommand',\n\
+'\\providecommand', '\\providerobustcmd', '\\NewDocumentCommand',\n\
+'\\RenewDocumentCommand', '\\ProvideDocumentCommand',\n\
+'\\DeclareDocumentCommand', '\\NewExpandableDocumentCommand',\n\
+'\\RenewExpandableDocumentCommand', '\\ProvideExpandableDocumentCommand',\n\
+'\\DeclareExpandableDocumentCommand', '\\NewDocumentEnvironment',\n\
+'\\RenewDocumentEnvironment', '\\ProvideDocumentEnvironment',\n\
+'\\DeclareDocumentEnvironment','\\csdef', '\\csedef', '\\csgdef',\n\
+'\\csxdef', '\\csletcs', '\\cslet', '\\letcs', '\\let',\n\
+'\\cs_new_protected_nopar', '\\cs_new_protected', '\\cs_new_nopar',\n\
+'\\cs_new_eq', '\\cs_new', '\\cs_set_protected_nopar',\n\
+'\\cs_set_protected', '\\cs_set_nopar', '\\cs_set_eq', '\\cs_set',\n\
+'\\cs_gset_protected_nopar', '\\cs_gset_protected', '\\cs_gset_nopar',\n\
+'\\cs_gset_eq', '\\cs_gset', '\\cs_generate_from_arg_count', or\n\
+'\\cs_generate_variant' is a tag. So is the argument of any starred\n\
+variant of these commands.\n\
\n\
Other commands can be specified by setting the environment variable\n\
'TEXTAGS' to a colon-separated list like, for example,\n\
@@ -5740,11 +5756,25 @@ Scheme_functions (FILE *inf)
static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */
/* Default set of control sequences to put into TEX_toktab.
- The value of environment var TEXTAGS is prepended to this. */
+ The value of environment var TEXTAGS is prepended to this.
+ (2024) Add variants of '\def', some additional LaTeX (and
+ former xparse) commands, common variants from the
+ 'etoolbox' package, and the main expl3 commands. */
static const char *TEX_defenv = "\
-:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
-:part:appendix:entry:index:def\
-:newcommand:renewcommand:newenvironment:renewenvironment";
+:label:ref:Ref:footref:chapter:section:subsection:subsubsection:eqno:cite\
+:bibitem:part:appendix:entry:index:def:edef:gdef:xdef:newcommand:renewcommand\
+:newenvironment:renewenvironment:DeclareRobustCommand:renewrobustcmd\
+:newrobustcmd:providecommand:providerobustcmd:NewDocumentCommand\
+:RenewDocumentCommand:ProvideDocumentCommand:DeclareDocumentCommand\
+:NewExpandableDocumentCommand:RenewExpandableDocumentCommand\
+:ProvideExpandableDocumentCommand:DeclareExpandableDocumentCommand\
+:NewDocumentEnvironment:RenewDocumentEnvironment\
+:ProvideDocumentEnvironment:DeclareDocumentEnvironment:csdef\
+:csedef:csgdef:csxdef:csletcs:cslet:letcs:let:cs_new_protected_nopar\
+:cs_new_protected:cs_new_nopar:cs_new_eq:cs_new:cs_set_protected_nopar\
+:cs_set_protected:cs_set_nopar:cs_set_eq:cs_set:cs_gset_protected_nopar\
+:cs_gset_protected:cs_gset_nopar:cs_gset_eq:cs_gset\
+:cs_generate_from_arg_count:cs_generate_variant";
static void TEX_decode_env (const char *, const char *);
@@ -5803,19 +5833,137 @@ TeX_commands (FILE *inf)
{
char *p;
ptrdiff_t namelen, linelen;
- bool opgrp = false;
+ bool opgrp = false, one_esc = false, is_explthree = false;
cp = skip_spaces (cp + key->len);
+
+ /* 1. The canonical expl3 syntax looks something like this:
+ \cs_new:Npn \__hook_tl_gput:Nn { \ERROR }. First, if we
+ want to tag any such commands, we include only the part
+ before the colon (cs_new) in TEX_defenv or TEXTAGS. Second,
+ etags skips the argument specifier (including the colon)
+ after the tag token, so that it doesn't become the tag name.
+ Third, we set the boolean 'is_explthree' to true so that we
+ can remove the argument specifier from the actual tag name
+ (__hook_tl_gput). This all allows us to include expl3
+ constructs in TEX_defenv or in the environment variable
+ TEXTAGS without requiring a change of separator, and it also
+ allows us to find the definition of variant commands (with
+ different argument specifiers) defined using, for example,
+ \cs_generate_variant:Nn. Please note that the expl3 spec
+ requires etags to pay more attention to whitespace in the
+ code.
+
+ 2. We also automatically remove the asterisk from starred
+ variants of all commands, without the need to include the
+ starred commands explicitly in TEX_defenv or TEXTAGS. */
+ if (*cp == ':')
+ {
+ while (!c_isspace (*cp) && *cp != TEX_opgrp)
+ cp++;
+ cp = skip_spaces (cp);
+ is_explthree = true;
+ }
+ else if (*cp == '*')
+ cp++;
+
+ /* Skip the optional arguments to commands in the tags list so
+ that these arguments don't end up as the name of the tag.
+ The name will instead come from the argument in curly braces
+ that follows the optional ones. */
+ while (*cp != '\0' && *cp != '%')
+ {
+ if (*cp == '[')
+ {
+ while (*cp != ']' && *cp != '\0' && *cp != '%')
+ cp++;
+ }
+ else if (*cp == '(')
+ {
+ while (*cp != ')' && *cp != '\0' && *cp != '%')
+ cp++;
+ }
+ else if (*cp == ']' || *cp == ')')
+ cp++;
+ else
+ break;
+ }
if (*cp == TEX_opgrp)
{
opgrp = true;
cp++;
+ cp = skip_spaces (cp); /* For expl3 code. */
}
+
+ /* Removing the TeX escape character from tag names simplifies
+ things for editors finding tagged commands in TeX buffers.
+ This applies to Emacs but also to the tag-finding behavior
+ of at least some of the editors that use ctags, though in
+ the latter case this will remain suboptimal. The
+ undocumented ctags option '--no-duplicates' may help. */
+ if (*cp == TEX_esc)
+ {
+ cp++;
+ one_esc = true;
+ }
+
+ /* Testing !c_isspace && !c_ispunct is simpler, but halts
+ processing at too many places. The list as it stands tries
+ both to ensure that tag names will derive from macro names
+ rather than from optional parameters to those macros, and
+ also to return findable names while still allowing for
+ unorthodox constructs. */
for (p = cp;
- (!c_isspace (*p) && *p != '#' &&
- *p != TEX_opgrp && *p != TEX_clgrp);
+ (!c_isspace (*p) && *p != '#' && *p != '=' &&
+ *p != '[' && *p != '(' && *p != TEX_opgrp &&
+ *p != TEX_clgrp && *p != '"' && *p != '\'' &&
+ *p != '%' && *p != ',' && *p != '|' && *p != '$');
p++)
- continue;
+ /* In expl3 code we remove the argument specification from
+ the tag name. More generally we allow only one (deleted)
+ escape char in a tag name, which (primarily) enables
+ tagging a TeX command's different, possibly temporary,
+ '\let' bindings. */
+ if (is_explthree && *p == ':')
+ break;
+ else if (*p == TEX_esc)
+ { /* Second part of test is for, e.g., \cslet. */
+ if (!one_esc && !opgrp)
+ {
+ one_esc = true;
+ continue;
+ }
+ else
+ break;
+ }
+ else
+ continue;
+ /* For TeX files, tags without a name are basically cruft, and
+ in some situations they can produce spurious and confusing
+ matches. Try to catch as many cases as possible where a
+ command name is of the form '\(', but avoid, as far as
+ possible, the spurious matches. */
+ if (p == cp)
+ {
+ switch (*p)
+ { /* Include =? */
+ case '(': case '[': case '"': case '\'':
+ case '\\': case '!': case '=': case ',':
+ case '|': case '$':
+ p++;
+ break;
+ case '{': case '}': case '<': case '>':
+ if (!opgrp)
+ {
+ p++;
+ if (*p == '\0' || *p == '%')
+ goto tex_next_line;
+ }
+ break;
+ default:
+ break;
+ }
+ }
namelen = p - cp;
linelen = lb.len;
if (!opgrp || *p == TEX_clgrp)
@@ -5824,9 +5972,18 @@ TeX_commands (FILE *inf)
p++;
linelen = p - lb.buffer + 1;
}
- make_tag (cp, namelen, true,
- lb.buffer, linelen, lineno, linecharno);
- goto tex_next_line; /* We only tag a line once */
+ if (namelen)
+ make_tag (cp, namelen, true,
+ lb.buffer, linelen, lineno, linecharno);
+ /* Lines with more than one \def or \let are surprisingly
+ common in TeX files, especially in the system files that
+ form the basis of the various TeX formats. This tags them
+ all. */
+ /* goto tex_next_line; /\* We only tag a line once *\/ */
+ while (*cp != '\0' && *cp != '%' && *cp != TEX_esc)
+ cp++;
+ if (*cp != TEX_esc)
+ goto tex_next_line;
}
}
tex_next_line:
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 97c950267c6..224930d68ae 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -636,6 +636,14 @@ tex-font-lock-keywords-2
3 '(tex-font-lock-append-prop 'bold) 'append)))))
"Gaudy expressions to highlight in TeX modes.")
+(defvar-local tex-expl-region-list nil
+ "List of region boundaries where expl3 syntax is active.
+It will be nil in buffers where expl3 syntax is always active, e.g.,
+expl3 classes or packages.")
+
+(defvar-local tex-expl-buffer-p nil
+ "Non-nil in buffers where expl3 syntax is always active.")
+
(defun tex-font-lock-suscript (pos)
(unless (or (memq (get-text-property pos 'face)
'(font-lock-constant-face font-lock-builtin-face
@@ -645,7 +653,17 @@ tex-font-lock-suscript
(pos pos))
(while (eq (char-before pos) ?\\)
(setq pos (1- pos) odd (not odd)))
- odd))
+ odd)
+ ;; Check if POS is in an expl3 syntax region or an expl3 buffer
+ (when (eq (char-after pos) ?_)
+ (or tex-expl-buffer-p
+ (and
+ tex-expl-region-list
+ (catch 'result
+ (dolist (range tex-expl-region-list)
+ (and (> pos (car range))
+ (< pos (cdr range))
+ (throw 'result t))))))))
(if (eq (char-after pos) ?_)
`(face subscript display (raise ,(car tex-font-script-display)))
`(face superscript display (raise ,(cadr tex-font-script-display))))))
@@ -1289,8 +1307,16 @@ tex-common-initialization
#'tex--prettify-symbols-compose-p)
(setq-local syntax-propertize-function
(syntax-propertize-rules latex-syntax-propertize-rules))
+ ;; Don't add extra processing to `syntax-propertize' in files where
+ ;; expl3 syntax is always active.
+ :after-hook (progn (tex-expl-buffer-parse)
+ (unless tex-expl-buffer-p
+ (add-hook 'syntax-propertize-extend-region-functions
+ #'tex-expl-region-set nil t)))
;; TABs in verbatim environments don't do what you think.
(setq-local indent-tabs-mode nil)
+ ;; Set up xref backend in TeX buffers.
+ (add-hook 'xref-backend-functions #'tex--xref-backend nil t)
;; Other vars that should be buffer-local.
(make-local-variable 'tex-command)
(make-local-variable 'tex-start-of-header)
@@ -1936,6 +1962,35 @@ tex-count-words
(forward-sexp 1))))))
(message "%s words" count))))
+(defun tex-expl-buffer-parse ()
+ "Identify buffers where expl3 syntax is always active."
+ (save-excursion
+ (goto-char (point-min))
+ (when (tex-search-noncomment
+ (re-search-forward
+ "\\(?:\\\\\\(?:ExplFile\\|ProvidesExpl\\|__xparse_file\\)\\)"
+ nil t))
+ (setq tex-expl-buffer-p t))))
+
+(defun tex-expl-region-set (_beg _end)
+ "Create a list of regions where expl3 syntax is active.
+This function updates the list whenever `syntax-propertize' runs, and
+stores it in the buffer-local variable `tex-expl-region-list'. The
+list will always be nil when the buffer visits an expl3 file, e.g., an
+expl3 class or package, where expl3 syntax is always active."
+ (unless syntax-ppss--updated-cache;; Stop forward search running twice.
+ (setq tex-expl-region-list nil)
+ ;; Leaving this test here allows users to set `tex-expl-buffer-p'
+ ;; independently of the mode's automatic detection of an expl3 file.
+ (unless tex-expl-buffer-p
+ (goto-char (point-min))
+ (while (tex-search-noncomment
+ (re-search-forward "\\ExplSyntaxOn" nil t))
+ (let ((new-beg (point))
+ (new-end (or (tex-search-noncomment
+ (re-search-forward "\\ExplSyntaxOff" nil t))
+ (point-max))))
+ (push (cons new-beg new-end) tex-expl-region-list))))))
\f
;;; Invoking TeX in an inferior shell.
@@ -3742,6 +3797,321 @@ tex-chktex
(process-send-region tex-chktex--process (point-min) (point-max))
(process-send-eof tex-chktex--process))))
+\f
+;;; Xref backend
+
+;; Here we lightly adapt the default etags backend for xref so that
+;; the main xref user commands (including `xref-find-definitions',
+;; `xref-find-apropos', and `xref-find-references' [on M-., C-M-., and
+;; M-?, respectively]) work in TeX buffers. The only methods we
+;; actually modify are `xref-backend-identifier-at-point' and
+;; `xref-backend-references'. Many of the complications here, and in
+;; `etags' itself, are due to the necessity of parsing both the old
+;; TeX syntax and the new expl3 syntax, which will continue to appear
+;; together in documents for the foreseeable future. Synchronizing
+;; Emacs and `etags' this way aims to improve the user experience "out
+;; of the box."
+
+(defvar tex-thingatpt-exclude-chars '(?\\ ?\{ ?\})
+ "Exclude these chars by default from TeX thing-at-point.
+
+The TeX `xref-backend-identifier-at-point' method uses the characters
+listed in this variable to decide on the default search string to
+present to the user who calls an `xref' command. These characters
+become part of a regexp which always excludes them from that default
+string. For the `xref' commands to function properly in TeX buffers, at
+least the TeX escape and the two TeX grouping characters should be
+listed here. Should your TeX documents contain other characters which
+you want to exclude by default, then you can add them to the list,
+though you may wish to consult the functions
+`tex-thingatpt--beginning-of-symbol' and `tex-thingatpt--end-of-symbol'
+to see what the regexp already contains. If your documents contain
+non-standard escape and grouping characters, then you can replace the
+three listed here with your own, thereby allowing the three standard
+characters to appear by default in search strings. Please be aware,
+however, that the `etags' program only recognizes `\\' (92) and `!' (33)
+as escape characters in TeX documents, and if it detects the latter it
+also uses `<>' as the TeX grouping construct rather than `{}'. Setting
+the escape and grouping chars to anything other than `\\=\\{}' or `!<>'
+will not be useful without changes to `etags', at least for commands
+that search tags tables, such as \\[xref-find-definitions] and \
+\\[xref-find-apropos].
+
+Should you wish to change the defaults, please also be aware that,
+without further modifications to tex-mode.el, the usual text-parsing
+routines for `font-lock' and the like won't work correctly, as the
+default escape and grouping characters are currently hard coded in many
+places.")
+
+;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
+;; AUCTeX is doing the same for its modes.
+(with-eval-after-load 'semantic/symref/grep
+ (defvar semantic-symref-filepattern-alist)
+ (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
+ "*.bbl" "*.drv" "*.hva")
+ semantic-symref-filepattern-alist)
+ (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
+ semantic-symref-filepattern-alist)
+ (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
+
+(defun tex--xref-backend () 'tex-etags)
+
+;; Setup AUCTeX modes (for testing purposes only).
+
+(add-hook 'TeX-mode-hook #'tex-set-auctex-xref-backend)
+
+(defun tex-set-auctex-xref-backend ()
+ (add-hook 'xref-backend-functions #'tex--xref-backend nil t))
+
+;; `xref-find-references' currently may need this when called from a
+;; latex-mode buffer in order to search files or buffers with a .tex
+;; suffix (including the buffer from which it has been called). We
+;; append it to `auto-mode-alist' so as not to interfere with the usual
+;; mode-setting apparatus. Changes here and in AUCTeX should soon
+;; render it unnecessary.
+(add-to-list 'auto-mode-alist '("\\.[tT]e[xX]\\'" . latex-mode) t)
+
+(cl-defmethod xref-backend-identifier-at-point ((_backend (eql 'tex-etags)))
+ (require 'etags)
+ (tex--thing-at-point))
+
+;; The detection of `_' and `:' is a primitive method for determining
+;; whether point is on an expl3 construct. It may fail in some
+;; instances.
+(defun tex--thing-at-point ()
+ "Demarcate `thing-at-point' for the TeX `xref' backend."
+ (let ((bounds (tex--bounds-of-symbol-at-point)))
+ (when bounds
+ (let ((texsym (buffer-substring-no-properties (car bounds) (cdr bounds))))
+ (if (and (not (string-match-p "reference" (symbol-name this-command)))
+ (seq-contains-p texsym ?_)
+ (seq-contains-p texsym ?:))
+ (seq-take texsym (seq-position texsym ?:))
+ texsym)))))
+
+(defun tex-thingatpt--beginning-of-symbol ()
+ (and
+ (re-search-backward (concat "[]["
+ (mapconcat #'regexp-quote
+ (mapcar #'char-to-string
+ tex-thingatpt-exclude-chars))
+ "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (forward-char)))
+
+(defun tex-thingatpt--end-of-symbol ()
+ (and
+ (re-search-forward (concat "[]["
+ (mapconcat #'regexp-quote
+ (mapcar #'char-to-string
+ tex-thingatpt-exclude-chars))
+ "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (backward-char)))
+
+(defun tex--bounds-of-symbol-at-point ()
+ "Simplify `bounds-of-thing-at-point' for TeX `xref' backend."
+ (let ((orig (point)))
+ (ignore-errors
+ (save-excursion
+ (tex-thingatpt--end-of-symbol)
+ (tex-thingatpt--beginning-of-symbol)
+ (let ((beg (point)))
+ (if (<= beg orig)
+ (let ((real-end
+ (progn
+ (tex-thingatpt--end-of-symbol)
+ (point))))
+ (cond ((and (<= orig real-end) (< beg real-end))
+ (cons beg real-end))
+ ((and (= orig real-end) (= beg real-end))
+ (cons beg (1+ beg)))))))))));; For 1-char TeX commands.
+
+(cl-defmethod xref-backend-identifier-completion-table ((_backend
+ (eql 'tex-etags)))
+ (xref-backend-identifier-completion-table 'etags))
+
+(cl-defmethod xref-backend-identifier-completion-ignore-case ((_backend
+ (eql
+ 'tex-etags)))
+ (xref-backend-identifier-completion-ignore-case 'etags))
+
+(cl-defmethod xref-backend-definitions ((_backend (eql 'tex-etags)) symbol)
+ (xref-backend-definitions 'etags symbol))
+
+(cl-defmethod xref-backend-apropos ((_backend (eql 'tex-etags)) pattern)
+ (xref-backend-apropos 'etags pattern))
+
+;; The `xref-backend-references' method requires more code than the
+;; others for at least two main reasons: TeX authors have typically been
+;; free in their invention of new file types with new suffixes, and they
+;; have also tended sometimes to include non-symbol characters in
+;; command names. When combined with the default Semantic Symbol
+;; Reference API, these two characteristics of TeX code mean that a
+;; command like `xref-find-references' would often fail to find any hits
+;; for a symbol at point, including the one under point in the current
+;; buffer, or it would find only some instances and skip others.
+
+(defun tex-find-references-syntax-table ()
+ (let ((st (if (boundp 'TeX-mode-syntax-table)
+ (make-syntax-table TeX-mode-syntax-table)
+ (make-syntax-table tex-mode-syntax-table))))
+ st))
+
+(defvar tex--xref-syntax-fun nil)
+
+(defun tex-xref-syntax-function (str beg end)
+ "Provide a bespoke `syntax-propertize-function' for \\[xref-find-references]."
+ (let* (grpb tempstr
+ (shrtstr (if end
+ (progn
+ (setq tempstr (seq-take str (1- (length str))))
+ (if beg
+ (setq tempstr (seq-drop tempstr 1))
+ tempstr))
+ (seq-drop str 1)))
+ (grpa (if (and beg end)
+ (prog1
+ (list 1 "_")
+ (setq grpb (list 2 "_")))
+ (list 1 "_")))
+ (re (concat beg (regexp-quote shrtstr) end))
+ (temp-rule (if grpb
+ (list re grpa grpb)
+ (list re grpa))))
+ ;; Simple benchmarks suggested that the speed-up from compiling this
+ ;; function was nearly nil, so `eval' and its non-byte-compiled
+ ;; function remain.
+ (setq tex--xref-syntax-fun (eval
+ `(syntax-propertize-rules ,temp-rule)))))
+
+(defun tex--collect-file-extensions ()
+ "Gather TeX file extensions from `auto-mode-alist'."
+ (let* ((mlist (when (rassq major-mode auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) major-mode))
+ auto-mode-alist)))
+ (lcsym (intern-soft (downcase (symbol-name major-mode))))
+ (lclist (and lcsym
+ (not (eq lcsym major-mode))
+ (rassq lcsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) lcsym))
+ auto-mode-alist)))
+ (shortsym (when (stringp mode-name)
+ (intern-soft (concat (string-trim-right mode-name "/.*")
+ "-mode"))))
+ (lcshortsym (when (stringp mode-name)
+ (intern-soft (downcase
+ (concat
+ (string-trim-right mode-name "/.*")
+ "-mode")))))
+ (shlist (and shortsym
+ (not (eq shortsym major-mode))
+ (not (eq shortsym lcsym))
+ (rassq shortsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) shortsym))
+ auto-mode-alist)))
+ (lcshlist (and lcshortsym
+ (not (eq lcshortsym major-mode))
+ (not (eq lcshortsym lcsym))
+ (rassq lcshortsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) lcshortsym))
+ auto-mode-alist)))
+ (exts (when (or mlist lclist shlist lcshlist)
+ (seq-union (seq-map #'car lclist)
+ (seq-union (seq-map #'car mlist)
+ (seq-union (seq-map #'car lcshlist)
+ (seq-map #'car shlist))))))
+ (ed-exts (when exts
+ (seq-map
+ (lambda (elt)
+ (concat "*" (string-trim elt "\\\\" "\\\\'")))
+ exts))))
+ ed-exts))
+
+(defvar tex--buffers-list nil)
+(defvar-local tex--old-syntax-function nil)
+
+(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags)) identifier)
+ "Find references of IDENTIFIER in TeX buffers and files."
+ (require 'semantic/symref/grep)
+ (defvar semantic-symref-filepattern-alist)
+ (let (bufs texbufs
+ (mode major-mode))
+ (dolist (buf (buffer-list))
+ (if (eq (buffer-local-value 'major-mode buf) mode)
+ (push buf bufs)
+ (when (string-match-p ".*\\.[tT]e[xX]" (buffer-name buf))
+ (push buf texbufs))))
+ (unless (seq-set-equal-p tex--buffers-list bufs)
+ (let* ((amalist (tex--collect-file-extensions))
+ (extlist (alist-get mode semantic-symref-filepattern-alist))
+ (extlist-new (seq-uniq
+ (seq-union amalist extlist #'string-match-p))))
+ (setq tex--buffers-list bufs)
+ (dolist (buf bufs)
+ (when-let ((fbuf (buffer-file-name buf))
+ (ext (file-name-extension fbuf))
+ (finext (concat "*." ext))
+ ((not (seq-find (lambda (elt) (string-match-p elt finext))
+ extlist-new)))
+ ((push finext extlist-new)))))
+ (unless (seq-set-equal-p extlist-new extlist)
+ (setf (alist-get mode semantic-symref-filepattern-alist)
+ extlist-new))))
+ (let* (setsyntax
+ (punct (with-syntax-table (tex-find-references-syntax-table)
+ (seq-positions identifier (list ?w ?_)
+ (lambda (elt sycode)
+ (not (memq (char-syntax elt) sycode))))))
+ (end (and punct
+ (memq (1- (length identifier)) punct)
+ (> (length identifier) 1)
+ (concat "\\("
+ (regexp-quote
+ (string (elt identifier
+ (1- (length identifier)))))
+ "\\)")))
+ (beg (and punct
+ (memq 0 punct)
+ (concat "\\("
+ (regexp-quote (string (elt identifier 0)))
+ "\\)")))
+ (text-mode-hook
+ (if (or end beg)
+ (progn
+ (tex-xref-syntax-function identifier beg end)
+ (setq setsyntax (lambda ()
+ (setq-local syntax-propertize-function
+ tex--xref-syntax-fun)
+ (setq-local TeX-style-hook-applied-p t)))
+ (cons setsyntax text-mode-hook))
+ text-mode-hook)))
+ (unless (memq 'doctex-mode (derived-mode-all-parents mode))
+ (setq bufs (append texbufs bufs)))
+ (when (or end beg)
+ (dolist (buf bufs)
+ (with-current-buffer buf
+ (unless (local-variable-p 'tex--old-syntax-function)
+ (setq tex--old-syntax-function syntax-propertize-function))
+ (setq-local syntax-propertize-function
+ tex--xref-syntax-fun)
+ (syntax-ppss-flush-cache (point-min)))))
+ (unwind-protect
+ (xref-backend-references nil identifier)
+ (when (or end beg)
+ (dolist (buf bufs)
+ (with-current-buffer buf
+ (when buffer-file-truename
+ (setq-local syntax-propertize-function
+ tex--old-syntax-function)
+ (syntax-ppss-flush-cache (point-min))))))))))
+
(make-obsolete-variable 'tex-mode-load-hook
"use `with-eval-after-load' instead." "28.1")
(run-hooks 'tex-mode-load-hook)
--
2.35.8
^ permalink raw reply related [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-15 15:47 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-16 7:53 ` Arash Esbati
2024-05-16 12:56 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Arash Esbati @ 2024-05-16 7:53 UTC (permalink / raw)
To: David Fussner
Cc: 53749, Ikumi Keita, Dmitry Gutov, Stefan Monnier, Tassilo Horn,
Eli Zaretskii, stefankangas
David Fussner <dfussner@googlemail.com> writes:
> +(defun tex-expl-buffer-parse ()
> + "Identify buffers where expl3 syntax is always active."
> + (save-excursion
> + (goto-char (point-min))
> + (when (tex-search-noncomment
> + (re-search-forward
> + "\\(?:\\\\\\(?:ExplFile\\|ProvidesExpl\\|__xparse_file\\)\\)"
Is the outer grouping necessary? Why not just:
"\\\\\\(?:ExplFile\\|ProvidesExpl\\|__xparse_file\\)"
> + nil t))
> + (setq tex-expl-buffer-p t))))
> +
> +(defun tex-expl-region-set (_beg _end)
> + "Create a list of regions where expl3 syntax is active.
> +This function updates the list whenever `syntax-propertize' runs, and
> +stores it in the buffer-local variable `tex-expl-region-list'. The
> +list will always be nil when the buffer visits an expl3 file, e.g., an
> +expl3 class or package, where expl3 syntax is always active."
> + (unless syntax-ppss--updated-cache;; Stop forward search running twice.
> + (setq tex-expl-region-list nil)
> + ;; Leaving this test here allows users to set `tex-expl-buffer-p'
> + ;; independently of the mode's automatic detection of an expl3 file.
> + (unless tex-expl-buffer-p
> + (goto-char (point-min))
> + (while (tex-search-noncomment
> + (re-search-forward "\\ExplSyntaxOn" nil t))
This looks wrong, I think you want `search-forward'.
> + (let ((new-beg (point))
> + (new-end (or (tex-search-noncomment
> + (re-search-forward "\\ExplSyntaxOff" nil t))
Same here.
> + (point-max))))
> + (push (cons new-beg new-end) tex-expl-region-list))))))
Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-16 7:53 ` Arash Esbati
@ 2024-05-16 12:56 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-16 12:56 UTC (permalink / raw)
To: Arash Esbati
Cc: 53749, Ikumi Keita, Dmitry Gutov, Stefan Monnier, Tassilo Horn,
Eli Zaretskii, stefankangas
[-- Attachment #1: Type: text/plain, Size: 1905 bytes --]
Thanks, Arash. Agreed, on all counts. Revised patch attached.
Best, David.
On Thu, 16 May 2024 at 08:54, Arash Esbati <arash@gnu.org> wrote:
>
> David Fussner <dfussner@googlemail.com> writes:
>
> > +(defun tex-expl-buffer-parse ()
> > + "Identify buffers where expl3 syntax is always active."
> > + (save-excursion
> > + (goto-char (point-min))
> > + (when (tex-search-noncomment
> > + (re-search-forward
> > + "\\(?:\\\\\\(?:ExplFile\\|ProvidesExpl\\|__xparse_file\\)\\)"
>
> Is the outer grouping necessary? Why not just:
>
> "\\\\\\(?:ExplFile\\|ProvidesExpl\\|__xparse_file\\)"
>
> > + nil t))
> > + (setq tex-expl-buffer-p t))))
> > +
> > +(defun tex-expl-region-set (_beg _end)
> > + "Create a list of regions where expl3 syntax is active.
> > +This function updates the list whenever `syntax-propertize' runs, and
> > +stores it in the buffer-local variable `tex-expl-region-list'. The
> > +list will always be nil when the buffer visits an expl3 file, e.g., an
> > +expl3 class or package, where expl3 syntax is always active."
> > + (unless syntax-ppss--updated-cache;; Stop forward search running twice.
> > + (setq tex-expl-region-list nil)
> > + ;; Leaving this test here allows users to set `tex-expl-buffer-p'
> > + ;; independently of the mode's automatic detection of an expl3 file.
> > + (unless tex-expl-buffer-p
> > + (goto-char (point-min))
> > + (while (tex-search-noncomment
> > + (re-search-forward "\\ExplSyntaxOn" nil t))
>
> This looks wrong, I think you want `search-forward'.
>
> > + (let ((new-beg (point))
> > + (new-end (or (tex-search-noncomment
> > + (re-search-forward "\\ExplSyntaxOff" nil t))
>
> Same here.
>
> > + (point-max))))
> > + (push (cons new-beg new-end) tex-expl-region-list))))))
>
> Best, Arash
[-- Attachment #2: 0003-Provide-a-modified-xref-backend-for-TeX-buffers.patch --]
[-- Type: text/x-patch, Size: 33122 bytes --]
From 2839cbe15f91a1292d26e9208d21ce47270fd72e Mon Sep 17 00:00:00 2001
From: David Fussner <dfussner@googlemail.com>
Date: Thu, 16 May 2024 13:51:12 +0100
Subject: [PATCH] Provide a modified xref backend for TeX buffers
* lib-src/etags.c (TeX_commands): Improve parsing of commands in TeX
buffers.
(TEX_defenv): Expand list of commands to tag by default in TeX
buffers.
(TeX_help):
* doc/emacs/maintaining.texi (Tag Syntax): Document new tagged
commands.
(Identifier Search): Add note about semantic-symref-filepattern-alist,
auto-mode-alist, and xref-find-references.
* lisp/textmodes/tex-mode.el (tex-font-lock-suscript): Test for
underscore in expl3 files and regions, disable subscript face there.
(tex-common-initialization): Set up xref backend for in-tree TeX
modes. Detect expl3 files, and in others set up a list of expl3
regions.
(tex-expl-buffer-parse): New function called in previous.
(tex-expl-buffer-p): New var to hold the result of previous.
(tex-expl-region-set): New function added to
'syntax-propertize-extend-region-functions' hook.
(tex-expl-region-list): New var to hold the result of previous.
(tex--thing-at-point, tex-thingatpt--beginning-of-symbol)
(tex-thingatpt--end-of-symbol, tex--bounds-of-symbol-at-point):
New functions to return 'thing-at-point' for xref backend.
(tex-thingatpt-exclude-chars): New var to do the same.
(xref-backend-identifier-at-point): New TeX backend method to provide
symbols for processing by xref.
(xref-backend-identifier-completion-table)
(xref-backend-identifier-completion-ignore-case)
(xref-backend-definitions, xref-backend-apropos): Placeholders to
call the standard 'etags' xref backend methods.
(xref-backend-references): Wrapper to call the default xref backend
method, finding as many relevant files as possible and using a bespoke
syntax-propertize-function when required.
(tex--collect-file-extensions, tex-xref-syntax-function): Helper
functions for previous.
(tex-find-references-syntax-table, tex--buffers-list)
(tex--xref-syntax-fun, tex--old-syntax-function): New vars for same.
---
doc/emacs/maintaining.texi | 39 +++-
lib-src/etags.c | 189 +++++++++++++++++--
lisp/textmodes/tex-mode.el | 373 ++++++++++++++++++++++++++++++++++++-
3 files changed, 580 insertions(+), 21 deletions(-)
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 579098c81b1..a064103aa25 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -2529,6 +2529,15 @@ Identifier Search
referenced. The XREF mode commands are available in this buffer, see
@ref{Xref Commands}.
+When invoked in a buffer whose major mode uses the @code{etags} backend,
+@kbd{M-?} searches files and buffers whose major mode matches that of
+the original buffer. It guesses that mode from file extensions, so if
+@kbd{M-?} seems to be skipping relevant buffers or files, try
+customizing either the variable @code{semantic-symref-filepattern-alist}
+(if your buffer's major mode already has an entry in it), or
+@code{auto-mode-alist} (if not), thereby informing @code{xref} of the
+missing extensions (@pxref{Choosing Modes}).
+
@vindex xref-auto-jump-to-first-xref
If the value of the variable @code{xref-auto-jump-to-first-xref} is
@code{t}, @code{xref-find-references} automatically jumps to the first
@@ -2747,10 +2756,32 @@ Tag Syntax
@item
In @LaTeX{} documents, the arguments for @code{\chapter},
@code{\section}, @code{\subsection}, @code{\subsubsection},
-@code{\eqno}, @code{\label}, @code{\ref}, @code{\cite},
-@code{\bibitem}, @code{\part}, @code{\appendix}, @code{\entry},
-@code{\index}, @code{\def}, @code{\newcommand}, @code{\renewcommand},
-@code{\newenvironment} and @code{\renewenvironment} are tags.
+@code{\eqno}, @code{\label}, @code{\ref}, @code{\Ref}, @code{\footref},
+@code{\cite}, @code{\bibitem}, @code{\part}, @code{\appendix},
+@code{\entry}, @code{\index}, @code{\def}, @code{\edef}, @code{\gdef},
+@code{\xdef}, @code{\newcommand}, @code{\renewcommand},
+@code{\newenvironment}, @code{\renewenvironment},
+@code{\DeclareRobustCommand}, @code{\newrobustcmd},
+@code{\renewrobustcmd}, @code{\providecommand},
+@code{\providerobustcmd}, @code{\NewDocumentCommand},
+@code{\RenewDocumentCommand}, @code{\ProvideDocumentCommand},
+@code{\DeclareDocumentCommand}, @code{\NewExpandableDocumentCommand},
+@code{\RenewExpandableDocumentCommand},
+@code{\ProvideExpandableDocumentCommand},
+@code{\DeclareExpandableDocumentCommand},
+@code{\NewDocumentEnvironment}, @code{\RenewDocumentEnvironment},
+@code{\ProvideDocumentEnvironment}, @code{\DeclareDocumentEnvironment},
+@code{\csdef}, @code{\csedef}, @code{\csgdef}, @code{\csxdef},
+@code{\csletcs}, @code{\cslet}, @code{\letcs}, @code{\let},
+@code{\cs_new_protected_nopar}, @code{\cs_new_protected},
+@code{\cs_new_nopar}, @code{\cs_new_eq}, @code{\cs_new},
+@code{\cs_set_protected_nopar}, @code{\cs_set_protected},
+@code{\cs_set_nopar}, @code{\cs_set_eq}, @code{\cs_set},
+@code{\cs_gset_protected_nopar}, @code{\cs_gset_protected},
+@code{\cs_gset_nopar}, @code{\cs_gset_eq}, @code{\cs_gset},
+@code{\cs_generate_from_arg_count}, and @code{\cs_generate_variant} are
+tags. So too are the arguments of any starred variants of these
+commands.
Other commands can make tags as well, if you specify them in the
environment variable @env{TEXTAGS} before invoking @command{etags}. The
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 03bc55de03d..11fddc187c2 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -793,11 +793,27 @@ #define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
static const char *TeX_suffixes [] =
{ "bib", "clo", "cls", "ltx", "sty", "TeX", "tex", NULL };
static const char TeX_help [] =
-"In LaTeX text, the argument of any of the commands '\\chapter',\n\
-'\\section', '\\subsection', '\\subsubsection', '\\eqno', '\\label',\n\
-'\\ref', '\\cite', '\\bibitem', '\\part', '\\appendix', '\\entry',\n\
-'\\index', '\\def', '\\newcommand', '\\renewcommand',\n\
-'\\newenvironment' or '\\renewenvironment' is a tag.\n\
+"In LaTeX text, the argument of the commands '\\chapter', '\\section',\n\
+'\\subsection', '\\subsubsection', '\\eqno', '\\label', '\\ref',\n\
+'\\Ref', '\\footref', '\\cite', '\\bibitem', '\\part', '\\appendix',\n\
+'\\entry', '\\index', '\\def', '\\edef', '\\gdef', '\\xdef',\n\
+'\\newcommand', '\\renewcommand', '\\newrobustcmd', '\\renewrobustcmd',\n\
+'\\newenvironment', '\\renewenvironment', '\\DeclareRobustCommand',\n\
+'\\providecommand', '\\providerobustcmd', '\\NewDocumentCommand',\n\
+'\\RenewDocumentCommand', '\\ProvideDocumentCommand',\n\
+'\\DeclareDocumentCommand', '\\NewExpandableDocumentCommand',\n\
+'\\RenewExpandableDocumentCommand', '\\ProvideExpandableDocumentCommand',\n\
+'\\DeclareExpandableDocumentCommand', '\\NewDocumentEnvironment',\n\
+'\\RenewDocumentEnvironment', '\\ProvideDocumentEnvironment',\n\
+'\\DeclareDocumentEnvironment','\\csdef', '\\csedef', '\\csgdef',\n\
+'\\csxdef', '\\csletcs', '\\cslet', '\\letcs', '\\let',\n\
+'\\cs_new_protected_nopar', '\\cs_new_protected', '\\cs_new_nopar',\n\
+'\\cs_new_eq', '\\cs_new', '\\cs_set_protected_nopar',\n\
+'\\cs_set_protected', '\\cs_set_nopar', '\\cs_set_eq', '\\cs_set',\n\
+'\\cs_gset_protected_nopar', '\\cs_gset_protected', '\\cs_gset_nopar',\n\
+'\\cs_gset_eq', '\\cs_gset', '\\cs_generate_from_arg_count', or\n\
+'\\cs_generate_variant' is a tag. So is the argument of any starred\n\
+variant of these commands.\n\
\n\
Other commands can be specified by setting the environment variable\n\
'TEXTAGS' to a colon-separated list like, for example,\n\
@@ -5740,11 +5756,25 @@ Scheme_functions (FILE *inf)
static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */
/* Default set of control sequences to put into TEX_toktab.
- The value of environment var TEXTAGS is prepended to this. */
+ The value of environment var TEXTAGS is prepended to this.
+ (2024) Add variants of '\def', some additional LaTeX (and
+ former xparse) commands, common variants from the
+ 'etoolbox' package, and the main expl3 commands. */
static const char *TEX_defenv = "\
-:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
-:part:appendix:entry:index:def\
-:newcommand:renewcommand:newenvironment:renewenvironment";
+:label:ref:Ref:footref:chapter:section:subsection:subsubsection:eqno:cite\
+:bibitem:part:appendix:entry:index:def:edef:gdef:xdef:newcommand:renewcommand\
+:newenvironment:renewenvironment:DeclareRobustCommand:renewrobustcmd\
+:newrobustcmd:providecommand:providerobustcmd:NewDocumentCommand\
+:RenewDocumentCommand:ProvideDocumentCommand:DeclareDocumentCommand\
+:NewExpandableDocumentCommand:RenewExpandableDocumentCommand\
+:ProvideExpandableDocumentCommand:DeclareExpandableDocumentCommand\
+:NewDocumentEnvironment:RenewDocumentEnvironment\
+:ProvideDocumentEnvironment:DeclareDocumentEnvironment:csdef\
+:csedef:csgdef:csxdef:csletcs:cslet:letcs:let:cs_new_protected_nopar\
+:cs_new_protected:cs_new_nopar:cs_new_eq:cs_new:cs_set_protected_nopar\
+:cs_set_protected:cs_set_nopar:cs_set_eq:cs_set:cs_gset_protected_nopar\
+:cs_gset_protected:cs_gset_nopar:cs_gset_eq:cs_gset\
+:cs_generate_from_arg_count:cs_generate_variant";
static void TEX_decode_env (const char *, const char *);
@@ -5803,19 +5833,137 @@ TeX_commands (FILE *inf)
{
char *p;
ptrdiff_t namelen, linelen;
- bool opgrp = false;
+ bool opgrp = false, one_esc = false, is_explthree = false;
cp = skip_spaces (cp + key->len);
+
+ /* 1. The canonical expl3 syntax looks something like this:
+ \cs_new:Npn \__hook_tl_gput:Nn { \ERROR }. First, if we
+ want to tag any such commands, we include only the part
+ before the colon (cs_new) in TEX_defenv or TEXTAGS. Second,
+ etags skips the argument specifier (including the colon)
+ after the tag token, so that it doesn't become the tag name.
+ Third, we set the boolean 'is_explthree' to true so that we
+ can remove the argument specifier from the actual tag name
+ (__hook_tl_gput). This all allows us to include expl3
+ constructs in TEX_defenv or in the environment variable
+ TEXTAGS without requiring a change of separator, and it also
+ allows us to find the definition of variant commands (with
+ different argument specifiers) defined using, for example,
+ \cs_generate_variant:Nn. Please note that the expl3 spec
+ requires etags to pay more attention to whitespace in the
+ code.
+
+ 2. We also automatically remove the asterisk from starred
+ variants of all commands, without the need to include the
+ starred commands explicitly in TEX_defenv or TEXTAGS. */
+ if (*cp == ':')
+ {
+ while (!c_isspace (*cp) && *cp != TEX_opgrp)
+ cp++;
+ cp = skip_spaces (cp);
+ is_explthree = true;
+ }
+ else if (*cp == '*')
+ cp++;
+
+ /* Skip the optional arguments to commands in the tags list so
+ that these arguments don't end up as the name of the tag.
+ The name will instead come from the argument in curly braces
+ that follows the optional ones. */
+ while (*cp != '\0' && *cp != '%')
+ {
+ if (*cp == '[')
+ {
+ while (*cp != ']' && *cp != '\0' && *cp != '%')
+ cp++;
+ }
+ else if (*cp == '(')
+ {
+ while (*cp != ')' && *cp != '\0' && *cp != '%')
+ cp++;
+ }
+ else if (*cp == ']' || *cp == ')')
+ cp++;
+ else
+ break;
+ }
if (*cp == TEX_opgrp)
{
opgrp = true;
cp++;
+ cp = skip_spaces (cp); /* For expl3 code. */
}
+
+ /* Removing the TeX escape character from tag names simplifies
+ things for editors finding tagged commands in TeX buffers.
+ This applies to Emacs but also to the tag-finding behavior
+ of at least some of the editors that use ctags, though in
+ the latter case this will remain suboptimal. The
+ undocumented ctags option '--no-duplicates' may help. */
+ if (*cp == TEX_esc)
+ {
+ cp++;
+ one_esc = true;
+ }
+
+ /* Testing !c_isspace && !c_ispunct is simpler, but halts
+ processing at too many places. The list as it stands tries
+ both to ensure that tag names will derive from macro names
+ rather than from optional parameters to those macros, and
+ also to return findable names while still allowing for
+ unorthodox constructs. */
for (p = cp;
- (!c_isspace (*p) && *p != '#' &&
- *p != TEX_opgrp && *p != TEX_clgrp);
+ (!c_isspace (*p) && *p != '#' && *p != '=' &&
+ *p != '[' && *p != '(' && *p != TEX_opgrp &&
+ *p != TEX_clgrp && *p != '"' && *p != '\'' &&
+ *p != '%' && *p != ',' && *p != '|' && *p != '$');
p++)
- continue;
+ /* In expl3 code we remove the argument specification from
+ the tag name. More generally we allow only one (deleted)
+ escape char in a tag name, which (primarily) enables
+ tagging a TeX command's different, possibly temporary,
+ '\let' bindings. */
+ if (is_explthree && *p == ':')
+ break;
+ else if (*p == TEX_esc)
+ { /* Second part of test is for, e.g., \cslet. */
+ if (!one_esc && !opgrp)
+ {
+ one_esc = true;
+ continue;
+ }
+ else
+ break;
+ }
+ else
+ continue;
+ /* For TeX files, tags without a name are basically cruft, and
+ in some situations they can produce spurious and confusing
+ matches. Try to catch as many cases as possible where a
+ command name is of the form '\(', but avoid, as far as
+ possible, the spurious matches. */
+ if (p == cp)
+ {
+ switch (*p)
+ { /* Include =? */
+ case '(': case '[': case '"': case '\'':
+ case '\\': case '!': case '=': case ',':
+ case '|': case '$':
+ p++;
+ break;
+ case '{': case '}': case '<': case '>':
+ if (!opgrp)
+ {
+ p++;
+ if (*p == '\0' || *p == '%')
+ goto tex_next_line;
+ }
+ break;
+ default:
+ break;
+ }
+ }
namelen = p - cp;
linelen = lb.len;
if (!opgrp || *p == TEX_clgrp)
@@ -5824,9 +5972,18 @@ TeX_commands (FILE *inf)
p++;
linelen = p - lb.buffer + 1;
}
- make_tag (cp, namelen, true,
- lb.buffer, linelen, lineno, linecharno);
- goto tex_next_line; /* We only tag a line once */
+ if (namelen)
+ make_tag (cp, namelen, true,
+ lb.buffer, linelen, lineno, linecharno);
+ /* Lines with more than one \def or \let are surprisingly
+ common in TeX files, especially in the system files that
+ form the basis of the various TeX formats. This tags them
+ all. */
+ /* goto tex_next_line; /\* We only tag a line once *\/ */
+ while (*cp != '\0' && *cp != '%' && *cp != TEX_esc)
+ cp++;
+ if (*cp != TEX_esc)
+ goto tex_next_line;
}
}
tex_next_line:
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 97c950267c6..4a595aa1ea5 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -636,6 +636,14 @@ tex-font-lock-keywords-2
3 '(tex-font-lock-append-prop 'bold) 'append)))))
"Gaudy expressions to highlight in TeX modes.")
+(defvar-local tex-expl-region-list nil
+ "List of region boundaries where expl3 syntax is active.
+It will be nil in buffers where expl3 syntax is always active, e.g.,
+expl3 classes or packages.")
+
+(defvar-local tex-expl-buffer-p nil
+ "Non-nil in buffers where expl3 syntax is always active.")
+
(defun tex-font-lock-suscript (pos)
(unless (or (memq (get-text-property pos 'face)
'(font-lock-constant-face font-lock-builtin-face
@@ -645,7 +653,17 @@ tex-font-lock-suscript
(pos pos))
(while (eq (char-before pos) ?\\)
(setq pos (1- pos) odd (not odd)))
- odd))
+ odd)
+ ;; Check if POS is in an expl3 syntax region or an expl3 buffer
+ (when (eq (char-after pos) ?_)
+ (or tex-expl-buffer-p
+ (and
+ tex-expl-region-list
+ (catch 'result
+ (dolist (range tex-expl-region-list)
+ (and (> pos (car range))
+ (< pos (cdr range))
+ (throw 'result t))))))))
(if (eq (char-after pos) ?_)
`(face subscript display (raise ,(car tex-font-script-display)))
`(face superscript display (raise ,(cadr tex-font-script-display))))))
@@ -1289,8 +1307,16 @@ tex-common-initialization
#'tex--prettify-symbols-compose-p)
(setq-local syntax-propertize-function
(syntax-propertize-rules latex-syntax-propertize-rules))
+ ;; Don't add extra processing to `syntax-propertize' in files where
+ ;; expl3 syntax is always active.
+ :after-hook (progn (tex-expl-buffer-parse)
+ (unless tex-expl-buffer-p
+ (add-hook 'syntax-propertize-extend-region-functions
+ #'tex-expl-region-set nil t)))
;; TABs in verbatim environments don't do what you think.
(setq-local indent-tabs-mode nil)
+ ;; Set up xref backend in TeX buffers.
+ (add-hook 'xref-backend-functions #'tex--xref-backend nil t)
;; Other vars that should be buffer-local.
(make-local-variable 'tex-command)
(make-local-variable 'tex-start-of-header)
@@ -1936,6 +1962,36 @@ tex-count-words
(forward-sexp 1))))))
(message "%s words" count))))
+(defun tex-expl-buffer-parse ()
+ "Identify buffers where expl3 syntax is always active."
+ (save-excursion
+ (goto-char (point-min))
+ (when (tex-search-noncomment
+ (re-search-forward
+ "\\\\\\(?:ExplFile\\|ProvidesExpl\\|__xparse_file\\)"
+ nil t))
+ (setq tex-expl-buffer-p t))))
+
+(defun tex-expl-region-set (_beg _end)
+ "Create a list of regions where expl3 syntax is active.
+This function updates the list whenever `syntax-propertize' runs, and
+stores it in the buffer-local variable `tex-expl-region-list'. The
+list will always be nil when the buffer visits an expl3 file, e.g., an
+expl3 class or package, where expl3 syntax is always active."
+ (unless syntax-ppss--updated-cache;; Stop forward search running twice.
+ (setq tex-expl-region-list nil)
+ ;; Leaving this test here allows users to set `tex-expl-buffer-p'
+ ;; independently of the mode's automatic detection of an expl3 file.
+ (unless tex-expl-buffer-p
+ (goto-char (point-min))
+ (let ((case-fold-search nil))
+ (while (tex-search-noncomment
+ (search-forward "\\ExplSyntaxOn" nil t))
+ (let ((new-beg (point))
+ (new-end (or (tex-search-noncomment
+ (search-forward "\\ExplSyntaxOff" nil t))
+ (point-max))))
+ (push (cons new-beg new-end) tex-expl-region-list)))))))
\f
;;; Invoking TeX in an inferior shell.
@@ -3742,6 +3798,321 @@ tex-chktex
(process-send-region tex-chktex--process (point-min) (point-max))
(process-send-eof tex-chktex--process))))
+\f
+;;; Xref backend
+
+;; Here we lightly adapt the default etags backend for xref so that
+;; the main xref user commands (including `xref-find-definitions',
+;; `xref-find-apropos', and `xref-find-references' [on M-., C-M-., and
+;; M-?, respectively]) work in TeX buffers. The only methods we
+;; actually modify are `xref-backend-identifier-at-point' and
+;; `xref-backend-references'. Many of the complications here, and in
+;; `etags' itself, are due to the necessity of parsing both the old
+;; TeX syntax and the new expl3 syntax, which will continue to appear
+;; together in documents for the foreseeable future. Synchronizing
+;; Emacs and `etags' this way aims to improve the user experience "out
+;; of the box."
+
+(defvar tex-thingatpt-exclude-chars '(?\\ ?\{ ?\})
+ "Exclude these chars by default from TeX thing-at-point.
+
+The TeX `xref-backend-identifier-at-point' method uses the characters
+listed in this variable to decide on the default search string to
+present to the user who calls an `xref' command. These characters
+become part of a regexp which always excludes them from that default
+string. For the `xref' commands to function properly in TeX buffers, at
+least the TeX escape and the two TeX grouping characters should be
+listed here. Should your TeX documents contain other characters which
+you want to exclude by default, then you can add them to the list,
+though you may wish to consult the functions
+`tex-thingatpt--beginning-of-symbol' and `tex-thingatpt--end-of-symbol'
+to see what the regexp already contains. If your documents contain
+non-standard escape and grouping characters, then you can replace the
+three listed here with your own, thereby allowing the three standard
+characters to appear by default in search strings. Please be aware,
+however, that the `etags' program only recognizes `\\' (92) and `!' (33)
+as escape characters in TeX documents, and if it detects the latter it
+also uses `<>' as the TeX grouping construct rather than `{}'. Setting
+the escape and grouping chars to anything other than `\\=\\{}' or `!<>'
+will not be useful without changes to `etags', at least for commands
+that search tags tables, such as \\[xref-find-definitions] and \
+\\[xref-find-apropos].
+
+Should you wish to change the defaults, please also be aware that,
+without further modifications to tex-mode.el, the usual text-parsing
+routines for `font-lock' and the like won't work correctly, as the
+default escape and grouping characters are currently hard coded in many
+places.")
+
+;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
+;; AUCTeX is doing the same for its modes.
+(with-eval-after-load 'semantic/symref/grep
+ (defvar semantic-symref-filepattern-alist)
+ (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
+ "*.bbl" "*.drv" "*.hva")
+ semantic-symref-filepattern-alist)
+ (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
+ semantic-symref-filepattern-alist)
+ (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
+
+(defun tex--xref-backend () 'tex-etags)
+
+;; Setup AUCTeX modes (for testing purposes only).
+
+(add-hook 'TeX-mode-hook #'tex-set-auctex-xref-backend)
+
+(defun tex-set-auctex-xref-backend ()
+ (add-hook 'xref-backend-functions #'tex--xref-backend nil t))
+
+;; `xref-find-references' currently may need this when called from a
+;; latex-mode buffer in order to search files or buffers with a .tex
+;; suffix (including the buffer from which it has been called). We
+;; append it to `auto-mode-alist' so as not to interfere with the usual
+;; mode-setting apparatus. Changes here and in AUCTeX should soon
+;; render it unnecessary.
+(add-to-list 'auto-mode-alist '("\\.[tT]e[xX]\\'" . latex-mode) t)
+
+(cl-defmethod xref-backend-identifier-at-point ((_backend (eql 'tex-etags)))
+ (require 'etags)
+ (tex--thing-at-point))
+
+;; The detection of `_' and `:' is a primitive method for determining
+;; whether point is on an expl3 construct. It may fail in some
+;; instances.
+(defun tex--thing-at-point ()
+ "Demarcate `thing-at-point' for the TeX `xref' backend."
+ (let ((bounds (tex--bounds-of-symbol-at-point)))
+ (when bounds
+ (let ((texsym (buffer-substring-no-properties (car bounds) (cdr bounds))))
+ (if (and (not (string-match-p "reference" (symbol-name this-command)))
+ (seq-contains-p texsym ?_)
+ (seq-contains-p texsym ?:))
+ (seq-take texsym (seq-position texsym ?:))
+ texsym)))))
+
+(defun tex-thingatpt--beginning-of-symbol ()
+ (and
+ (re-search-backward (concat "[]["
+ (mapconcat #'regexp-quote
+ (mapcar #'char-to-string
+ tex-thingatpt-exclude-chars))
+ "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (forward-char)))
+
+(defun tex-thingatpt--end-of-symbol ()
+ (and
+ (re-search-forward (concat "[]["
+ (mapconcat #'regexp-quote
+ (mapcar #'char-to-string
+ tex-thingatpt-exclude-chars))
+ "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (backward-char)))
+
+(defun tex--bounds-of-symbol-at-point ()
+ "Simplify `bounds-of-thing-at-point' for TeX `xref' backend."
+ (let ((orig (point)))
+ (ignore-errors
+ (save-excursion
+ (tex-thingatpt--end-of-symbol)
+ (tex-thingatpt--beginning-of-symbol)
+ (let ((beg (point)))
+ (if (<= beg orig)
+ (let ((real-end
+ (progn
+ (tex-thingatpt--end-of-symbol)
+ (point))))
+ (cond ((and (<= orig real-end) (< beg real-end))
+ (cons beg real-end))
+ ((and (= orig real-end) (= beg real-end))
+ (cons beg (1+ beg)))))))))));; For 1-char TeX commands.
+
+(cl-defmethod xref-backend-identifier-completion-table ((_backend
+ (eql 'tex-etags)))
+ (xref-backend-identifier-completion-table 'etags))
+
+(cl-defmethod xref-backend-identifier-completion-ignore-case ((_backend
+ (eql
+ 'tex-etags)))
+ (xref-backend-identifier-completion-ignore-case 'etags))
+
+(cl-defmethod xref-backend-definitions ((_backend (eql 'tex-etags)) symbol)
+ (xref-backend-definitions 'etags symbol))
+
+(cl-defmethod xref-backend-apropos ((_backend (eql 'tex-etags)) pattern)
+ (xref-backend-apropos 'etags pattern))
+
+;; The `xref-backend-references' method requires more code than the
+;; others for at least two main reasons: TeX authors have typically been
+;; free in their invention of new file types with new suffixes, and they
+;; have also tended sometimes to include non-symbol characters in
+;; command names. When combined with the default Semantic Symbol
+;; Reference API, these two characteristics of TeX code mean that a
+;; command like `xref-find-references' would often fail to find any hits
+;; for a symbol at point, including the one under point in the current
+;; buffer, or it would find only some instances and skip others.
+
+(defun tex-find-references-syntax-table ()
+ (let ((st (if (boundp 'TeX-mode-syntax-table)
+ (make-syntax-table TeX-mode-syntax-table)
+ (make-syntax-table tex-mode-syntax-table))))
+ st))
+
+(defvar tex--xref-syntax-fun nil)
+
+(defun tex-xref-syntax-function (str beg end)
+ "Provide a bespoke `syntax-propertize-function' for \\[xref-find-references]."
+ (let* (grpb tempstr
+ (shrtstr (if end
+ (progn
+ (setq tempstr (seq-take str (1- (length str))))
+ (if beg
+ (setq tempstr (seq-drop tempstr 1))
+ tempstr))
+ (seq-drop str 1)))
+ (grpa (if (and beg end)
+ (prog1
+ (list 1 "_")
+ (setq grpb (list 2 "_")))
+ (list 1 "_")))
+ (re (concat beg (regexp-quote shrtstr) end))
+ (temp-rule (if grpb
+ (list re grpa grpb)
+ (list re grpa))))
+ ;; Simple benchmarks suggested that the speed-up from compiling this
+ ;; function was nearly nil, so `eval' and its non-byte-compiled
+ ;; function remain.
+ (setq tex--xref-syntax-fun (eval
+ `(syntax-propertize-rules ,temp-rule)))))
+
+(defun tex--collect-file-extensions ()
+ "Gather TeX file extensions from `auto-mode-alist'."
+ (let* ((mlist (when (rassq major-mode auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) major-mode))
+ auto-mode-alist)))
+ (lcsym (intern-soft (downcase (symbol-name major-mode))))
+ (lclist (and lcsym
+ (not (eq lcsym major-mode))
+ (rassq lcsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) lcsym))
+ auto-mode-alist)))
+ (shortsym (when (stringp mode-name)
+ (intern-soft (concat (string-trim-right mode-name "/.*")
+ "-mode"))))
+ (lcshortsym (when (stringp mode-name)
+ (intern-soft (downcase
+ (concat
+ (string-trim-right mode-name "/.*")
+ "-mode")))))
+ (shlist (and shortsym
+ (not (eq shortsym major-mode))
+ (not (eq shortsym lcsym))
+ (rassq shortsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) shortsym))
+ auto-mode-alist)))
+ (lcshlist (and lcshortsym
+ (not (eq lcshortsym major-mode))
+ (not (eq lcshortsym lcsym))
+ (rassq lcshortsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) lcshortsym))
+ auto-mode-alist)))
+ (exts (when (or mlist lclist shlist lcshlist)
+ (seq-union (seq-map #'car lclist)
+ (seq-union (seq-map #'car mlist)
+ (seq-union (seq-map #'car lcshlist)
+ (seq-map #'car shlist))))))
+ (ed-exts (when exts
+ (seq-map
+ (lambda (elt)
+ (concat "*" (string-trim elt "\\\\" "\\\\'")))
+ exts))))
+ ed-exts))
+
+(defvar tex--buffers-list nil)
+(defvar-local tex--old-syntax-function nil)
+
+(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags)) identifier)
+ "Find references of IDENTIFIER in TeX buffers and files."
+ (require 'semantic/symref/grep)
+ (defvar semantic-symref-filepattern-alist)
+ (let (bufs texbufs
+ (mode major-mode))
+ (dolist (buf (buffer-list))
+ (if (eq (buffer-local-value 'major-mode buf) mode)
+ (push buf bufs)
+ (when (string-match-p ".*\\.[tT]e[xX]" (buffer-name buf))
+ (push buf texbufs))))
+ (unless (seq-set-equal-p tex--buffers-list bufs)
+ (let* ((amalist (tex--collect-file-extensions))
+ (extlist (alist-get mode semantic-symref-filepattern-alist))
+ (extlist-new (seq-uniq
+ (seq-union amalist extlist #'string-match-p))))
+ (setq tex--buffers-list bufs)
+ (dolist (buf bufs)
+ (when-let ((fbuf (buffer-file-name buf))
+ (ext (file-name-extension fbuf))
+ (finext (concat "*." ext))
+ ((not (seq-find (lambda (elt) (string-match-p elt finext))
+ extlist-new)))
+ ((push finext extlist-new)))))
+ (unless (seq-set-equal-p extlist-new extlist)
+ (setf (alist-get mode semantic-symref-filepattern-alist)
+ extlist-new))))
+ (let* (setsyntax
+ (punct (with-syntax-table (tex-find-references-syntax-table)
+ (seq-positions identifier (list ?w ?_)
+ (lambda (elt sycode)
+ (not (memq (char-syntax elt) sycode))))))
+ (end (and punct
+ (memq (1- (length identifier)) punct)
+ (> (length identifier) 1)
+ (concat "\\("
+ (regexp-quote
+ (string (elt identifier
+ (1- (length identifier)))))
+ "\\)")))
+ (beg (and punct
+ (memq 0 punct)
+ (concat "\\("
+ (regexp-quote (string (elt identifier 0)))
+ "\\)")))
+ (text-mode-hook
+ (if (or end beg)
+ (progn
+ (tex-xref-syntax-function identifier beg end)
+ (setq setsyntax (lambda ()
+ (setq-local syntax-propertize-function
+ tex--xref-syntax-fun)
+ (setq-local TeX-style-hook-applied-p t)))
+ (cons setsyntax text-mode-hook))
+ text-mode-hook)))
+ (unless (memq 'doctex-mode (derived-mode-all-parents mode))
+ (setq bufs (append texbufs bufs)))
+ (when (or end beg)
+ (dolist (buf bufs)
+ (with-current-buffer buf
+ (unless (local-variable-p 'tex--old-syntax-function)
+ (setq tex--old-syntax-function syntax-propertize-function))
+ (setq-local syntax-propertize-function
+ tex--xref-syntax-fun)
+ (syntax-ppss-flush-cache (point-min)))))
+ (unwind-protect
+ (xref-backend-references nil identifier)
+ (when (or end beg)
+ (dolist (buf bufs)
+ (with-current-buffer buf
+ (when buffer-file-truename
+ (setq-local syntax-propertize-function
+ tex--old-syntax-function)
+ (syntax-ppss-flush-cache (point-min))))))))))
+
(make-obsolete-variable 'tex-mode-load-hook
"use `with-eval-after-load' instead." "28.1")
(run-hooks 'tex-mode-load-hook)
--
2.39.4
^ permalink raw reply related [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-14 21:24 ` Dmitry Gutov
@ 2024-05-16 18:18 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-20 0:21 ` Dmitry Gutov
0 siblings, 1 reply; 106+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-16 18:18 UTC (permalink / raw)
To: Dmitry Gutov
Cc: 53749, Ikumi Keita, David Fussner, Arash Esbati, stefankangas,
Tassilo Horn, Eli Zaretskii
>> IIUC, in the `syntax-needed` case, the let-binding of
>> `inhibit-modification-hooks` is just not useful very (4-7% is not worth
>> the trouble), so its purpose is to speed up the other case.
> 4-10% is the improvement for both cases (the "syntax needed" and not).
Hmm... not sure it's worth the trouble, then.
Also, it might be worth trying to see where those 4-10% are spent: this
is done in a temp buffer where there should presumably be very little
need for before/after-change-functions, so maybe we can get rid of the
specific offenders rather than inhibit all modification hooks.
> Also, I'm eyeing another performance improvement (simplifying file type
> detection) - the call to set-auto-mode is not fast. Simply commenting this
> call out improves the performance by 4x or so - but we'll need a simpler
> version of it instead, of course.
>
> And with the above change (commenting out the set-auto-mode call), the
> difference that the inhibit-modification-hooks hack makes is amplified: it
> can get up to 20%.
I wonder what we do during those 20% of the time if the buffer is left
in fundamental-mode.
>> Also, what about the other two bindings of `inhibit-modification-hooks`?
> The other two are used while the contents of the Xref buffer are printed (or
> re-printed), so there's none of the syntax-ppss complications there. The
> performance difference is 8.5% in my last measurement.
Is this 8.5% of a function that's fast anyway of 8.5% of a function
which takes a fair bit of time? Again, I'm not sure it's worth
the trouble. But as a start, every such binding should have a comment
mentioning that it's there only to gain a few percents of performance.
Stefan
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-16 18:18 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-20 0:21 ` Dmitry Gutov
2024-05-20 2:38 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Dmitry Gutov @ 2024-05-20 0:21 UTC (permalink / raw)
To: Stefan Monnier
Cc: 53749, Ikumi Keita, David Fussner, Arash Esbati, stefankangas,
Tassilo Horn, Eli Zaretskii
On 16/05/2024 21:18, Stefan Monnier via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
>>> IIUC, in the `syntax-needed` case, the let-binding of
>>> `inhibit-modification-hooks` is just not useful very (4-7% is not worth
>>> the trouble), so its purpose is to speed up the other case.
>> 4-10% is the improvement for both cases (the "syntax needed" and not).
>
> Hmm... not sure it's worth the trouble, then.
> Also, it might be worth trying to see where those 4-10% are spent: this
> is done in a temp buffer where there should presumably be very little
> need for before/after-change-functions, so maybe we can get rid of the
> specific offenders rather than inhibit all modification hooks.
Given the relatively low percentages, it might be difficult to glance
from a profiler report. I was assuming the time was mostly spent in
syntax-ppss-flush-cache, but the function is pretty simple.
>> Also, I'm eyeing another performance improvement (simplifying file type
>> detection) - the call to set-auto-mode is not fast. Simply commenting this
>> call out improves the performance by 4x or so - but we'll need a simpler
>> version of it instead, of course.
>>
>> And with the above change (commenting out the set-auto-mode call), the
>> difference that the inhibit-modification-hooks hack makes is amplified: it
>> can get up to 20%.
>
> I wonder what we do during those 20% of the time if the buffer is left
> in fundamental-mode.
Good question.
>>> Also, what about the other two bindings of `inhibit-modification-hooks`?
>> The other two are used while the contents of the Xref buffer are printed (or
>> re-printed), so there's none of the syntax-ppss complications there. The
>> performance difference is 8.5% in my last measurement.
>
> Is this 8.5% of a function that's fast anyway of 8.5% of a function
> which takes a fair bit of time?
When there are a lot of matches, it can take some time. Note that 100%
in this case is the whole list-files-do-search-print-results pipeline,
not just the printing phase. So printing is sped up by more than 8% (my
last test says it's by 27%).
> But as a start, every such binding should have a comment
> mentioning that it's there only to gain a few percents of performance.
Sure.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-20 0:21 ` Dmitry Gutov
@ 2024-05-20 2:38 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-25 7:57 ` Eli Zaretskii
2024-05-25 23:01 ` Dmitry Gutov
0 siblings, 2 replies; 106+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-05-20 2:38 UTC (permalink / raw)
To: Dmitry Gutov
Cc: 53749, Ikumi Keita, David Fussner, Arash Esbati, stefankangas,
Tassilo Horn, Eli Zaretskii
>> Hmm... not sure it's worth the trouble, then.
>> Also, it might be worth trying to see where those 4-10% are spent: this
>> is done in a temp buffer where there should presumably be very little
>> need for before/after-change-functions, so maybe we can get rid of the
>> specific offenders rather than inhibit all modification hooks.
> Given the relatively low percentages, it might be difficult to glance from
> a profiler report. I was assuming the time was mostly spent in
> syntax-ppss-flush-cache, but the function is pretty simple.
Rather than a profiler report, maybe a better approach would be to
remove things from the non-inhibited-modification-hooks paths and see
how/if they change the performance.
E.g. replace the `inhibit-modification-hooks` binding by one that binds
`before/after-change-functions` to nil.
>> I wonder what we do during those 20% of the time if the buffer is left
>> in fundamental-mode.
> Good question.
It's probably the better case to investigate since it might be easier to
see the effects.
>>>> Also, what about the other two bindings of `inhibit-modification-hooks`?
>>> The other two are used while the contents of the Xref buffer are printed (or
>>> re-printed), so there's none of the syntax-ppss complications there. The
>>> performance difference is 8.5% in my last measurement.
>> Is this 8.5% of a function that's fast anyway of 8.5% of a function
>> which takes a fair bit of time?
> When there are a lot of matches, it can take some time. Note that 100% in
> this case is the whole list-files-do-search-print-results pipeline, not just
> the printing phase. So printing is sped up by more than 8% (my last test
> says it's by 27%).
I guess during printing if it's done in many small steps we may indeed
run modification hooks many times, so that could explain the
higher percentage.
It still seems hard to justify 27% since those modification hooks should
usually do nothing, AFAICT. Maybe there's something silly going on.
Stefan
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-20 2:38 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-05-25 7:57 ` Eli Zaretskii
2024-06-05 9:46 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-25 23:01 ` Dmitry Gutov
1 sibling, 1 reply; 106+ messages in thread
From: Eli Zaretskii @ 2024-05-25 7:57 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 53749, ikumi, tsdh, dfussner, arash, stefankangas, dgutov
How should we proceed about this bug report? Is David's last
changeset acceptable or isn't it?
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: 53749@debbugs.gnu.org, Ikumi Keita <ikumi@ikumi.que.jp>, David Fussner
> <dfussner@googlemail.com>, Arash Esbati <arash@gnu.org>,
> stefankangas@gmail.com, Tassilo Horn <tsdh@gnu.org>, Eli Zaretskii
> <eliz@gnu.org>
> Date: Sun, 19 May 2024 22:38:45 -0400
>
> >> Hmm... not sure it's worth the trouble, then.
> >> Also, it might be worth trying to see where those 4-10% are spent: this
> >> is done in a temp buffer where there should presumably be very little
> >> need for before/after-change-functions, so maybe we can get rid of the
> >> specific offenders rather than inhibit all modification hooks.
> > Given the relatively low percentages, it might be difficult to glance from
> > a profiler report. I was assuming the time was mostly spent in
> > syntax-ppss-flush-cache, but the function is pretty simple.
>
> Rather than a profiler report, maybe a better approach would be to
> remove things from the non-inhibited-modification-hooks paths and see
> how/if they change the performance.
> E.g. replace the `inhibit-modification-hooks` binding by one that binds
> `before/after-change-functions` to nil.
>
> >> I wonder what we do during those 20% of the time if the buffer is left
> >> in fundamental-mode.
> > Good question.
>
> It's probably the better case to investigate since it might be easier to
> see the effects.
>
> >>>> Also, what about the other two bindings of `inhibit-modification-hooks`?
> >>> The other two are used while the contents of the Xref buffer are printed (or
> >>> re-printed), so there's none of the syntax-ppss complications there. The
> >>> performance difference is 8.5% in my last measurement.
> >> Is this 8.5% of a function that's fast anyway of 8.5% of a function
> >> which takes a fair bit of time?
> > When there are a lot of matches, it can take some time. Note that 100% in
> > this case is the whole list-files-do-search-print-results pipeline, not just
> > the printing phase. So printing is sped up by more than 8% (my last test
> > says it's by 27%).
>
> I guess during printing if it's done in many small steps we may indeed
> run modification hooks many times, so that could explain the
> higher percentage.
>
> It still seems hard to justify 27% since those modification hooks should
> usually do nothing, AFAICT. Maybe there's something silly going on.
>
>
> Stefan
>
>
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-20 2:38 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-25 7:57 ` Eli Zaretskii
@ 2024-05-25 23:01 ` Dmitry Gutov
1 sibling, 0 replies; 106+ messages in thread
From: Dmitry Gutov @ 2024-05-25 23:01 UTC (permalink / raw)
To: Stefan Monnier
Cc: 53749, Ikumi Keita, David Fussner, Arash Esbati, stefankangas,
Tassilo Horn, Eli Zaretskii
On 20/05/2024 05:38, Stefan Monnier via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
>>> Hmm... not sure it's worth the trouble, then.
>>> Also, it might be worth trying to see where those 4-10% are spent: this
>>> is done in a temp buffer where there should presumably be very little
>>> need for before/after-change-functions, so maybe we can get rid of the
>>> specific offenders rather than inhibit all modification hooks.
>> Given the relatively low percentages, it might be difficult to glance from
>> a profiler report. I was assuming the time was mostly spent in
>> syntax-ppss-flush-cache, but the function is pretty simple.
>
> Rather than a profiler report, maybe a better approach would be to
> remove things from the non-inhibited-modification-hooks paths and see
> how/if they change the performance.
> E.g. replace the `inhibit-modification-hooks` binding by one that binds
> `before/after-change-functions` to nil.
>
>>> I wonder what we do during those 20% of the time if the buffer is left
>>> in fundamental-mode.
>> Good question.
>
> It's probably the better case to investigate since it might be easier to
> see the effects.
Revisiting this, I haven't been able to reproduce the 20% number. :-(
The effect of that specific inhibit-modification-hooks binding seems to
stay around 4-8%, and it's actually on the higher end when the
set-auto-mode call it present (probably due to text manipulation inside it).
Binding before/after-change-functions, both of the hooks have their
impact - one more than the other, but like 60/40. Maybe just funcall
overhead.
>>>>> Also, what about the other two bindings of `inhibit-modification-hooks`?
>>>> The other two are used while the contents of the Xref buffer are printed (or
>>>> re-printed), so there's none of the syntax-ppss complications there. The
>>>> performance difference is 8.5% in my last measurement.
>>> Is this 8.5% of a function that's fast anyway of 8.5% of a function
>>> which takes a fair bit of time?
>> When there are a lot of matches, it can take some time. Note that 100% in
>> this case is the whole list-files-do-search-print-results pipeline, not just
>> the printing phase. So printing is sped up by more than 8% (my last test
>> says it's by 27%).
>
> I guess during printing if it's done in many small steps we may indeed
> run modification hooks many times, so that could explain the
> higher percentage.
>
> It still seems hard to justify 27% since those modification hooks should
> usually do nothing, AFAICT. Maybe there's something silly going on.
On this step (xref--show-common-initialize) the numbers still hold,
however. What's different, is that replacing the
inhibit-modification-hooks with two (before-change-functions and
after-change-functions both to nil) doesn't have a similar effect. Which
makes sense, since the buffer is almost in fundamental-mode, both hooks
are nil there.
Binding create-lockfiles or select-active-regions to nil doesn't have
any impact. And replacing the use of all of the above with
combine-change-calls makes performance worse.
If we're going to continue this subthread, it's probably better to move
it somewhere else (separate bug, or emacs-devel).
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-05-25 7:57 ` Eli Zaretskii
@ 2024-06-05 9:46 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-08 12:38 ` Eli Zaretskii
` (2 more replies)
0 siblings, 3 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-06-05 9:46 UTC (permalink / raw)
To: Eli Zaretskii
Cc: 53749, ikumi, tsdh, arash, stefankangas, dgutov, Stefan Monnier
[-- Attachment #1: Type: text/plain, Size: 2999 bytes --]
Hi Eli, Stefan, and Dmitry,
In case the changeset might prove acceptable for version 30, I attach
the latest patch, which clears out the code I was using to simplify
testing of the AUCTeX modes. I can if requested send a patch for the
manual etags tests, also, in case that might prove helpful down the
line.
Best, David.
On Sat, 25 May 2024 at 12:01, Eli Zaretskii <eliz@gnu.org> wrote:
>
> How should we proceed about this bug report? Is David's last
> changeset acceptable or isn't it?
>
> > From: Stefan Monnier <monnier@iro.umontreal.ca>
> > Cc: 53749@debbugs.gnu.org, Ikumi Keita <ikumi@ikumi.que.jp>, David Fussner
> > <dfussner@googlemail.com>, Arash Esbati <arash@gnu.org>,
> > stefankangas@gmail.com, Tassilo Horn <tsdh@gnu.org>, Eli Zaretskii
> > <eliz@gnu.org>
> > Date: Sun, 19 May 2024 22:38:45 -0400
> >
> > >> Hmm... not sure it's worth the trouble, then.
> > >> Also, it might be worth trying to see where those 4-10% are spent: this
> > >> is done in a temp buffer where there should presumably be very little
> > >> need for before/after-change-functions, so maybe we can get rid of the
> > >> specific offenders rather than inhibit all modification hooks.
> > > Given the relatively low percentages, it might be difficult to glance from
> > > a profiler report. I was assuming the time was mostly spent in
> > > syntax-ppss-flush-cache, but the function is pretty simple.
> >
> > Rather than a profiler report, maybe a better approach would be to
> > remove things from the non-inhibited-modification-hooks paths and see
> > how/if they change the performance.
> > E.g. replace the `inhibit-modification-hooks` binding by one that binds
> > `before/after-change-functions` to nil.
> >
> > >> I wonder what we do during those 20% of the time if the buffer is left
> > >> in fundamental-mode.
> > > Good question.
> >
> > It's probably the better case to investigate since it might be easier to
> > see the effects.
> >
> > >>>> Also, what about the other two bindings of `inhibit-modification-hooks`?
> > >>> The other two are used while the contents of the Xref buffer are printed (or
> > >>> re-printed), so there's none of the syntax-ppss complications there. The
> > >>> performance difference is 8.5% in my last measurement.
> > >> Is this 8.5% of a function that's fast anyway of 8.5% of a function
> > >> which takes a fair bit of time?
> > > When there are a lot of matches, it can take some time. Note that 100% in
> > > this case is the whole list-files-do-search-print-results pipeline, not just
> > > the printing phase. So printing is sped up by more than 8% (my last test
> > > says it's by 27%).
> >
> > I guess during printing if it's done in many small steps we may indeed
> > run modification hooks many times, so that could explain the
> > higher percentage.
> >
> > It still seems hard to justify 27% since those modification hooks should
> > usually do nothing, AFAICT. Maybe there's something silly going on.
> >
> >
> > Stefan
> >
> >
[-- Attachment #2: 0004-Provide-a-modified-xref-backend-for-TeX-buffers.patch --]
[-- Type: text/x-patch, Size: 32611 bytes --]
From d296126f36aabcaa30e43140d1c9b7c0e2912353 Mon Sep 17 00:00:00 2001
From: David Fussner <dfussner@googlemail.com>
Date: Wed, 5 Jun 2024 10:26:18 +0100
Subject: [PATCH] Provide a modified xref backend for TeX buffers
* lib-src/etags.c (TeX_commands): Improve parsing of commands in TeX
buffers.
(TEX_defenv): Expand list of commands to tag by default in TeX
buffers.
(TeX_help):
* doc/emacs/maintaining.texi (Tag Syntax): Document new tagged
commands.
(Identifier Search): Add note about semantic-symref-filepattern-alist,
auto-mode-alist, and xref-find-references.
* lisp/textmodes/tex-mode.el (tex-font-lock-suscript): Test for
underscore in expl3 files and regions, disable subscript face there.
(tex-common-initialization): Set up xref backend for in-tree TeX
modes. Detect expl3 files, and in others set up a list of expl3
regions.
(tex-expl-buffer-parse): New function called in previous.
(tex-expl-buffer-p): New var to hold the result of previous.
(tex-expl-region-set): New function added to
'syntax-propertize-extend-region-functions' hook.
(tex-expl-region-list): New var to hold the result of previous.
(tex--xref-backend): New function to identify the xref backend.
(tex--thing-at-point, tex-thingatpt--beginning-of-symbol)
(tex-thingatpt--end-of-symbol, tex--bounds-of-symbol-at-point):
New functions to return 'thing-at-point' for xref backend.
(tex-thingatpt-exclude-chars): New var to do the same.
(xref-backend-identifier-at-point): New TeX backend method to provide
symbols for processing by xref.
(xref-backend-identifier-completion-table)
(xref-backend-identifier-completion-ignore-case)
(xref-backend-definitions, xref-backend-apropos): Placeholders to
call the standard 'etags' xref backend methods.
(xref-backend-references): Wrapper to call the default xref backend
method, finding as many relevant files as possible and using a bespoke
syntax-propertize-function when required.
(tex--collect-file-extensions, tex-xref-syntax-function): Helper
functions for previous.
(tex-find-references-syntax-table, tex--buffers-list)
(tex--xref-syntax-fun, tex--old-syntax-function): New vars for same.
---
doc/emacs/maintaining.texi | 39 +++-
lib-src/etags.c | 191 ++++++++++++++++++--
lisp/textmodes/tex-mode.el | 358 ++++++++++++++++++++++++++++++++++++-
3 files changed, 567 insertions(+), 21 deletions(-)
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 579098c81b1..a064103aa25 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -2529,6 +2529,15 @@ Identifier Search
referenced. The XREF mode commands are available in this buffer, see
@ref{Xref Commands}.
+When invoked in a buffer whose major mode uses the @code{etags} backend,
+@kbd{M-?} searches files and buffers whose major mode matches that of
+the original buffer. It guesses that mode from file extensions, so if
+@kbd{M-?} seems to be skipping relevant buffers or files, try
+customizing either the variable @code{semantic-symref-filepattern-alist}
+(if your buffer's major mode already has an entry in it), or
+@code{auto-mode-alist} (if not), thereby informing @code{xref} of the
+missing extensions (@pxref{Choosing Modes}).
+
@vindex xref-auto-jump-to-first-xref
If the value of the variable @code{xref-auto-jump-to-first-xref} is
@code{t}, @code{xref-find-references} automatically jumps to the first
@@ -2747,10 +2756,32 @@ Tag Syntax
@item
In @LaTeX{} documents, the arguments for @code{\chapter},
@code{\section}, @code{\subsection}, @code{\subsubsection},
-@code{\eqno}, @code{\label}, @code{\ref}, @code{\cite},
-@code{\bibitem}, @code{\part}, @code{\appendix}, @code{\entry},
-@code{\index}, @code{\def}, @code{\newcommand}, @code{\renewcommand},
-@code{\newenvironment} and @code{\renewenvironment} are tags.
+@code{\eqno}, @code{\label}, @code{\ref}, @code{\Ref}, @code{\footref},
+@code{\cite}, @code{\bibitem}, @code{\part}, @code{\appendix},
+@code{\entry}, @code{\index}, @code{\def}, @code{\edef}, @code{\gdef},
+@code{\xdef}, @code{\newcommand}, @code{\renewcommand},
+@code{\newenvironment}, @code{\renewenvironment},
+@code{\DeclareRobustCommand}, @code{\newrobustcmd},
+@code{\renewrobustcmd}, @code{\providecommand},
+@code{\providerobustcmd}, @code{\NewDocumentCommand},
+@code{\RenewDocumentCommand}, @code{\ProvideDocumentCommand},
+@code{\DeclareDocumentCommand}, @code{\NewExpandableDocumentCommand},
+@code{\RenewExpandableDocumentCommand},
+@code{\ProvideExpandableDocumentCommand},
+@code{\DeclareExpandableDocumentCommand},
+@code{\NewDocumentEnvironment}, @code{\RenewDocumentEnvironment},
+@code{\ProvideDocumentEnvironment}, @code{\DeclareDocumentEnvironment},
+@code{\csdef}, @code{\csedef}, @code{\csgdef}, @code{\csxdef},
+@code{\csletcs}, @code{\cslet}, @code{\letcs}, @code{\let},
+@code{\cs_new_protected_nopar}, @code{\cs_new_protected},
+@code{\cs_new_nopar}, @code{\cs_new_eq}, @code{\cs_new},
+@code{\cs_set_protected_nopar}, @code{\cs_set_protected},
+@code{\cs_set_nopar}, @code{\cs_set_eq}, @code{\cs_set},
+@code{\cs_gset_protected_nopar}, @code{\cs_gset_protected},
+@code{\cs_gset_nopar}, @code{\cs_gset_eq}, @code{\cs_gset},
+@code{\cs_generate_from_arg_count}, and @code{\cs_generate_variant} are
+tags. So too are the arguments of any starred variants of these
+commands.
Other commands can make tags as well, if you specify them in the
environment variable @env{TEXTAGS} before invoking @command{etags}. The
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 03bc55de03d..6bc734e7df0 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -793,11 +793,27 @@ #define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
static const char *TeX_suffixes [] =
{ "bib", "clo", "cls", "ltx", "sty", "TeX", "tex", NULL };
static const char TeX_help [] =
-"In LaTeX text, the argument of any of the commands '\\chapter',\n\
-'\\section', '\\subsection', '\\subsubsection', '\\eqno', '\\label',\n\
-'\\ref', '\\cite', '\\bibitem', '\\part', '\\appendix', '\\entry',\n\
-'\\index', '\\def', '\\newcommand', '\\renewcommand',\n\
-'\\newenvironment' or '\\renewenvironment' is a tag.\n\
+"In LaTeX text, the argument of the commands '\\chapter', '\\section',\n\
+'\\subsection', '\\subsubsection', '\\eqno', '\\label', '\\ref',\n\
+'\\Ref', '\\footref', '\\cite', '\\bibitem', '\\part', '\\appendix',\n\
+'\\entry', '\\index', '\\def', '\\edef', '\\gdef', '\\xdef',\n\
+'\\newcommand', '\\renewcommand', '\\newrobustcmd', '\\renewrobustcmd',\n\
+'\\newenvironment', '\\renewenvironment', '\\DeclareRobustCommand',\n\
+'\\providecommand', '\\providerobustcmd', '\\NewDocumentCommand',\n\
+'\\RenewDocumentCommand', '\\ProvideDocumentCommand',\n\
+'\\DeclareDocumentCommand', '\\NewExpandableDocumentCommand',\n\
+'\\RenewExpandableDocumentCommand', '\\ProvideExpandableDocumentCommand',\n\
+'\\DeclareExpandableDocumentCommand', '\\NewDocumentEnvironment',\n\
+'\\RenewDocumentEnvironment', '\\ProvideDocumentEnvironment',\n\
+'\\DeclareDocumentEnvironment','\\csdef', '\\csedef', '\\csgdef',\n\
+'\\csxdef', '\\csletcs', '\\cslet', '\\letcs', '\\let',\n\
+'\\cs_new_protected_nopar', '\\cs_new_protected', '\\cs_new_nopar',\n\
+'\\cs_new_eq', '\\cs_new', '\\cs_set_protected_nopar',\n\
+'\\cs_set_protected', '\\cs_set_nopar', '\\cs_set_eq', '\\cs_set',\n\
+'\\cs_gset_protected_nopar', '\\cs_gset_protected', '\\cs_gset_nopar',\n\
+'\\cs_gset_eq', '\\cs_gset', '\\cs_generate_from_arg_count', or\n\
+'\\cs_generate_variant' is a tag. So is the argument of any starred\n\
+variant of these commands.\n\
\n\
Other commands can be specified by setting the environment variable\n\
'TEXTAGS' to a colon-separated list like, for example,\n\
@@ -5740,11 +5756,25 @@ Scheme_functions (FILE *inf)
static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */
/* Default set of control sequences to put into TEX_toktab.
- The value of environment var TEXTAGS is prepended to this. */
+ The value of environment var TEXTAGS is prepended to this.
+ (2024) Add variants of '\def', some additional LaTeX (and
+ former xparse) commands, common variants from the
+ 'etoolbox' package, and the main expl3 commands. */
static const char *TEX_defenv = "\
-:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
-:part:appendix:entry:index:def\
-:newcommand:renewcommand:newenvironment:renewenvironment";
+:label:ref:Ref:footref:chapter:section:subsection:subsubsection:eqno:cite\
+:bibitem:part:appendix:entry:index:def:edef:gdef:xdef:newcommand:renewcommand\
+:newenvironment:renewenvironment:DeclareRobustCommand:renewrobustcmd\
+:newrobustcmd:providecommand:providerobustcmd:NewDocumentCommand\
+:RenewDocumentCommand:ProvideDocumentCommand:DeclareDocumentCommand\
+:NewExpandableDocumentCommand:RenewExpandableDocumentCommand\
+:ProvideExpandableDocumentCommand:DeclareExpandableDocumentCommand\
+:NewDocumentEnvironment:RenewDocumentEnvironment\
+:ProvideDocumentEnvironment:DeclareDocumentEnvironment:csdef\
+:csedef:csgdef:csxdef:csletcs:cslet:letcs:let:cs_new_protected_nopar\
+:cs_new_protected:cs_new_nopar:cs_new_eq:cs_new:cs_set_protected_nopar\
+:cs_set_protected:cs_set_nopar:cs_set_eq:cs_set:cs_gset_protected_nopar\
+:cs_gset_protected:cs_gset_nopar:cs_gset_eq:cs_gset\
+:cs_generate_from_arg_count:cs_generate_variant";
static void TEX_decode_env (const char *, const char *);
@@ -5803,19 +5833,139 @@ TeX_commands (FILE *inf)
{
char *p;
ptrdiff_t namelen, linelen;
- bool opgrp = false;
+ bool opgrp = false, one_esc = false, is_explthree = false;
cp = skip_spaces (cp + key->len);
+
+ /* 1. The canonical expl3 syntax looks something like this:
+ \cs_new:Npn \__hook_tl_gput:Nn { \ERROR }. First, if we
+ want to tag any such commands, we include only the part
+ before the colon (cs_new) in TEX_defenv or TEXTAGS. Second,
+ etags skips the argument specifier (including the colon)
+ after the tag token, so that it doesn't become the tag name.
+ Third, we set the boolean 'is_explthree' to true so that we
+ can remove the argument specifier from the actual tag name
+ (__hook_tl_gput). This all allows us to include expl3
+ constructs in TEX_defenv or in the environment variable
+ TEXTAGS without requiring a change of separator, and it also
+ allows us to find the definition of variant commands (with
+ different argument specifiers) defined using, for example,
+ \cs_generate_variant:Nn. Please note that the expl3 spec
+ requires etags to pay more attention to whitespace in the
+ code.
+
+ 2. We also automatically remove the asterisk from starred
+ variants of all commands, without the need to include the
+ starred commands explicitly in TEX_defenv or TEXTAGS. */
+ if (*cp == ':')
+ {
+ while (!c_isspace (*cp) && *cp != TEX_opgrp)
+ cp++;
+ cp = skip_spaces (cp);
+ is_explthree = true;
+ }
+ else if (*cp == '*')
+ cp++;
+
+ /* Skip the optional arguments to commands in the tags list so
+ that these arguments don't end up as the name of the tag.
+ The name will instead come from the argument in curly braces
+ that follows the optional ones. The '\let' command gets
+ special treatment. */
+ while (*cp != '\0' && *cp != '%'
+ && !streq (key->buffer, "let"))
+ {
+ if (*cp == '[')
+ {
+ while (*cp != ']' && *cp != '\0' && *cp != '%')
+ cp++;
+ }
+ else if (*cp == '(')
+ {
+ while (*cp != ')' && *cp != '\0' && *cp != '%')
+ cp++;
+ }
+ else if (*cp == ']' || *cp == ')')
+ cp++;
+ else
+ break;
+ }
if (*cp == TEX_opgrp)
{
opgrp = true;
cp++;
+ cp = skip_spaces (cp); /* For expl3 code. */
}
+
+ /* Removing the TeX escape character from tag names simplifies
+ things for editors finding tagged commands in TeX buffers.
+ This applies to Emacs but also to the tag-finding behavior
+ of at least some of the editors that use ctags, though in
+ the latter case this will remain suboptimal. The
+ undocumented ctags option '--no-duplicates' may help. */
+ if (*cp == TEX_esc)
+ {
+ cp++;
+ one_esc = true;
+ }
+
+ /* Testing !c_isspace && !c_ispunct is simpler, but halts
+ processing at too many places. The list as it stands tries
+ both to ensure that tag names will derive from macro names
+ rather than from optional parameters to those macros, and
+ also to return findable names while still allowing for
+ unorthodox constructs. */
for (p = cp;
- (!c_isspace (*p) && *p != '#' &&
- *p != TEX_opgrp && *p != TEX_clgrp);
+ (!c_isspace (*p) && *p != '#' && *p != '=' &&
+ *p != '[' && *p != '(' && *p != TEX_opgrp &&
+ *p != TEX_clgrp && *p != '"' && *p != '\'' &&
+ *p != '%' && *p != ',' && *p != '|' && *p != '$');
p++)
- continue;
+ /* In expl3 code we remove the argument specification from
+ the tag name. More generally we allow only one (deleted)
+ escape char in a tag name, which (primarily) enables
+ tagging a TeX command's different, possibly temporary,
+ '\let' bindings. */
+ if (is_explthree && *p == ':')
+ break;
+ else if (*p == TEX_esc)
+ { /* Second part of test is for, e.g., \cslet. */
+ if (!one_esc && !opgrp)
+ {
+ one_esc = true;
+ continue;
+ }
+ else
+ break;
+ }
+ else
+ continue;
+ /* For TeX files, tags without a name are basically cruft, and
+ in some situations they can produce spurious and confusing
+ matches. Try to catch as many cases as possible where a
+ command name is of the form '\(', but avoid, as far as
+ possible, the spurious matches. */
+ if (p == cp)
+ {
+ switch (*p)
+ { /* Include =? */
+ case '(': case '[': case '"': case '\'':
+ case '\\': case '!': case '=': case ',':
+ case '|': case '$':
+ p++;
+ break;
+ case '{': case '}': case '<': case '>':
+ if (!opgrp)
+ {
+ p++;
+ if (*p == '\0' || *p == '%')
+ goto tex_next_line;
+ }
+ break;
+ default:
+ break;
+ }
+ }
namelen = p - cp;
linelen = lb.len;
if (!opgrp || *p == TEX_clgrp)
@@ -5824,9 +5974,18 @@ TeX_commands (FILE *inf)
p++;
linelen = p - lb.buffer + 1;
}
- make_tag (cp, namelen, true,
- lb.buffer, linelen, lineno, linecharno);
- goto tex_next_line; /* We only tag a line once */
+ if (namelen)
+ make_tag (cp, namelen, true,
+ lb.buffer, linelen, lineno, linecharno);
+ /* Lines with more than one \def or \let are surprisingly
+ common in TeX files, especially in the system files that
+ form the basis of the various TeX formats. This tags them
+ all. */
+ /* goto tex_next_line; /\* We only tag a line once *\/ */
+ while (*cp != '\0' && *cp != '%' && *cp != TEX_esc)
+ cp++;
+ if (*cp != TEX_esc)
+ goto tex_next_line;
}
}
tex_next_line:
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 97c950267c6..fbf08840699 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -636,6 +636,14 @@ tex-font-lock-keywords-2
3 '(tex-font-lock-append-prop 'bold) 'append)))))
"Gaudy expressions to highlight in TeX modes.")
+(defvar-local tex-expl-region-list nil
+ "List of region boundaries where expl3 syntax is active.
+It will be nil in buffers where expl3 syntax is always active, e.g.,
+expl3 classes or packages.")
+
+(defvar-local tex-expl-buffer-p nil
+ "Non-nil in buffers where expl3 syntax is always active.")
+
(defun tex-font-lock-suscript (pos)
(unless (or (memq (get-text-property pos 'face)
'(font-lock-constant-face font-lock-builtin-face
@@ -645,7 +653,17 @@ tex-font-lock-suscript
(pos pos))
(while (eq (char-before pos) ?\\)
(setq pos (1- pos) odd (not odd)))
- odd))
+ odd)
+ ;; Check if POS is in an expl3 syntax region or an expl3 buffer
+ (when (eq (char-after pos) ?_)
+ (or tex-expl-buffer-p
+ (and
+ tex-expl-region-list
+ (catch 'result
+ (dolist (range tex-expl-region-list)
+ (and (> pos (car range))
+ (< pos (cdr range))
+ (throw 'result t))))))))
(if (eq (char-after pos) ?_)
`(face subscript display (raise ,(car tex-font-script-display)))
`(face superscript display (raise ,(cadr tex-font-script-display))))))
@@ -1289,8 +1307,16 @@ tex-common-initialization
#'tex--prettify-symbols-compose-p)
(setq-local syntax-propertize-function
(syntax-propertize-rules latex-syntax-propertize-rules))
+ ;; Don't add extra processing to `syntax-propertize' in files where
+ ;; expl3 syntax is always active.
+ :after-hook (progn (tex-expl-buffer-parse)
+ (unless tex-expl-buffer-p
+ (add-hook 'syntax-propertize-extend-region-functions
+ #'tex-expl-region-set nil t)))
;; TABs in verbatim environments don't do what you think.
(setq-local indent-tabs-mode nil)
+ ;; Set up xref backend in TeX buffers.
+ (add-hook 'xref-backend-functions #'tex--xref-backend nil t)
;; Other vars that should be buffer-local.
(make-local-variable 'tex-command)
(make-local-variable 'tex-start-of-header)
@@ -1936,6 +1962,36 @@ tex-count-words
(forward-sexp 1))))))
(message "%s words" count))))
+(defun tex-expl-buffer-parse ()
+ "Identify buffers where expl3 syntax is always active."
+ (save-excursion
+ (goto-char (point-min))
+ (when (tex-search-noncomment
+ (re-search-forward
+ "\\\\\\(?:ExplFile\\|ProvidesExpl\\|__xparse_file\\)"
+ nil t))
+ (setq tex-expl-buffer-p t))))
+
+(defun tex-expl-region-set (_beg _end)
+ "Create a list of regions where expl3 syntax is active.
+This function updates the list whenever `syntax-propertize' runs, and
+stores it in the buffer-local variable `tex-expl-region-list'. The
+list will always be nil when the buffer visits an expl3 file, e.g., an
+expl3 class or package, where expl3 syntax is always active."
+ (unless syntax-ppss--updated-cache;; Stop forward search running twice.
+ (setq tex-expl-region-list nil)
+ ;; Leaving this test here allows users to set `tex-expl-buffer-p'
+ ;; independently of the mode's automatic detection of an expl3 file.
+ (unless tex-expl-buffer-p
+ (goto-char (point-min))
+ (let ((case-fold-search nil))
+ (while (tex-search-noncomment
+ (search-forward "\\ExplSyntaxOn" nil t))
+ (let ((new-beg (point))
+ (new-end (or (tex-search-noncomment
+ (search-forward "\\ExplSyntaxOff" nil t))
+ (point-max))))
+ (push (cons new-beg new-end) tex-expl-region-list)))))))
\f
;;; Invoking TeX in an inferior shell.
@@ -3742,6 +3798,306 @@ tex-chktex
(process-send-region tex-chktex--process (point-min) (point-max))
(process-send-eof tex-chktex--process))))
+\f
+;;; Xref backend
+
+;; Here we lightly adapt the default etags backend for xref so that
+;; the main xref user commands (including `xref-find-definitions',
+;; `xref-find-apropos', and `xref-find-references' [on M-., C-M-., and
+;; M-?, respectively]) work in TeX buffers. The only methods we
+;; actually modify are `xref-backend-identifier-at-point' and
+;; `xref-backend-references'. Many of the complications here, and in
+;; `etags' itself, are due to the necessity of parsing both the old
+;; TeX syntax and the new expl3 syntax, which will continue to appear
+;; together in documents for the foreseeable future. Synchronizing
+;; Emacs and `etags' this way aims to improve the user experience "out
+;; of the box."
+
+(defvar tex-thingatpt-exclude-chars '(?\\ ?\{ ?\})
+ "Exclude these chars by default from TeX thing-at-point.
+
+The TeX `xref-backend-identifier-at-point' method uses the characters
+listed in this variable to decide on the default search string to
+present to the user who calls an `xref' command. These characters
+become part of a regexp which always excludes them from that default
+string. For the `xref' commands to function properly in TeX buffers, at
+least the TeX escape and the two TeX grouping characters should be
+listed here. Should your TeX documents contain other characters which
+you want to exclude by default, then you can add them to the list,
+though you may wish to consult the functions
+`tex-thingatpt--beginning-of-symbol' and `tex-thingatpt--end-of-symbol'
+to see what the regexp already contains. If your documents contain
+non-standard escape and grouping characters, then you can replace the
+three listed here with your own, thereby allowing the three standard
+characters to appear by default in search strings. Please be aware,
+however, that the `etags' program only recognizes `\\' (92) and `!' (33)
+as escape characters in TeX documents, and if it detects the latter it
+also uses `<>' as the TeX grouping construct rather than `{}'. Setting
+the escape and grouping chars to anything other than `\\=\\{}' or `!<>'
+will not be useful without changes to `etags', at least for commands
+that search tags tables, such as \\[xref-find-definitions] and \
+\\[xref-find-apropos].
+
+Should you wish to change the defaults, please also be aware that,
+without further modifications to tex-mode.el, the usual text-parsing
+routines for `font-lock' and the like won't work correctly, as the
+default escape and grouping characters are currently hard coded in many
+places.")
+
+;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
+;; AUCTeX is doing the same for its modes.
+(with-eval-after-load 'semantic/symref/grep
+ (defvar semantic-symref-filepattern-alist)
+ (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
+ "*.bbl" "*.drv" "*.hva")
+ semantic-symref-filepattern-alist)
+ (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
+ semantic-symref-filepattern-alist)
+ (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
+
+(defun tex--xref-backend () 'tex-etags)
+
+(cl-defmethod xref-backend-identifier-at-point ((_backend (eql 'tex-etags)))
+ (require 'etags)
+ (tex--thing-at-point))
+
+;; The detection of `_' and `:' is a primitive method for determining
+;; whether point is on an expl3 construct. It may fail in some
+;; instances.
+(defun tex--thing-at-point ()
+ "Demarcate `thing-at-point' for the TeX `xref' backend."
+ (let ((bounds (tex--bounds-of-symbol-at-point)))
+ (when bounds
+ (let ((texsym (buffer-substring-no-properties (car bounds) (cdr bounds))))
+ (if (and (not (string-match-p "reference" (symbol-name this-command)))
+ (seq-contains-p texsym ?_)
+ (seq-contains-p texsym ?:))
+ (seq-take texsym (seq-position texsym ?:))
+ texsym)))))
+
+(defun tex-thingatpt--beginning-of-symbol ()
+ (and
+ (re-search-backward (concat "[]["
+ (mapconcat #'regexp-quote
+ (mapcar #'char-to-string
+ tex-thingatpt-exclude-chars))
+ "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (forward-char)))
+
+(defun tex-thingatpt--end-of-symbol ()
+ (and
+ (re-search-forward (concat "[]["
+ (mapconcat #'regexp-quote
+ (mapcar #'char-to-string
+ tex-thingatpt-exclude-chars))
+ "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (backward-char)))
+
+(defun tex--bounds-of-symbol-at-point ()
+ "Simplify `bounds-of-thing-at-point' for TeX `xref' backend."
+ (let ((orig (point)))
+ (ignore-errors
+ (save-excursion
+ (tex-thingatpt--end-of-symbol)
+ (tex-thingatpt--beginning-of-symbol)
+ (let ((beg (point)))
+ (if (<= beg orig)
+ (let ((real-end
+ (progn
+ (tex-thingatpt--end-of-symbol)
+ (point))))
+ (cond ((and (<= orig real-end) (< beg real-end))
+ (cons beg real-end))
+ ((and (= orig real-end) (= beg real-end))
+ (cons beg (1+ beg)))))))))));; For 1-char TeX commands.
+
+(cl-defmethod xref-backend-identifier-completion-table ((_backend
+ (eql 'tex-etags)))
+ (xref-backend-identifier-completion-table 'etags))
+
+(cl-defmethod xref-backend-identifier-completion-ignore-case ((_backend
+ (eql
+ 'tex-etags)))
+ (xref-backend-identifier-completion-ignore-case 'etags))
+
+(cl-defmethod xref-backend-definitions ((_backend (eql 'tex-etags)) symbol)
+ (xref-backend-definitions 'etags symbol))
+
+(cl-defmethod xref-backend-apropos ((_backend (eql 'tex-etags)) pattern)
+ (xref-backend-apropos 'etags pattern))
+
+;; The `xref-backend-references' method requires more code than the
+;; others for at least two main reasons: TeX authors have typically been
+;; free in their invention of new file types with new suffixes, and they
+;; have also tended sometimes to include non-symbol characters in
+;; command names. When combined with the default Semantic Symbol
+;; Reference API, these two characteristics of TeX code mean that a
+;; command like `xref-find-references' would often fail to find any hits
+;; for a symbol at point, including the one under point in the current
+;; buffer, or it would find only some instances and skip others.
+
+(defun tex-find-references-syntax-table ()
+ (let ((st (if (boundp 'TeX-mode-syntax-table)
+ (make-syntax-table TeX-mode-syntax-table)
+ (make-syntax-table tex-mode-syntax-table))))
+ st))
+
+(defvar tex--xref-syntax-fun nil)
+
+(defun tex-xref-syntax-function (str beg end)
+ "Provide a bespoke `syntax-propertize-function' for \\[xref-find-references]."
+ (let* (grpb tempstr
+ (shrtstr (if end
+ (progn
+ (setq tempstr (seq-take str (1- (length str))))
+ (if beg
+ (setq tempstr (seq-drop tempstr 1))
+ tempstr))
+ (seq-drop str 1)))
+ (grpa (if (and beg end)
+ (prog1
+ (list 1 "_")
+ (setq grpb (list 2 "_")))
+ (list 1 "_")))
+ (re (concat beg (regexp-quote shrtstr) end))
+ (temp-rule (if grpb
+ (list re grpa grpb)
+ (list re grpa))))
+ ;; Simple benchmarks suggested that the speed-up from compiling this
+ ;; function was nearly nil, so `eval' and its non-byte-compiled
+ ;; function remain.
+ (setq tex--xref-syntax-fun (eval
+ `(syntax-propertize-rules ,temp-rule)))))
+
+(defun tex--collect-file-extensions ()
+ "Gather TeX file extensions from `auto-mode-alist'."
+ (let* ((mlist (when (rassq major-mode auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) major-mode))
+ auto-mode-alist)))
+ (lcsym (intern-soft (downcase (symbol-name major-mode))))
+ (lclist (and lcsym
+ (not (eq lcsym major-mode))
+ (rassq lcsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) lcsym))
+ auto-mode-alist)))
+ (shortsym (when (stringp mode-name)
+ (intern-soft (concat (string-trim-right mode-name "/.*")
+ "-mode"))))
+ (lcshortsym (when (stringp mode-name)
+ (intern-soft (downcase
+ (concat
+ (string-trim-right mode-name "/.*")
+ "-mode")))))
+ (shlist (and shortsym
+ (not (eq shortsym major-mode))
+ (not (eq shortsym lcsym))
+ (rassq shortsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) shortsym))
+ auto-mode-alist)))
+ (lcshlist (and lcshortsym
+ (not (eq lcshortsym major-mode))
+ (not (eq lcshortsym lcsym))
+ (rassq lcshortsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) lcshortsym))
+ auto-mode-alist)))
+ (exts (when (or mlist lclist shlist lcshlist)
+ (seq-union (seq-map #'car lclist)
+ (seq-union (seq-map #'car mlist)
+ (seq-union (seq-map #'car lcshlist)
+ (seq-map #'car shlist))))))
+ (ed-exts (when exts
+ (seq-map
+ (lambda (elt)
+ (concat "*" (string-trim elt "\\\\" "\\\\'")))
+ exts))))
+ ed-exts))
+
+(defvar tex--buffers-list nil)
+(defvar-local tex--old-syntax-function nil)
+
+(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags)) identifier)
+ "Find references of IDENTIFIER in TeX buffers and files."
+ (require 'semantic/symref/grep)
+ (defvar semantic-symref-filepattern-alist)
+ (let (bufs texbufs
+ (mode major-mode))
+ (dolist (buf (buffer-list))
+ (if (eq (buffer-local-value 'major-mode buf) mode)
+ (push buf bufs)
+ (when (string-match-p ".*\\.[tT]e[xX]" (buffer-name buf))
+ (push buf texbufs))))
+ (unless (seq-set-equal-p tex--buffers-list bufs)
+ (let* ((amalist (tex--collect-file-extensions))
+ (extlist (alist-get mode semantic-symref-filepattern-alist))
+ (extlist-new (seq-uniq
+ (seq-union amalist extlist #'string-match-p))))
+ (setq tex--buffers-list bufs)
+ (dolist (buf bufs)
+ (when-let ((fbuf (buffer-file-name buf))
+ (ext (file-name-extension fbuf))
+ (finext (concat "*." ext))
+ ((not (seq-find (lambda (elt) (string-match-p elt finext))
+ extlist-new)))
+ ((push finext extlist-new)))))
+ (unless (seq-set-equal-p extlist-new extlist)
+ (setf (alist-get mode semantic-symref-filepattern-alist)
+ extlist-new))))
+ (let* (setsyntax
+ (punct (with-syntax-table (tex-find-references-syntax-table)
+ (seq-positions identifier (list ?w ?_)
+ (lambda (elt sycode)
+ (not (memq (char-syntax elt) sycode))))))
+ (end (and punct
+ (memq (1- (length identifier)) punct)
+ (> (length identifier) 1)
+ (concat "\\("
+ (regexp-quote
+ (string (elt identifier
+ (1- (length identifier)))))
+ "\\)")))
+ (beg (and punct
+ (memq 0 punct)
+ (concat "\\("
+ (regexp-quote (string (elt identifier 0)))
+ "\\)")))
+ (text-mode-hook
+ (if (or end beg)
+ (progn
+ (tex-xref-syntax-function identifier beg end)
+ (setq setsyntax (lambda ()
+ (setq-local syntax-propertize-function
+ tex--xref-syntax-fun)
+ (setq-local TeX-style-hook-applied-p t)))
+ (cons setsyntax text-mode-hook))
+ text-mode-hook)))
+ (unless (memq 'doctex-mode (derived-mode-all-parents mode))
+ (setq bufs (append texbufs bufs)))
+ (when (or end beg)
+ (dolist (buf bufs)
+ (with-current-buffer buf
+ (unless (local-variable-p 'tex--old-syntax-function)
+ (setq tex--old-syntax-function syntax-propertize-function))
+ (setq-local syntax-propertize-function
+ tex--xref-syntax-fun)
+ (syntax-ppss-flush-cache (point-min)))))
+ (unwind-protect
+ (xref-backend-references nil identifier)
+ (when (or end beg)
+ (dolist (buf bufs)
+ (with-current-buffer buf
+ (when buffer-file-truename
+ (setq-local syntax-propertize-function
+ tex--old-syntax-function)
+ (syntax-ppss-flush-cache (point-min))))))))))
+
(make-obsolete-variable 'tex-mode-load-hook
"use `with-eval-after-load' instead." "28.1")
(run-hooks 'tex-mode-load-hook)
--
2.39.4
^ permalink raw reply related [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-06-05 9:46 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-06-08 12:38 ` Eli Zaretskii
2024-06-08 20:54 ` Dmitry Gutov
2024-06-09 11:10 ` Stefan Kangas
2024-06-09 11:36 ` Stefan Kangas
2 siblings, 1 reply; 106+ messages in thread
From: Eli Zaretskii @ 2024-06-08 12:38 UTC (permalink / raw)
To: David Fussner; +Cc: 53749, ikumi, tsdh, arash, stefankangas, dgutov, monnier
> From: David Fussner <dfussner@googlemail.com>
> Date: Wed, 5 Jun 2024 10:46:10 +0100
> Cc: Stefan Monnier <monnier@iro.umontreal.ca>, dgutov@yandex.ru, 53749@debbugs.gnu.org,
> ikumi@ikumi.que.jp, arash@gnu.org, stefankangas@gmail.com, tsdh@gnu.org
>
> Hi Eli, Stefan, and Dmitry,
>
> In case the changeset might prove acceptable for version 30, I attach
> the latest patch, which clears out the code I was using to simplify
> testing of the AUCTeX modes. I can if requested send a patch for the
> manual etags tests, also, in case that might prove helpful down the
> line.
Thanks, I'm still waiting for answers to my question:
> On Sat, 25 May 2024 at 12:01, Eli Zaretskii <eliz@gnu.org> wrote:
> >
> > How should we proceed about this bug report? Is David's last
> > changeset acceptable or isn't it?
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-06-08 12:38 ` Eli Zaretskii
@ 2024-06-08 20:54 ` Dmitry Gutov
0 siblings, 0 replies; 106+ messages in thread
From: Dmitry Gutov @ 2024-06-08 20:54 UTC (permalink / raw)
To: Eli Zaretskii, David Fussner
Cc: 53749, ikumi, arash, stefankangas, tsdh, monnier
On 08/06/2024 15:38, Eli Zaretskii wrote:
>> From: David Fussner<dfussner@googlemail.com>
>> Date: Wed, 5 Jun 2024 10:46:10 +0100
>> Cc: Stefan Monnier<monnier@iro.umontreal.ca>,dgutov@yandex.ru,53749@debbugs.gnu.org,
>> ikumi@ikumi.que.jp,arash@gnu.org,stefankangas@gmail.com,tsdh@gnu.org
>>
>> Hi Eli, Stefan, and Dmitry,
>>
>> In case the changeset might prove acceptable for version 30, I attach
>> the latest patch, which clears out the code I was using to simplify
>> testing of the AUCTeX modes. I can if requested send a patch for the
>> manual etags tests, also, in case that might prove helpful down the
>> line.
> Thanks, I'm still waiting for answers to my question:
>
>> On Sat, 25 May 2024 at 12:01, Eli Zaretskii<eliz@gnu.org> wrote:
>>> How should we proceed about this bug report? Is David's last
>>> changeset acceptable or isn't it?
To the extent that I can evaluate the code, it look pretty good.
And it's an additive change, so I don't see blockers to installing it.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-06-05 9:46 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-08 12:38 ` Eli Zaretskii
@ 2024-06-09 11:10 ` Stefan Kangas
2024-06-09 11:36 ` Stefan Kangas
2 siblings, 0 replies; 106+ messages in thread
From: Stefan Kangas @ 2024-06-09 11:10 UTC (permalink / raw)
To: David Fussner, Eli Zaretskii
Cc: 53749, ikumi, dgutov, arash, Stefan Monnier, tsdh
David Fussner <dfussner@googlemail.com> writes:
> I can if requested send a patch for the manual etags tests, also, in
> case that might prove helpful down the line.
I believe that such tests would help, yes. Thanks in advance.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-06-05 9:46 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-08 12:38 ` Eli Zaretskii
2024-06-09 11:10 ` Stefan Kangas
@ 2024-06-09 11:36 ` Stefan Kangas
2024-06-09 18:42 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-09 18:45 ` Dmitry Gutov
2 siblings, 2 replies; 106+ messages in thread
From: Stefan Kangas @ 2024-06-09 11:36 UTC (permalink / raw)
To: David Fussner, Eli Zaretskii
Cc: 53749, ikumi, dgutov, arash, Stefan Monnier, tsdh
David Fussner <dfussner@googlemail.com> writes:
> In case the changeset might prove acceptable for version 30, I attach
> the latest patch, which clears out the code I was using to simplify
> testing of the AUCTeX modes.
I have some comments and questions:
- Does this need a NEWS entry?
- I see the brief text you added to tex-mode.el explaining more about
expl3, but perhaps there should be a clear explanation in the commit
message too.
- [Optional: In most places you use spaces for indentation, but here and
there, there is a single tab followed by one or more spaces. Consider
using only spaces.]
> From: David Fussner <dfussner@googlemail.com>
> Date: Wed, 5 Jun 2024 10:26:18 +0100
> Subject: [PATCH] Provide a modified xref backend for TeX buffers
[Don't forget to add the bug number to the ChangeLog.]
> diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
> index 579098c81b1..a064103aa25 100644
> --- a/doc/emacs/maintaining.texi
> +++ b/doc/emacs/maintaining.texi
> @@ -2529,6 +2529,15 @@ Identifier Search
> referenced. The XREF mode commands are available in this buffer, see
> @ref{Xref Commands}.
>
> +When invoked in a buffer whose major mode uses the @code{etags} backend,
> +@kbd{M-?} searches files and buffers whose major mode matches that of
> +the original buffer. It guesses that mode from file extensions, so if
> +@kbd{M-?} seems to be skipping relevant buffers or files, try
> +customizing either the variable @code{semantic-symref-filepattern-alist}
Why does this speak of Semantic? Does `xref-find-references` depend on
it somehow?
> diff --git a/lib-src/etags.c b/lib-src/etags.c
> index 03bc55de03d..6bc734e7df0 100644
> --- a/lib-src/etags.c
> +++ b/lib-src/etags.c
> @@ -5740,11 +5756,25 @@ Scheme_functions (FILE *inf)
> static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */
>
> /* Default set of control sequences to put into TEX_toktab.
> - The value of environment var TEXTAGS is prepended to this. */
> + The value of environment var TEXTAGS is prepended to this.
> + (2024) Add variants of '\def', some additional LaTeX (and
> + former xparse) commands, common variants from the
> + 'etoolbox' package, and the main expl3 commands. */
Do we really need this comment? Isn't the git log enough?
> diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
> index 97c950267c6..fbf08840699 100644
> --- a/lisp/textmodes/tex-mode.el
> +++ b/lisp/textmodes/tex-mode.el
> @@ -636,6 +636,14 @@ tex-font-lock-keywords-2
> 3 '(tex-font-lock-append-prop 'bold) 'append)))))
> "Gaudy expressions to highlight in TeX modes.")
>
> +(defvar-local tex-expl-region-list nil
> + "List of region boundaries where expl3 syntax is active.
> +It will be nil in buffers where expl3 syntax is always active, e.g.,
Please prefer "for example" to "e.g.".
> +(defvar-local tex-expl-buffer-p nil
> + "Non-nil in buffers where expl3 syntax is always active.")
What does "always active" mean as compared to just "active"?
Does this need to be elaborated?
> +;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
> +;; AUCTeX is doing the same for its modes.
> +(with-eval-after-load 'semantic/symref/grep
> + (defvar semantic-symref-filepattern-alist)
> + (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
> + "*.bbl" "*.drv" "*.hva")
> + semantic-symref-filepattern-alist)
> + (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
> + semantic-symref-filepattern-alist)
> + (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
Doesn't this stuff rather belong in semantic itself?
> +(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags)) identifier)
> + "Find references of IDENTIFIER in TeX buffers and files."
> + (require 'semantic/symref/grep)
Are we sure that we want to make this depend on semantic?
Is there any way around that?
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-06-09 11:36 ` Stefan Kangas
@ 2024-06-09 18:42 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-09 18:45 ` Dmitry Gutov
1 sibling, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-06-09 18:42 UTC (permalink / raw)
To: Stefan Kangas
Cc: 53749, Ikumi Keita, Tassilo Horn, Arash Esbati, Stefan Monnier,
Dmitry Gutov, Eli Zaretskii
[-- Attachment #1: Type: text/plain, Size: 4741 bytes --]
Hi Stefan,
Thanks very much for the review. I'll try to address most of it in a
revised patch tomorrow, but I did want to explain now that the default
implementation of xref-find-references in xref.el uses semantic symref
functionality to search files. The TeX backend puts a wrapper around it,
but doesn't, following Dmitry's advice, try to reinvent that wheel. As for
where we set the filepattern variable, I don't mind, but AUCTeX is setting
it internally for their modes, so it seemed OK in tex-mode, too.
More tomorrow, and thanks again.
David.
On Sun, 9 Jun 2024, 12:36 Stefan Kangas, <stefankangas@gmail.com> wrote:
> David Fussner <dfussner@googlemail.com> writes:
>
> > In case the changeset might prove acceptable for version 30, I attach
> > the latest patch, which clears out the code I was using to simplify
> > testing of the AUCTeX modes.
>
> I have some comments and questions:
>
> - Does this need a NEWS entry?
>
> - I see the brief text you added to tex-mode.el explaining more about
> expl3, but perhaps there should be a clear explanation in the commit
> message too.
>
> - [Optional: In most places you use spaces for indentation, but here and
> there, there is a single tab followed by one or more spaces. Consider
> using only spaces.]
>
> > From: David Fussner <dfussner@googlemail.com>
> > Date: Wed, 5 Jun 2024 10:26:18 +0100
> > Subject: [PATCH] Provide a modified xref backend for TeX buffers
>
> [Don't forget to add the bug number to the ChangeLog.]
>
> > diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
> > index 579098c81b1..a064103aa25 100644
> > --- a/doc/emacs/maintaining.texi
> > +++ b/doc/emacs/maintaining.texi
> > @@ -2529,6 +2529,15 @@ Identifier Search
> > referenced. The XREF mode commands are available in this buffer, see
> > @ref{Xref Commands}.
> >
> > +When invoked in a buffer whose major mode uses the @code{etags} backend,
> > +@kbd{M-?} searches files and buffers whose major mode matches that of
> > +the original buffer. It guesses that mode from file extensions, so if
> > +@kbd{M-?} seems to be skipping relevant buffers or files, try
> > +customizing either the variable @code{semantic-symref-filepattern-alist}
>
> Why does this speak of Semantic? Does `xref-find-references` depend on
> it somehow?
>
> > diff --git a/lib-src/etags.c b/lib-src/etags.c
> > index 03bc55de03d..6bc734e7df0 100644
> > --- a/lib-src/etags.c
> > +++ b/lib-src/etags.c
> > @@ -5740,11 +5756,25 @@ Scheme_functions (FILE *inf)
> > static linebuffer *TEX_toktab = NULL; /* Table with tag tokens */
> >
> > /* Default set of control sequences to put into TEX_toktab.
> > - The value of environment var TEXTAGS is prepended to this. */
> > + The value of environment var TEXTAGS is prepended to this.
> > + (2024) Add variants of '\def', some additional LaTeX (and
> > + former xparse) commands, common variants from the
> > + 'etoolbox' package, and the main expl3 commands. */
>
> Do we really need this comment? Isn't the git log enough?
>
> > diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
> > index 97c950267c6..fbf08840699 100644
> > --- a/lisp/textmodes/tex-mode.el
> > +++ b/lisp/textmodes/tex-mode.el
> > @@ -636,6 +636,14 @@ tex-font-lock-keywords-2
> > 3 '(tex-font-lock-append-prop 'bold) 'append)))))
> > "Gaudy expressions to highlight in TeX modes.")
> >
> > +(defvar-local tex-expl-region-list nil
> > + "List of region boundaries where expl3 syntax is active.
> > +It will be nil in buffers where expl3 syntax is always active, e.g.,
>
> Please prefer "for example" to "e.g.".
>
> > +(defvar-local tex-expl-buffer-p nil
> > + "Non-nil in buffers where expl3 syntax is always active.")
>
> What does "always active" mean as compared to just "active"?
> Does this need to be elaborated?
>
> > +;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
> > +;; AUCTeX is doing the same for its modes.
> > +(with-eval-after-load 'semantic/symref/grep
> > + (defvar semantic-symref-filepattern-alist)
> > + (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
> > + "*.bbl" "*.drv" "*.hva")
> > + semantic-symref-filepattern-alist)
> > + (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
> > + semantic-symref-filepattern-alist)
> > + (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
>
> Doesn't this stuff rather belong in semantic itself?
>
> > +(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags))
> identifier)
> > + "Find references of IDENTIFIER in TeX buffers and files."
> > + (require 'semantic/symref/grep)
>
> Are we sure that we want to make this depend on semantic?
>
> Is there any way around that?
>
[-- Attachment #2: Type: text/html, Size: 6118 bytes --]
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-06-09 11:36 ` Stefan Kangas
2024-06-09 18:42 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-06-09 18:45 ` Dmitry Gutov
2024-06-09 21:03 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 1 reply; 106+ messages in thread
From: Dmitry Gutov @ 2024-06-09 18:45 UTC (permalink / raw)
To: Stefan Kangas, David Fussner, Eli Zaretskii
Cc: 53749, arash, tsdh, Stefan Monnier, ikumi
On 09/06/2024 14:36, Stefan Kangas wrote:
>> diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
>> index 579098c81b1..a064103aa25 100644
>> --- a/doc/emacs/maintaining.texi
>> +++ b/doc/emacs/maintaining.texi
>> @@ -2529,6 +2529,15 @@ Identifier Search
>> referenced. The XREF mode commands are available in this buffer, see
>> @ref{Xref Commands}.
>>
>> +When invoked in a buffer whose major mode uses the @code{etags} backend,
>> +@kbd{M-?} searches files and buffers whose major mode matches that of
>> +the original buffer. It guesses that mode from file extensions, so if
>> +@kbd{M-?} seems to be skipping relevant buffers or files, try
>> +customizing either the variable @code{semantic-symref-filepattern-alist}
> Why does this speak of Semantic? Does `xref-find-references` depend on
> it somehow?
xref-backend-references's default implementation calls
semantic-symref-perform-search under the cover. It's just the "symref"
package, not the parser or the rest.
David's addition also uses it, and that's fine.
>> +;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
>> +;; AUCTeX is doing the same for its modes.
>> +(with-eval-after-load 'semantic/symref/grep
>> + (defvar semantic-symref-filepattern-alist)
>> + (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
>> + "*.bbl" "*.drv" "*.hva")
>> + semantic-symref-filepattern-alist)
>> + (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
>> + semantic-symref-filepattern-alist)
>> + (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
> Doesn't this stuff rather belong in semantic itself?
Good point.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-06-09 18:45 ` Dmitry Gutov
@ 2024-06-09 21:03 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-09 22:13 ` Dmitry Gutov
0 siblings, 1 reply; 106+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-06-09 21:03 UTC (permalink / raw)
To: Dmitry Gutov
Cc: 53749, ikumi, David Fussner, arash, Stefan Kangas, tsdh,
Eli Zaretskii
>>> +;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
>>> +;; AUCTeX is doing the same for its modes.
>>> +(with-eval-after-load 'semantic/symref/grep
>>> + (defvar semantic-symref-filepattern-alist)
>>> + (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
>>> + "*.bbl" "*.drv" "*.hva")
>>> + semantic-symref-filepattern-alist)
>>> + (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
>>> + semantic-symref-filepattern-alist)
>>> + (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
>> Doesn't this stuff rather belong in semantic itself?
> Good point.
FWIW, I think the responsability of `symref.el` is to provide hooks like
the `semantic-symref-filepattern-alist` var along with the code that
uses them, but the mode-specific settings, such as knowledge about which
glob patterns should be used for `latex-mode` belong to the
corresponding mode.
Stefan
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-06-09 21:03 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-06-09 22:13 ` Dmitry Gutov
2024-06-10 13:29 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Dmitry Gutov @ 2024-06-09 22:13 UTC (permalink / raw)
To: Stefan Monnier
Cc: 53749, ikumi, David Fussner, arash, Stefan Kangas, tsdh,
Eli Zaretskii
On 10/06/2024 00:03, Stefan Monnier via Bug reports for GNU Emacs, the
Swiss army knife of text editors wrote:
>>>> +;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
>>>> +;; AUCTeX is doing the same for its modes.
>>>> +(with-eval-after-load 'semantic/symref/grep
>>>> + (defvar semantic-symref-filepattern-alist)
>>>> + (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
>>>> + "*.bbl" "*.drv" "*.hva")
>>>> + semantic-symref-filepattern-alist)
>>>> + (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
>>>> + semantic-symref-filepattern-alist)
>>>> + (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
>>> Doesn't this stuff rather belong in semantic itself?
>> Good point.
> FWIW, I think the responsability of `symref.el` is to provide hooks like
> the `semantic-symref-filepattern-alist` var along with the code that
> uses them, but the mode-specific settings, such as knowledge about which
> glob patterns should be used for `latex-mode` belong to the
> corresponding mode.
I've been looking at semantic-symref-filepattern-alist like a workaround
for the fast that the major modes don't provide enough relevant
information in auto-mode-alist (or, to look at it differently, don't
provide such info in some other variable which the auto-mode-alist entry
would be computed from).
From that perspective, storing the missing association inside the
semantic-symref package seems suitable. But a more "proper" place for it
would be better, of course.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-06-09 22:13 ` Dmitry Gutov
@ 2024-06-10 13:29 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-27 15:39 ` Arash Esbati
0 siblings, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-06-10 13:29 UTC (permalink / raw)
To: Dmitry Gutov
Cc: 53749, ikumi, arash, Stefan Kangas, tsdh, Eli Zaretskii,
Stefan Monnier
[-- Attachment #1: Type: text/plain, Size: 2305 bytes --]
Hi Dmitry, Stefan M and Stefan K,
Here's the latest patch, with most of the modifications requested by
Stefan K. The code populating `semantic-symref-filepattern-alist` I've
left in tex-mode.el, because I wasn't sure how to adjudicate the
differing opinions on where it should go. Moving it won't take any
time, should that be the verdict. I've had a stab at a NEWS entry, and
included the patches to the manual etags test files. The diffs for the
test files are large, since we remove the TeX escape char from any tag
names where it occurs, as discussed elsewhere on this thread.
Please let me know if more changes are needed.
Best, David.
On Sun, 9 Jun 2024 at 23:13, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> On 10/06/2024 00:03, Stefan Monnier via Bug reports for GNU Emacs, the
> Swiss army knife of text editors wrote:
> >>>> +;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
> >>>> +;; AUCTeX is doing the same for its modes.
> >>>> +(with-eval-after-load 'semantic/symref/grep
> >>>> + (defvar semantic-symref-filepattern-alist)
> >>>> + (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
> >>>> + "*.bbl" "*.drv" "*.hva")
> >>>> + semantic-symref-filepattern-alist)
> >>>> + (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
> >>>> + semantic-symref-filepattern-alist)
> >>>> + (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
> >>> Doesn't this stuff rather belong in semantic itself?
> >> Good point.
> > FWIW, I think the responsability of `symref.el` is to provide hooks like
> > the `semantic-symref-filepattern-alist` var along with the code that
> > uses them, but the mode-specific settings, such as knowledge about which
> > glob patterns should be used for `latex-mode` belong to the
> > corresponding mode.
>
> I've been looking at semantic-symref-filepattern-alist like a workaround
> for the fast that the major modes don't provide enough relevant
> information in auto-mode-alist (or, to look at it differently, don't
> provide such info in some other variable which the auto-mode-alist entry
> would be computed from).
>
> From that perspective, storing the missing association inside the
> semantic-symref package seems suitable. But a more "proper" place for it
> would be better, of course.
[-- Attachment #2: 0005-Provide-a-modified-xref-backend-for-TeX-buffers.patch --]
[-- Type: text/x-patch, Size: 1091090 bytes --]
From bb666475f412e4355603f21b646b17debab77a7a Mon Sep 17 00:00:00 2001
From: David Fussner <dfussner@googlemail.com>
Date: Mon, 10 Jun 2024 14:16:04 +0100
Subject: [PATCH] Provide a modified xref backend for TeX buffers
(bug#53749) In addition to providing a new `xref' backend, the patch
also improves the general handling of expl3 syntax. Expl3 is the
next-generation LaTeX specification, and has for some time been
available by default in the LaTeX kernel. The new syntax co-exists in
many files with the standard LaTeX2e syntax, so we try at least
minimally to separate the way modes handle the two specifications,
both to reduce visually-disturbing interference between them and also
to improve the `xref' backend.
* lib-src/etags.c (TeX_commands): Improve parsing of commands in TeX
buffers.
(TEX_defenv): Expand list of commands to tag by default in TeX
buffers.
(TeX_help):
* doc/emacs/maintaining.texi (Tag Syntax): Document new tagged
commands.
(Identifier Search): Add note about semantic-symref-filepattern-alist,
auto-mode-alist, and xref-find-references.
* lisp/textmodes/tex-mode.el (tex-font-lock-suscript): Test for
underscore in expl3 files and regions, disable subscript face there.
(tex-common-initialization): Set up xref backend for in-tree TeX
modes. Detect expl3 files, and in others set up a list of expl3
regions.
(tex-expl-buffer-parse): New function called in previous.
(tex-expl-buffer-p): New var to hold the result of previous.
(tex-expl-region-set): New function added to
'syntax-propertize-extend-region-functions' hook.
(tex-expl-region-list): New var to hold the result of previous.
(tex--xref-backend): New function to identify the xref backend.
(tex--thing-at-point, tex-thingatpt--beginning-of-symbol)
(tex-thingatpt--end-of-symbol, tex--bounds-of-symbol-at-point):
New functions to return 'thing-at-point' for xref backend.
(tex-thingatpt-exclude-chars): New var to do the same.
(xref-backend-identifier-at-point): New TeX backend method to provide
symbols for processing by xref.
(xref-backend-identifier-completion-table)
(xref-backend-identifier-completion-ignore-case)
(xref-backend-definitions, xref-backend-apropos): Placeholders to
call the standard 'etags' xref backend methods.
(xref-backend-references): Wrapper to call the default xref backend
method, finding as many relevant files as possible and using a bespoke
syntax-propertize-function when required.
(tex--collect-file-extensions, tex-xref-syntax-function): Helper
functions for previous.
(tex-find-references-syntax-table, tex--buffers-list)
(tex--xref-syntax-fun, tex--old-syntax-function): New vars for same.
* etc/NEWS (Changes in Specialized Modes): Add news.
* test/manual/etags/ETAGS.good_*:
* test/manual/etags/CTAGS.good*: Update expected results from TeX
files.
---
doc/emacs/maintaining.texi | 39 +-
etc/NEWS | 9 +
lib-src/etags.c | 186 ++-
lisp/textmodes/tex-mode.el | 358 +++++-
test/manual/etags/CTAGS.good | 1619 ++++++++++++++++----------
test/manual/etags/CTAGS.good_crlf | 1537 +++++++++++++++----------
test/manual/etags/CTAGS.good_update | 1537 +++++++++++++++----------
test/manual/etags/ETAGS.good_1 | 1636 +++++++++++++++++----------
test/manual/etags/ETAGS.good_2 | 1636 +++++++++++++++++----------
test/manual/etags/ETAGS.good_3 | 1636 +++++++++++++++++----------
test/manual/etags/ETAGS.good_4 | 1636 +++++++++++++++++----------
test/manual/etags/ETAGS.good_5 | 1636 +++++++++++++++++----------
test/manual/etags/ETAGS.good_6 | 1636 +++++++++++++++++----------
13 files changed, 9692 insertions(+), 5409 deletions(-)
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi
index 579098c81b1..a064103aa25 100644
--- a/doc/emacs/maintaining.texi
+++ b/doc/emacs/maintaining.texi
@@ -2529,6 +2529,15 @@ Identifier Search
referenced. The XREF mode commands are available in this buffer, see
@ref{Xref Commands}.
+When invoked in a buffer whose major mode uses the @code{etags} backend,
+@kbd{M-?} searches files and buffers whose major mode matches that of
+the original buffer. It guesses that mode from file extensions, so if
+@kbd{M-?} seems to be skipping relevant buffers or files, try
+customizing either the variable @code{semantic-symref-filepattern-alist}
+(if your buffer's major mode already has an entry in it), or
+@code{auto-mode-alist} (if not), thereby informing @code{xref} of the
+missing extensions (@pxref{Choosing Modes}).
+
@vindex xref-auto-jump-to-first-xref
If the value of the variable @code{xref-auto-jump-to-first-xref} is
@code{t}, @code{xref-find-references} automatically jumps to the first
@@ -2747,10 +2756,32 @@ Tag Syntax
@item
In @LaTeX{} documents, the arguments for @code{\chapter},
@code{\section}, @code{\subsection}, @code{\subsubsection},
-@code{\eqno}, @code{\label}, @code{\ref}, @code{\cite},
-@code{\bibitem}, @code{\part}, @code{\appendix}, @code{\entry},
-@code{\index}, @code{\def}, @code{\newcommand}, @code{\renewcommand},
-@code{\newenvironment} and @code{\renewenvironment} are tags.
+@code{\eqno}, @code{\label}, @code{\ref}, @code{\Ref}, @code{\footref},
+@code{\cite}, @code{\bibitem}, @code{\part}, @code{\appendix},
+@code{\entry}, @code{\index}, @code{\def}, @code{\edef}, @code{\gdef},
+@code{\xdef}, @code{\newcommand}, @code{\renewcommand},
+@code{\newenvironment}, @code{\renewenvironment},
+@code{\DeclareRobustCommand}, @code{\newrobustcmd},
+@code{\renewrobustcmd}, @code{\providecommand},
+@code{\providerobustcmd}, @code{\NewDocumentCommand},
+@code{\RenewDocumentCommand}, @code{\ProvideDocumentCommand},
+@code{\DeclareDocumentCommand}, @code{\NewExpandableDocumentCommand},
+@code{\RenewExpandableDocumentCommand},
+@code{\ProvideExpandableDocumentCommand},
+@code{\DeclareExpandableDocumentCommand},
+@code{\NewDocumentEnvironment}, @code{\RenewDocumentEnvironment},
+@code{\ProvideDocumentEnvironment}, @code{\DeclareDocumentEnvironment},
+@code{\csdef}, @code{\csedef}, @code{\csgdef}, @code{\csxdef},
+@code{\csletcs}, @code{\cslet}, @code{\letcs}, @code{\let},
+@code{\cs_new_protected_nopar}, @code{\cs_new_protected},
+@code{\cs_new_nopar}, @code{\cs_new_eq}, @code{\cs_new},
+@code{\cs_set_protected_nopar}, @code{\cs_set_protected},
+@code{\cs_set_nopar}, @code{\cs_set_eq}, @code{\cs_set},
+@code{\cs_gset_protected_nopar}, @code{\cs_gset_protected},
+@code{\cs_gset_nopar}, @code{\cs_gset_eq}, @code{\cs_gset},
+@code{\cs_generate_from_arg_count}, and @code{\cs_generate_variant} are
+tags. So too are the arguments of any starred variants of these
+commands.
Other commands can make tags as well, if you specify them in the
environment variable @env{TEXTAGS} before invoking @command{etags}. The
diff --git a/etc/NEWS b/etc/NEWS
index 94557fdd255..ac5d52053de 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1882,6 +1882,15 @@ By default it retains the previous behavior: read the contents of
Gemfile and act accordingly. But you can also set it to t or nil to
skip the check.
+** TeX modes
+
++++
+*** New xref backend for TeX modes.
+The new backend ('tex-etags') is on by default, and improves the
+functionality of the standard 'xref' commands in TeX buffers. You can
+restore the standard 'etags' backend with the 'M-x xref-etags-mode'
+toggle.
+
** Thingatpt
---
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 03bc55de03d..bdb11c09eb7 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -793,11 +793,27 @@ #define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
static const char *TeX_suffixes [] =
{ "bib", "clo", "cls", "ltx", "sty", "TeX", "tex", NULL };
static const char TeX_help [] =
-"In LaTeX text, the argument of any of the commands '\\chapter',\n\
-'\\section', '\\subsection', '\\subsubsection', '\\eqno', '\\label',\n\
-'\\ref', '\\cite', '\\bibitem', '\\part', '\\appendix', '\\entry',\n\
-'\\index', '\\def', '\\newcommand', '\\renewcommand',\n\
-'\\newenvironment' or '\\renewenvironment' is a tag.\n\
+"In LaTeX text, the argument of the commands '\\chapter', '\\section',\n\
+'\\subsection', '\\subsubsection', '\\eqno', '\\label', '\\ref',\n\
+'\\Ref', '\\footref', '\\cite', '\\bibitem', '\\part', '\\appendix',\n\
+'\\entry', '\\index', '\\def', '\\edef', '\\gdef', '\\xdef',\n\
+'\\newcommand', '\\renewcommand', '\\newrobustcmd', '\\renewrobustcmd',\n\
+'\\newenvironment', '\\renewenvironment', '\\DeclareRobustCommand',\n\
+'\\providecommand', '\\providerobustcmd', '\\NewDocumentCommand',\n\
+'\\RenewDocumentCommand', '\\ProvideDocumentCommand',\n\
+'\\DeclareDocumentCommand', '\\NewExpandableDocumentCommand',\n\
+'\\RenewExpandableDocumentCommand', '\\ProvideExpandableDocumentCommand',\n\
+'\\DeclareExpandableDocumentCommand', '\\NewDocumentEnvironment',\n\
+'\\RenewDocumentEnvironment', '\\ProvideDocumentEnvironment',\n\
+'\\DeclareDocumentEnvironment','\\csdef', '\\csedef', '\\csgdef',\n\
+'\\csxdef', '\\csletcs', '\\cslet', '\\letcs', '\\let',\n\
+'\\cs_new_protected_nopar', '\\cs_new_protected', '\\cs_new_nopar',\n\
+'\\cs_new_eq', '\\cs_new', '\\cs_set_protected_nopar',\n\
+'\\cs_set_protected', '\\cs_set_nopar', '\\cs_set_eq', '\\cs_set',\n\
+'\\cs_gset_protected_nopar', '\\cs_gset_protected', '\\cs_gset_nopar',\n\
+'\\cs_gset_eq', '\\cs_gset', '\\cs_generate_from_arg_count', or\n\
+'\\cs_generate_variant' is a tag. So is the argument of any starred\n\
+variant of these commands.\n\
\n\
Other commands can be specified by setting the environment variable\n\
'TEXTAGS' to a colon-separated list like, for example,\n\
@@ -5742,9 +5758,20 @@ Scheme_functions (FILE *inf)
/* Default set of control sequences to put into TEX_toktab.
The value of environment var TEXTAGS is prepended to this. */
static const char *TEX_defenv = "\
-:chapter:section:subsection:subsubsection:eqno:label:ref:cite:bibitem\
-:part:appendix:entry:index:def\
-:newcommand:renewcommand:newenvironment:renewenvironment";
+:label:ref:Ref:footref:chapter:section:subsection:subsubsection:eqno:cite\
+:bibitem:part:appendix:entry:index:def:edef:gdef:xdef:newcommand:renewcommand\
+:newenvironment:renewenvironment:DeclareRobustCommand:renewrobustcmd\
+:newrobustcmd:providecommand:providerobustcmd:NewDocumentCommand\
+:RenewDocumentCommand:ProvideDocumentCommand:DeclareDocumentCommand\
+:NewExpandableDocumentCommand:RenewExpandableDocumentCommand\
+:ProvideExpandableDocumentCommand:DeclareExpandableDocumentCommand\
+:NewDocumentEnvironment:RenewDocumentEnvironment\
+:ProvideDocumentEnvironment:DeclareDocumentEnvironment:csdef\
+:csedef:csgdef:csxdef:csletcs:cslet:letcs:let:cs_new_protected_nopar\
+:cs_new_protected:cs_new_nopar:cs_new_eq:cs_new:cs_set_protected_nopar\
+:cs_set_protected:cs_set_nopar:cs_set_eq:cs_set:cs_gset_protected_nopar\
+:cs_gset_protected:cs_gset_nopar:cs_gset_eq:cs_gset\
+:cs_generate_from_arg_count:cs_generate_variant";
static void TEX_decode_env (const char *, const char *);
@@ -5803,19 +5830,139 @@ TeX_commands (FILE *inf)
{
char *p;
ptrdiff_t namelen, linelen;
- bool opgrp = false;
+ bool opgrp = false, one_esc = false, is_explthree = false;
cp = skip_spaces (cp + key->len);
+
+ /* 1. The canonical expl3 syntax looks something like this:
+ \cs_new:Npn \__hook_tl_gput:Nn { \ERROR }. First, if we
+ want to tag any such commands, we include only the part
+ before the colon (cs_new) in TEX_defenv or TEXTAGS. Second,
+ etags skips the argument specifier (including the colon)
+ after the tag token, so that it doesn't become the tag name.
+ Third, we set the boolean 'is_explthree' to true so that we
+ can remove the argument specifier from the actual tag name
+ (__hook_tl_gput). This all allows us to include expl3
+ constructs in TEX_defenv or in the environment variable
+ TEXTAGS without requiring a change of separator, and it also
+ allows us to find the definition of variant commands (with
+ different argument specifiers) defined using, for example,
+ \cs_generate_variant:Nn. Please note that the expl3 spec
+ requires etags to pay more attention to whitespace in the
+ code.
+
+ 2. We also automatically remove the asterisk from starred
+ variants of all commands, without the need to include the
+ starred commands explicitly in TEX_defenv or TEXTAGS. */
+ if (*cp == ':')
+ {
+ while (!c_isspace (*cp) && *cp != TEX_opgrp)
+ cp++;
+ cp = skip_spaces (cp);
+ is_explthree = true;
+ }
+ else if (*cp == '*')
+ cp++;
+
+ /* Skip the optional arguments to commands in the tags list so
+ that these arguments don't end up as the name of the tag.
+ The name will instead come from the argument in curly braces
+ that follows the optional ones. The '\let' command gets
+ special treatment. */
+ while (*cp != '\0' && *cp != '%'
+ && !streq (key->buffer, "let"))
+ {
+ if (*cp == '[')
+ {
+ while (*cp != ']' && *cp != '\0' && *cp != '%')
+ cp++;
+ }
+ else if (*cp == '(')
+ {
+ while (*cp != ')' && *cp != '\0' && *cp != '%')
+ cp++;
+ }
+ else if (*cp == ']' || *cp == ')')
+ cp++;
+ else
+ break;
+ }
if (*cp == TEX_opgrp)
{
opgrp = true;
cp++;
+ cp = skip_spaces (cp); /* For expl3 code. */
}
+
+ /* Removing the TeX escape character from tag names simplifies
+ things for editors finding tagged commands in TeX buffers.
+ This applies to Emacs but also to the tag-finding behavior
+ of at least some of the editors that use ctags, though in
+ the latter case this will remain suboptimal. The
+ undocumented ctags option '--no-duplicates' may help. */
+ if (*cp == TEX_esc)
+ {
+ cp++;
+ one_esc = true;
+ }
+
+ /* Testing !c_isspace && !c_ispunct is simpler, but halts
+ processing at too many places. The list as it stands tries
+ both to ensure that tag names will derive from macro names
+ rather than from optional parameters to those macros, and
+ also to return findable names while still allowing for
+ unorthodox constructs. */
for (p = cp;
- (!c_isspace (*p) && *p != '#' &&
- *p != TEX_opgrp && *p != TEX_clgrp);
+ (!c_isspace (*p) && *p != '#' && *p != '=' &&
+ *p != '[' && *p != '(' && *p != TEX_opgrp &&
+ *p != TEX_clgrp && *p != '"' && *p != '\'' &&
+ *p != '%' && *p != ',' && *p != '|' && *p != '$');
p++)
- continue;
+ /* In expl3 code we remove the argument specification from
+ the tag name. More generally we allow only one (deleted)
+ escape char in a tag name, which (primarily) enables
+ tagging a TeX command's different, possibly temporary,
+ '\let' bindings. */
+ if (is_explthree && *p == ':')
+ break;
+ else if (*p == TEX_esc)
+ { /* Second part of test is for, e.g., \cslet. */
+ if (!one_esc && !opgrp)
+ {
+ one_esc = true;
+ continue;
+ }
+ else
+ break;
+ }
+ else
+ continue;
+ /* For TeX files, tags without a name are basically cruft, and
+ in some situations they can produce spurious and confusing
+ matches. Try to catch as many cases as possible where a
+ command name is of the form '\(', but avoid, as far as
+ possible, the spurious matches. */
+ if (p == cp)
+ {
+ switch (*p)
+ { /* Include =? */
+ case '(': case '[': case '"': case '\'':
+ case '\\': case '!': case '=': case ',':
+ case '|': case '$':
+ p++;
+ break;
+ case '{': case '}': case '<': case '>':
+ if (!opgrp)
+ {
+ p++;
+ if (*p == '\0' || *p == '%')
+ goto tex_next_line;
+ }
+ break;
+ default:
+ break;
+ }
+ }
namelen = p - cp;
linelen = lb.len;
if (!opgrp || *p == TEX_clgrp)
@@ -5824,9 +5971,18 @@ TeX_commands (FILE *inf)
p++;
linelen = p - lb.buffer + 1;
}
- make_tag (cp, namelen, true,
- lb.buffer, linelen, lineno, linecharno);
- goto tex_next_line; /* We only tag a line once */
+ if (namelen)
+ make_tag (cp, namelen, true,
+ lb.buffer, linelen, lineno, linecharno);
+ /* Lines with more than one \def or \let are surprisingly
+ common in TeX files, especially in the system files that
+ form the basis of the various TeX formats. This tags them
+ all. */
+ /* goto tex_next_line; /\* We only tag a line once *\/ */
+ while (*cp != '\0' && *cp != '%' && *cp != TEX_esc)
+ cp++;
+ if (*cp != TEX_esc)
+ goto tex_next_line;
}
}
tex_next_line:
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index 97c950267c6..2b4ba66e0e3 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -636,6 +636,14 @@ tex-font-lock-keywords-2
3 '(tex-font-lock-append-prop 'bold) 'append)))))
"Gaudy expressions to highlight in TeX modes.")
+(defvar-local tex-expl-region-list nil
+ "List of region boundaries where expl3 syntax is active.
+It will be nil in buffers visiting files which use expl3 syntax
+throughout, for example, expl3 classes or packages.")
+
+(defvar-local tex-expl-buffer-p nil
+ "Non-nil in buffers using expl3 syntax throughout.")
+
(defun tex-font-lock-suscript (pos)
(unless (or (memq (get-text-property pos 'face)
'(font-lock-constant-face font-lock-builtin-face
@@ -645,7 +653,17 @@ tex-font-lock-suscript
(pos pos))
(while (eq (char-before pos) ?\\)
(setq pos (1- pos) odd (not odd)))
- odd))
+ odd)
+ ;; Check if POS is in an expl3 syntax region or an expl3 buffer
+ (when (eq (char-after pos) ?_)
+ (or tex-expl-buffer-p
+ (and
+ tex-expl-region-list
+ (catch 'result
+ (dolist (range tex-expl-region-list)
+ (and (> pos (car range))
+ (< pos (cdr range))
+ (throw 'result t))))))))
(if (eq (char-after pos) ?_)
`(face subscript display (raise ,(car tex-font-script-display)))
`(face superscript display (raise ,(cadr tex-font-script-display))))))
@@ -1289,8 +1307,16 @@ tex-common-initialization
#'tex--prettify-symbols-compose-p)
(setq-local syntax-propertize-function
(syntax-propertize-rules latex-syntax-propertize-rules))
+ ;; Don't add extra processing to `syntax-propertize' in files where
+ ;; expl3 syntax is always active.
+ :after-hook (progn (tex-expl-buffer-parse)
+ (unless tex-expl-buffer-p
+ (add-hook 'syntax-propertize-extend-region-functions
+ #'tex-expl-region-set nil t)))
;; TABs in verbatim environments don't do what you think.
(setq-local indent-tabs-mode nil)
+ ;; Set up xref backend in TeX buffers.
+ (add-hook 'xref-backend-functions #'tex--xref-backend nil t)
;; Other vars that should be buffer-local.
(make-local-variable 'tex-command)
(make-local-variable 'tex-start-of-header)
@@ -1936,6 +1962,36 @@ tex-count-words
(forward-sexp 1))))))
(message "%s words" count))))
+(defun tex-expl-buffer-parse ()
+ "Identify buffers using expl3 syntax throughout."
+ (save-excursion
+ (goto-char (point-min))
+ (when (tex-search-noncomment
+ (re-search-forward
+ "\\\\\\(?:ExplFile\\|ProvidesExpl\\|__xparse_file\\)"
+ nil t))
+ (setq tex-expl-buffer-p t))))
+
+(defun tex-expl-region-set (_beg _end)
+ "Create a list of regions where expl3 syntax is active.
+This function updates the list whenever `syntax-propertize' runs, and
+stores it in the buffer-local variable `tex-expl-region-list'. The list
+will always be nil when the buffer visits an expl3 file, for example, an
+expl3 class or package, where the entire file uses expl3 syntax."
+ (unless syntax-ppss--updated-cache;; Stop forward search running twice.
+ (setq tex-expl-region-list nil)
+ ;; Leaving this test here allows users to set `tex-expl-buffer-p'
+ ;; independently of the mode's automatic detection of an expl3 file.
+ (unless tex-expl-buffer-p
+ (goto-char (point-min))
+ (let ((case-fold-search nil))
+ (while (tex-search-noncomment
+ (search-forward "\\ExplSyntaxOn" nil t))
+ (let ((new-beg (point))
+ (new-end (or (tex-search-noncomment
+ (search-forward "\\ExplSyntaxOff" nil t))
+ (point-max))))
+ (push (cons new-beg new-end) tex-expl-region-list)))))))
\f
;;; Invoking TeX in an inferior shell.
@@ -3742,6 +3798,306 @@ tex-chktex
(process-send-region tex-chktex--process (point-min) (point-max))
(process-send-eof tex-chktex--process))))
+\f
+;;; Xref backend
+
+;; Here we lightly adapt the default etags backend for xref so that
+;; the main xref user commands (including `xref-find-definitions',
+;; `xref-find-apropos', and `xref-find-references' [on M-., C-M-., and
+;; M-?, respectively]) work in TeX buffers. The only methods we
+;; actually modify are `xref-backend-identifier-at-point' and
+;; `xref-backend-references'. Many of the complications here, and in
+;; `etags' itself, are due to the necessity of parsing both the old
+;; TeX syntax and the new expl3 syntax, which will continue to appear
+;; together in documents for the foreseeable future. Synchronizing
+;; Emacs and `etags' this way aims to improve the user experience "out
+;; of the box."
+
+(defvar tex-thingatpt-exclude-chars '(?\\ ?\{ ?\})
+ "Exclude these chars by default from TeX thing-at-point.
+
+The TeX `xref-backend-identifier-at-point' method uses the characters
+listed in this variable to decide on the default search string to
+present to the user who calls an `xref' command. These characters
+become part of a regexp which always excludes them from that default
+string. For the `xref' commands to function properly in TeX buffers, at
+least the TeX escape and the two TeX grouping characters should be
+listed here. Should your TeX documents contain other characters which
+you want to exclude by default, then you can add them to the list,
+though you may wish to consult the functions
+`tex-thingatpt--beginning-of-symbol' and `tex-thingatpt--end-of-symbol'
+to see what the regexp already contains. If your documents contain
+non-standard escape and grouping characters, then you can replace the
+three listed here with your own, thereby allowing the three standard
+characters to appear by default in search strings. Please be aware,
+however, that the `etags' program only recognizes `\\' (92) and `!' (33)
+as escape characters in TeX documents, and if it detects the latter it
+also uses `<>' as the TeX grouping construct rather than `{}'. Setting
+the escape and grouping chars to anything other than `\\=\\{}' or `!<>'
+will not be useful without changes to `etags', at least for commands
+that search tags tables, such as \\[xref-find-definitions] and \
+\\[xref-find-apropos].
+
+Should you wish to change the defaults, please also be aware that,
+without further modifications to tex-mode.el, the usual text-parsing
+routines for `font-lock' and the like won't work correctly, as the
+default escape and grouping characters are currently hard coded in many
+places.")
+
+;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
+;; AUCTeX is doing the same for its modes.
+(with-eval-after-load 'semantic/symref/grep
+ (defvar semantic-symref-filepattern-alist)
+ (push '(latex-mode "*.[tT]e[xX]" "*.ltx" "*.sty" "*.cl[so]"
+ "*.bbl" "*.drv" "*.hva")
+ semantic-symref-filepattern-alist)
+ (push '(plain-tex-mode "*.[tT]e[xX]" "*.ins")
+ semantic-symref-filepattern-alist)
+ (push '(doctex-mode "*.dtx") semantic-symref-filepattern-alist))
+
+(defun tex--xref-backend () 'tex-etags)
+
+(cl-defmethod xref-backend-identifier-at-point ((_backend (eql 'tex-etags)))
+ (require 'etags)
+ (tex--thing-at-point))
+
+;; The detection of `_' and `:' is a primitive method for determining
+;; whether point is on an expl3 construct. It may fail in some
+;; instances.
+(defun tex--thing-at-point ()
+ "Demarcate `thing-at-point' for the TeX `xref' backend."
+ (let ((bounds (tex--bounds-of-symbol-at-point)))
+ (when bounds
+ (let ((texsym (buffer-substring-no-properties (car bounds) (cdr bounds))))
+ (if (and (not (string-match-p "reference" (symbol-name this-command)))
+ (seq-contains-p texsym ?_)
+ (seq-contains-p texsym ?:))
+ (seq-take texsym (seq-position texsym ?:))
+ texsym)))))
+
+(defun tex-thingatpt--beginning-of-symbol ()
+ (and
+ (re-search-backward (concat "[]["
+ (mapconcat #'regexp-quote
+ (mapcar #'char-to-string
+ tex-thingatpt-exclude-chars))
+ "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (forward-char)))
+
+(defun tex-thingatpt--end-of-symbol ()
+ (and
+ (re-search-forward (concat "[]["
+ (mapconcat #'regexp-quote
+ (mapcar #'char-to-string
+ tex-thingatpt-exclude-chars))
+ "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (backward-char)))
+
+(defun tex--bounds-of-symbol-at-point ()
+ "Simplify `bounds-of-thing-at-point' for TeX `xref' backend."
+ (let ((orig (point)))
+ (ignore-errors
+ (save-excursion
+ (tex-thingatpt--end-of-symbol)
+ (tex-thingatpt--beginning-of-symbol)
+ (let ((beg (point)))
+ (if (<= beg orig)
+ (let ((real-end
+ (progn
+ (tex-thingatpt--end-of-symbol)
+ (point))))
+ (cond ((and (<= orig real-end) (< beg real-end))
+ (cons beg real-end))
+ ((and (= orig real-end) (= beg real-end))
+ (cons beg (1+ beg)))))))))));; For 1-char TeX commands.
+
+(cl-defmethod xref-backend-identifier-completion-table ((_backend
+ (eql 'tex-etags)))
+ (xref-backend-identifier-completion-table 'etags))
+
+(cl-defmethod xref-backend-identifier-completion-ignore-case ((_backend
+ (eql
+ 'tex-etags)))
+ (xref-backend-identifier-completion-ignore-case 'etags))
+
+(cl-defmethod xref-backend-definitions ((_backend (eql 'tex-etags)) symbol)
+ (xref-backend-definitions 'etags symbol))
+
+(cl-defmethod xref-backend-apropos ((_backend (eql 'tex-etags)) pattern)
+ (xref-backend-apropos 'etags pattern))
+
+;; The `xref-backend-references' method requires more code than the
+;; others for at least two main reasons: TeX authors have typically been
+;; free in their invention of new file types with new suffixes, and they
+;; have also tended sometimes to include non-symbol characters in
+;; command names. When combined with the default Semantic Symbol
+;; Reference API, these two characteristics of TeX code mean that a
+;; command like `xref-find-references' would often fail to find any hits
+;; for a symbol at point, including the one under point in the current
+;; buffer, or it would find only some instances and skip others.
+
+(defun tex-find-references-syntax-table ()
+ (let ((st (if (boundp 'TeX-mode-syntax-table)
+ (make-syntax-table TeX-mode-syntax-table)
+ (make-syntax-table tex-mode-syntax-table))))
+ st))
+
+(defvar tex--xref-syntax-fun nil)
+
+(defun tex-xref-syntax-function (str beg end)
+ "Provide a bespoke `syntax-propertize-function' for \\[xref-find-references]."
+ (let* (grpb tempstr
+ (shrtstr (if end
+ (progn
+ (setq tempstr (seq-take str (1- (length str))))
+ (if beg
+ (setq tempstr (seq-drop tempstr 1))
+ tempstr))
+ (seq-drop str 1)))
+ (grpa (if (and beg end)
+ (prog1
+ (list 1 "_")
+ (setq grpb (list 2 "_")))
+ (list 1 "_")))
+ (re (concat beg (regexp-quote shrtstr) end))
+ (temp-rule (if grpb
+ (list re grpa grpb)
+ (list re grpa))))
+ ;; Simple benchmarks suggested that the speed-up from compiling this
+ ;; function was nearly nil, so `eval' and its non-byte-compiled
+ ;; function remain.
+ (setq tex--xref-syntax-fun (eval
+ `(syntax-propertize-rules ,temp-rule)))))
+
+(defun tex--collect-file-extensions ()
+ "Gather TeX file extensions from `auto-mode-alist'."
+ (let* ((mlist (when (rassq major-mode auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) major-mode))
+ auto-mode-alist)))
+ (lcsym (intern-soft (downcase (symbol-name major-mode))))
+ (lclist (and lcsym
+ (not (eq lcsym major-mode))
+ (rassq lcsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) lcsym))
+ auto-mode-alist)))
+ (shortsym (when (stringp mode-name)
+ (intern-soft (concat (string-trim-right mode-name "/.*")
+ "-mode"))))
+ (lcshortsym (when (stringp mode-name)
+ (intern-soft (downcase
+ (concat
+ (string-trim-right mode-name "/.*")
+ "-mode")))))
+ (shlist (and shortsym
+ (not (eq shortsym major-mode))
+ (not (eq shortsym lcsym))
+ (rassq shortsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) shortsym))
+ auto-mode-alist)))
+ (lcshlist (and lcshortsym
+ (not (eq lcshortsym major-mode))
+ (not (eq lcshortsym lcsym))
+ (rassq lcshortsym auto-mode-alist)
+ (seq-filter
+ (lambda (elt)
+ (eq (cdr elt) lcshortsym))
+ auto-mode-alist)))
+ (exts (when (or mlist lclist shlist lcshlist)
+ (seq-union (seq-map #'car lclist)
+ (seq-union (seq-map #'car mlist)
+ (seq-union (seq-map #'car lcshlist)
+ (seq-map #'car shlist))))))
+ (ed-exts (when exts
+ (seq-map
+ (lambda (elt)
+ (concat "*" (string-trim elt "\\\\" "\\\\'")))
+ exts))))
+ ed-exts))
+
+(defvar tex--buffers-list nil)
+(defvar-local tex--old-syntax-function nil)
+
+(cl-defmethod xref-backend-references ((_backend (eql 'tex-etags)) identifier)
+ "Find references of IDENTIFIER in TeX buffers and files."
+ (require 'semantic/symref/grep)
+ (defvar semantic-symref-filepattern-alist)
+ (let (bufs texbufs
+ (mode major-mode))
+ (dolist (buf (buffer-list))
+ (if (eq (buffer-local-value 'major-mode buf) mode)
+ (push buf bufs)
+ (when (string-match-p ".*\\.[tT]e[xX]" (buffer-name buf))
+ (push buf texbufs))))
+ (unless (seq-set-equal-p tex--buffers-list bufs)
+ (let* ((amalist (tex--collect-file-extensions))
+ (extlist (alist-get mode semantic-symref-filepattern-alist))
+ (extlist-new (seq-uniq
+ (seq-union amalist extlist #'string-match-p))))
+ (setq tex--buffers-list bufs)
+ (dolist (buf bufs)
+ (when-let ((fbuf (buffer-file-name buf))
+ (ext (file-name-extension fbuf))
+ (finext (concat "*." ext))
+ ((not (seq-find (lambda (elt) (string-match-p elt finext))
+ extlist-new)))
+ ((push finext extlist-new)))))
+ (unless (seq-set-equal-p extlist-new extlist)
+ (setf (alist-get mode semantic-symref-filepattern-alist)
+ extlist-new))))
+ (let* (setsyntax
+ (punct (with-syntax-table (tex-find-references-syntax-table)
+ (seq-positions identifier (list ?w ?_)
+ (lambda (elt sycode)
+ (not (memq (char-syntax elt) sycode))))))
+ (end (and punct
+ (memq (1- (length identifier)) punct)
+ (> (length identifier) 1)
+ (concat "\\("
+ (regexp-quote
+ (string (elt identifier
+ (1- (length identifier)))))
+ "\\)")))
+ (beg (and punct
+ (memq 0 punct)
+ (concat "\\("
+ (regexp-quote (string (elt identifier 0)))
+ "\\)")))
+ (text-mode-hook
+ (if (or end beg)
+ (progn
+ (tex-xref-syntax-function identifier beg end)
+ (setq setsyntax (lambda ()
+ (setq-local syntax-propertize-function
+ tex--xref-syntax-fun)
+ (setq-local TeX-style-hook-applied-p t)))
+ (cons setsyntax text-mode-hook))
+ text-mode-hook)))
+ (unless (memq 'doctex-mode (derived-mode-all-parents mode))
+ (setq bufs (append texbufs bufs)))
+ (when (or end beg)
+ (dolist (buf bufs)
+ (with-current-buffer buf
+ (unless (local-variable-p 'tex--old-syntax-function)
+ (setq tex--old-syntax-function syntax-propertize-function))
+ (setq-local syntax-propertize-function
+ tex--xref-syntax-fun)
+ (syntax-ppss-flush-cache (point-min)))))
+ (unwind-protect
+ (xref-backend-references nil identifier)
+ (when (or end beg)
+ (dolist (buf bufs)
+ (with-current-buffer buf
+ (when buffer-file-truename
+ (setq-local syntax-propertize-function
+ tex--old-syntax-function)
+ (syntax-ppss-flush-cache (point-min))))))))))
+
(make-obsolete-variable 'tex-mode-load-hook
"use `with-eval-after-load' instead." "28.1")
(run-hooks 'tex-mode-load-hook)
diff --git a/test/manual/etags/CTAGS.good b/test/manual/etags/CTAGS.good
index 84a56b23cfa..66c33616f98 100644
--- a/test/manual/etags/CTAGS.good
+++ b/test/manual/etags/CTAGS.good
@@ -1,3 +1,5 @@
+" tex-src/texinfo.tex /^\\let"=\\activedoublequote$/
+" tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
#a-defer-word forth-src/test-forth.fth /^defer #a-defer-word$/
#some-storage forth-src/test-forth.fth /^2000 buffer: #some-storage$/
$0x80 c-src/sysdep.h 32
@@ -32,14 +34,28 @@ $user_comment_lc php-src/lce_functions.php 115
${CHECKOBJS} make-src/Makefile /^${CHECKOBJS}: CFLAGS=-g3 -DNULLFREECHECK=0$/
%cdiff make-src/Makefile /^%cdiff: CTAGS% CTAGS ${infiles}$/
%ediff make-src/Makefile /^%ediff: ETAGS% ETAGS ${infiles}$/
+& tex-src/texinfo.tex /^\\gdef\\functionparens{\\boldbrax\\let&=\\amprm\\parenco/
+& tex-src/texinfo.tex /^\\gdef\\normalparens{\\boldbrax\\let&=\\ampnr}$/
+' tex-src/texinfo.tex /^\\def\\'{{'}}$/
+( tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
+( tex-src/texinfo.tex /^\\gdef\\oprm#1 {{\\rm\\char`\\(}#1 \\bf \\let(=\\opnested /
+( tex-src/texinfo.tex /^\\ifnum \\parencount=1 {\\rm \\char `\\)}\\sl \\let(=\\opr/
+( tex-src/texinfo.tex /^\\gdef\\amprm#1 {{\\rm\\}\\let(=\\oprm \\let)=\\clrm\\ }/
($_,$flag,$opt,$f,$r,@temp perl-src/yagrip.pl 8
($prog,$_,@list perl-src/yagrip.pl 39
($string,$flag,@string,@temp,@last perl-src/yagrip.pl 40
(a-forth-constant forth-src/test-forth.fth /^constant (a-forth-constant$/
(another-forth-word) forth-src/test-forth.fth /^: (another-forth-word) ( -- )$/
(foo) forth-src/test-forth.fth /^: (foo) 1 ;$/
+) tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
+) tex-src/texinfo.tex /^\\gdef\\amprm#1 {{\\rm\\}\\let(=\\oprm \\let)=\\clrm\\ }/
+* tex-src/texinfo.tex /^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/
+* tex-src/texinfo.tex /^\\let\\*=\\ptexstar$/
+ ruby-src/test.rb /^ def +(y)$/
+ tex-src/texinfo.tex /^\\def+{{\\tt \\char 43}}$/
++ tex-src/texinfo.tex /^\\let+=\\normalplus}$/
+. tex-src/texinfo.tex /^\\def\\.{.\\spacefactor=3000 }$/
+. tex-src/texinfo.tex /^\\let\\.=\\ptexdot$/
.PRECIOUS make-src/Makefile /^.PRECIOUS: ETAGS CTAGS ETAGS16 CTAGS16 ETAGS17 CTA/
/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/
/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/
@@ -174,38 +190,26 @@ ${CHECKOBJS} make-src/Makefile /^${CHECKOBJS}: CFLAGS=-g3 -DNULLFREECHECK=0$/
2const forth-src/test-forth.fth /^3 4 2constant 2const$/
2val forth-src/test-forth.fth /^2const 2value 2val$/
2var forth-src/test-forth.fth /^2variable 2var$/
+: tex-src/texinfo.tex /^\\def\\:{\\spacefactor=1000 }$/
:a-forth-dictionary-entry forth-src/test-forth.fth /^create :a-forth-dictionary-entry$/
< tex-src/texinfo.tex /^\\def<{{\\tt \\less}}$/
+< tex-src/texinfo.tex /^\\let<=\\normalless$/
<< ruby-src/test.rb /^ def <<(y)$/
<= ruby-src/test.rb /^ def <=(y)$/
<=> ruby-src/test.rb /^ def <=>(y)$/
-= tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\section = \\unnumberedsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsection = \\unnumberedsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\unnumberedsubsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/
= tex-src/texinfo.tex /^\\global\\def={{\\tt \\char 61}}}$/
=/f ada-src/etags-test-for.ada /^ function "=" (L, R : System.Address) return Boo/
== ruby-src/test.rb /^ def ==(y)$/
=== ruby-src/test.rb /^ def ===(y)$/
-=\indexdummyfont tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/
-=\relax tex-src/texinfo.tex /^\\let\\chapter=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\section=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\subsection=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\subsubsection=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\appendix=\\relax$/
-=\smartitalic tex-src/texinfo.tex /^\\let\\cite=\\smartitalic$/
=starts-with-equals! scm-src/test.scm /^(define =starts-with-equals! #t)$/
> tex-src/texinfo.tex /^\\def>{{\\tt \\gtr}}$/
+> tex-src/texinfo.tex /^\\let>=\\normalgreater$/
>field1 forth-src/test-forth.fth /^ 9 field >field1$/
>field2 forth-src/test-forth.fth /^ 5 field >field2$/
+@ tex-src/texinfo.tex /^\\def\\@{{\\tt \\char '100}}$/
+@ tex-src/texinfo.tex /^\\def\\@{@}%$/
+@sf tex-src/texinfo.tex /^\\let\\@sf\\empty$/
+@sf tex-src/texinfo.tex /^\\ifhmode\\edef\\@sf{\\spacefactor\\the\\spacefactor}\\\/\\/
A c.c 162
A cp-src/c.C 39
A cp-src/c.C 56
@@ -331,6 +335,11 @@ CATCHER c-src/emacs/src/lisp.h 3021
CDR c-src/emacs/src/lisp.h /^CDR (Lisp_Object c)$/
CDR_SAFE c-src/emacs/src/lisp.h /^CDR_SAFE (Lisp_Object c)$/
CFLAGS make-src/Makefile /^CFLAGS=${WARNINGS} -ansi -g3 # -pg -O$/
+CHAPFopen tex-src/texinfo.tex /^\\def\\CHAPFopen{$/
+CHAPFplain tex-src/texinfo.tex /^\\def\\CHAPFplain{$/
+CHAPPAGodd tex-src/texinfo.tex /^\\def\\CHAPPAGodd{$/
+CHAPPAGoff tex-src/texinfo.tex /^\\def\\CHAPPAGoff{$/
+CHAPPAGon tex-src/texinfo.tex /^\\def\\CHAPPAGon{$/
CHAR c-src/etags.c /^#define CHAR(x) ((unsigned int)(x) & (CHARS - 1))/
CHAR y-src/cccp.c 7
CHARACTERBITS c-src/emacs/src/lisp.h 2457
@@ -540,6 +549,7 @@ EMACS_UINT c-src/emacs/src/lisp.h 104
ENTRY c-src/sysdep.h /^#define ENTRY(name) \\$/
ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) unsigned int$/
ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) enum TYPE$/
+ENVcheck tex-src/texinfo.tex /^\\def\\ENVcheck{%$/
EQ c-src/emacs/src/lisp.h /^# define EQ(x, y) lisp_h_EQ (x, y)$/
EQUAL y-src/cccp.c 12
ERLSRC make-src/Makefile /^ERLSRC=gs_dialog.erl lines.erl lists.erl$/
@@ -553,13 +563,38 @@ EXFUN c-src/emacs/src/lisp.h /^#define EXFUN(fnname, maxargs) \\$/
EXTAGS make-src/Makefile /^EXTAGS: extags ${infiles} Makefile$/
EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 3497
EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 4372
+Ealphaenumerate tex-src/texinfo.tex /^\\def\\Ealphaenumerate{\\Eenumerate}$/
+Ecapsenumerate tex-src/texinfo.tex /^\\def\\Ecapsenumerate{\\Eenumerate}$/
+Ecartouche tex-src/texinfo.tex /^\\def\\Ecartouche{%$/
+Edescription tex-src/texinfo.tex /^\\def\\Edescription{\\Etable}% Necessary kludge.$/
+Edisplay tex-src/texinfo.tex /^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/
+Eexample tex-src/texinfo.tex /^\\def\\Eexample{\\Elisp}$/
+Eflushleft tex-src/texinfo.tex /^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/
+Eflushright tex-src/texinfo.tex /^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/
+Eformat tex-src/texinfo.tex /^\\def\\Eformat{\\endgroup\\afterenvbreak}$/
+Eftable tex-src/texinfo.tex /^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/
+Egroup tex-src/texinfo.tex /^ \\def\\Egroup{\\egroup\\endgroup}%$/
+Eifclear tex-src/texinfo.tex /^\\def\\Eifclear{}$/
+Eifset tex-src/texinfo.tex /^\\def\\Eifset{}$/
+Eiftex tex-src/texinfo.tex /^\\def\\Eiftex{}$/
+Elisp tex-src/texinfo.tex /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/
EmptyNmStr pas-src/common.pas /^function EmptyNmStr(* : NameString*);$/
Environment tex-src/gzip.texi /^@node Environment, Tapes, Advanced usage, Top$/
+Equotation tex-src/texinfo.tex /^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/
Erlang_functions c-src/etags.c /^Erlang_functions (FILE *inf)$/
Erlang_help c-src/etags.c 567
Erlang_suffixes c-src/etags.c 565
ErrStrToNmStr pas-src/common.pas /^function ErrStrToNmStr;(*($/
Error_Information/t ada-src/2ataspri.ads /^ type Error_Information is new Interfaces.C.POSI/
+Esmallexample tex-src/texinfo.tex /^\\def\\Esmallexample{\\Elisp}$/
+Esmallexample tex-src/texinfo.tex /^\\global\\def\\Esmallexample{\\Esmalllisp}$/
+Esmalllisp tex-src/texinfo.tex /^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/
+Etable tex-src/texinfo.tex /^\\let\\Etable=\\relax}}$/
+Etable tex-src/texinfo.tex /^\\let\\Etable=\\relax}}$/
+Etable tex-src/texinfo.tex /^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/
+Etex tex-src/texinfo.tex /^\\let\\Etex=\\endgroup}$/
+Etitlepage tex-src/texinfo.tex /^\\def\\Etitlepage{%$/
+Evtable tex-src/texinfo.tex /^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/
Exit_LL_Task/p ada-src/2ataspri.adb /^ procedure Exit_LL_Task is$/
Exit_LL_Task/p ada-src/2ataspri.ads /^ procedure Exit_LL_Task;$/
ExtractCommentInfo pas-src/common.pas /^procedure ExtractCommentInfo; (*($/
@@ -707,6 +742,20 @@ HASH_TABLE_P c-src/emacs/src/lisp.h /^HASH_TABLE_P (Lisp_Object a)$/
HASH_TABLE_SIZE c-src/emacs/src/lisp.h /^HASH_TABLE_SIZE (struct Lisp_Hash_Table *h)$/
HASH_VALUE c-src/emacs/src/lisp.h /^HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t i/
HAVE_NTGUI c-src/etags.c 116
+HEADINGSafter tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
+HEADINGSdouble tex-src/texinfo.tex /^\\def\\HEADINGSdouble{$/
+HEADINGSdoubleafter tex-src/texinfo.tex /^\\let\\HEADINGSdoubleafter=\\HEADINGSafter$/
+HEADINGSdoublex tex-src/texinfo.tex /^\\def\\HEADINGSdoublex{%$/
+HEADINGShook tex-src/texinfo.tex /^\\let\\HEADINGShook=\\relax$/
+HEADINGShook tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
+HEADINGShook tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
+HEADINGSoff tex-src/texinfo.tex /^\\def\\HEADINGSoff{$/
+HEADINGSon tex-src/texinfo.tex /^\\def\\HEADINGSon{\\HEADINGSdouble}$/
+HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/
+HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/
+HEADINGSsingle tex-src/texinfo.tex /^\\def\\HEADINGSsingle{$/
+HEADINGSsingleafter tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
+HEADINGSsinglex tex-src/texinfo.tex /^\\def\\HEADINGSsinglex{%$/
HEAP c-src/emacs/src/gmalloc.c 131
HTMLSRC make-src/Makefile /^HTMLSRC=softwarelibero.html index.shtml algrthms.h/
HTML_help c-src/etags.c 584
@@ -768,6 +817,7 @@ JAVASRC make-src/Makefile /^JAVASRC=AWTEMul.java KeyEve.java SMan.java SysCol./
KBD_BUFFER_SIZE c-src/emacs/src/keyboard.c 82
KBYTES objc-src/PackInsp.m 58
KEY_TO_CHAR c-src/emacs/src/keyboard.c /^#define KEY_TO_CHAR(k) (XINT (k) & ((1 << CHARACTE/
+L tex-src/texinfo.tex /^\\let\\L=\\ptexL$/
LATEST make-src/Makefile /^LATEST=17$/
LCE_COMMENT php-src/lce_functions.php 13
LCE_COMMENT_TOOL php-src/lce_functions.php 17
@@ -1429,6 +1479,9 @@ Task_Type/b ada-src/etags-test-for.ada /^ task body Task_Type is$/
Task_Type/b ada-src/waroquiers.ada /^ task body Task_Type is$/
Task_Type/k ada-src/etags-test-for.ada /^ task type Task_Type is$/
Task_Type/k ada-src/waroquiers.ada /^ task type Task_Type is$/
+TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}%$/
+TeX tex-src/texinfo.tex /^\\let\\TeX=\\indexdummytex$/
+TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}$/
TeX_commands c-src/etags.c /^TeX_commands (FILE *inf)$/
TeX_help c-src/etags.c 674
TeX_suffixes c-src/etags.c 672
@@ -1712,14 +1765,15 @@ YY_DECL_VARIABLES /usr/share/bison/bison.simple 391
Yacc_entries c-src/etags.c /^Yacc_entries (FILE *inf)$/
Yacc_help c-src/etags.c 693
Yacc_suffixes c-src/etags.c 691
+Yappendixletterandtype tex-src/texinfo.tex /^\\def\\Yappendixletterandtype{%$/
+Ynothing tex-src/texinfo.tex /^\\def\\Ynothing{}$/
+Ypagenumber tex-src/texinfo.tex /^\\def\\Ypagenumber{\\folio}$/
+Ysectionnumberandtype tex-src/texinfo.tex /^\\def\\Ysectionnumberandtype{%$/
+Ytitle tex-src/texinfo.tex /^\\def\\Ytitle{\\thischapter}$/
Z c-src/h.h 100
+[ tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
[] ruby-src/test.rb /^ def [](y)$/
[]= ruby-src/test.rb /^ def []=(y, val)$/
-\ tex-src/texinfo.tex /^\\def\\ {{\\fontdimen2\\font=\\tclosesave{} }}%$/
-\ tex-src/texinfo.tex /^\\gdef\\sepspaces{\\def {\\ }}}$/
-\' tex-src/texinfo.tex /^\\def\\'{{'}}$/
-\* tex-src/texinfo.tex /^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/
-\. tex-src/texinfo.tex /^\\def\\.{.\\spacefactor=3000 }$/
\1 c-src/abbrev.c /^ DEFVAR_LISP ("abbrev-table-name-list", &Vabbrev_/
\1 c-src/abbrev.c /^ DEFVAR_LISP ("global-abbrev-table", &Vglobal_abb/
\1 c-src/abbrev.c /^ DEFVAR_LISP ("fundamental-mode-abbrev-table", &V/
@@ -1822,548 +1876,13 @@ Z c-src/h.h 100
\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("selection-inhibit-update-commands"/
\1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("debug-on-event",
Vd/
-\: tex-src/texinfo.tex /^\\def\\:{\\spacefactor=1000 }$/
-\@ tex-src/texinfo.tex /^\\def\\@{{\\tt \\char '100}}$/
-\@ tex-src/texinfo.tex /^\\def\\@{@}%$/
-\CHAPFopen tex-src/texinfo.tex /^\\def\\CHAPFopen{$/
-\CHAPFplain tex-src/texinfo.tex /^\\def\\CHAPFplain{$/
-\CHAPPAGodd tex-src/texinfo.tex /^\\def\\CHAPPAGodd{$/
-\CHAPPAGoff tex-src/texinfo.tex /^\\def\\CHAPPAGoff{$/
-\CHAPPAGon tex-src/texinfo.tex /^\\def\\CHAPPAGon{$/
-\ENVcheck tex-src/texinfo.tex /^\\def\\ENVcheck{%$/
-\Ealphaenumerate tex-src/texinfo.tex /^\\def\\Ealphaenumerate{\\Eenumerate}$/
-\Ecapsenumerate tex-src/texinfo.tex /^\\def\\Ecapsenumerate{\\Eenumerate}$/
-\Ecartouche tex-src/texinfo.tex /^\\def\\Ecartouche{%$/
-\Edescription tex-src/texinfo.tex /^\\def\\Edescription{\\Etable}% Necessary kludge.$/
-\Edisplay tex-src/texinfo.tex /^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/
-\Eexample tex-src/texinfo.tex /^\\def\\Eexample{\\Elisp}$/
-\Eflushleft tex-src/texinfo.tex /^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/
-\Eflushright tex-src/texinfo.tex /^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/
-\Eformat tex-src/texinfo.tex /^\\def\\Eformat{\\endgroup\\afterenvbreak}$/
-\Eftable tex-src/texinfo.tex /^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/
-\Egroup tex-src/texinfo.tex /^ \\def\\Egroup{\\egroup\\endgroup}%$/
-\Eifclear tex-src/texinfo.tex /^\\def\\Eifclear{}$/
-\Eifset tex-src/texinfo.tex /^\\def\\Eifset{}$/
-\Eiftex tex-src/texinfo.tex /^\\def\\Eiftex{}$/
-\Elisp tex-src/texinfo.tex /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/
-\Equotation tex-src/texinfo.tex /^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/
-\Esmallexample tex-src/texinfo.tex /^\\def\\Esmallexample{\\Elisp}$/
-\Esmallexample tex-src/texinfo.tex /^\\global\\def\\Esmallexample{\\Esmalllisp}$/
-\Esmalllisp tex-src/texinfo.tex /^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/
-\Etable tex-src/texinfo.tex /^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/
-\Etitlepage tex-src/texinfo.tex /^\\def\\Etitlepage{%$/
-\Evtable tex-src/texinfo.tex /^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/
-\HEADINGSafter tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
-\HEADINGSdouble tex-src/texinfo.tex /^\\def\\HEADINGSdouble{$/
-\HEADINGSdoublex tex-src/texinfo.tex /^\\def\\HEADINGSdoublex{%$/
-\HEADINGSoff tex-src/texinfo.tex /^\\def\\HEADINGSoff{$/
-\HEADINGSon tex-src/texinfo.tex /^\\def\\HEADINGSon{\\HEADINGSdouble}$/
-\HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/
-\HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/
-\HEADINGSsingle tex-src/texinfo.tex /^\\def\\HEADINGSsingle{$/
-\HEADINGSsingleafter tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
-\HEADINGSsinglex tex-src/texinfo.tex /^\\def\\HEADINGSsinglex{%$/
-\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}%$/
-\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}$/
-\Yappendixletterandtype tex-src/texinfo.tex /^\\def\\Yappendixletterandtype{%$/
-\Ynothing tex-src/texinfo.tex /^\\def\\Ynothing{}$/
-\Ypagenumber tex-src/texinfo.tex /^\\def\\Ypagenumber{\\folio}$/
-\Ysectionnumberandtype tex-src/texinfo.tex /^\\def\\Ysectionnumberandtype{%$/
-\Ytitle tex-src/texinfo.tex /^\\def\\Ytitle{\\thischapter}$/
-\_ tex-src/texinfo.tex /^\\def\\_{{\\realbackslash _}}%$/
-\_ tex-src/texinfo.tex /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule width.3em /
-\` tex-src/texinfo.tex /^\\def\\`{{`}}$/
-\aboveenvbreak tex-src/texinfo.tex /^\\def\\aboveenvbreak{{\\advance\\aboveenvskipamount by/
-\activedoublequote tex-src/texinfo.tex /^\\def\\activedoublequote{{\\tt \\char '042}}$/
-\activeparens tex-src/texinfo.tex /^\\def\\activeparens{%$/
-\afourpaper tex-src/texinfo.tex /^\\def\\afourpaper{$/
-\afterenvbreak tex-src/texinfo.tex /^\\def\\afterenvbreak{\\endgraf \\ifdim\\lastskip<\\above/
-\alphaenumerate tex-src/texinfo.tex /^\\def\\alphaenumerate{\\enumerate{a}}$/
-\appendix tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
-\appendixletter tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/
-\appendixnoderef tex-src/texinfo.tex /^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/
-\appendixsec tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
-\appendixsection tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
-\appendixsectionzzz tex-src/texinfo.tex /^\\def\\appendixsectionzzz #1{\\seccheck{appendixsecti/
-\appendixsetref tex-src/texinfo.tex /^\\def\\appendixsetref#1{%$/
-\appendixsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
-\appendixsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubseczzz #1{\\seccheck{appendixsubsec/
-\appendixsubsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
-\appendixsubsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubsubseczzz #1{\\seccheck{appendixsub/
-\appendixzzz tex-src/texinfo.tex /^\\def\\appendixzzz #1{\\seccheck{appendix}%$/
-\asis tex-src/texinfo.tex /^\\def\\asis#1{#1}$/
-\author tex-src/texinfo.tex /^ \\def\\author{\\parsearg\\authorzzz}%$/
-\authorfont tex-src/texinfo.tex /^ \\def\\authorfont{\\authorrm \\normalbaselineskip =/
-\authorzzz tex-src/texinfo.tex /^ \\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt /
-\b tex-src/texinfo.tex /^\\def\\b#1{{\\bf #1}}$/
-\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}%$/
-\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}$/
-\balancecolumns tex-src/texinfo.tex /^\\def\\balancecolumns{%$/
-\begin tex-src/texinfo.tex /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/
-\begindoublecolumns tex-src/texinfo.tex /^\\def\\begindoublecolumns{\\begingroup$/
-\beginxxx tex-src/texinfo.tex /^\\def\\beginxxx #1{%$/
-\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }%$/
-\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }$/
-\bullet tex-src/texinfo.tex /^\\def\\bullet{$\\ptexbullet$}$/
-\bye tex-src/texinfo.tex /^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/
-\capsenumerate tex-src/texinfo.tex /^\\def\\capsenumerate{\\enumerate{A}}$/
-\cartbot tex-src/texinfo.tex /^\\def\\cartbot{\\hbox to \\cartouter{\\hskip\\lskip$/
-\cartouche tex-src/texinfo.tex /^\\long\\def\\cartouche{%$/
-\carttop tex-src/texinfo.tex /^\\def\\carttop{\\hbox to \\cartouter{\\hskip\\lskip$/
-\cbl tex-src/texinfo.tex /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/
-\cbr tex-src/texinfo.tex /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/
-\center tex-src/texinfo.tex /^\\def\\center{\\parsearg\\centerzzz}$/
-\centerzzz tex-src/texinfo.tex /^\\def\\centerzzz #1{{\\advance\\hsize by -\\leftskip$/
-\chapbreak tex-src/texinfo.tex /^\\def\\chapbreak{\\dobreak \\chapheadingskip {-4000}}$/
-\chapentry tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
-\chapentryfonts tex-src/texinfo.tex /^\\def\\chapentryfonts{\\secfonts \\rm}$/
-\chapfonts tex-src/texinfo.tex /^\\def\\chapfonts{%$/
-\chapheading tex-src/texinfo.tex /^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/
-\chapheadingzzz tex-src/texinfo.tex /^\\def\\chapheadingzzz #1{\\chapbreak %$/
-\chapoddpage tex-src/texinfo.tex /^\\def\\chapoddpage{\\chappager \\ifodd\\pageno \\else \\h/
-\chappager tex-src/texinfo.tex /^\\def\\chappager{\\par\\vfill\\supereject}$/
-\chapter tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
-\chapternofonts tex-src/texinfo.tex /^\\def\\chapternofonts{%$/
-\chapterzzz tex-src/texinfo.tex /^\\def\\chapterzzz #1{\\seccheck{chapter}%$/
-\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}%$/
-\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}$/
-\chfopen tex-src/texinfo.tex /^\\def\\chfopen #1#2{\\chapoddpage {\\chapfonts$/
-\chfplain tex-src/texinfo.tex /^\\def\\chfplain #1#2{%$/
-\cindex tex-src/texinfo.tex /^\\def\\cindex {\\cpindex}$/
-\cindexsub tex-src/texinfo.tex /^\\def\\cindexsub {\\begingroup\\obeylines\\cindexsub}$/
-\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}%$/
-\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}$/
-\clear tex-src/texinfo.tex /^\\def\\clear{\\parsearg\\clearxxx}$/
-\clearxxx tex-src/texinfo.tex /^\\def\\clearxxx #1{$/
-\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}%$/
-\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}$/
-\comment tex-src/texinfo.tex /^\\def\\comment{\\catcode 64=\\other \\catcode 123=\\othe/
-\commentxxx tex-src/texinfo.tex /^\\def\\commentxxx #1{\\catcode 64=0 \\catcode 123=1 \\c/
-\contents tex-src/texinfo.tex /^\\outer\\def\\contents{%$/
-\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright }%$/
-\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright}$/
-\cropmarks tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
-\croppageout tex-src/texinfo.tex /^\\def\\croppageout#1{\\hoffset=0pt % make sure this d/
-\ctl tex-src/texinfo.tex /^\\def\\ctl{{\\circle\\char'013\\hskip -6pt}}% 6pt from /
-\ctr tex-src/texinfo.tex /^\\def\\ctr{{\\hskip 6pt\\circle\\char'010}}$/
-\ctrl tex-src/texinfo.tex /^\\def\\ctrl #1{{\\tt \\rawbackslash \\hat}#1}$/
-\defcodeindex tex-src/texinfo.tex /^\\def\\defcodeindex{\\parsearg\\newcodeindex}$/
-\defcv tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
-\defcvarheader tex-src/texinfo.tex /^\\def\\defcvarheader #1#2#3{%$/
-\defcvx tex-src/texinfo.tex /^\\def\\defcvx #1 {\\errmessage{@defcvx in invalid con/
-\deffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
-\deffnheader tex-src/texinfo.tex /^\\def\\deffnheader #1#2#3{\\doind {fn}{\\code{#2}}%$/
-\deffnx tex-src/texinfo.tex /^\\def\\deffnx #1 {\\errmessage{@deffnx in invalid con/
-\defindex tex-src/texinfo.tex /^\\def\\defindex{\\parsearg\\newindex}$/
-\defivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
-\defivarheader tex-src/texinfo.tex /^\\def\\defivarheader #1#2#3{%$/
-\defivarx tex-src/texinfo.tex /^\\def\\defivarx #1 {\\errmessage{@defivarx in invalid/
-\defmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
-\defmacheader tex-src/texinfo.tex /^\\def\\defmacheader #1#2{\\doind {fn}{\\code{#1}}% Mak/
-\defmacx tex-src/texinfo.tex /^\\def\\defmacx #1 {\\errmessage{@defmacx in invalid c/
-\defmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
-\defmethodheader tex-src/texinfo.tex /^\\def\\defmethodheader #1#2#3{%$/
-\defmethodx tex-src/texinfo.tex /^\\def\\defmethodx #1 {\\errmessage{@defmethodx in inv/
-\defmethparsebody tex-src/texinfo.tex /^\\def\\defmethparsebody #1#2#3#4 {\\begingroup\\inENV /
-\defname tex-src/texinfo.tex /^\\def\\defname #1#2{%$/
-\defop tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
-\defopheader tex-src/texinfo.tex /^\\def\\defopheader #1#2#3{%$/
-\defopparsebody tex-src/texinfo.tex /^\\def\\defopparsebody #1#2#3#4#5 {\\begingroup\\inENV /
-\defopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
-\defoptheader tex-src/texinfo.tex /^\\def\\defoptheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
-\defoptx tex-src/texinfo.tex /^\\def\\defoptx #1 {\\errmessage{@defoptx in invalid c/
-\defopvarparsebody tex-src/texinfo.tex /^\\def\\defopvarparsebody #1#2#3#4#5 {\\begingroup\\inE/
-\defopx tex-src/texinfo.tex /^\\def\\defopx #1 {\\errmessage{@defopx in invalid con/
-\defparsebody tex-src/texinfo.tex /^\\def\\defparsebody #1#2#3{\\begingroup\\inENV% Enviro/
-\defspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
-\defspecheader tex-src/texinfo.tex /^\\def\\defspecheader #1#2{\\doind {fn}{\\code{#1}}% Ma/
-\defspecx tex-src/texinfo.tex /^\\def\\defspecx #1 {\\errmessage{@defspecx in invalid/
-\deftp tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
-\deftpargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/
-\deftpheader tex-src/texinfo.tex /^\\def\\deftpheader #1#2#3{\\doind {tp}{\\code{#2}}%$/
-\deftpx tex-src/texinfo.tex /^\\def\\deftpx #1 {\\errmessage{@deftpx in invalid con/
-\deftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
-\deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefnheader #1#2#3{\\deftypefnheaderx{#1}{/
-\deftypefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheaderx #1#2#3 #4\\relax{%$/
-\deftypefnx tex-src/texinfo.tex /^\\def\\deftypefnx #1 {\\errmessage{@deftypefnx in inv/
-\deftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
-\deftypefunargs tex-src/texinfo.tex /^\\def\\deftypefunargs #1{%$/
-\deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefunheader #1#2{\\deftypefunheaderx{#1}#/
-\deftypefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheaderx #1#2 #3\\relax{%$/
-\deftypeunx tex-src/texinfo.tex /^\\def\\deftypeunx #1 {\\errmessage{@deftypeunx in inv/
-\deftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
-\deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevarheader #1#2{%$/
-\deftypevarx tex-src/texinfo.tex /^\\def\\deftypevarx #1 {\\errmessage{@deftypevarx in i/
-\deftypevr tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
-\deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevrheader #1#2#3{\\doind {vr}{\\code{#3}}/
-\deftypevrx tex-src/texinfo.tex /^\\def\\deftypevrx #1 {\\errmessage{@deftypevrx in inv/
-\defun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
-\defunargs tex-src/texinfo.tex /^\\def\\defunargs #1{\\functionparens \\sl$/
-\defunheader tex-src/texinfo.tex /^\\def\\defunheader #1#2{\\doind {fn}{\\code{#1}}% Make/
-\defunx tex-src/texinfo.tex /^\\def\\defunx #1 {\\errmessage{@defunx in invalid con/
-\defvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
-\defvarargs tex-src/texinfo.tex /^\\def\\defvarargs #1{\\normalparens #1%$/
-\defvarheader tex-src/texinfo.tex /^\\def\\defvarheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
-\defvarparsebody tex-src/texinfo.tex /^\\def\\defvarparsebody #1#2#3{\\begingroup\\inENV% Env/
-\defvarx tex-src/texinfo.tex /^\\def\\defvarx #1 {\\errmessage{@defvarx in invalid c/
-\defvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
-\defvrheader tex-src/texinfo.tex /^\\def\\defvrheader #1#2#3{\\doind {vr}{\\code{#2}}%$/
-\defvrparsebody tex-src/texinfo.tex /^\\def\\defvrparsebody #1#2#3#4 {\\begingroup\\inENV %$/
-\defvrx tex-src/texinfo.tex /^\\def\\defvrx #1 {\\errmessage{@defvrx in invalid con/
-\description tex-src/texinfo.tex /^\\def\\description{\\tablez{\\dontindex}{1}{}{}{}{}}$/
-\df tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
-\dfn tex-src/texinfo.tex /^\\def\\dfn##1{\\realbackslash dfn {##1}}$/
-\direntry tex-src/texinfo.tex /^\\def\\direntry{\\begingroup\\direntryxxx}$/
-\direntryxxx tex-src/texinfo.tex /^\\long\\def\\direntryxxx #1\\end direntry{\\endgroup\\ig/
-\display tex-src/texinfo.tex /^\\def\\display{\\begingroup\\inENV %This group ends at/
-\dmn tex-src/texinfo.tex /^\\def\\dmn#1{\\thinspace #1}$/
-\dobreak tex-src/texinfo.tex /^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/
-\dochapentry tex-src/texinfo.tex /^\\def\\dochapentry#1#2{%$/
-\docodeindex tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
-\doind tex-src/texinfo.tex /^\\def\\doind #1#2{%$/
-\doindex tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
-\donoderef tex-src/texinfo.tex /^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/
-\dontindex tex-src/texinfo.tex /^\\def\\dontindex #1{}$/
-\dopageno tex-src/texinfo.tex /^\\def\\dopageno#1{{\\rm #1}}$/
-\doprintindex tex-src/texinfo.tex /^\\def\\doprintindex#1{%$/
-\dosecentry tex-src/texinfo.tex /^\\def\\dosecentry#1#2{%$/
-\dosetq tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/
-\doshortpageno tex-src/texinfo.tex /^\\def\\doshortpageno#1{{\\rm #1}}$/
-\dosubind tex-src/texinfo.tex /^\\def\\dosubind #1#2#3{%$/
-\dosubsecentry tex-src/texinfo.tex /^\\def\\dosubsecentry#1#2{%$/
-\dosubsubsecentry tex-src/texinfo.tex /^\\def\\dosubsubsecentry#1#2{%$/
-\dots tex-src/texinfo.tex /^\\def\\dots{$\\ldots$}$/
-\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots }%$/
-\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots}$/
-\doublecolumnout tex-src/texinfo.tex /^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/
-\emph tex-src/texinfo.tex /^\\def\\emph##1{\\realbackslash emph {##1}}$/
-\end tex-src/texinfo.tex /^\\def\\end{\\parsearg\\endxxx}$/
-\enddoublecolumns tex-src/texinfo.tex /^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/
-\endxxx tex-src/texinfo.tex /^\\def\\endxxx #1{%$/
-\entry tex-src/texinfo.tex /^\\def\\entry #1#2{\\begingroup$/
-\enumerate tex-src/texinfo.tex /^\\def\\enumerate{\\parsearg\\enumeratezzz}$/
-\enumeratey tex-src/texinfo.tex /^\\def\\enumeratey #1 #2\\endenumeratey{%$/
-\enumeratezzz tex-src/texinfo.tex /^\\def\\enumeratezzz #1{\\enumeratey #1 \\endenumerate/
-\equiv tex-src/texinfo.tex /^\\def\\equiv{\\realbackslash equiv}$/
-\equiv tex-src/texinfo.tex /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
-\error tex-src/texinfo.tex /^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/
-\errorE tex-src/texinfo.tex /^\\def\\errorE#1{$/
-\evenfooting tex-src/texinfo.tex /^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/
-\evenheading tex-src/texinfo.tex /^\\def\\evenheading{\\parsearg\\evenheadingxxx}$/
-\everyfooting tex-src/texinfo.tex /^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/
-\everyheading tex-src/texinfo.tex /^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/
-\ewbot tex-src/texinfo.tex /^\\def\\ewbot{\\vrule height0pt depth\\cornerthick widt/
-\ewtop tex-src/texinfo.tex /^\\def\\ewtop{\\vrule height\\cornerthick depth0pt widt/
-\exdent tex-src/texinfo.tex /^\\def\\exdent{\\parsearg\\exdentyyy}$/
-\exdentyyy tex-src/texinfo.tex /^\\def\\exdentyyy #1{{\\hfil\\break\\hbox{\\kern -\\exdent/
-\expansion tex-src/texinfo.tex /^\\def\\expansion{\\realbackslash expansion}$/
-\expansion tex-src/texinfo.tex /^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/
-\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}%$/
-\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}$/
-\finalout tex-src/texinfo.tex /^\\def\\finalout{\\overfullrule=0pt}$/
-\findex tex-src/texinfo.tex /^\\def\\findex {\\fnindex}$/
-\finishtitlepage tex-src/texinfo.tex /^\\def\\finishtitlepage{%$/
-\flushcr tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else /
-\flushleft tex-src/texinfo.tex /^\\def\\flushleft{%$/
-\flushright tex-src/texinfo.tex /^\\def\\flushright{%$/
-\fnitemindex tex-src/texinfo.tex /^\\def\\fnitemindex #1{\\doind {fn}{\\code{#1}}}%$/
-\format tex-src/texinfo.tex /^\\def\\format{\\begingroup\\inENV %This group ends at /
-\frenchspacing tex-src/texinfo.tex /^\\def\\frenchspacing{\\sfcode46=1000 \\sfcode63=1000 \\/
-\ftable tex-src/texinfo.tex /^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/
-\gloggingall tex-src/texinfo.tex /^\\def\\gloggingall{\\begingroup \\globaldefs = 1 \\logg/
-\group tex-src/texinfo.tex /^\\def\\group{\\begingroup$/
-\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}%$/
-\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}$/
-\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}%$/
-\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/
-\heading tex-src/texinfo.tex /^\\def\\heading{\\parsearg\\secheadingi}$/
-\headings tex-src/texinfo.tex /^\\def\\headings #1 {\\csname HEADINGS#1\\endcsname}$/
-\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}%$/
-\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}$/
-\ifclear tex-src/texinfo.tex /^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/
-\ifclearfail tex-src/texinfo.tex /^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/
-\ifclearfailxxx tex-src/texinfo.tex /^\\long\\def\\ifclearfailxxx #1\\end ifclear{\\endgroup\\/
-\ifclearxxx tex-src/texinfo.tex /^\\def\\ifclearxxx #1{\\endgroup$/
-\ifinfo tex-src/texinfo.tex /^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/
-\ifinfoxxx tex-src/texinfo.tex /^\\long\\def\\ifinfoxxx #1\\end ifinfo{\\endgroup\\ignore/
-\ifset tex-src/texinfo.tex /^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/
-\ifsetfail tex-src/texinfo.tex /^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/
-\ifsetfailxxx tex-src/texinfo.tex /^\\long\\def\\ifsetfailxxx #1\\end ifset{\\endgroup\\igno/
-\ifsetxxx tex-src/texinfo.tex /^\\def\\ifsetxxx #1{\\endgroup$/
-\iftex tex-src/texinfo.tex /^\\def\\iftex{}$/
-\ifusingtt tex-src/texinfo.tex /^\\def\\ifusingtt#1#2{\\ifdim \\fontdimen3\\the\\font=0pt/
-\ignore tex-src/texinfo.tex /^\\def\\ignore{\\begingroup\\ignoresections$/
-\ignoresections tex-src/texinfo.tex /^\\def\\ignoresections{%$/
-\ignorexxx tex-src/texinfo.tex /^\\long\\def\\ignorexxx #1\\end ignore{\\endgroup\\ignore/
-\ii tex-src/texinfo.tex /^\\def\\ii#1{{\\it #1}} % italic font$/
-\inENV tex-src/texinfo.tex /^\\newif\\ifENV \\ENVfalse \\def\\inENV{\\ifENV\\relax\\els/
-\include tex-src/texinfo.tex /^\\def\\include{\\parsearg\\includezzz}$/
-\includezzz tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/
-\indexbackslash tex-src/texinfo.tex /^ \\def\\indexbackslash{\\rawbackslashxx}$/
-\indexdotfill tex-src/texinfo.tex /^\\def\\indexdotfill{\\cleaders$/
-\indexdummies tex-src/texinfo.tex /^\\def\\indexdummies{%$/
-\indexdummydots tex-src/texinfo.tex /^\\def\\indexdummydots{...}$/
-\indexdummyfont tex-src/texinfo.tex /^\\def\\indexdummyfont#1{#1}$/
-\indexdummytex tex-src/texinfo.tex /^\\def\\indexdummytex{TeX}$/
-\indexfonts tex-src/texinfo.tex /^\\def\\indexfonts{%$/
-\indexnofonts tex-src/texinfo.tex /^\\def\\indexnofonts{%$/
-\infoappendix tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
-\infoappendixsec tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
-\infoappendixsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
-\infoappendixsubsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
-\infochapter tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/
-\inforef tex-src/texinfo.tex /^\\def\\inforef #1{\\inforefzzz #1,,,,**}$/
-\inforefzzz tex-src/texinfo.tex /^\\def\\inforefzzz #1,#2,#3,#4**{See Info file \\file{/
-\infosection tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/
-\infosubsection tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
-\infosubsubsection tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
-\infotop tex-src/texinfo.tex /^\\def\\infotop{\\parsearg\\unnumberedzzz}$/
-\infounnumbered tex-src/texinfo.tex /^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/
-\infounnumberedsec tex-src/texinfo.tex /^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/
-\infounnumberedsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/
-\infounnumberedsubsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/
-\initial tex-src/texinfo.tex /^\\def\\initial #1{%$/
-\internalBitem tex-src/texinfo.tex /^\\def\\internalBitem{\\smallbreak \\parsearg\\itemzzz}$/
-\internalBitemx tex-src/texinfo.tex /^\\def\\internalBitemx{\\par \\parsearg\\itemzzz}$/
-\internalBkitem tex-src/texinfo.tex /^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/
-\internalBkitemx tex-src/texinfo.tex /^\\def\\internalBkitemx{\\par \\parsearg\\kitemzzz}$/
-\internalBxitem tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/
-\internalBxitemx tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/
-\internalsetq tex-src/texinfo.tex /^\\def\\internalsetq #1#2{'xrdef {#1}{\\csname #2\\endc/
-\item tex-src/texinfo.tex /^\\def\\item{\\errmessage{@item while not in a table}}/
-\itemcontents tex-src/texinfo.tex /^\\def\\itemcontents{#1}%$/
-\itemfont tex-src/texinfo.tex /^\\def\\itemfont{#2}%$/
-\itemize tex-src/texinfo.tex /^\\def\\itemize{\\parsearg\\itemizezzz}$/
-\itemizeitem tex-src/texinfo.tex /^\\def\\itemizeitem{%$/
-\itemizey tex-src/texinfo.tex /^\\def\\itemizey #1#2{%$/
-\itemizezzz tex-src/texinfo.tex /^\\def\\itemizezzz #1{%$/
-\itemx tex-src/texinfo.tex /^\\def\\itemx{\\errmessage{@itemx while not in a table/
-\itemzzz tex-src/texinfo.tex /^\\def\\itemzzz #1{\\begingroup %$/
-\kbd tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
-\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/
-\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/
-\kbdfoo tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
-\key tex-src/texinfo.tex /^\\def\\key #1{{\\tt \\exhyphenpenalty=10000\\uppercase{/
-\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}%$/
-\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}$/
-\kindex tex-src/texinfo.tex /^\\def\\kindex {\\kyindex}$/
-\kitem tex-src/texinfo.tex /^\\def\\kitem{\\errmessage{@kitem while not in a table/
-\kitemx tex-src/texinfo.tex /^\\def\\kitemx{\\errmessage{@kitemx while not in a tab/
-\kitemzzz tex-src/texinfo.tex /^\\def\\kitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
-\l tex-src/texinfo.tex /^\\def\\l#1{{\\li #1}\\null} % $/
-\labelspace tex-src/texinfo.tex /^\\def\\labelspace{\\hskip1em \\relax}$/
-\lbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/
-\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}%$/
-\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}$/
-\linenumber tex-src/texinfo.tex /^ \\def\\linenumber{\\the\\inputlineno:\\space}$/
-\lisp tex-src/texinfo.tex /^\\def\\lisp{\\aboveenvbreak$/
-\loggingall tex-src/texinfo.tex /^\\def\\loggingall{\\tracingcommands2 \\tracingstats2 $/
-\losespace tex-src/texinfo.tex /^\\def\\losespace #1{#1}$/
-\lowercaseenumerate tex-src/texinfo.tex /^\\def\\lowercaseenumerate{%$/
-\lvvmode tex-src/texinfo.tex /^\\def\\lvvmode{\\vbox to 0pt{}}$/
-\majorheading tex-src/texinfo.tex /^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/
-\majorheadingzzz tex-src/texinfo.tex /^\\def\\majorheadingzzz #1{%$/
-\math tex-src/texinfo.tex /^\\def\\math#1{\\implicitmath #1\\implicitmath}$/
-\menu tex-src/texinfo.tex /^\\long\\def\\menu #1\\end menu{}$/
-\minus tex-src/texinfo.tex /^\\def\\minus{$-$}$/
-\mylbrace tex-src/texinfo.tex /^\\def\\mylbrace {{\\tt \\char '173}}$/
-\myrbrace tex-src/texinfo.tex /^\\def\\myrbrace {{\\tt \\char '175}}$/
-\need tex-src/texinfo.tex /^\\def\\need{\\parsearg\\needx}$/
-\needx tex-src/texinfo.tex /^\\def\\needx#1{%$/
-\newcodeindex tex-src/texinfo.tex /^\\def\\newcodeindex #1{$/
-\newindex tex-src/texinfo.tex /^\\def\\newindex #1{$/
-\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
-\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
-\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
-\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
-\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
-\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
-\nm tex-src/testenv.tex /^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/
-\node tex-src/texinfo.tex /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/
-\nodexxx[ tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
-\nodezzz tex-src/texinfo.tex /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/
-\nofillexdent tex-src/texinfo.tex /^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/
-\nofillexdentyyy tex-src/texinfo.tex /^\\def\\nofillexdentyyy #1{{\\advance \\leftskip by -\\e/
-\normalbackslash tex-src/texinfo.tex /^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/
-\normalcaret tex-src/texinfo.tex /^\\def\\normalcaret{^}$/
-\normaldoublequote tex-src/texinfo.tex /^\\def\\normaldoublequote{"}$/
-\normalgreater tex-src/texinfo.tex /^\\def\\normalgreater{>}$/
-\normalless tex-src/texinfo.tex /^\\def\\normalless{<}$/
-\normalplus tex-src/texinfo.tex /^\\def\\normalplus{+}$/
-\normaltilde tex-src/texinfo.tex /^\\def\\normaltilde{~}$/
-\normalunderscore tex-src/texinfo.tex /^\\def\\normalunderscore{_}$/
-\normalverticalbar tex-src/texinfo.tex /^\\def\\normalverticalbar{|}$/
-\nsbot tex-src/texinfo.tex /^\\def\\nsbot{\\vbox$/
-\nstop tex-src/texinfo.tex /^\\def\\nstop{\\vbox$/
-\numberedsec tex-src/texinfo.tex /^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/
-\numberedsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/
-\numberedsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubseczzz #1{\\seccheck{subsection}%$/
-\numberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/
-\numberedsubsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubsubseczzz #1{\\seccheck{subsubsecti/
-\numericenumerate tex-src/texinfo.tex /^\\def\\numericenumerate{%$/
-\oddfooting tex-src/texinfo.tex /^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/
-\oddheading tex-src/texinfo.tex /^\\def\\oddheading{\\parsearg\\oddheadingxxx}$/
-\onepageout tex-src/texinfo.tex /^\\def\\onepageout#1{\\hoffset=\\normaloffset$/
-\opencontents tex-src/texinfo.tex /^\\def\\opencontents{\\openout \\contentsfile = \\jobnam/
-\openindices tex-src/texinfo.tex /^\\def\\openindices{%$/
-\opnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
-\page tex-src/texinfo.tex /^\\def\\page{\\par\\vfill\\supereject}$/
-\page tex-src/texinfo.tex /^ \\def\\page{%$/
-\pagebody tex-src/texinfo.tex /^\\def\\pagebody#1{\\vbox to\\pageheight{\\boxmaxdepth=\\/
-\pagesofar tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/
-\parsearg tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/
-\parseargline tex-src/texinfo.tex /^\\def\\parseargline{\\begingroup \\obeylines \\parsearg/
-\parseargx tex-src/texinfo.tex /^\\def\\parseargx{%$/
-\pindex tex-src/texinfo.tex /^\\def\\pindex {\\pgindex}$/
-\plainsecheading tex-src/texinfo.tex /^\\def\\plainsecheading #1{\\secheadingi {#1}}$/
-\point tex-src/texinfo.tex /^\\def\\point{$\\star$}$/
-\primary tex-src/texinfo.tex /^\\def\\primary #1{\\line{#1\\hfil}}$/
-\print tex-src/texinfo.tex /^\\def\\print{\\realbackslash print}$/
-\print tex-src/texinfo.tex /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
-\printedmanual tex-src/texinfo.tex /^\\def\\printedmanual{\\ignorespaces #5}%$/
-\printedmanual tex-src/texinfo.tex /^section ``\\printednodename'' in \\cite{\\printedmanu/
-\printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #3}%$/
-\printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #1}%$/
-\printindex tex-src/texinfo.tex /^\\def\\printindex{\\parsearg\\doprintindex}$/
-\pxref tex-src/texinfo.tex /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/
-\quotation tex-src/texinfo.tex /^\\def\\quotation{%$/
-\r tex-src/texinfo.tex /^\\def\\r#1{{\\rm #1}} % roman font$/
-\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}%$/
-\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}$/
-\rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
-\rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/
-\readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/
-\ref tex-src/texinfo.tex /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/
-\refx tex-src/texinfo.tex /^\\def\\refx#1#2{%$/
-\resetmathfonts tex-src/texinfo.tex /^\\def\\resetmathfonts{%$/
-\result tex-src/texinfo.tex /^\\def\\result{\\realbackslash result}$/
-\result tex-src/texinfo.tex /^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/
-\rm tex-src/texinfo.tex /^\\def\\rm{\\realbackslash rm }%$/
-\samp tex-src/texinfo.tex /^\\def\\samp #1{`\\tclose{#1}'\\null}$/
-\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}%$/
-\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}$/
-\sc tex-src/texinfo.tex /^\\def\\sc#1{{\\smallcaps#1}} % smallcaps font$/
-\seccheck tex-src/texinfo.tex /^\\def\\seccheck#1{\\if \\pageno<0 %$/
-\secentry tex-src/texinfo.tex /^ \\def\\secentry ##1##2##3##4{}$/
-\secentry tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
-\secentryfonts tex-src/texinfo.tex /^\\def\\secentryfonts{\\textfonts}$/
-\secfonts tex-src/texinfo.tex /^\\def\\secfonts{%$/
-\secheading tex-src/texinfo.tex /^\\def\\secheading #1#2#3{\\secheadingi {#2.#3\\enspace/
-\secheadingbreak tex-src/texinfo.tex /^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/
-\secheadingi tex-src/texinfo.tex /^\\def\\secheadingi #1{{\\advance \\secheadingskip by \\/
-\secondary tex-src/texinfo.tex /^\\def\\secondary #1#2{$/
-\seczzz tex-src/texinfo.tex /^\\def\\seczzz #1{\\seccheck{section}%$/
-\set tex-src/texinfo.tex /^\\def\\set{\\parsearg\\setxxx}$/
-\setchapternewpage tex-src/texinfo.tex /^\\def\\setchapternewpage #1 {\\csname CHAPPAG#1\\endcs/
-\setchapterstyle tex-src/texinfo.tex /^\\def\\setchapterstyle #1 {\\csname CHAPF#1\\endcsname/
-\setdeffont tex-src/texinfo.tex /^\\def\\setdeffont #1 {\\csname DEF#1\\endcsname}$/
-\setfilename tex-src/texinfo.tex /^\\def\\setfilename{%$/
-\setref tex-src/texinfo.tex /^\\def\\setref#1{%$/
-\settitle tex-src/texinfo.tex /^\\def\\settitle{\\parsearg\\settitlezzz}$/
-\settitlezzz tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/
-\setxxx tex-src/texinfo.tex /^\\def\\setxxx #1{$/
-\sf tex-src/texinfo.tex /^\\def\\sf{\\fam=\\sffam \\tensf}$/
-\sf tex-src/texinfo.tex /^\\def\\sf{\\realbackslash sf}%$/
-\shortchapentry tex-src/texinfo.tex /^\\def\\shortchapentry#1#2#3{%$/
-\shortunnumberedentry tex-src/texinfo.tex /^\\def\\shortunnumberedentry#1#2{%$/
-\singlecodeindexer tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/
-\singleindexer tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/
-\singlespace tex-src/texinfo.tex /^\\def\\singlespace{%$/
-\sl tex-src/texinfo.tex /^\\def\\sl{\\realbackslash sl }%$/
-\smallbook tex-src/texinfo.tex /^\\def\\smallbook{$/
-\smalllispx tex-src/texinfo.tex /^\\def\\smalllispx{\\aboveenvbreak\\begingroup\\inENV$/
-\smartitalic tex-src/texinfo.tex /^\\def\\smartitalic#1{{\\sl #1}\\futurelet\\next\\smartit/
-\smartitalicx tex-src/texinfo.tex /^\\def\\smartitalicx{\\ifx\\next,\\else\\ifx\\next-\\else\\i/
-\sp tex-src/texinfo.tex /^\\def\\sp{\\parsearg\\spxxx}$/
-\splitoff tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
-\spxxx tex-src/texinfo.tex /^\\def\\spxxx #1{\\par \\vskip #1\\baselineskip}$/
-\startcontents tex-src/texinfo.tex /^\\def\\startcontents#1{%$/
-\startenumeration tex-src/texinfo.tex /^\\def\\startenumeration#1{%$/
-\subheading tex-src/texinfo.tex /^\\def\\subheading{\\parsearg\\subsecheadingi}$/
-\subsecentry tex-src/texinfo.tex /^ \\def\\subsecentry ##1##2##3##4##5{}$/
-\subsecentry tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
-\subsecfonts tex-src/texinfo.tex /^\\def\\subsecfonts{%$/
-\subsecheading tex-src/texinfo.tex /^\\def\\subsecheading #1#2#3#4{\\subsecheadingi {#2.#3/
-\subsecheadingbreak tex-src/texinfo.tex /^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/
-\subsecheadingi tex-src/texinfo.tex /^\\def\\subsecheadingi #1{{\\advance \\subsecheadingski/
-\subsubheading tex-src/texinfo.tex /^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/
-\subsubsecentry tex-src/texinfo.tex /^ \\def\\subsubsecentry ##1##2##3##4##5##6{}$/
-\subsubsecentry tex-src/texinfo.tex /^\\def\\subsubsecentry#1#2#3#4#5#6{%$/
-\subsubsecfonts tex-src/texinfo.tex /^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/
-\subsubsecheading tex-src/texinfo.tex /^\\def\\subsubsecheading #1#2#3#4#5{\\subsubsecheading/
-\subsubsecheadingi tex-src/texinfo.tex /^\\def\\subsubsecheadingi #1{{\\advance \\subsecheading/
-\subtitle tex-src/texinfo.tex /^ \\def\\subtitle{\\parsearg\\subtitlezzz}%$/
-\subtitlefont tex-src/texinfo.tex /^ \\def\\subtitlefont{\\subtitlerm \\normalbaselinesk/
-\subtitlezzz tex-src/texinfo.tex /^ \\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/
-\summarycontents tex-src/texinfo.tex /^\\outer\\def\\summarycontents{%$/
-\supereject tex-src/texinfo.tex /^\\def\\supereject{\\par\\penalty -20000\\footnoteno =0 /
-\syncodeindex tex-src/texinfo.tex /^\\def\\syncodeindex #1 #2 {%$/
-\synindex tex-src/texinfo.tex /^\\def\\synindex #1 #2 {%$/
-\t tex-src/texinfo.tex /^\\def\\t#1{{\\tt \\exhyphenpenalty=10000\\rawbackslash /
-\t tex-src/texinfo.tex /^\\def\\t##1{\\realbackslash r {##1}}%$/
-\table tex-src/texinfo.tex /^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspaces\\/
-\tablez tex-src/texinfo.tex /^\\def\\tablez #1#2#3#4#5#6{%$/
-\tclose tex-src/texinfo.tex /^\\def\\tclose#1{{\\rm \\tcloserm=\\fontdimen2\\font \\tt /
-\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}%$/
-\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}$/
-\tex tex-src/texinfo.tex /^\\def\\tex{\\begingroup$/
-\texinfoversion tex-src/texinfo.tex /^\\def\\texinfoversion{2.73}$/
-\textfonts tex-src/texinfo.tex /^\\def\\textfonts{%$/
-\thearg tex-src/texinfo.tex /^ \\def\\thearg{#1}%$/
-\thearg tex-src/texinfo.tex /^ \\ifx\\thearg\\empty \\def\\thearg{1}\\fi$/
-\thischapter tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/
-\thischapter tex-src/texinfo.tex /^ \\unnumbchapmacro{#1}\\def\\thischapter{}%$/
-\thischaptername tex-src/texinfo.tex /^\\def\\thischaptername{No Chapter Title}$/
-\thisfile tex-src/texinfo.tex /^\\def\\thisfile{}$/
-\thistitle tex-src/texinfo.tex /^\\def\\thistitle{No Title}$/
-\tie tex-src/texinfo.tex /^\\def\\tie{\\penalty 10000\\ } % Save plain tex de/
-\tindex tex-src/texinfo.tex /^\\def\\tindex {\\tpindex}$/
-\title tex-src/texinfo.tex /^ \\def\\title{\\parsearg\\titlezzz}%$/
-\titlefont tex-src/texinfo.tex /^\\def\\titlefont#1{{\\titlerm #1}}$/
-\titlepage tex-src/texinfo.tex /^\\def\\titlepage{\\begingroup \\parindent=0pt \\textfon/
-\titlezzz tex-src/texinfo.tex /^ \\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/
-\today tex-src/texinfo.tex /^\\def\\today{\\number\\day\\space$/
-\top tex-src/texinfo.tex /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/
-\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}%$/
-\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}$/
-\turnoffactive tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
-\unnchfopen tex-src/texinfo.tex /^\\def\\unnchfopen #1{%$/
-\unnchfplain tex-src/texinfo.tex /^\\def\\unnchfplain #1{%$/
-\unnumbchapentry tex-src/texinfo.tex /^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/
-\unnumbered tex-src/texinfo.tex /^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/
-\unnumberedsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/
-\unnumberedseczzz tex-src/texinfo.tex /^\\def\\unnumberedseczzz #1{\\seccheck{unnumberedsec}%/
-\unnumberedsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsec{\\parsearg\\unnumberedsu/
-\unnumberedsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubseczzz #1{\\seccheck{unnumberedsu/
-\unnumberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/
-\unnumberedsubsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/
-\unnumberedzzz tex-src/texinfo.tex /^\\def\\unnumberedzzz #1{\\seccheck{unnumbered}%$/
-\unnumbnoderef tex-src/texinfo.tex /^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/
-\unnumbsecentry tex-src/texinfo.tex /^ \\def\\unnumbsecentry ##1##2{}$/
-\unnumbsecentry tex-src/texinfo.tex /^\\def\\unnumbsecentry#1#2{\\dosecentry{#1}{#2}}$/
-\unnumbsetref tex-src/texinfo.tex /^\\def\\unnumbsetref#1{%$/
-\unnumbsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsecentry ##1##2{}$/
-\unnumbsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsecentry#1#2{\\dosubsecentry{#1}{#2}}/
-\unnumbsubsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsubsecentry ##1##2{}$/
-\unnumbsubsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/
-\uppercaseenumerate tex-src/texinfo.tex /^\\def\\uppercaseenumerate{%$/
-\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}%$/
-\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}$/
-\vindex tex-src/texinfo.tex /^\\def\\vindex {\\vrindex}$/
-\vritemindex tex-src/texinfo.tex /^\\def\\vritemindex #1{\\doind {vr}{\\code{#1}}}%$/
-\vtable tex-src/texinfo.tex /^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/
-\w tex-src/texinfo.tex /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/
-\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w }%$/
-\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w}$/
-\xitem tex-src/texinfo.tex /^\\def\\xitem{\\errmessage{@xitem while not in a table/
-\xitemx tex-src/texinfo.tex /^\\def\\xitemx{\\errmessage{@xitemx while not in a tab/
-\xitemzzz tex-src/texinfo.tex /^\\def\\xitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
-\xkey tex-src/texinfo.tex /^\\def\\xkey{\\key}$/
-\xrdef tex-src/texinfo.tex /^\\def\\xrdef #1#2{$/
-\xref tex-src/texinfo.tex /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/
-\xrefX[ tex-src/texinfo.tex /^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/
+] tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
^ tex-src/texinfo.tex /^\\def^{{\\tt \\hat}}$/
+^ tex-src/texinfo.tex /^\\let^=\\normalcaret$/
+_ tex-src/texinfo.tex /^\\def\\_{{\\realbackslash _}}%$/
_ tex-src/texinfo.tex /^\\def_{\\ifusingtt\\normalunderscore\\_}$/
+_ tex-src/texinfo.tex /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule width.3em /
+_ tex-src/texinfo.tex /^\\let_=\\normalunderscore$/
_GETOPT_H c-src/getopt.h 19
_GNU_SOURCE c-src/etags.c 94
_REGEX_H c-src/emacs/src/regex.h 21
@@ -2422,6 +1941,7 @@ _realloc c-src/emacs/src/gmalloc.c /^_realloc (void *ptr, size_t size)$/
_realloc_internal c-src/emacs/src/gmalloc.c /^_realloc_internal (void *ptr, size_t size)$/
_realloc_internal_nolock c-src/emacs/src/gmalloc.c /^_realloc_internal_nolock (void *ptr, size_t size)$/
` ruby-src/test.rb /^ def `(command)$/
+` tex-src/texinfo.tex /^\\def\\`{{`}}$/
a c.c 152
a c.c 180
a c.c /^a()$/
@@ -2457,6 +1977,7 @@ abbrevs_changed c-src/abbrev.c 56
abc c-src/h.h 33
abc c-src/h.h 37
abort-recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("abort-recursive-edit", Fabort_recursive_ed/
+aboveenvbreak tex-src/texinfo.tex /^\\def\\aboveenvbreak{{\\advance\\aboveenvskipamount by/
abs/f ada-src/etags-test-for.ada /^ function "abs" (Right : Complex) return Real'/
absolute_dirname c-src/etags.c /^absolute_dirname (char *file, char *dir)$/
absolute_filename c-src/etags.c /^absolute_filename (char *file, char *dir)$/
@@ -2505,6 +2026,8 @@ accu_warning merc-src/accumulator.m /^:- type accu_warning$/
act prol-src/natded.prolog /^act(OutForm,OutSyn,Ws):-$/
action prol-src/natded.prolog /^action(KeyVals):-$/
active_maps c-src/emacs/src/keyboard.c /^active_maps (Lisp_Object first_event)$/
+activedoublequote tex-src/texinfo.tex /^\\def\\activedoublequote{{\\tt \\char '042}}$/
+activeparens tex-src/texinfo.tex /^\\def\\activeparens{%$/
actout prol-src/natded.prolog /^actout('Text',Trees):-$/
addArchs objc-src/PackInsp.m /^-(void)addArchs:(const char *)string$/
addPOReader php-src/lce_functions.php /^ function addPOReader($d_name, &$por)$/
@@ -2517,6 +2040,8 @@ add_user_signal c-src/emacs/src/keyboard.c /^add_user_signal (int sig, const cha
addnoise html-src/algrthms.html /^Adding Noise to the$/
address y-src/cccp.y 113
adjust_point_for_property c-src/emacs/src/keyboard.c /^adjust_point_for_property (ptrdiff_t last_pt, bool/
+afourpaper tex-src/texinfo.tex /^\\def\\afourpaper{$/
+afterenvbreak tex-src/texinfo.tex /^\\def\\afterenvbreak{\\endgraf \\ifdim\\lastskip<\\above/
agent cp-src/clheir.hpp 75
algorithms html-src/algrthms.html /^Description$/
alias c-src/emacs/src/lisp.h 688
@@ -2531,6 +2056,9 @@ alive cp-src/conway.hpp 7
all_kboards c-src/emacs/src/keyboard.c 86
allocate_kboard c-src/emacs/src/keyboard.c /^allocate_kboard (Lisp_Object type)$/
allocated c-src/emacs/src/regex.h 344
+alphaenumerate tex-src/texinfo.tex /^\\def\\alphaenumerate{\\enumerate{a}}$/
+ampnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
+amprm tex-src/texinfo.tex /^\\gdef\\amprm#1 {{\\rm\\}\\let(=\\oprm \\let)=\\clrm\\ }/
an_extern_linkage c-src/h.h 44
an_extern_linkage c-src/h.h 56
an_extern_linkage_ptr c-src/h.h 43
@@ -2547,8 +2075,27 @@ append_list prol-src/natded.prolog /^append_list([],[]).$/
append_string pas-src/common.pas /^procedure append_string;(*($/
append_tool_bar_item c-src/emacs/src/keyboard.c /^append_tool_bar_item (void)$/
appendix perl-src/htlmify-cystic 24
+appendix tex-src/texinfo.tex /^\\let\\appendix=\\relax$/
+appendix tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
appendix_name perl-src/htlmify-cystic 13
appendix_toc perl-src/htlmify-cystic 16
+appendixletter tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/
+appendixnoderef tex-src/texinfo.tex /^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/
+appendixsec tex-src/texinfo.tex /^\\let\\appendixsec=\\relax$/
+appendixsec tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
+appendixsection tex-src/texinfo.tex /^\\let\\appendixsection=\\relax$/
+appendixsection tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
+appendixsectionzzz tex-src/texinfo.tex /^\\def\\appendixsectionzzz #1{\\seccheck{appendixsecti/
+appendixsetref tex-src/texinfo.tex /^\\def\\appendixsetref#1{%$/
+appendixsubsec tex-src/texinfo.tex /^\\let\\appendixsubsec=\\relax$/
+appendixsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
+appendixsubsection tex-src/texinfo.tex /^\\let\\appendixsubsection=\\relax$/
+appendixsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubseczzz #1{\\seccheck{appendixsubsec/
+appendixsubsubsec tex-src/texinfo.tex /^\\let\\appendixsubsubsec=\\relax$/
+appendixsubsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
+appendixsubsubsection tex-src/texinfo.tex /^\\let\\appendixsubsubsection=\\relax$/
+appendixsubsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubsubseczzz #1{\\seccheck{appendixsub/
+appendixzzz tex-src/texinfo.tex /^\\def\\appendixzzz #1{\\seccheck{appendix}%$/
apply_modifiers c-src/emacs/src/keyboard.c /^apply_modifiers (int modifiers, Lisp_Object base)$/
apply_modifiers_uncached c-src/emacs/src/keyboard.c /^apply_modifiers_uncached (int modifiers, char *bas/
aref_addr c-src/emacs/src/lisp.h /^aref_addr (Lisp_Object array, ptrdiff_t idx)$/
@@ -2562,12 +2109,14 @@ argno y-src/cccp.y 45
args c-src/emacs/src/lisp.h 2986
args c-src/h.h 30
argsindent tex-src/texinfo.tex /^\\newskip\\defargsindent \\defargsindent=50pt$/
+argsindent tex-src/texinfo.tex /^\\newskip\\defargsindent \\defargsindent=50pt$/
argsindent tex-src/texinfo.tex /^\\dimen1=\\hsize \\advance \\dimen1 by -\\defargsindent/
argsindent tex-src/texinfo.tex /^\\parshape 2 0in \\dimen0 \\defargsindent \\dimen1 /
argument c-src/etags.c 253
argvals prol-src/natded.prolog /^argvals([]) --> [].$/
array c.c 190
ascii c-src/emacs/src/lisp.h 1598
+asis tex-src/texinfo.tex /^\\def\\asis#1{#1}$/
asort cp-src/functions.cpp /^void asort(int *a, int num){$/
assemby-code-word forth-src/test-forth.fth /^code assemby-code-word ( dunno what it does )$/
assert c-src/etags.c 135
@@ -2584,8 +2133,13 @@ at_stdin c-src/etags.c 248
atom prol-src/natded.prolog /^atom(X) --> [X], {atomic(X)}.$/
atomval prol-src/natded.prolog /^atomval(X) --> atom(X).$/
aultparindent tex-src/texinfo.tex /^\\newdimen\\defaultparindent \\defaultparindent = 15p/
+aultparindent tex-src/texinfo.tex /^\\newdimen\\defaultparindent \\defaultparindent = 15p/
aultparindent tex-src/texinfo.tex /^\\parindent = \\defaultparindent$/
-aultparindent\hang\textindent tex-src/texinfo.tex /^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/
+aultparindent\hang tex-src/texinfo.tex /^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/
+author tex-src/texinfo.tex /^ \\def\\author{\\parsearg\\authorzzz}%$/
+authorfont tex-src/texinfo.tex /^ \\def\\authorfont{\\authorrm \\normalbaselineskip =/
+authorrm tex-src/texinfo.tex /^\\let\\authorrm = \\secrm$/
+authorzzz tex-src/texinfo.tex /^ \\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt /
auto_help c-src/etags.c 699
b c.c 180
b c.c 259
@@ -2597,7 +2151,14 @@ b c-src/h.h 103
b c-src/h.h 104
b cp-src/c.C 132
b ruby-src/test1.ru /^ def b()$/
-backslash=0 tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden during \\printin/
+b tex-src/texinfo.tex /^\\def\\b#1{{\\bf #1}}$/
+b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}%$/
+b tex-src/texinfo.tex /^\\let\\b=\\indexdummyfont$/
+b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}$/
+b tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+backslash tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
+backslash tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/
+balancecolumns tex-src/texinfo.tex /^\\def\\balancecolumns{%$/
bar c-src/c.c /^void bar() {while(0) {}}$/
bar c.c 143
bar c-src/h.h 19
@@ -2617,9 +2178,16 @@ bbbbbb c-src/h.h 113
been_warned c-src/etags.c 222
before_command_echo_length c-src/emacs/src/keyboard.c 130
before_command_key_count c-src/emacs/src/keyboard.c 129
+begin tex-src/texinfo.tex /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/
+begindoublecolumns tex-src/texinfo.tex /^\\def\\begindoublecolumns{\\begingroup$/
+beginxxx tex-src/texinfo.tex /^\\def\\beginxxx #1{%$/
begtoken c-src/etags.c /^#define begtoken(c) (_btk[CHAR (c)]) \/* c can star/
behaviour_info erl-src/gs_dialog.erl /^behaviour_info(callbacks) ->$/
-bf=cmbx10 tex-src/texinfo.tex /^\\font\\defbf=cmbx10 scaled \\magstep1 %was 1314$/
+bf tex-src/texinfo.tex /^\\font\\defbf=cmbx10 scaled \\magstep1 %was 1314$/
+bf tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }%$/
+bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }$/
+bf tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/
bind pyt-src/server.py /^ def bind(self, key, action):$/
bind_polling_period c-src/emacs/src/keyboard.c /^bind_polling_period (int n)$/
bits_word c-src/emacs/src/lisp.h 123
@@ -2630,22 +2198,30 @@ bletch el-src/TAGTEST.EL /^(foo::defmumble bletch beuarghh)$/
blv c-src/emacs/src/lisp.h 689
blv_found c-src/emacs/src/lisp.h /^blv_found (struct Lisp_Buffer_Local_Value *blv)$/
bodyindent tex-src/texinfo.tex /^\\newskip\\defbodyindent \\defbodyindent=.4in$/
+bodyindent tex-src/texinfo.tex /^\\newskip\\defbodyindent \\defbodyindent=.4in$/
bodyindent tex-src/texinfo.tex /^\\advance\\dimen2 by -\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\advance\\dimen3 by -\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by -\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
+bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
+boldbrax tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
bool c.c 222
bool merc-src/accumulator.m /^:- import_module bool.$/
bool_header_size c-src/emacs/src/lisp.h 1472
@@ -2658,6 +2234,7 @@ bool_vector_size c-src/emacs/src/lisp.h /^bool_vector_size (Lisp_Object a)$/
bool_vector_uchar_data c-src/emacs/src/lisp.h /^bool_vector_uchar_data (Lisp_Object a)$/
bool_vector_words c-src/emacs/src/lisp.h /^bool_vector_words (EMACS_INT size)$/
boolvar c-src/emacs/src/lisp.h 2287
+br tex-src/texinfo.tex /^\\let\\br = \\par$/
bracelev c-src/etags.c 2520
bsp_DevId c-src/h.h 25
bt c-src/emacs/src/lisp.h 2988
@@ -2671,10 +2248,13 @@ build_pure_c_string c-src/emacs/src/lisp.h /^build_pure_c_string (const char *st
build_string c-src/emacs/src/lisp.h /^build_string (const char *str)$/
buildact prol-src/natded.prolog /^buildact([SynIn],Right,RightPlus1):-$/
builtin_lisp_symbol c-src/emacs/src/lisp.h /^builtin_lisp_symbol (int index)$/
+bullet tex-src/texinfo.tex /^\\def\\bullet{$\\ptexbullet$}$/
+bullet tex-src/texinfo.tex /^\\let\\bullet=\\ptexbullet$/
burst c-src/h.h 28
busy c-src/emacs/src/gmalloc.c 158
button_down_location c-src/emacs/src/keyboard.c 5210
button_down_time c-src/emacs/src/keyboard.c 5218
+bye tex-src/texinfo.tex /^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/
byte_stack c-src/emacs/src/lisp.h 3049
bytecode_dest c-src/emacs/src/lisp.h 3037
bytecode_top c-src/emacs/src/lisp.h 3036
@@ -2685,6 +2265,8 @@ bytes_used c-src/emacs/src/gmalloc.c 312
c c.c 180
c c-src/h.h /^#define c() d$/
c c-src/h.h 106
+c tex-src/texinfo.tex /^\\let\\c=\\comment$/
+c tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
c_ext c-src/etags.c 2271
caccacacca c.c /^caccacacca (a,b,c,d,e,f,g)$/
cacheLRUEntry_s c.c 172
@@ -2697,21 +2279,47 @@ calloc c-src/emacs/src/gmalloc.c 1717
can_be_null c-src/emacs/src/regex.h 370
cancel_echoing c-src/emacs/src/keyboard.c /^cancel_echoing (void)$/
canonicalize_filename c-src/etags.c /^canonicalize_filename (register char *fn)$/
+capsenumerate tex-src/texinfo.tex /^\\def\\capsenumerate{\\enumerate{A}}$/
+cartbot tex-src/texinfo.tex /^\\def\\cartbot{\\hbox to \\cartouter{\\hskip\\lskip$/
+cartouche tex-src/texinfo.tex /^\\long\\def\\cartouche{%$/
+carttop tex-src/texinfo.tex /^\\def\\carttop{\\hbox to \\cartouter{\\hskip\\lskip$/
case_Lisp_Int c-src/emacs/src/lisp.h 438
cat c-src/h.h 81
cat cp-src/c.C 126
cat cp-src/c.C 130
cat prol-src/natded.prolog /^cat(A, Alpha@Beta, Ass3, Qs3, tree(fe,A:Alpha@Beta/
cat_atoms prol-src/natded.prolog /^cat_atoms(A1,A2,A3):-$/
+cbl tex-src/texinfo.tex /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/
+cbr tex-src/texinfo.tex /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/
cccccccccc c-src/h.h 115
cdr c-src/emacs/src/lisp.h 1159
cell y-src/parse.y 279
+center tex-src/texinfo.tex /^\\def\\center{\\parsearg\\centerzzz}$/
+centerzzz tex-src/texinfo.tex /^\\def\\centerzzz #1{{\\advance\\hsize by -\\leftskip$/
cgrep html-src/software.html /^cgrep$/
chain c-src/emacs/src/lisp.h 1162
chain c-src/emacs/src/lisp.h 2206
chain c-src/emacs/src/lisp.h 2396
chain_subst merc-src/accumulator.m /^:- func chain_subst(accu_subst, accu_subst) = accu/
chain_subst_2 merc-src/accumulator.m /^:- pred chain_subst_2(list(A)::in, map(A, B)::in, /
+chapbf tex-src/texinfo.tex /^\\let\\chapbf=\\chaprm$/
+chapbreak tex-src/texinfo.tex /^\\def\\chapbreak{\\dobreak \\chapheadingskip {-4000}}$/
+chapentry tex-src/texinfo.tex /^ \\let\\chapentry = \\shortchapentry$/
+chapentry tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
+chapentryfonts tex-src/texinfo.tex /^\\def\\chapentryfonts{\\secfonts \\rm}$/
+chapfonts tex-src/texinfo.tex /^\\def\\chapfonts{%$/
+chapheading tex-src/texinfo.tex /^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/
+chapheadingzzz tex-src/texinfo.tex /^\\def\\chapheadingzzz #1{\\chapbreak %$/
+chapmacro tex-src/texinfo.tex /^\\global\\let\\chapmacro=\\chfplain$/
+chapmacro tex-src/texinfo.tex /^\\global\\let\\chapmacro=\\chfopen$/
+chapoddpage tex-src/texinfo.tex /^\\def\\chapoddpage{\\chappager \\ifodd\\pageno \\else \\h/
+chappager tex-src/texinfo.tex /^\\def\\chappager{\\par\\vfill\\supereject}$/
+chapter tex-src/texinfo.tex /^\\let\\chapter=\\relax$/
+chapter tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
+chapternofonts tex-src/texinfo.tex /^\\def\\chapternofonts{%$/
+chapterzzz tex-src/texinfo.tex /^\\def\\chapterzzz #1{\\seccheck{chapter}%$/
+char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}%$/
+char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}$/
char_bits c-src/emacs/src/lisp.h 2443
char_table_specials c-src/emacs/src/lisp.h 1692
charpos c-src/emacs/src/lisp.h 2011
@@ -2722,14 +2330,24 @@ check_cons_list c-src/emacs/src/lisp.h /^# define check_cons_list() lisp_h_chec
checker make-src/Makefile /^checker:$/
checkhdr c-src/emacs/src/gmalloc.c /^checkhdr (const struct hdr *hdr)$/
checkiso html-src/software.html /^checkiso$/
+chfopen tex-src/texinfo.tex /^\\def\\chfopen #1#2{\\chapoddpage {\\chapfonts$/
+chfplain tex-src/texinfo.tex /^\\def\\chfplain #1#2{%$/
childDidExit objc-src/Subprocess.m /^- childDidExit$/
chunks_free c-src/emacs/src/gmalloc.c 313
chunks_used c-src/emacs/src/gmalloc.c 311
+cindex tex-src/texinfo.tex /^\\def\\cindex {\\cpindex}$/
+cindexsub tex-src/texinfo.tex /^\\def\\cindexsub {\\begingroup\\obeylines\\cindexsub}$/
+cindexsub tex-src/texinfo.tex /^\\gdef\\cindexsub "#1" #2^^M{\\endgroup %$/
+cite tex-src/texinfo.tex /^\\let\\cite=\\smartitalic$/
+cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}%$/
+cite tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/
+cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}$/
cjava c-src/etags.c 2936
class_method ruby-src/test.rb /^ def ClassExample.class_method$/
classifyLine php-src/lce_functions.php /^ function classifyLine($line)$/
clean make-src/Makefile /^clean:$/
clear cp-src/conway.hpp /^ void clear(void) { alive = 0; }$/
+clear tex-src/texinfo.tex /^\\def\\clear{\\parsearg\\clearxxx}$/
clear-abbrev-table c-src/abbrev.c /^DEFUN ("clear-abbrev-table", Fclear_abbrev_table, /
clear-this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("clear-this-command-keys", Fclear_this_comm/
clearAllKey objcpp-src/SimpleCalc.M /^- clearAllKey:sender$/
@@ -2739,12 +2357,19 @@ clear_input_pending c-src/emacs/src/keyboard.c /^clear_input_pending (void)$/
clear_neighbors cp-src/clheir.cpp /^void discrete_location::clear_neighbors(void)$/
clear_screen cp-src/screen.cpp /^void clear_screen(void)$/
clear_waiting_for_input c-src/emacs/src/keyboard.c /^clear_waiting_for_input (void)$/
+clearxxx tex-src/texinfo.tex /^\\def\\clearxxx #1{$/
+clnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
+clrm tex-src/texinfo.tex /^\\gdef\\clrm{% Print a paren in roman if it is takin/
cmd_error c-src/emacs/src/keyboard.c /^cmd_error (Lisp_Object data)$/
cmd_error_internal c-src/emacs/src/keyboard.c /^cmd_error_internal (Lisp_Object data, const char */
cmpfn c-src/emacs/src/lisp.h /^ bool (*cmpfn) (struct hash_table_test *t, Lisp_O/
cmt prol-src/natded.prolog /^cmt:-$/
cname c-src/etags.c 2519
cno c-src/etags.c 224
+code tex-src/texinfo.tex /^\\let\\code=\\tclose$/
+code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}%$/
+code tex-src/texinfo.tex /^\\let\\code=\\indexdummyfont$/
+code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}$/
colori cp-src/c.C 40
commaargvals prol-src/natded.prolog /^commaargvals(Args) -->$/
command c-src/etags.c 187
@@ -2754,6 +2379,8 @@ command_loop_1 c-src/emacs/src/keyboard.c /^command_loop_1 (void)$/
command_loop_2 c-src/emacs/src/keyboard.c /^command_loop_2 (Lisp_Object ignore)$/
command_loop_level c-src/emacs/src/keyboard.c 195
comment php-src/lce_functions.php /^ function comment($line, $class)$/
+comment tex-src/texinfo.tex /^\\def\\comment{\\catcode 64=\\other \\catcode 123=\\othe/
+commentxxx tex-src/texinfo.tex /^\\def\\commentxxx #1{\\catcode 64=0 \\catcode 123=1 \\c/
commutativity_assertion merc-src/accumulator.m /^:- pred commutativity_assertion(module_info::in,li/
compile_empty prol-src/natded.prolog /^compile_empty:-$/
compile_lex prol-src/natded.prolog /^compile_lex(File):-$/
@@ -2776,6 +2403,10 @@ consult_lex prol-src/natded.prolog /^consult_lex:-$/
contents c-src/emacs/src/lisp.h 1372
contents c-src/emacs/src/lisp.h 1600
contents c-src/emacs/src/lisp.h 1624
+contents tex-src/texinfo.tex /^\\let\\contents=\\relax$/
+contents tex-src/texinfo.tex /^\\outer\\def\\contents{%$/
+copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright }%$/
+copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright}$/
count c-src/emacs/src/lisp.h 1863
count_layers lua-src/allegro.lua /^local function count_layers (layer)$/
count_words c-src/tab.c /^static int count_words(char *str, char delim)$/
@@ -2795,10 +2426,24 @@ create_new_orig_recursive_goals merc-src/accumulator.m /^:- func create_new_orig
create_new_recursive_goals merc-src/accumulator.m /^:- func create_new_recursive_goals(set(accu_goal_i/
create_new_var merc-src/accumulator.m /^:- pred create_new_var(prog_var::in, string::in, p/
create_orig_goal merc-src/accumulator.m /^:- pred create_orig_goal(hlds_goal::in, accu_subst/
+cropmarks tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
+croppageout tex-src/texinfo.tex /^\\def\\croppageout#1{\\hoffset=0pt % make sure this d/
cscInitTime cp-src/c.C 7
cscSegmentationTime cp-src/c.C 8
+csname tex-src/texinfo.tex /^\\expandafter\\let\\csname IF#1\\endcsname=\\set}$/
+csname tex-src/texinfo.tex /^\\expandafter\\let\\csname IF#1\\endcsname=\\relax}$/
+csname tex-src/texinfo.tex /^\\expandafter\\xdef\\csname#1index\\endcsname{% % Defi/
+csname tex-src/texinfo.tex /^\\expandafter\\xdef\\csname#1index\\endcsname{% % Defi/
+csname tex-src/texinfo.tex /^\\expandafter\\let\\csname#1indfile\\endcsname=\\synind/
+csname tex-src/texinfo.tex /^\\expandafter\\xdef\\csname#1index\\endcsname{% % Defi/
+csname tex-src/texinfo.tex /^\\expandafter\\let\\csname#1indfile\\endcsname=\\synind/
+csname tex-src/texinfo.tex /^\\expandafter\\xdef\\csname#1index\\endcsname{% % Defi/
+csname tex-src/texinfo.tex /^{\\catcode`\\'=\\other\\expandafter \\gdef \\csname X#1\\/
cstack c-src/etags.c 2523
ctags make-src/Makefile /^ctags: etags.c ${OBJS}$/
+ctl tex-src/texinfo.tex /^\\def\\ctl{{\\circle\\char'013\\hskip -6pt}}% 6pt from /
+ctr tex-src/texinfo.tex /^\\def\\ctr{{\\hskip 6pt\\circle\\char'010}}$/
+ctrl tex-src/texinfo.tex /^\\def\\ctrl #1{{\\tt \\rawbackslash \\hat}#1}$/
curlb c-src/etags.c 2929
curlinepos c-src/etags.c 2931
current-idle-time c-src/emacs/src/keyboard.c /^DEFUN ("current-idle-time", Fcurrent_idle_time, Sc/
@@ -2809,6 +2454,10 @@ curry-test scm-src/test.scm /^(define (((((curry-test a) b) c) d) e)$/
cursor_position cp-src/screen.cpp /^void cursor_position(void)$/
cursor_x cp-src/screen.cpp 15
cursor_y cp-src/screen.cpp 15
+cvarheader\defcvtype tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+cvtype tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+cvtype tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defcvtype{} of #1}%$/
+cvx\defcvarheader tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
d c.c 180
d c-src/emacs/src/lisp.h 4673
d c-src/emacs/src/lisp.h 4679
@@ -2830,6 +2479,15 @@ default_C_help c-src/etags.c 515
default_C_help c-src/etags.c 523
default_C_suffixes c-src/etags.c 512
defcell c-src/emacs/src/lisp.h 2351
+defcodeindex tex-src/texinfo.tex /^\\def\\defcodeindex{\\parsearg\\newcodeindex}$/
+defcv tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
+defcvarheader tex-src/texinfo.tex /^\\def\\defcvarheader #1#2#3{%$/
+defcvtype tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
+defcvx tex-src/texinfo.tex /^\\def\\defcvx #1 {\\errmessage{@defcvx in invalid con/
+deffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
+deffnheader tex-src/texinfo.tex /^\\def\\deffnheader #1#2#3{\\doind {fn}{\\code{#2}}%$/
+deffnx tex-src/texinfo.tex /^\\def\\deffnx #1 {\\errmessage{@deffnx in invalid con/
+defindex tex-src/texinfo.tex /^\\def\\defindex{\\parsearg\\newindex}$/
define-abbrev c-src/abbrev.c /^DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_ab/
define-abbrev-table c-src/abbrev.c /^DEFUN ("define-abbrev-table", Fdefine_abbrev_table/
define-global-abbrev c-src/abbrev.c /^DEFUN ("define-global-abbrev", Fdefine_global_abbr/
@@ -2837,7 +2495,63 @@ define-mode-abbrev c-src/abbrev.c /^DEFUN ("define-mode-abbrev", Fdefine_mode_ab
defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4663
defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4665
definedef c-src/etags.c 2464
+defivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+defivarheader tex-src/texinfo.tex /^\\def\\defivarheader #1#2#3{%$/
+defivarx tex-src/texinfo.tex /^\\def\\defivarx #1 {\\errmessage{@defivarx in invalid/
+defmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+defmacheader tex-src/texinfo.tex /^\\def\\defmacheader #1#2{\\doind {fn}{\\code{#1}}% Mak/
+defmacx tex-src/texinfo.tex /^\\def\\defmacx #1 {\\errmessage{@defmacx in invalid c/
+defmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+defmethodheader tex-src/texinfo.tex /^\\def\\defmethodheader #1#2#3{%$/
+defmethodx tex-src/texinfo.tex /^\\def\\defmethodx #1 {\\errmessage{@defmethodx in inv/
+defmethparsebody tex-src/texinfo.tex /^\\def\\defmethparsebody #1#2#3#4 {\\begingroup\\inENV /
+defname tex-src/texinfo.tex /^\\def\\defname #1#2{%$/
+defop tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
+defopheader tex-src/texinfo.tex /^\\def\\defopheader #1#2#3{%$/
+defopparsebody tex-src/texinfo.tex /^\\def\\defopparsebody #1#2#3#4#5 {\\begingroup\\inENV /
+defopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+defoptheader tex-src/texinfo.tex /^\\def\\defoptheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
+defoptx tex-src/texinfo.tex /^\\def\\defoptx #1 {\\errmessage{@defoptx in invalid c/
+defoptype tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
+defopvarparsebody tex-src/texinfo.tex /^\\def\\defopvarparsebody #1#2#3#4#5 {\\begingroup\\inE/
+defopx tex-src/texinfo.tex /^\\def\\defopx #1 {\\errmessage{@defopx in invalid con/
+defparsebody tex-src/texinfo.tex /^\\def\\defparsebody #1#2#3{\\begingroup\\inENV% Enviro/
+defspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
+defspecheader tex-src/texinfo.tex /^\\def\\defspecheader #1#2{\\doind {fn}{\\code{#1}}% Ma/
+defspecx tex-src/texinfo.tex /^\\def\\defspecx #1 {\\errmessage{@defspecx in invalid/
+deftp tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+deftpargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/
+deftpheader tex-src/texinfo.tex /^\\def\\deftpheader #1#2#3{\\doind {tp}{\\code{#2}}%$/
+deftpx tex-src/texinfo.tex /^\\def\\deftpx #1 {\\errmessage{@deftpx in invalid con/
+deftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
+deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefnheader #1#2#3{\\deftypefnheaderx{#1}{/
+deftypefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheaderx #1#2#3 #4\\relax{%$/
+deftypefnx tex-src/texinfo.tex /^\\def\\deftypefnx #1 {\\errmessage{@deftypefnx in inv/
+deftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+deftypefunargs tex-src/texinfo.tex /^\\def\\deftypefunargs #1{%$/
+deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefunheader #1#2{\\deftypefunheaderx{#1}#/
+deftypefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheaderx #1#2 #3\\relax{%$/
+deftypeunx tex-src/texinfo.tex /^\\def\\deftypeunx #1 {\\errmessage{@deftypeunx in inv/
+deftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevarheader #1#2{%$/
+deftypevarx tex-src/texinfo.tex /^\\def\\deftypevarx #1 {\\errmessage{@deftypevarx in i/
+deftypevr tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevrheader #1#2#3{\\doind {vr}{\\code{#3}}/
+deftypevrx tex-src/texinfo.tex /^\\def\\deftypevrx #1 {\\errmessage{@deftypevrx in inv/
+defun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
defun_func1 c.c /^defun_func1()$/
+defunargs tex-src/texinfo.tex /^\\def\\defunargs #1{\\functionparens \\sl$/
+defunheader tex-src/texinfo.tex /^\\def\\defunheader #1#2{\\doind {fn}{\\code{#1}}% Make/
+defunx tex-src/texinfo.tex /^\\def\\defunx #1 {\\errmessage{@defunx in invalid con/
+defvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
+defvarargs tex-src/texinfo.tex /^\\def\\defvarargs #1{\\normalparens #1%$/
+defvarheader tex-src/texinfo.tex /^\\def\\defvarheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
+defvarparsebody tex-src/texinfo.tex /^\\def\\defvarparsebody #1#2#3{\\begingroup\\inENV% Env/
+defvarx tex-src/texinfo.tex /^\\def\\defvarx #1 {\\errmessage{@defvarx in invalid c/
+defvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+defvrheader tex-src/texinfo.tex /^\\def\\defvrheader #1#2#3{\\doind {vr}{\\code{#2}}%$/
+defvrparsebody tex-src/texinfo.tex /^\\def\\defvrparsebody #1#2#3#4 {\\begingroup\\inENV %$/
+defvrx tex-src/texinfo.tex /^\\def\\defvrx #1 {\\errmessage{@defvrx in invalid con/
delegate objc-src/Subprocess.m /^- delegate$/
deleteItem pyt-src/server.py /^ def deleteItem(self):$/
delete_kboard c-src/emacs/src/keyboard.c /^delete_kboard (KBOARD *kb)$/
@@ -2847,25 +2561,54 @@ deliver_user_signal c-src/emacs/src/keyboard.c /^deliver_user_signal (int sig)$/
depth c-src/emacs/src/lisp.h 1618
derived_analyses prol-src/natded.prolog /^derived_analyses([],[]).$/
describe_abbrev c-src/abbrev.c /^describe_abbrev (sym, stream)$/
+description tex-src/texinfo.tex /^\\def\\description{\\tablez{\\dontindex}{1}{}{}{}{}}$/
detect_input_pending c-src/emacs/src/keyboard.c /^detect_input_pending (void)$/
detect_input_pending_ignore_squeezables c-src/emacs/src/keyboard.c /^detect_input_pending_ignore_squeezables (void)$/
detect_input_pending_run_timers c-src/emacs/src/keyboard.c /^detect_input_pending_run_timers (bool do_display)$/
+df tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+dfn tex-src/texinfo.tex /^\\let\\dfn=\\smartitalic$/
+dfn tex-src/texinfo.tex /^\\def\\dfn##1{\\realbackslash dfn {##1}}$/
dialog_loop erl-src/gs_dialog.erl /^dialog_loop(Module, Window, Frame, Extra, Args) ->/
dignorerest c-src/etags.c 2463
+direntry tex-src/texinfo.tex /^\\def\\direntry{\\begingroup\\direntryxxx}$/
+direntryxxx tex-src/texinfo.tex /^\\long\\def\\direntryxxx #1\\end direntry{\\endgroup\\ig/
discard-input c-src/emacs/src/keyboard.c /^DEFUN ("discard-input", Fdiscard_input, Sdiscard_i/
discard_mouse_events c-src/emacs/src/keyboard.c /^discard_mouse_events (void)$/
discrete_location cp-src/clheir.hpp 56
discrete_location cp-src/clheir.hpp /^ discrete_location(int xi, int yi, int zi):$/
display cp-src/conway.cpp /^void display(void)$/
+display tex-src/texinfo.tex /^\\def\\display{\\begingroup\\inENV %This group ends at/
disposetextstring pas-src/common.pas /^procedure disposetextstring;(*($/
+dmn tex-src/texinfo.tex /^\\def\\dmn#1{\\thinspace #1}$/
dnone c-src/etags.c 2460
+dobreak tex-src/texinfo.tex /^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/
doc c-src/emacs/src/lisp.h 1689
+dochapentry tex-src/texinfo.tex /^\\def\\dochapentry#1#2{%$/
+docodeindex tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
dog c-src/h.h 81
dog cp-src/c.C 126
dog cp-src/c.C 130
+doind tex-src/texinfo.tex /^\\def\\doind #1#2{%$/
+doindex tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
+donoderef tex-src/texinfo.tex /^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/
+dontindex tex-src/texinfo.tex /^\\def\\dontindex #1{}$/
+dopageno tex-src/texinfo.tex /^\\def\\dopageno#1{{\\rm #1}}$/
+doprintindex tex-src/texinfo.tex /^\\def\\doprintindex#1{%$/
+dosecentry tex-src/texinfo.tex /^\\def\\dosecentry#1#2{%$/
+dosetq tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/
+doshortpageno tex-src/texinfo.tex /^\\def\\doshortpageno#1{{\\rm #1}}$/
+dosubind tex-src/texinfo.tex /^\\def\\dosubind #1#2#3{%$/
+dosubsecentry tex-src/texinfo.tex /^\\def\\dosubsecentry#1#2{%$/
+dosubsubsecentry tex-src/texinfo.tex /^\\def\\dosubsubsecentry#1#2{%$/
dotfill tex-src/texinfo.tex /^ \\null\\nobreak\\indexdotfill % Have leaders before/
dotfill tex-src/texinfo.tex /^\\noindent\\hskip\\secondaryindent\\hbox{#1}\\indexdotf/
+dots tex-src/texinfo.tex /^\\def\\dots{$\\ldots$}$/
+dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots }%$/
+dots tex-src/texinfo.tex /^\\let\\dots=\\indexdummydots$/
+dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots}$/
+dots tex-src/texinfo.tex /^\\let\\dots=\\ptexdots$/
double_click_count c-src/emacs/src/keyboard.c 5222
+doublecolumnout tex-src/texinfo.tex /^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/
drag_n_drop_syms c-src/emacs/src/keyboard.c 4629
dribble c-src/emacs/src/keyboard.c 236
dsharpseen c-src/etags.c 2461
@@ -2882,6 +2625,7 @@ dummyfont tex-src/texinfo.tex /^\\let\\i=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\b=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\emph=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\strong=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\sc=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\tclose=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\code=\\indexdummyfont$/
@@ -2915,10 +2659,16 @@ editsite pyt-src/server.py /^ def editsite(self, site):$/
edituser pyt-src/server.py /^ def edituser(self, user):$/
egetenv c-src/emacs/src/lisp.h /^egetenv (const char *var)$/
emacs_abort c-src/emacs/src/lisp.h /^extern _Noreturn void emacs_abort (void) NO_INLINE/
+emph tex-src/texinfo.tex /^\\let\\emph=\\smartitalic$/
+emph tex-src/texinfo.tex /^\\let\\emph=\\indexdummyfont$/
+emph tex-src/texinfo.tex /^\\def\\emph##1{\\realbackslash emph {##1}}$/
end c-src/emacs/src/regex.h 432
end c-src/emacs/src/keyboard.c 8753
end c-src/emacs/src/lisp.h 2039
+end tex-src/texinfo.tex /^\\def\\end{\\parsearg\\endxxx}$/
+enddoublecolumns tex-src/texinfo.tex /^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/
endtoken c-src/etags.c /^#define endtoken(c) (_etk[CHAR (c)]) \/* c ends tok/
+endxxx tex-src/texinfo.tex /^\\def\\endxxx #1{%$/
enter_critical_section c-src/h.h 116
entry perl-src/htlmify-cystic 218
entry perl-src/htlmify-cystic 234
@@ -2928,14 +2678,22 @@ entry perl-src/htlmify-cystic 268
entry perl-src/htlmify-cystic 276
entry perl-src/htlmify-cystic 281
entry perl-src/htlmify-cystic 296
+entry tex-src/texinfo.tex /^\\def\\entry #1#2{\\begingroup$/
+enumerate tex-src/texinfo.tex /^\\def\\enumerate{\\parsearg\\enumeratezzz}$/
+enumeratey tex-src/texinfo.tex /^\\def\\enumeratey #1 #2\\endenumeratey{%$/
+enumeratezzz tex-src/texinfo.tex /^\\def\\enumeratezzz #1{\\enumeratey #1 \\endenumerate/
equalsKey objcpp-src/SimpleCalc.M /^- equalsKey:sender$/
+equiv tex-src/texinfo.tex /^\\def\\equiv{\\realbackslash equiv}$/
+equiv tex-src/texinfo.tex /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
erlang_atom c-src/etags.c /^erlang_atom (char *s)$/
erlang_attribute c-src/etags.c /^erlang_attribute (char *s)$/
erlang_func c-src/etags.c /^erlang_func (char *s, char *last)$/
error c-src/etags.c /^static void error (const char *, ...) ATTRIBUTE_FO/
error c-src/etags.c /^error (const char *format, ...)$/
error c-src/emacs/src/lisp.h /^extern _Noreturn void error (const char *, ...) AT/
+error tex-src/texinfo.tex /^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/
error y-src/cccp.y /^error (msg)$/
+errorE tex-src/texinfo.tex /^\\def\\errorE#1{$/
error_signaled c-src/etags.c 264
etags el-src/emacs/lisp/progmodes/etags.el /^(defgroup etags nil "Tags tables."$/
etags html-src/software.html /^Etags$/
@@ -2958,11 +2716,31 @@ etags-xref-find-definitions-tag-order el-src/emacs/lisp/progmodes/etags.el /^(de
etags.1.man make-src/Makefile /^etags.1.man: etags.1$/
etags_getcwd c-src/etags.c /^etags_getcwd (void)$/
eval_dyn c-src/emacs/src/keyboard.c /^eval_dyn (Lisp_Object form)$/
+evenfooting tex-src/texinfo.tex /^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/
+evenfootingxxx tex-src/texinfo.tex /^\\gdef\\evenfootingxxx #1{\\evenfootingyyy #1@|@|@|@|/
+evenfootingyyy tex-src/texinfo.tex /^\\gdef\\evenfootingyyy #1@|#2@|#3@|#4\\finish{%$/
+evenheading tex-src/texinfo.tex /^\\def\\evenheading{\\parsearg\\evenheadingxxx}$/
+evenheadingxxx tex-src/texinfo.tex /^\\gdef\\evenheadingxxx #1{\\evenheadingyyy #1@|@|@|@|/
+evenheadingyyy tex-src/texinfo.tex /^\\gdef\\evenheadingyyy #1@|#2@|#3@|#4\\finish{%$/
event-convert-list c-src/emacs/src/keyboard.c /^DEFUN ("event-convert-list", Fevent_convert_list, /
event-symbol-parse-modifiers c-src/emacs/src/keyboard.c /^DEFUN ("internal-event-symbol-parse-modifiers", Fe/
event_head c-src/emacs/src/keyboard.c 11021
event_to_kboard c-src/emacs/src/keyboard.c /^event_to_kboard (struct input_event *event)$/
+everyfooting tex-src/texinfo.tex /^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/
+everyfootingxxx tex-src/texinfo.tex /^\\gdef\\everyfootingxxx #1{\\everyfootingyyy #1@|@|@|/
+everyfootingyyy tex-src/texinfo.tex /^\\gdef\\everyfootingyyy #1@|#2@|#3@|#4\\finish{%$/
+everyheading tex-src/texinfo.tex /^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/
+everyheadingxxx tex-src/texinfo.tex /^\\gdef\\everyheadingxxx #1{\\everyheadingyyy #1@|@|@|/
+everyheadingyyy tex-src/texinfo.tex /^\\gdef\\everyheadingyyy #1@|#2@|#3@|#4\\finish{%$/
+ewbot tex-src/texinfo.tex /^\\def\\ewbot{\\vrule height0pt depth\\cornerthick widt/
+ewtop tex-src/texinfo.tex /^\\def\\ewtop{\\vrule height\\cornerthick depth0pt widt/
exact c-src/emacs/src/gmalloc.c 200
+example tex-src/texinfo.tex /^\\let\\example=\\lisp$/
+exdent tex-src/texinfo.tex /^\\def\\exdent{\\parsearg\\exdentyyy}$/
+exdent tex-src/texinfo.tex /^\\let\\exdent=\\nofillexdent$/
+exdent tex-src/texinfo.tex /^\\let\\exdent=\\nofillexdent$/
+exdent tex-src/texinfo.tex /^\\let\\exdent=\\nofillexdent$/
+exdentyyy tex-src/texinfo.tex /^\\def\\exdentyyy #1{{\\hfil\\break\\hbox{\\kern -\\exdent/
execute cp-src/c.C /^ void execute(CPluginCSCState& p, int w, in/
exit c-src/exit.c /^DEFUN(exit, (status), int status)$/
exit c-src/exit.strange_suffix /^DEFUN(exit, (status), int status)$/
@@ -2975,10 +2753,14 @@ exp y-src/cccp.y 185
exp1 y-src/cccp.y 148
exp_list y-src/parse.y 263
expand-abbrev c-src/abbrev.c /^DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_ab/
+expandafter tex-src/texinfo.tex /^\\expandafter\\let\\expandafter\\synindexfoo\\expandaft/
+expandafter tex-src/texinfo.tex /^\\expandafter\\let\\expandafter\\synindexfoo\\expandaft/
expandmng prol-src/natded.prolog /^expandmng(var(V),var(V)).$/
expandmng_tree prol-src/natded.prolog /^expandmng_tree(tree(Rule,Syn:Sem,Trees),$/
expandmng_trees prol-src/natded.prolog /^expandmng_trees([],[]).$/
expandsyn prol-src/natded.prolog /^expandsyn(Syn,Syn):-$/
+expansion tex-src/texinfo.tex /^\\def\\expansion{\\realbackslash expansion}$/
+expansion tex-src/texinfo.tex /^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/
explicitly-quoted-pending-delete-mode el-src/TAGTEST.EL /^(defalias (quote explicitly-quoted-pending-delete-/
expression_value y-src/cccp.y 68
extras c-src/emacs/src/lisp.h 1603
@@ -3026,6 +2808,10 @@ fdp c-src/etags.c 217
ff cp-src/c.C /^ int ff(){return 1;};$/
field_of_play cp-src/conway.cpp 18
fignore c-src/etags.c 2416
+file tex-src/texinfo.tex /^\\let\\file=\\samp$/
+file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}%$/
+file tex-src/texinfo.tex /^\\let\\file=\\indexdummyfont$/
+file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}$/
file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun file-of-tag (&optional relative)$/
file-of-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar file-of-tag-function nil$/
fileJoin php-src/lce_functions.php /^ function fileJoin()$/
@@ -3034,6 +2820,7 @@ file_index perl-src/htlmify-cystic 33
file_tocs perl-src/htlmify-cystic 30
filename_is_absolute c-src/etags.c /^filename_is_absolute (char *fn)$/
filenames c-src/etags.c 196
+finalout tex-src/texinfo.tex /^\\def\\finalout{\\overfullrule=0pt}$/
find-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag (tagname &optional next-p regexp-p/
find-tag-default-function el-src/emacs/lisp/progmodes/etags.el /^(defcustom find-tag-default-function nil$/
find-tag-history el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-history nil) ; Doc string?$/
@@ -3056,21 +2843,33 @@ find-tag-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-tag-o
find_entries c-src/etags.c /^find_entries (FILE *inf)$/
find_user_signal_name c-src/emacs/src/keyboard.c /^find_user_signal_name (int sig)$/
findcats prol-src/natded.prolog /^findcats([],Left,Left).$/
+findex tex-src/texinfo.tex /^\\def\\findex {\\fnindex}$/
finish_appendices perl-src/htlmify-cystic /^sub finish_appendices ()$/
finish_sections perl-src/htlmify-cystic /^sub finish_sections ()$/
finish_subsections perl-src/htlmify-cystic /^sub finish_subsections ()$/
finish_subsubsections perl-src/htlmify-cystic /^sub finish_subsubsections ()$/
+finishtitlepage tex-src/texinfo.tex /^\\def\\finishtitlepage{%$/
finlist c-src/etags.c 2414
first c-src/emacs/src/gmalloc.c 151
+first tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
fitchtreelist prol-src/natded.prolog /^fitchtreelist([]).$/
fixup_locale c-src/emacs/src/lisp.h /^INLINE void fixup_locale (void) {}$/
flag c-src/getopt.h 83
flag2str pyt-src/server.py /^def flag2str(value, string):$/
flistseen c-src/etags.c 2415
+flushcr tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else /
+flushleft tex-src/texinfo.tex /^\\def\\flushleft{%$/
+flushright tex-src/texinfo.tex /^\\def\\flushright{%$/
fn c-src/exit.c /^ void EXFUN((*fn[1]), (NOARGS));$/
fn c-src/exit.strange_suffix /^ void EXFUN((*fn[1]), (NOARGS));$/
+fnheader tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
fnin y-src/parse.y 68
+fnitemindex tex-src/texinfo.tex /^\\def\\fnitemindex #1{\\doind {fn}{\\code{#1}}}%$/
+fnx\deffnheader tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
focus_set pyt-src/server.py /^ def focus_set(self):$/
+folio tex-src/texinfo.tex /^{\\let\\folio=0% Expand all macros now EXCEPT \\folio/
+folio tex-src/texinfo.tex /^{\\let\\folio=0%$/
+folio tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/
follow_key c-src/emacs/src/keyboard.c /^follow_key (Lisp_Object keymap, Lisp_Object key)$/
fonts tex-src/texinfo.tex /^\\obeyspaces \\obeylines \\ninett \\indexfonts \\rawbac/
fonts\rm tex-src/texinfo.tex /^ \\indexfonts\\rm \\tolerance=9500 \\advance\\baseline/
@@ -3098,11 +2897,15 @@ foobar c-src/c.c /^int foobar() {;}$/
foobar c.c /^extern void foobar (void) __attribute__ ((section /
foobar2 c-src/h.h 20
foobar2_ c-src/h.h 16
+footnote tex-src/texinfo.tex /^\\long\\gdef\\footnote #1{\\global\\advance \\footnoteno/
+footnotestyle tex-src/texinfo.tex /^\\let\\footnotestyle=\\comment$/
+footnotezzz tex-src/texinfo.tex /^\\long\\gdef\\footnotezzz #1{\\insert\\footins{$/
foperator c-src/etags.c 2411
force_auto_save_soon c-src/emacs/src/keyboard.c /^force_auto_save_soon (void)$/
force_explicit_name c-src/etags.c 265
force_quit_count c-src/emacs/src/keyboard.c 10387
foreign_export merc-src/accumulator.m /^:- pragma foreign_export("C", unravel_univ(in, out/
+format tex-src/texinfo.tex /^\\def\\format{\\begingroup\\inENV %This group ends at /
formatSize objc-src/PackInsp.m /^-(const char *)formatSize:(const char *)size inBuf/
found c-src/emacs/src/lisp.h 2344
fracas html-src/software.html /^Fracas$/
@@ -3119,8 +2922,12 @@ free_regexps c-src/etags.c /^free_regexps (void)$/
free_tree c-src/etags.c /^free_tree (register node *np)$/
free_var prol-src/natded.prolog /^free_var(var(V),var(V)).$/
freehook c-src/emacs/src/gmalloc.c /^freehook (void *ptr)$/
+frenchspacing tex-src/texinfo.tex /^\\def\\frenchspacing{\\sfcode46=1000 \\sfcode63=1000 \\/
+frenchspacing tex-src/texinfo.tex /^\\let\\frenchspacing=\\relax%$/
fresh_vars prol-src/natded.prolog /^fresh_vars(var(V),var(V)).$/
fstartlist c-src/etags.c 2413
+ftable tex-src/texinfo.tex /^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+ftablex tex-src/texinfo.tex /^\\gdef\\ftablex #1^^M{%$/
func c-src/emacs/src/lisp.h /^ void (*func) (Lisp_Object);$/
func c-src/emacs/src/lisp.h /^ void (*func) (void *);$/
func c-src/emacs/src/lisp.h /^ void (*func) (int);$/
@@ -3137,6 +2944,7 @@ function c-src/emacs/src/lisp.h 1685
function c-src/emacs/src/lisp.h 2197
function c-src/emacs/src/lisp.h 2985
functionp c-src/emacs/src/lisp.h /^functionp (Lisp_Object object)$/
+functionparens tex-src/texinfo.tex /^\\gdef\\functionparens{\\boldbrax\\let&=\\amprm\\parenco/
fval forth-src/test-forth.fth /^fconst fvalue fval$/
fvar forth-src/test-forth.fth /^fvariable fvar$/
fvdef c-src/etags.c 2418
@@ -3193,10 +3001,14 @@ ghi1 c-src/h.h 36
ghi2 c-src/h.h 39
giallo cp-src/c.C 40
glider cp-src/conway.cpp /^void glider(int x, int y)$/
+gloggingall tex-src/texinfo.tex /^\\def\\gloggingall{\\begingroup \\globaldefs = 1 \\logg/
gnu html-src/software.html /^Free software that I wrote for the GNU project or /
gobble_input c-src/emacs/src/keyboard.c /^gobble_input (void)$/
goto-tag-location-function el-src/emacs/lisp/progmodes/etags.el /^(defvar goto-tag-location-function nil$/
goto_xy cp-src/screen.cpp /^void goto_xy(unsigned char x, unsigned char y)$/
+group tex-src/texinfo.tex /^\\def\\group{\\begingroup$/
+gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}%$/
+gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}$/
handleList pyt-src/server.py /^ def handleList(self, event):$/
handleNew pyt-src/server.py /^ def handleNew(self, event):$/
handle_async_input c-src/emacs/src/keyboard.c /^handle_async_input (void)$/
@@ -3211,6 +3023,8 @@ hash c-src/etags.c /^hash (const char *str, int len)$/
hash c-src/emacs/src/lisp.h 1843
hash_table_test c-src/emacs/src/lisp.h 1805
hashfn c-src/emacs/src/lisp.h /^ EMACS_UINT (*hashfn) (struct hash_table_test *t,/
+hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}%$/
+hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/
hdr c-src/emacs/src/gmalloc.c 1860
head_table c-src/emacs/src/keyboard.c 11027
header c-src/emacs/src/lisp.h 1371
@@ -3220,6 +3034,8 @@ header c-src/emacs/src/lisp.h 1610
header c-src/emacs/src/lisp.h 1672
header c-src/emacs/src/lisp.h 1826
header_size c-src/emacs/src/lisp.h 1471
+heading tex-src/texinfo.tex /^\\def\\heading{\\parsearg\\secheadingi}$/
+headings tex-src/texinfo.tex /^\\def\\headings #1 {\\csname HEADINGS#1\\endcsname}$/
heapsize c-src/emacs/src/gmalloc.c 361
hello scm-src/test.scm /^(define hello "Hello, Emacs!")$/
hello scm-src/test.scm /^(set! hello "Hello, world!")$/
@@ -3231,6 +3047,10 @@ help_form_saved_window_configs c-src/emacs/src/keyboard.c 2156
helpwin pyt-src/server.py /^def helpwin(helpdict):$/
hide_cursor cp-src/screen.cpp /^void hide_cursor(void)$/
hlds merc-src/accumulator.m /^:- import_module hlds.$/
+hsize tex-src/texinfo.tex /^\\shipout\\vbox{{\\let\\hsize=\\pagewidth \\makeheadline/
+hsize tex-src/texinfo.tex /^{\\let\\hsize=\\pagewidth \\makefootline}}}%$/
+hsize tex-src/texinfo.tex /^ {\\let\\hsize=\\pagewidth \\makeheadline}$/
+hsize tex-src/texinfo.tex /^ {\\let\\hsize=\\pagewidth \\makefootline}}$/
htmltreelist prol-src/natded.prolog /^htmltreelist([]).$/
hybrid_aligned_alloc c-src/emacs/src/gmalloc.c /^hybrid_aligned_alloc (size_t alignment, size_t siz/
hybrid_calloc c-src/emacs/src/gmalloc.c /^hybrid_calloc (size_t nmemb, size_t size)$/
@@ -3245,31 +3065,87 @@ i c-src/emacs/src/lisp.h 567
i c-src/emacs/src/lisp.h 4673
i c-src/emacs/src/lisp.h 4679
i cp-src/c.C 132
+i tex-src/texinfo.tex /^\\let\\i=\\smartitalic$/
+i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}%$/
+i tex-src/texinfo.tex /^\\let\\i=\\indexdummyfont$/
+i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}$/
+i tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
ialpage tex-src/texinfo.tex /^\\newbox\\partialpage$/
+ialpage tex-src/texinfo.tex /^ \\output={\\global\\setbox\\partialpage=$/
ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\parti/
+ialpage tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/
ialpage tex-src/texinfo.tex /^ \\availdimen@=\\pageheight \\advance\\availdimen@ by/
ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\pa/
-ialpage= tex-src/texinfo.tex /^ \\output={\\global\\setbox\\partialpage=$/
identify_goal_type merc-src/accumulator.m /^:- pred identify_goal_type(pred_id::in, proc_id::i/
identify_out_and_out_prime merc-src/accumulator.m /^:- pred identify_out_and_out_prime(module_info::in/
identify_recursive_calls merc-src/accumulator.m /^:- pred identify_recursive_calls(pred_id::in, proc/
idx c-src/emacs/src/lisp.h 3150
+ifclear tex-src/texinfo.tex /^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/
+ifclearfail tex-src/texinfo.tex /^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/
+ifclearfailxxx tex-src/texinfo.tex /^\\long\\def\\ifclearfailxxx #1\\end ifclear{\\endgroup\\/
+ifclearxxx tex-src/texinfo.tex /^\\def\\ifclearxxx #1{\\endgroup$/
+ifinfo tex-src/texinfo.tex /^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/
+ifinfoxxx tex-src/texinfo.tex /^\\long\\def\\ifinfoxxx #1\\end ifinfo{\\endgroup\\ignore/
+ifset tex-src/texinfo.tex /^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/
+ifsetfail tex-src/texinfo.tex /^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/
+ifsetfailxxx tex-src/texinfo.tex /^\\long\\def\\ifsetfailxxx #1\\end ifset{\\endgroup\\igno/
+ifsetxxx tex-src/texinfo.tex /^\\def\\ifsetxxx #1{\\endgroup$/
+iftex tex-src/texinfo.tex /^\\def\\iftex{}$/
+ifusingtt tex-src/texinfo.tex /^\\def\\ifusingtt#1#2{\\ifdim \\fontdimen3\\the\\font=0pt/
+ignore tex-src/texinfo.tex /^\\def\\ignore{\\begingroup\\ignoresections$/
ignore_case c-src/etags.c 266
ignore_mouse_drag_p c-src/emacs/src/keyboard.c 1256
-ill=\relax tex-src/texinfo.tex /^\\let\\refill=\\relax$/
+ignoresections tex-src/texinfo.tex /^\\def\\ignoresections{%$/
+ignorexxx tex-src/texinfo.tex /^\\long\\def\\ignorexxx #1\\end ignore{\\endgroup\\ignore/
+ii tex-src/texinfo.tex /^\\def\\ii#1{{\\it #1}} % italic font$/
immediate_quit c-src/emacs/src/keyboard.c 174
impatto html-src/softwarelibero.html /^Impatto pratico del software libero$/
implementation merc-src/accumulator.m /^:- implementation.$/
+implicitmath tex-src/texinfo.tex /^\\let\\implicitmath = $$/
+inENV tex-src/texinfo.tex /^\\newif\\ifENV \\ENVfalse \\def\\inENV{\\ifENV\\relax\\els/
in_word_set c-src/etags.c /^in_word_set (register const char *str, register un/
inattribute c-src/etags.c 2400
inc cp-src/Range.h /^ double inc (void) const { return rng_inc; }$/
+include tex-src/texinfo.tex /^\\def\\include{\\parsearg\\includezzz}$/
+includezzz tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/
+indbf tex-src/texinfo.tex /^\\let\\indbf=\\indrm$/
index c-src/emacs/src/lisp.h 1856
+indexbackslash tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden during \\printin/
+indexbackslash tex-src/texinfo.tex /^ \\def\\indexbackslash{\\rawbackslashxx}$/
+indexdotfill tex-src/texinfo.tex /^\\def\\indexdotfill{\\cleaders$/
+indexdummies tex-src/texinfo.tex /^\\def\\indexdummies{%$/
+indexdummydots tex-src/texinfo.tex /^\\def\\indexdummydots{...}$/
+indexdummyfont tex-src/texinfo.tex /^\\def\\indexdummyfont#1{#1}$/
+indexdummytex tex-src/texinfo.tex /^\\def\\indexdummytex{TeX}$/
+indexfonts tex-src/texinfo.tex /^\\def\\indexfonts{%$/
+indexname tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
+indexname tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
+indexnofonts tex-src/texinfo.tex /^\\def\\indexnofonts{%$/
+indsc tex-src/texinfo.tex /^\\let\\indsc=\\indrm$/
+indsf tex-src/texinfo.tex /^\\let\\indsf=\\indrm$/
+indsl tex-src/texinfo.tex /^\\let\\indsl=\\indit$/
+indtt tex-src/texinfo.tex /^\\let\\indtt=\\ninett$/
infabsdir c-src/etags.c 206
infabsname c-src/etags.c 205
infiles make-src/Makefile /^infiles = $(filter-out ${NONSRCS},${SRCS}) srclist/
infname c-src/etags.c 204
info c-src/emacs/src/gmalloc.c 157
infoPanel objcpp-src/SimpleCalc.M /^- infoPanel:sender$/
+infoappendix tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
+infoappendixsec tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
+infoappendixsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
+infoappendixsubsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
+infochapter tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/
+inforef tex-src/texinfo.tex /^\\def\\inforef #1{\\inforefzzz #1,,,,**}$/
+inforefzzz tex-src/texinfo.tex /^\\def\\inforefzzz #1,#2,#3,#4**{See Info file \\file{/
+infosection tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/
+infosubsection tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
+infosubsubsection tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
+infotop tex-src/texinfo.tex /^\\def\\infotop{\\parsearg\\unnumberedzzz}$/
+infounnumbered tex-src/texinfo.tex /^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/
+infounnumberedsec tex-src/texinfo.tex /^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/
+infounnumberedsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/
+infounnumberedsubsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/
init c-src/etags.c /^init (void)$/
init objc-src/Subprocess.m /^- init:(const char *)subprocessString$/
init objc-src/Subprocess.m /^ andStdErr:(BOOL)wantsStdErr$/
@@ -3281,6 +3157,7 @@ init_registry cp-src/clheir.cpp /^void init_registry(void)$/
init_tool_bar_items c-src/emacs/src/keyboard.c /^init_tool_bar_items (Lisp_Object reuse)$/
inita c.c /^static void inita () {}$/
initb c.c /^static void initb () {}$/
+initial tex-src/texinfo.tex /^\\def\\initial #1{%$/
initial_kboard c-src/emacs/src/keyboard.c 84
initialize-new-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun initialize-new-tags-table ()$/
initialize_goal_store merc-src/accumulator.m /^:- func initialize_goal_store(list(hlds_goal), ins/
@@ -3312,7 +3189,14 @@ interface merc-src/accumulator.m /^:- interface.$/
interface_locate c-src/c.c /^interface_locate(void)$/
intern c-src/emacs/src/lisp.h /^intern (const char *str)$/
intern_c_string c-src/emacs/src/lisp.h /^intern_c_string (const char *str)$/
+internalBitem tex-src/texinfo.tex /^\\def\\internalBitem{\\smallbreak \\parsearg\\itemzzz}$/
+internalBitemx tex-src/texinfo.tex /^\\def\\internalBitemx{\\par \\parsearg\\itemzzz}$/
+internalBkitem tex-src/texinfo.tex /^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/
+internalBkitemx tex-src/texinfo.tex /^\\def\\internalBkitemx{\\par \\parsearg\\kitemzzz}$/
+internalBxitem tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/
+internalBxitemx tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/
internal_last_event_frame c-src/emacs/src/keyboard.c 228
+internalsetq tex-src/texinfo.tex /^\\def\\internalsetq #1#2{'xrdef {#1}{\\csname #2\\endc/
interned c-src/emacs/src/lisp.h 672
interpreters c-src/etags.c 197
interrupt_input c-src/emacs/src/keyboard.c 328
@@ -3347,9 +3231,28 @@ iso_lispy_function_keys c-src/emacs/src/keyboard.c 5151
isoperator prol-src/natded.prolog /^isoperator(Char):-$/
isoptab prol-src/natded.prolog /^isoptab('%').$/
iswhite c-src/etags.c /^#define iswhite(c) (_wht[CHAR (c)]) \/* c is white /
+item tex-src/texinfo.tex /^\\def\\item{\\errmessage{@item while not in a table}}/
+item tex-src/texinfo.tex /^\\let\\item = \\internalBitem %$/
+item tex-src/texinfo.tex /^\\let\\item=\\itemizeitem}$/
item_properties c-src/emacs/src/keyboard.c 7568
+itemcontents tex-src/texinfo.tex /^\\def\\itemcontents{#1}%$/
+itemfont tex-src/texinfo.tex /^\\def\\itemfont{#2}%$/
+itemindex tex-src/texinfo.tex /^\\let\\itemindex=#1%$/
+itemize tex-src/texinfo.tex /^\\def\\itemize{\\parsearg\\itemizezzz}$/
+itemizeitem tex-src/texinfo.tex /^\\def\\itemizeitem{%$/
+itemizey tex-src/texinfo.tex /^\\def\\itemizey #1#2{%$/
+itemizezzz tex-src/texinfo.tex /^\\def\\itemizezzz #1{%$/
+itemx tex-src/texinfo.tex /^\\def\\itemx{\\errmessage{@itemx while not in a table/
+itemx tex-src/texinfo.tex /^\\let\\itemx = \\internalBitemx %$/
+itemzzz tex-src/texinfo.tex /^\\def\\itemzzz #1{\\begingroup %$/
+ivarheader tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+ivarx\defivarheader tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
jmp c-src/emacs/src/lisp.h 3044
just_read_file c-src/etags.c /^just_read_file (FILE *inf)$/
+kbd tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
+kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/
+kbd tex-src/texinfo.tex /^\\let\\kbd=\\indexdummyfont$/
+kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/
kbd_buffer c-src/emacs/src/keyboard.c 291
kbd_buffer_events_waiting c-src/emacs/src/keyboard.c /^kbd_buffer_events_waiting (void)$/
kbd_buffer_get_event c-src/emacs/src/keyboard.c /^kbd_buffer_get_event (KBOARD **kbp,$/
@@ -3360,9 +3263,14 @@ kbd_buffer_store_help_event c-src/emacs/src/keyboard.c /^kbd_buffer_store_help_e
kbd_buffer_unget_event c-src/emacs/src/keyboard.c /^kbd_buffer_unget_event (register struct input_even/
kbd_fetch_ptr c-src/emacs/src/keyboard.c 297
kbd_store_ptr c-src/emacs/src/keyboard.c 302
+kbdfoo tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
kboard c-src/emacs/src/keyboard.c 860
kboard_stack c-src/emacs/src/keyboard.c 858
kboard_stack c-src/emacs/src/keyboard.c 864
+key tex-src/texinfo.tex /^\\def\\key #1{{\\tt \\exhyphenpenalty=10000\\uppercase{/
+key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}%$/
+key tex-src/texinfo.tex /^\\let\\key=\\indexdummyfont$/
+key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}$/
key_and_value c-src/emacs/src/lisp.h 1868
keyremap c-src/emacs/src/keyboard.c 8742
keyremap c-src/emacs/src/keyboard.c 8754
@@ -3377,6 +3285,12 @@ keywords y-src/cccp.y 114
keywords y-src/cccp.y 306
kind c-src/emacs/src/keyboard.c 11024
kind c-src/h.h 46
+kindex tex-src/texinfo.tex /^\\def\\kindex {\\kyindex}$/
+kitem tex-src/texinfo.tex /^\\def\\kitem{\\errmessage{@kitem while not in a table/
+kitem tex-src/texinfo.tex /^\\let\\kitem = \\internalBkitem %$/
+kitemx tex-src/texinfo.tex /^\\def\\kitemx{\\errmessage{@kitemx while not in a tab/
+kitemx tex-src/texinfo.tex /^\\let\\kitemx = \\internalBkitemx %$/
+kitemzzz tex-src/texinfo.tex /^\\def\\kitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
kset_echo_string c-src/emacs/src/keyboard.c /^kset_echo_string (struct kboard *kb, Lisp_Object v/
kset_kbd_queue c-src/emacs/src/keyboard.c /^kset_kbd_queue (struct kboard *kb, Lisp_Object val/
kset_keyboard_translate_table c-src/emacs/src/keyboard.c /^kset_keyboard_translate_table (struct kboard *kb, /
@@ -3386,6 +3300,9 @@ kset_local_function_key_map c-src/emacs/src/keyboard.c /^kset_local_function_key
kset_overriding_terminal_local_map c-src/emacs/src/keyboard.c /^kset_overriding_terminal_local_map (struct kboard /
kset_real_last_command c-src/emacs/src/keyboard.c /^kset_real_last_command (struct kboard *kb, Lisp_Ob/
kset_system_key_syms c-src/emacs/src/keyboard.c /^kset_system_key_syms (struct kboard *kb, Lisp_Obje/
+l tex-src/texinfo.tex /^\\def\\l#1{{\\li #1}\\null} % $/
+l tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+labelspace tex-src/texinfo.tex /^\\def\\labelspace{\\hskip1em \\relax}$/
lang c-src/etags.c 208
lang c-src/etags.c 251
lang c-src/etags.c 259
@@ -3404,9 +3321,16 @@ last_state_size c-src/emacs/src/gmalloc.c 401
last_undo_boundary c-src/emacs/src/keyboard.c 1287
lasta c.c 272
lastargmargin tex-src/texinfo.tex /^\\newskip\\deflastargmargin \\deflastargmargin=18pt$/
+lastargmargin tex-src/texinfo.tex /^\\newskip\\deflastargmargin \\deflastargmargin=18pt$/
lastargmargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip \\deflastargmargin{\\rm #2}\\hs/
lastb c.c 278
+lastnode tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
+lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax$/
+lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax}$/
+lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax}$/
+lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax}$/
lb c-src/etags.c 2923
+lbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/
lbs c-src/etags.c 2924
lce php-src/lce_functions.php /^ function lce()$/
lce php-src/lce_functions.php /^ function lce()$/
@@ -3426,7 +3350,10 @@ len c-src/etags.c 237
length c-src/etags.c 2495
length y-src/cccp.y 44
length y-src/cccp.y 113
+less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}%$/
+less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}$/
let c-src/emacs/src/lisp.h 2981
+letter tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1 \\message{Appendix/
letter tex-src/texinfo.tex /^\\chapmacro {#1}{Appendix \\appendixletter}%$/
letter tex-src/texinfo.tex /^ {#1}{Appendix \\appendixletter}{\\noexpand\\folio}}/
letter tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\appendixlet/
@@ -3439,6 +3366,7 @@ letter: tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix \\appendixletter: \\n
level c-src/emacs/src/lisp.h 3153
lex prol-src/natded.prolog /^lex(W,SynOut,Sem):-$/
lexptr y-src/cccp.y 332
+li tex-src/texinfo.tex /^\\let\\li = \\sf % Sometimes we call it \\li, not \\sf./
libs merc-src/accumulator.m /^:- import_module libs.$/
licenze html-src/softwarelibero.html /^Licenze d'uso di un programma$/
limit cp-src/Range.h /^ double limit (void) const { return rng_limit; }$/
@@ -3451,9 +3379,12 @@ linebuffer_init c-src/etags.c /^linebuffer_init (linebuffer *lbp)$/
linebuffer_setlen c-src/etags.c /^linebuffer_setlen (linebuffer *lbp, int toksize)$/
lineno c-src/etags.c 2506
lineno c-src/emacs/src/lisp.h 3147
+linenumber tex-src/texinfo.tex /^ \\let\\linenumber = \\empty % Non-3.0.$/
+linenumber tex-src/texinfo.tex /^ \\def\\linenumber{\\the\\inputlineno:\\space}$/
linepos c-src/etags.c 2507
linepos c-src/etags.c 2922
links html-src/software.html /^Links to interesting software$/
+lisp tex-src/texinfo.tex /^\\def\\lisp{\\aboveenvbreak$/
lisp_eval_depth c-src/emacs/src/lisp.h 3045
lisp_h_CHECK_LIST_CONS c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (C/
lisp_h_CHECK_NUMBER c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGER/
@@ -3487,6 +3418,7 @@ lisp_h_XTYPE c-src/emacs/src/lisp.h /^# define lisp_h_XTYPE(a) ((enum Lisp_Type)
lisp_h_XUNTAG c-src/emacs/src/lisp.h /^# define lisp_h_XUNTAG(a, type) ((void *) (intptr_/
lisp_h_check_cons_list c-src/emacs/src/lisp.h /^# define lisp_h_check_cons_list() ((void) 0)$/
lisp_h_make_number c-src/emacs/src/lisp.h /^# define lisp_h_make_number(n) \\$/
+lisppar tex-src/texinfo.tex /^\\gdef\\lisppar{\\null\\endgraf}}$/
lispy_accent_codes c-src/emacs/src/keyboard.c 4634
lispy_accent_keys c-src/emacs/src/keyboard.c 4741
lispy_drag_n_drop_names c-src/emacs/src/keyboard.c 5181
@@ -3513,18 +3445,29 @@ loadPORManager php-src/lce_functions.php /^ function &loadPORManager()$/
local_if_set c-src/emacs/src/lisp.h 2338
location cp-src/clheir.hpp 33
location cp-src/clheir.hpp /^ location() { }$/
+loggingall tex-src/texinfo.tex /^\\def\\loggingall{\\tracingcommands2 \\tracingstats2 $/
+look tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
lookup y-src/cccp.y /^lookup (name, len, hash)$/
lookup_call merc-src/accumulator.m /^:- pred lookup_call(accu_goal_store::in, accu_goal/
+losespace tex-src/texinfo.tex /^\\def\\losespace #1{#1}$/
lowcase c-src/etags.c /^#define lowcase(c) tolower (CHAR (c))$/
+lowercaseenumerate tex-src/texinfo.tex /^\\def\\lowercaseenumerate{%$/
lucid_event_type_list_p c-src/emacs/src/keyboard.c /^lucid_event_type_list_p (Lisp_Object object)$/
+lvvmode tex-src/texinfo.tex /^\\def\\lvvmode{\\vbox to 0pt{}}$/
mabort c-src/emacs/src/gmalloc.c /^mabort (enum mcheck_status status)$/
mach_host_self c-src/machsyscalls.h /^SYSCALL (mach_host_self, -29,$/
mach_msg_trap c-src/machsyscalls.h /^SYSCALL (mach_msg_trap, -25,$/
mach_reply_port c-src/machsyscalls.h /^SYSCALL (mach_reply_port, -26,$/
mach_task_self c-src/machsyscalls.h /^SYSCALL (mach_task_self, -28,$/
mach_thread_self c-src/machsyscalls.h /^SYSCALL (mach_thread_self, -27,$/
+macheader tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+macx\defmacheader tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
magic c-src/emacs/src/gmalloc.c 1863
+mainmagstep tex-src/texinfo.tex /^\\let\\mainmagstep=\\magstephalf$/
+mainmagstep tex-src/texinfo.tex /^\\let\\mainmagstep=\\magstep1$/
maintaining.info make-src/Makefile /^maintaining.info: maintaining.texi$/
+majorheading tex-src/texinfo.tex /^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/
+majorheadingzzz tex-src/texinfo.tex /^\\def\\majorheadingzzz #1{%$/
make-abbrev-table c-src/abbrev.c /^DEFUN ("make-abbrev-table", Fmake_abbrev_table, Sm/
make_C_tag c-src/etags.c /^make_C_tag (bool isfun)$/
make_coor prol-src/natded.prolog /^make_coor(s(_),Alpha,Sem1,Sem2,Alpha@Sem1@Sem2).$/
@@ -3565,6 +3508,7 @@ map_word prol-src/natded.prolog /^map_word([[_]|Ws],Exp):-$/
mapping html-src/algrthms.html /^Mapping the Channel Symbols$/
mapsyn prol-src/natded.prolog /^mapsyn(A\/B,AM\/BM):-$/
mark_kboards c-src/emacs/src/keyboard.c /^mark_kboards (void)$/
+math tex-src/texinfo.tex /^\\def\\math#1{\\implicitmath #1\\implicitmath}$/
max c.c /^max (int a, int b)$/
max c.c /^__attribute__ ((always_inline)) max (int a, int b)/
max c-src/emacs/src/lisp.h 58
@@ -3587,6 +3531,7 @@ memalign c-src/emacs/src/gmalloc.c /^memalign (size_t alignment, size_t size)$/
member prol-src/natded.prolog /^member(X,[X|_]).$/
member_lessthan_goalid merc-src/accumulator.m /^:- pred member_lessthan_goalid(accu_goal_store::in/
memclear c-src/emacs/src/lisp.h /^memclear (void *p, ptrdiff_t nbytes)$/
+menu tex-src/texinfo.tex /^\\long\\def\\menu #1\\end menu{}$/
menu_bar_item c-src/emacs/src/keyboard.c /^menu_bar_item (Lisp_Object key, Lisp_Object item, /
menu_bar_items c-src/emacs/src/keyboard.c /^menu_bar_items (Lisp_Object old)$/
menu_bar_items_index c-src/emacs/src/keyboard.c 7369
@@ -3596,6 +3541,11 @@ menu_item_eval_property c-src/emacs/src/keyboard.c /^menu_item_eval_property (Li
menu_item_eval_property_1 c-src/emacs/src/keyboard.c /^menu_item_eval_property_1 (Lisp_Object arg)$/
menu_separator_name_p c-src/emacs/src/keyboard.c /^menu_separator_name_p (const char *label)$/
metasource c-src/etags.c 198
+methodheader tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+methodx\defmethodheader tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+methparsebody\Edeffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
+methparsebody\Edefmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+methparsebody\Edeftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
min c-src/emacs/src/gmalloc.c /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
min c-src/emacs/src/lisp.h 57
min c-src/emacs/src/lisp.h /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
@@ -3603,6 +3553,7 @@ min cp-src/conway.cpp /^#define min(x,y) ((x > y) ? y : x)$/
min_args c-src/emacs/src/lisp.h 1686
min_char c-src/emacs/src/lisp.h 1621
minus cp-src/functions.cpp /^void Date::minus ( int days , int month , int year/
+minus tex-src/texinfo.tex /^\\def\\minus{$-$}$/
miti html-src/softwarelibero.html /^Sfatiamo alcuni miti$/
modifier_names c-src/emacs/src/keyboard.c 6319
modifier_symbols c-src/emacs/src/keyboard.c 6327
@@ -3628,7 +3579,9 @@ my_struct c.c 226
my_struct c-src/h.h 91
my_typedef c.c 228
my_typedef c-src/h.h 93
+mylbrace tex-src/texinfo.tex /^\\def\\mylbrace {{\\tt \\char '173}}$/
mypi forth-src/test-forth.fth /^synonym mypi fconst$/
+myrbrace tex-src/texinfo.tex /^\\def\\myrbrace {{\\tt \\char '175}}$/
n c-src/exit.c 28
n c-src/exit.strange_suffix 28
name c-src/getopt.h 76
@@ -3642,6 +3595,8 @@ name c-src/emacs/src/lisp.h 682
name c-src/emacs/src/lisp.h 1808
name c-src/emacs/src/lisp.h 3144
name perl-src/htlmify-cystic 357
+name tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/
+name tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/
name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defunargs{#3}\\endgrou/
name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Function}%$/
name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1} #2}{Function}%$/
@@ -3664,16 +3619,21 @@ name y-src/cccp.y 113
named c-src/etags.c 2505
namestringequal pas-src/common.pas /^function namestringequal;(*(var Name1,Name2 : Name/
nargs c-src/emacs/src/lisp.h 2987
+need tex-src/texinfo.tex /^\\def\\need{\\parsearg\\needx}$/
need_adjustment c-src/emacs/src/lisp.h 1986
+needx tex-src/texinfo.tex /^\\def\\needx#1{%$/
neighbors cp-src/clheir.hpp 59
nelem cp-src/Range.h /^ int nelem (void) const { return rng_nelem; }$/
nestlev c-src/etags.c 2525
new objc-src/PackInsp.m /^+new$/
new perl-src/htlmify-cystic 163
new_tag perl-src/htlmify-cystic 18
+newcodeindex tex-src/texinfo.tex /^\\def\\newcodeindex #1{$/
+newindex tex-src/texinfo.tex /^\\def\\newindex #1{$/
newlb c-src/etags.c 2930
newlinepos c-src/etags.c 2932
newtextstring pas-src/common.pas /^function newtextstring; (*: TextString;*)$/
+newwrite tex-src/texinfo.tex /^\\gdef\\newwrite{\\alloc@7\\write\\chardef\\sixt@@n}}$/
next c.c 174
next c-src/etags.c 203
next c-src/emacs/src/gmalloc.c 164
@@ -3688,6 +3648,16 @@ next c-src/emacs/src/lisp.h 2037
next c-src/emacs/src/lisp.h 2192
next c-src/emacs/src/lisp.h 3028
next c-src/emacs/src/lisp.h 3134
+next tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/
+next tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else /
+next tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else /
+next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+next tex-src/texinfo.tex /^\\edef\\next{\\write\\auxfile{\\internalsetq {#1}{#2}}}/
next y-src/cccp.y 42
next-file el-src/emacs/lisp/progmodes/etags.el /^(defun next-file (&optional initialize novisit)$/
next-file-list el-src/emacs/lisp/progmodes/etags.el /^(defvar next-file-list nil$/
@@ -3698,41 +3668,65 @@ next_weak c-src/emacs/src/lisp.h 1875
nextfree c-src/emacs/src/lisp.h 3029
nfree c-src/emacs/src/gmalloc.c 150
nl c-src/etags.c 2521
+nm tex-src/testenv.tex /^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/
no tex-src/texinfo.tex /^\\newcount \\appendixno \\appendixno = `\\@$/
+no tex-src/texinfo.tex /^\\newcount \\appendixno \\appendixno = `\\@$/
+no tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/
no tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1 \\message{Appendix/
no tex-src/texinfo.tex /^\\ifnum\\secno=0 Appendix\\xreftie'char\\the\\appendixn/
-no.\the\secno tex-src/texinfo.tex /^\\else \\ifnum \\subsecno=0 Section\\xreftie'char\\the\\/
-no.\the\secno.\the\subsecno tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
-no.\the\secno.\the\subsecno.\the\subsubsecno tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no.\the tex-src/texinfo.tex /^\\else \\ifnum \\subsecno=0 Section\\xreftie'char\\the\\/
+no.\the tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no.\the tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
no_argument c-src/getopt.h 89
no_lang_help c-src/etags.c 707
no_sub c-src/emacs/src/regex.h 387
nocase_tail c-src/etags.c /^nocase_tail (const char *cp)$/
node c-src/etags.c 225
+node tex-src/texinfo.tex /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/
node_st c-src/etags.c 214
noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
+nodexxx tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
+nodezzz tex-src/texinfo.tex /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/
+nofillexdent tex-src/texinfo.tex /^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/
+nofillexdentyyy tex-src/texinfo.tex /^\\def\\nofillexdentyyy #1{{\\advance \\leftskip by -\\e/
nofonts tex-src/texinfo.tex /^{\\indexnofonts$/
nofonts tex-src/texinfo.tex /^{\\indexnofonts$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
+nonarrowing tex-src/texinfo.tex /^\\let\\nonarrowing=\\relax$/
+nonarrowing tex-src/texinfo.tex /^ \\let\\nonarrowing=\\comment$/
+nonarrowing tex-src/texinfo.tex /^\\let\\nonarrowing=\\relax$/
+nonarrowing tex-src/texinfo.tex /^\\let\\nonarrowing=\\relax$/
+nonarrowing tex-src/texinfo.tex /^\\let\\nonarrowing=\\relax$/
+nonarrowing tex-src/texinfo.tex /^\\let\\nonarrowing=\\relax$/
none_help c-src/etags.c 703
+normalbackslash tex-src/texinfo.tex /^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/
+normalcaret tex-src/texinfo.tex /^\\def\\normalcaret{^}$/
+normaldoublequote tex-src/texinfo.tex /^\\def\\normaldoublequote{"}$/
+normalgreater tex-src/texinfo.tex /^\\def\\normalgreater{>}$/
normalize prol-src/natded.prolog /^normalize(M,MNorm):-$/
normalize_fresh prol-src/natded.prolog /^normalize_fresh(M,N):-$/
normalize_tree prol-src/natded.prolog /^normalize_tree(tree(Rule,Syn:Sem,Trees),$/
normalize_trees prol-src/natded.prolog /^normalize_trees([],[]).$/
+normalless tex-src/texinfo.tex /^\\def\\normalless{<}$/
+normalparens tex-src/texinfo.tex /^\\gdef\\normalparens{\\boldbrax\\let&=\\ampnr}$/
+normalplus tex-src/texinfo.tex /^\\def\\normalplus{+}$/
+normaltilde tex-src/texinfo.tex /^\\def\\normaltilde{~}$/
+normalunderscore tex-src/texinfo.tex /^\\def\\normalunderscore{_}$/
+normalverticalbar tex-src/texinfo.tex /^\\def\\normalverticalbar{|}$/
nosave pyt-src/server.py /^ def nosave(self):$/
nosave pyt-src/server.py /^ def nosave(self):$/
nosave pyt-src/server.py /^ def nosave(self):$/
@@ -3745,6 +3739,8 @@ notag4 c-src/torture.c 45
notag4 c-src/dostorture.c 45
notinname c-src/etags.c /^#define notinname(c) (_nin[CHAR (c)]) \/* c is not /
npending c-src/emacs/src/keyboard.c 7244
+nsbot tex-src/texinfo.tex /^\\def\\nsbot{\\vbox$/
+nstop tex-src/texinfo.tex /^\\def\\nstop{\\vbox$/
ntool_bar_items c-src/emacs/src/keyboard.c 7974
numOfChannels cp-src/c.C 1
num_columns cp-src/conway.cpp 16
@@ -3753,8 +3749,15 @@ num_regs c-src/emacs/src/regex.h 430
num_rows cp-src/conway.cpp 15
numberKeys objcpp-src/SimpleCalc.M /^- numberKeys:sender$/
number_len c-src/etags.c /^static int number_len (long) ATTRIBUTE_CONST;$/
+numberedsec tex-src/texinfo.tex /^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/
+numberedsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/
+numberedsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubseczzz #1{\\seccheck{subsection}%$/
+numberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/
+numberedsubsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubsubseczzz #1{\\seccheck{subsubsecti/
numbervars prol-src/natded.prolog /^numbervars(X):-$/
+numericenumerate tex-src/texinfo.tex /^\\def\\numericenumerate{%$/
nvars c-src/emacs/src/lisp.h 3140
+obeyedspace tex-src/texinfo.tex /^\\gdef\\obeyedspace{\\ }$/
objdef c-src/etags.c 2484
object c-src/emacs/src/lisp.h 2128
object_registry cp-src/clheir.cpp 10
@@ -3765,6 +3768,12 @@ obstack_chunk_free y-src/parse.y 48
ocatseen c-src/etags.c 2477
octave_MDiagArray2_h cp-src/MDiagArray2.h 29
octave_Range_h cp-src/Range.h 24
+oddfooting tex-src/texinfo.tex /^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/
+oddfootingxxx tex-src/texinfo.tex /^\\gdef\\oddfootingxxx #1{\\oddfootingyyy #1@|@|@|@|\\f/
+oddfootingyyy tex-src/texinfo.tex /^\\gdef\\oddfootingyyy #1@|#2@|#3@|#4\\finish{%$/
+oddheading tex-src/texinfo.tex /^\\def\\oddheading{\\parsearg\\oddheadingxxx}$/
+oddheadingxxx tex-src/texinfo.tex /^\\gdef\\oddheadingxxx #1{\\oddheadingyyy #1@|@|@|@|\\f/
+oddheadingyyy tex-src/texinfo.tex /^\\gdef\\oddheadingyyy #1@|#2@|#3@|#4\\finish{%$/
oediff make-src/Makefile /^oediff: OTAGS ETAGS ${infiles}$/
offset c-src/etags.c 2494
offset c-src/emacs/src/lisp.h 2305
@@ -3775,15 +3784,21 @@ oinbody c-src/etags.c 2478
ok objc-src/PackInsp.m /^-ok:sender$/
ok_to_echo_at_next_pause c-src/emacs/src/keyboard.c 159
old_value c-src/emacs/src/lisp.h 2980
+oldpage tex-src/texinfo.tex /^ \\let\\oldpage = \\page$/
omethodcolon c-src/etags.c 2481
omethodparm c-src/etags.c 2482
omethodsign c-src/etags.c 2479
omethodtag c-src/etags.c 2480
+one tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+onepageout tex-src/texinfo.tex /^\\def\\onepageout#1{\\hoffset=\\normaloffset$/
+onepageout tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
onone c-src/etags.c 2472
oparenseen c-src/etags.c 2476
open objc-src/PackInsp.m /^-open:sender$/
open-dribble-file c-src/emacs/src/keyboard.c /^DEFUN ("open-dribble-file", Fopen_dribble_file, So/
openInWorkspace objc-src/PackInsp.m /^static void openInWorkspace(const char *filename)$/
+opencontents tex-src/texinfo.tex /^\\def\\opencontents{\\openout \\contentsfile = \\jobnam/
+openindices tex-src/texinfo.tex /^\\def\\openindices{%$/
operationKeys objcpp-src/SimpleCalc.M /^- operationKeys:sender$/
operator y-src/cccp.y 438
operator ++ cp-src/functions.cpp /^Date & Date::operator ++ ( void ){$/
@@ -3805,11 +3820,20 @@ operator int cp-src/fail.C /^ operator int() const {return x;}$/
operator+ cp-src/c.C /^const A& A::operator+(const A&) { }$/
operator+ cp-src/c.C /^void operator+(int, int) {}$/
operator+ cp-src/c.C /^ A operator+(A& a) {};$/
-opparsebody\Edefop\defopx\defopheader\defoptype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+opheader\defoptype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+opnested tex-src/texinfo.tex /^\\gdef\\opnested{\\char`\\(\\global\\advance\\parencount /
+opnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
+opparsebody\Edefop tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+oprm tex-src/texinfo.tex /^\\gdef\\oprm#1 {{\\rm\\char`\\(}#1 \\bf \\let(=\\opnested /
oprotocol c-src/etags.c 2473
+optheader tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
option c-src/getopt.h 73
optional_argument c-src/getopt.h 91
-opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+optx\defoptheader tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+optype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+optype tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defoptype{} on #1}%$/
+opvarparsebody\Edefcv tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+opx\defopheader tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
ord_add_element prol-src/ordsets.prolog /^ord_add_element([], Element, [Element]).$/
ord_del_element prol-src/ordsets.prolog /^ord_del_element([], _, []).$/
ord_disjoint prol-src/ordsets.prolog /^ord_disjoint(Set1, Set2) :-$/
@@ -3855,8 +3879,25 @@ pMd c-src/emacs/src/lisp.h 155
pMu c-src/emacs/src/lisp.h 151
pMu c-src/emacs/src/lisp.h 156
p_next c-src/etags.c 258
+page tex-src/texinfo.tex /^\\def\\page{\\par\\vfill\\supereject}$/
+page tex-src/texinfo.tex /^ \\def\\page{%$/
+page tex-src/texinfo.tex /^ \\let\\page = \\oldpage$/
+pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chappager}$/
+pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chappager$/
+pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chapoddpage$/
+pagebody tex-src/texinfo.tex /^\\def\\pagebody#1{\\vbox to\\pageheight{\\boxmaxdepth=\\/
+pagecontents tex-src/texinfo.tex /^\\gdef\\pagecontents#1{\\ifvoid\\topins\\else\\unvbox\\to/
pagesize c-src/emacs/src/gmalloc.c 1703
+pagesofar tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/
pair merc-src/accumulator.m /^:- import_module pair.$/
+par tex-src/texinfo.tex /^{\\let\\par=\\endgraf \\smallbreak}%$/
+par tex-src/texinfo.tex /^\\let\\par=\\lisppar$/
+par tex-src/texinfo.tex /^\\let\\par=\\lisppar$/
+par tex-src/texinfo.tex /^\\let\\par=\\lisppar$/
+par tex-src/texinfo.tex /^\\let\\par=\\lisppar$/
+par tex-src/texinfo.tex /^\\let\\par=\\lisppar$/
+par tex-src/texinfo.tex /^\\let\\par=\\lisppar$/
+paragraphindent tex-src/texinfo.tex /^\\let\\paragraphindent=\\comment$/
parent c-src/emacs/src/keyboard.c 8745
parent c-src/emacs/src/lisp.h 1590
parse prol-src/natded.prolog /^parse(Ws,Cat):-$/
@@ -3875,8 +3916,20 @@ parse_return_error y-src/cccp.y 70
parse_solitary_modifier c-src/emacs/src/keyboard.c /^parse_solitary_modifier (Lisp_Object symbol)$/
parse_tool_bar_item c-src/emacs/src/keyboard.c /^parse_tool_bar_item (Lisp_Object key, Lisp_Object /
parse_tree merc-src/accumulator.m /^:- import_module parse_tree.$/
+parsearg tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/
+parseargdiscardspace tex-src/texinfo.tex /^\\gdef\\parseargdiscardspace {\\begingroup\\obeylines\\/
+parseargline tex-src/texinfo.tex /^\\def\\parseargline{\\begingroup \\obeylines \\parsearg/
+parsearglinex tex-src/texinfo.tex /^\\gdef\\parsearglinex #1^^M{\\endgroup \\next {#1}}}$/
+parseargx tex-src/texinfo.tex /^\\def\\parseargx{%$/
+parsebody\Edefmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+parsebody\Edefspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
+parsebody\Edeftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+parsebody\Edefun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
pat c-src/etags.c 262
pattern c-src/etags.c 260
+pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chapbreak$/
+pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chappager$/
+pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chapoddpage$/
pdlcount c-src/emacs/src/lisp.h 3046
pending-delete-mode el-src/TAGTEST.EL /^(defalias 'pending-delete-mode 'delete-selection-m/
pending_funcalls c-src/emacs/src/keyboard.c 4377
@@ -3884,16 +3937,19 @@ pending_signals c-src/emacs/src/keyboard.c 80
pfatal c-src/etags.c /^pfatal (const char *s1)$/
pfdset c-src/h.h 57
pfnote c-src/etags.c /^pfnote (char *name, bool is_func, char *linestart,/
+pindex tex-src/texinfo.tex /^\\def\\pindex {\\pgindex}$/
pinned c-src/emacs/src/lisp.h 679
plain_C_entries c-src/etags.c /^plain_C_entries (FILE *inf)$/
plain_C_suffixes c-src/etags.c 643
plainc c-src/etags.c 2934
+plainsecheading tex-src/texinfo.tex /^\\def\\plainsecheading #1{\\secheadingi {#1}}$/
plist c-src/emacs/src/lisp.h 697
plist c-src/emacs/src/lisp.h 2040
plus cp-src/functions.cpp /^void Date::plus ( int days , int month , int year /
plus go-src/test1.go 5
plusvalseq prol-src/natded.prolog /^plusvalseq([]) --> [].$/
point forth-src/test-forth.fth /^BEGIN-STRUCTURE point \\ create the named structure/
+point tex-src/texinfo.tex /^\\def\\point{$\\star$}$/
pointer c-src/emacs/src/lisp.h 2125
poll_for_input c-src/emacs/src/keyboard.c /^poll_for_input (struct atimer *timer)$/
poll_for_input_1 c-src/emacs/src/keyboard.c /^poll_for_input_1 (void)$/
@@ -3944,10 +4000,18 @@ prev c.c 175
prev c-src/emacs/src/gmalloc.c 165
prev c-src/emacs/src/gmalloc.c 189
prev c-src/emacs/src/lisp.h 2191
+primary tex-src/texinfo.tex /^\\def\\primary #1{\\line{#1\\hfil}}$/
+print tex-src/texinfo.tex /^\\def\\print{\\realbackslash print}$/
+print tex-src/texinfo.tex /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
printClassification php-src/lce_functions.php /^ function printClassification()$/
print_help c-src/etags.c /^print_help (argument *argbuffer)$/
print_language_names c-src/etags.c /^print_language_names (void)$/
print_version c-src/etags.c /^print_version (void)$/
+printedmanual tex-src/texinfo.tex /^\\def\\printedmanual{\\ignorespaces #5}%$/
+printedmanual tex-src/texinfo.tex /^section ``\\printednodename'' in \\cite{\\printedmanu/
+printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #3}%$/
+printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #1}%$/
+printindex tex-src/texinfo.tex /^\\def\\printindex{\\parsearg\\doprintindex}$/
printmax_t c-src/emacs/src/lisp.h 148
printmax_t c-src/emacs/src/lisp.h 153
proc c-src/h.h 87
@@ -3962,6 +4026,21 @@ prolog_pr c-src/etags.c /^prolog_pr (char *s, char *last)$/
prolog_skip_comment c-src/etags.c /^prolog_skip_comment (linebuffer *plb, FILE *inf)$/
prop c-src/etags.c 209
protect_malloc_state c-src/emacs/src/gmalloc.c /^protect_malloc_state (int protect_p)$/
+ptexL tex-src/texinfo.tex /^\\let\\ptexL=\\L$/
+ptexb tex-src/texinfo.tex /^\\let\\ptexb=\\b$/
+ptexbullet tex-src/texinfo.tex /^\\let\\ptexbullet=\\bullet$/
+ptexc tex-src/texinfo.tex /^\\let\\ptexc=\\c$/
+ptexdot tex-src/texinfo.tex /^\\let\\ptexdot=\\.$/
+ptexdots tex-src/texinfo.tex /^\\let\\ptexdots=\\dots$/
+ptexend tex-src/texinfo.tex /^\\let\\ptexend=\\end$/
+ptexequiv tex-src/texinfo.tex /^\\let\\ptexequiv = \\equiv$/
+ptexfootnote tex-src/texinfo.tex /^\\let\\ptexfootnote=\\footnote$/
+ptexi tex-src/texinfo.tex /^\\let\\ptexi=\\i$/
+ptexl tex-src/texinfo.tex /^\\let\\ptexl=\\l$/
+ptexlbrace tex-src/texinfo.tex /^\\let\\ptexlbrace=\\{$/
+ptexrbrace tex-src/texinfo.tex /^\\let\\ptexrbrace=\\}$/
+ptexstar tex-src/texinfo.tex /^\\let\\ptexstar=\\*$/
+ptext tex-src/texinfo.tex /^\\let\\ptext=\\t$/
pthread_mutexattr_setprio_ceiling/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprio_ceiling$/
pthread_mutexattr_setprotocol/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprotocol$/
purpose c-src/emacs/src/lisp.h 1594
@@ -3969,14 +4048,20 @@ push_kboard c-src/emacs/src/keyboard.c /^push_kboard (struct kboard *k)$/
pushclass_above c-src/etags.c /^pushclass_above (int bracelev, char *str, int len)/
put_entries c-src/etags.c /^put_entries (register node *np)$/
pvec_type c-src/emacs/src/lisp.h 780
+pxref tex-src/texinfo.tex /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/
quantizing html-src/algrthms.html /^Quantizing the Received$/
questo ../c/c.web 34
quiettest make-src/Makefile /^quiettest:$/
quit_char c-src/emacs/src/keyboard.c 192
quit_throw_to_read_char c-src/emacs/src/keyboard.c /^quit_throw_to_read_char (bool from_signal)$/
+quotation tex-src/texinfo.tex /^\\def\\quotation{%$/
qux ruby-src/test1.ru /^ alias_method :qux, :tee, attr_accessor(:bogus)/
qux1 ruby-src/test1.ru /^ :qux1)$/
qux= ruby-src/test1.ru /^ def qux=(tee)$/
+r tex-src/texinfo.tex /^\\def\\r#1{{\\rm #1}} % roman font$/
+r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}%$/
+r tex-src/texinfo.tex /^\\let\\r=\\indexdummyfont$/
+r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}$/
r0 c-src/sysdep.h 54
r1 c-src/sysdep.h 55
r_alloc c-src/emacs/src/lisp.h /^extern void *r_alloc (void **, size_t) ATTRIBUTE_A/
@@ -3984,6 +4069,10 @@ range_exp y-src/parse.y 269
range_exp_list y-src/parse.y 273
raw_keybuf c-src/emacs/src/keyboard.c 116
raw_keybuf_count c-src/emacs/src/keyboard.c 117
+rawbackslash tex-src/texinfo.tex /^\\let\\rawbackslash=\\relax%$/
+rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
+rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/
+rbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/
rbtp c.c 240
re_iswctype c-src/emacs/src/regex.h 602
re_nsub c-src/emacs/src/regex.h 364
@@ -4015,6 +4104,7 @@ read_key_sequence_vs c-src/emacs/src/keyboard.c /^read_key_sequence_vs (Lisp_Obj
read_menu_command c-src/emacs/src/keyboard.c /^read_menu_command (void)$/
read_toc perl-src/htlmify-cystic /^sub read_toc ()$/
readable_events c-src/emacs/src/keyboard.c /^readable_events (int flags)$/
+readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/
readline c-src/etags.c /^readline (linebuffer *lbp, FILE *stream)$/
readline_internal c-src/etags.c /^readline_internal (linebuffer *lbp, register FILE /
realloc c-src/emacs/src/gmalloc.c 65
@@ -4039,7 +4129,10 @@ recursive_edit_unwind c-src/emacs/src/keyboard.c /^recursive_edit_unwind (Lisp_O
redirect c-src/emacs/src/lisp.h 663
reduce prol-src/natded.prolog /^reduce((X^M)@N,L):- % beta reduction$/
reduce_subterm prol-src/natded.prolog /^reduce_subterm(M,M2):-$/
+ref tex-src/texinfo.tex /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/
+refill tex-src/texinfo.tex /^\\let\\refill=\\relax$/
refreshPort pyt-src/server.py /^ def refreshPort(self):$/
+refx tex-src/texinfo.tex /^\\def\\refx#1#2{%$/
reg_errcode_t c.c 279
reg_errcode_t c-src/emacs/src/regex.h 323
reg_syntax_t c-src/emacs/src/regex.h 43
@@ -4070,8 +4163,12 @@ requeued_events_pending_p c-src/emacs/src/keyboard.c /^requeued_events_pending_p
require merc-src/accumulator.m /^:- import_module require.$/
required_argument c-src/getopt.h 90
reset-this-command-lengths c-src/emacs/src/keyboard.c /^DEFUN ("reset-this-command-lengths", Freset_this_c/
+resetmathfonts tex-src/texinfo.tex /^\\def\\resetmathfonts{%$/
+rest tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
restore_getcjmp c-src/emacs/src/keyboard.c /^restore_getcjmp (sys_jmp_buf temp)$/
restore_kboard_configuration c-src/emacs/src/keyboard.c /^restore_kboard_configuration (int was_locked)$/
+result tex-src/texinfo.tex /^\\def\\result{\\realbackslash result}$/
+result tex-src/texinfo.tex /^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/
return_to_command_loop c-src/emacs/src/keyboard.c 135
reverse prol-src/natded.prolog /^reverse([],Ws,Ws).$/
revert objc-src/PackInsp.m /^-revert:sender$/
@@ -4079,6 +4176,8 @@ right c-src/etags.c 216
right_shift y-src/cccp.y /^right_shift (a, b)$/
ring1 c.c 241
ring2 c.c 242
+rm tex-src/texinfo.tex /^\\def\\rm{\\realbackslash rm }%$/
+rm tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/
rm_eo c-src/emacs/src/regex.h 450
rm_so c-src/emacs/src/regex.h 449
rng_base cp-src/Range.h 79
@@ -4105,6 +4204,10 @@ safe_run_hook_funcall c-src/emacs/src/keyboard.c /^safe_run_hook_funcall (ptrdif
safe_run_hooks c-src/emacs/src/keyboard.c /^safe_run_hooks (Lisp_Object hook)$/
safe_run_hooks_1 c-src/emacs/src/keyboard.c /^safe_run_hooks_1 (ptrdiff_t nargs, Lisp_Object *ar/
safe_run_hooks_error c-src/emacs/src/keyboard.c /^safe_run_hooks_error (Lisp_Object error, ptrdiff_t/
+samp tex-src/texinfo.tex /^\\def\\samp #1{`\\tclose{#1}'\\null}$/
+samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}%$/
+samp tex-src/texinfo.tex /^\\let\\samp=\\indexdummyfont$/
+samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}$/
save pyt-src/server.py /^ def save(self):$/
save pyt-src/server.py /^ def save(self):$/
save pyt-src/server.py /^ def save(self):$/
@@ -4113,13 +4216,28 @@ save_type c-src/emacs/src/lisp.h /^save_type (struct Lisp_Save_Value *v, int n)$
savenstr c-src/etags.c /^savenstr (const char *cp, int len)$/
savestr c-src/etags.c /^savestr (const char *cp)$/
say go-src/test.go /^func say(msg string) {$/
+sc tex-src/texinfo.tex /^\\def\\sc#1{{\\smallcaps#1}} % smallcaps font$/
+sc tex-src/texinfo.tex /^\\let\\sc=\\indexdummyfont$/
scan_separators c-src/etags.c /^scan_separators (char *name)$/
scolonseen c-src/etags.c 2447
scratch c-src/sysdep.h 56
scroll_bar_parts c-src/emacs/src/keyboard.c 5189
-sec=\relax tex-src/texinfo.tex /^\\let\\appendixsec=\\relax$/
+sec tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/
+seccheck tex-src/texinfo.tex /^\\def\\seccheck#1{\\if \\pageno<0 %$/
+secentry tex-src/texinfo.tex /^ \\def\\secentry ##1##2##3##4{}$/
+secentry tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
+secentryfonts tex-src/texinfo.tex /^\\def\\secentryfonts{\\textfonts}$/
+secfonts tex-src/texinfo.tex /^\\def\\secfonts{%$/
+secheading tex-src/texinfo.tex /^\\def\\secheading #1#2#3{\\secheadingi {#2.#3\\enspace/
+secheadingbreak tex-src/texinfo.tex /^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/
+secheadingi tex-src/texinfo.tex /^\\def\\secheadingi #1{{\\advance \\secheadingskip by \\/
+secondary tex-src/texinfo.tex /^\\def\\secondary #1#2{$/
section perl-src/htlmify-cystic 25
-section=\relax tex-src/texinfo.tex /^\\let\\appendixsection=\\relax$/
+section tex-src/texinfo.tex /^\\let\\section=\\relax$/
+section tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
+section tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/
+section tex-src/texinfo.tex /^\\global\\let\\section = \\unnumberedsec$/
+section tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
section_href perl-src/htlmify-cystic /^sub section_href ($)$/
section_name perl-src/htlmify-cystic 12
section_name perl-src/htlmify-cystic /^sub section_name ($)$/
@@ -4127,6 +4245,10 @@ section_toc perl-src/htlmify-cystic 15
section_url perl-src/htlmify-cystic /^sub section_url ()$/
section_url_base perl-src/htlmify-cystic /^sub section_url_base ()$/
section_url_name perl-src/htlmify-cystic /^sub section_url_name ()$/
+sectionzzz tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
+sectionzzz tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
+seczzz tex-src/texinfo.tex /^\\def\\seczzz #1{\\seccheck{section}%$/
+seczzz tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
select prol-src/natded.prolog /^select(X,[X|Xs],Xs).$/
select-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table ()$/
select-tags-table-mode el-src/emacs/lisp/progmodes/etags.el /^(define-derived-mode select-tags-table-mode specia/
@@ -4137,9 +4259,11 @@ select_last prol-src/natded.prolog /^select_last([X],X,[]).$/
send objc-src/Subprocess.m /^- send:(const char *)string withNewline:(BOOL)want/
send objc-src/Subprocess.m /^- send:(const char *)string$/
separator_names c-src/emacs/src/keyboard.c 7372
+sepspaces tex-src/texinfo.tex /^\\gdef\\sepspaces{\\def {\\ }}}$/
serializeToVars php-src/lce_functions.php /^ function serializeToVars($prefix)$/
serializeToVars php-src/lce_functions.php /^ function serializeToVars($prefix)$/
set cp-src/conway.hpp /^ void set(void) { alive = 1; }$/
+set tex-src/texinfo.tex /^\\def\\set{\\parsearg\\setxxx}$/
set merc-src/accumulator.m /^:- import_module set.$/
set-input-interrupt-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-interrupt-mode", Fset_input_inte/
set-input-meta-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-meta-mode", Fset_input_meta_mode/
@@ -4170,9 +4294,24 @@ set_symbol_next c-src/emacs/src/lisp.h /^set_symbol_next (Lisp_Object sym, struc
set_symbol_plist c-src/emacs/src/lisp.h /^set_symbol_plist (Lisp_Object sym, Lisp_Object pli/
set_upto merc-src/accumulator.m /^:- func set_upto(accu_case, int) = set(accu_goal_i/
set_waiting_for_input c-src/emacs/src/keyboard.c /^set_waiting_for_input (struct timespec *time_to_cl/
+setchapternewpage tex-src/texinfo.tex /^\\def\\setchapternewpage #1 {\\csname CHAPPAG#1\\endcs/
+setchapterstyle tex-src/texinfo.tex /^\\def\\setchapterstyle #1 {\\csname CHAPF#1\\endcsname/
+setdeffont tex-src/texinfo.tex /^\\def\\setdeffont #1 {\\csname DEF#1\\endcsname}$/
+setfilename tex-src/texinfo.tex /^\\def\\setfilename{%$/
+setfilename tex-src/texinfo.tex /^ \\global\\let\\setfilename=\\comment % Ignore extra/
setref tex-src/texinfo.tex /^\\expandafter\\expandafter\\expandafter\\appendixsetre/
+setref tex-src/texinfo.tex /^\\def\\setref#1{%$/
+settitle tex-src/texinfo.tex /^\\def\\settitle{\\parsearg\\settitlezzz}$/
+settitlezzz tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/
setup cp-src/c.C 5
+setxxx tex-src/texinfo.tex /^\\def\\setxxx #1{$/
+sf tex-src/texinfo.tex /^\\def\\sf{\\fam=\\sffam \\tensf}$/
+sf tex-src/texinfo.tex /^\\def\\sf{\\realbackslash sf}%$/
+sf tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/
shift cp-src/functions.cpp /^void Date::shift ( void ){\/\/Shift this date to pre/
+shortchapentry tex-src/texinfo.tex /^\\def\\shortchapentry#1#2#3{%$/
+shortcontents tex-src/texinfo.tex /^\\let\\shortcontents = \\summarycontents$/
+shortunnumberedentry tex-src/texinfo.tex /^\\def\\shortunnumberedentry#1#2{%$/
shouldLoad objc-src/PackInsp.m /^-(BOOL)shouldLoad$/
should_attempt_accu_transform merc-src/accumulator.m /^:- pred should_attempt_accu_transform(module_info:/
should_attempt_accu_transform_2 merc-src/accumulator.m /^:- pred should_attempt_accu_transform_2(module_inf/
@@ -4190,6 +4329,9 @@ signal_handler_t c-src/h.h 94
simulation html-src/software.html /^Software that I wrote for supporting my research a/
single_kboard c-src/emacs/src/keyboard.c 89
single_kboard_state c-src/emacs/src/keyboard.c /^single_kboard_state ()$/
+singlecodeindexer tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/
+singleindexer tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/
+singlespace tex-src/texinfo.tex /^\\def\\singlespace{%$/
site cp-src/conway.hpp 5
site cp-src/conway.hpp /^ site(int xi, int yi): x(xi), y(yi), alive(0) {/
size c-src/etags.c 236
@@ -4203,20 +4345,45 @@ skeyseen c-src/etags.c 2445
skip_name c-src/etags.c /^skip_name (char *cp)$/
skip_non_spaces c-src/etags.c /^skip_non_spaces (char *cp)$/
skip_spaces c-src/etags.c /^skip_spaces (char *cp)$/
+sl tex-src/texinfo.tex /^\\def\\sl{\\realbackslash sl }%$/
+sl tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/
+smallbook tex-src/texinfo.tex /^\\let\\smallbook=\\relax$/
+smallbook tex-src/texinfo.tex /^\\def\\smallbook{$/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\textbf \\let\\tentt=\\texttt \\let\\small/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\secbf \\let\\tentt=\\sectt \\let\\smallca/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\ssecbf \\let\\tentt=\\ssectt \\let\\small/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\indbf \\let\\tentt=\\indtt \\let\\smallca/
+smallexample tex-src/texinfo.tex /^\\let\\smallexample=\\lisp$/
+smallexample tex-src/texinfo.tex /^\\global\\let\\smallexample=\\smalllispx$/
+smalllisp tex-src/texinfo.tex /^\\global\\let\\smalllisp=\\smalllispx$/
+smalllispx tex-src/texinfo.tex /^\\def\\smalllispx{\\aboveenvbreak\\begingroup\\inENV$/
+smartitalic tex-src/texinfo.tex /^\\def\\smartitalic#1{{\\sl #1}\\futurelet\\next\\smartit/
+smartitalicx tex-src/texinfo.tex /^\\def\\smartitalicx{\\ifx\\next,\\else\\ifx\\next-\\else\\i/
snarf-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar snarf-tag-function nil$/
snone c-src/etags.c 2443
solutions merc-src/accumulator.m /^:- import_module solutions.$/
some_mouse_moved c-src/emacs/src/keyboard.c /^some_mouse_moved (void)$/
+sp tex-src/texinfo.tex /^\\def\\sp{\\parsearg\\spxxx}$/
+space tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
space tex-src/texinfo.tex /^ {#2\\labelspace #1}\\dotfill\\doshortpageno{#3}}%/
+space tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
+space tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
space tex-src/texinfo.tex /^ \\dosubsubsecentry{#2.#3.#4.#5\\labelspace#1}{#6}}/
spacer c-src/emacs/src/lisp.h 1975
spacer c-src/emacs/src/lisp.h 1982
spacer c-src/emacs/src/lisp.h 2036
spacer c-src/emacs/src/lisp.h 2205
+spacesplit tex-src/texinfo.tex /^\\gdef\\spacesplit#1#2^^M{\\endgroup\\spacesplitfoo{#1/
+spacesplitfoo tex-src/texinfo.tex /^\\long\\gdef\\spacesplitfoo#1#2 #3#4\\spacesplitfoo{%$/
specbind_tag c-src/emacs/src/lisp.h 2943
specbinding c-src/emacs/src/lisp.h 2955
+specheader tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
specialsymbol prol-src/natded.prolog /^specialsymbol(C1,C2,S):-$/
+specx\defspecheader tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
splitexp prol-src/natded.prolog /^splitexp(E,E,('NIL','NIL')):-!.$/
+splitoff tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
+spxxx tex-src/texinfo.tex /^\\def\\spxxx #1{\\par \\vskip #1\\baselineskip}$/
srclist make-src/Makefile /^srclist: Makefile$/
ss3 c.c 255
sss1 c.c 252
@@ -4248,6 +4415,8 @@ start php-src/lce_functions.php /^ function start($line, $class)$/
start y-src/cccp.y 143
start_polling c-src/emacs/src/keyboard.c /^start_polling (void)$/
start_up prol-src/natded.prolog /^start_up:-$/
+startcontents tex-src/texinfo.tex /^\\def\\startcontents#1{%$/
+startenumeration tex-src/texinfo.tex /^\\def\\startenumeration#1{%$/
state_protected_p c-src/emacs/src/gmalloc.c 400
statetable html-src/algrthms.html /^Next$/
staticetags make-src/Makefile /^staticetags:$/
@@ -4267,24 +4436,61 @@ stripLine php-src/lce_functions.php /^ function stripLine($line, $class)$/
stripname pas-src/common.pas /^function stripname; (* ($/
strncaseeq c-src/etags.c /^#define strncaseeq(s,t,n) (assert ((s)!=NULL && (t/
strneq c-src/etags.c /^#define strneq(s,t,n) (assert ((s)!=NULL || (t)!=N/
+strong tex-src/texinfo.tex /^\\let\\strong=\\b$/
+strong tex-src/texinfo.tex /^\\let\\strong=\\indexdummyfont$/
structdef c-src/etags.c 2448
stuff_buffered_input c-src/emacs/src/keyboard.c /^stuff_buffered_input (Lisp_Object stuffstring)$/
+subheading tex-src/texinfo.tex /^\\def\\subheading{\\parsearg\\subsecheadingi}$/
subprocess objc-src/PackInsp.m /^-subprocess:(Subprocess *)sender output:(char *)bu/
subprocessDone objc-src/PackInsp.m /^-subprocessDone:(Subprocess *)sender$/
-subsec=\relax tex-src/texinfo.tex /^\\let\\appendixsubsec=\\relax$/
+subsec tex-src/texinfo.tex /^\\let\\subsec=\\relax$/
+subsec tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/
+subsecentry tex-src/texinfo.tex /^ \\def\\subsecentry ##1##2##3##4##5{}$/
+subsecentry tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
+subsecentryfonts tex-src/texinfo.tex /^\\let\\subsecentryfonts = \\textfonts$/
+subsecfonts tex-src/texinfo.tex /^\\def\\subsecfonts{%$/
+subsecheading tex-src/texinfo.tex /^\\def\\subsecheading #1#2#3#4{\\subsecheadingi {#2.#3/
+subsecheadingbreak tex-src/texinfo.tex /^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/
+subsecheadingi tex-src/texinfo.tex /^\\def\\subsecheadingi #1{{\\advance \\subsecheadingski/
subsection perl-src/htlmify-cystic 26
-subsection=\relax tex-src/texinfo.tex /^\\let\\appendixsubsection=\\relax$/
+subsection tex-src/texinfo.tex /^\\let\\subsection=\\relax$/
+subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
+subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/
+subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\unnumberedsubsec$/
+subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
subsection_marker perl-src/htlmify-cystic 161
+subseczzz tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
+subseczzz tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
subst prol-src/natded.prolog /^subst(var(Y),var(X),M,N):-$/
substitute c-src/etags.c /^substitute (char *in, char *out, struct re_registe/
-subsubsec=\relax tex-src/texinfo.tex /^\\let\\appendixsubsubsec=\\relax$/
+subsubheading tex-src/texinfo.tex /^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/
+subsubsec tex-src/texinfo.tex /^\\let\\subsubsec=\\relax$/
+subsubsec tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/
+subsubsecentry tex-src/texinfo.tex /^ \\def\\subsubsecentry ##1##2##3##4##5##6{}$/
+subsubsecentry tex-src/texinfo.tex /^\\def\\subsubsecentry#1#2#3#4#5#6{%$/
+subsubsecentryfonts tex-src/texinfo.tex /^\\let\\subsubsecentryfonts = \\textfonts$/
+subsubsecfonts tex-src/texinfo.tex /^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/
+subsubsecheading tex-src/texinfo.tex /^\\def\\subsubsecheading #1#2#3#4#5{\\subsubsecheading/
+subsubsecheadingi tex-src/texinfo.tex /^\\def\\subsubsecheadingi #1{{\\advance \\subsecheading/
subsubsection perl-src/htlmify-cystic 27
-subsubsection=\relax tex-src/texinfo.tex /^\\let\\appendixsubsubsection=\\relax$/
+subsubsection tex-src/texinfo.tex /^\\let\\subsubsection=\\relax$/
+subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/
+subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/
+subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\unnumberedsubsubsec$/
+subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/
+subsubseczzz tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
+subsubseczzz tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
+subtitle tex-src/texinfo.tex /^ \\def\\subtitle{\\parsearg\\subtitlezzz}%$/
+subtitlefont tex-src/texinfo.tex /^ \\def\\subtitlefont{\\subtitlerm \\normalbaselinesk/
+subtitlerm tex-src/texinfo.tex /^ \\let\\subtitlerm=\\tenrm$/
+subtitlezzz tex-src/texinfo.tex /^ \\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/
subtle ruby-src/test1.ru /^ :tee ; attr_reader :subtle$/
subtree prol-src/natded.prolog /^subtree(T,T).$/
suffix c-src/etags.c 186
suffixes c-src/etags.c 195
suggest_asking_for_help c-src/etags.c /^suggest_asking_for_help (void)$/
+summarycontents tex-src/texinfo.tex /^\\outer\\def\\summarycontents{%$/
+supereject tex-src/texinfo.tex /^\\def\\supereject{\\par\\penalty -20000\\footnoteno =0 /
suspend-emacs c-src/emacs/src/keyboard.c /^DEFUN ("suspend-emacs", Fsuspend_emacs, Ssuspend_e/
sval y-src/cccp.y 116
swallow_events c-src/emacs/src/keyboard.c /^swallow_events (bool do_display)$/
@@ -4299,6 +4505,8 @@ syms_of_abbrev c-src/abbrev.c /^syms_of_abbrev ()$/
syms_of_keyboard c-src/emacs/src/keyboard.c /^syms_of_keyboard (void)$/
synchronize_system_messages_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_messages_locale (vo/
synchronize_system_time_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_time_locale (void) /
+syncodeindex tex-src/texinfo.tex /^\\def\\syncodeindex #1 #2 {%$/
+synindex tex-src/texinfo.tex /^\\def\\synindex #1 #2 {%$/
syntax c-src/emacs/src/regex.h 350
sys_jmp_buf c-src/emacs/src/lisp.h 2906
sys_jmp_buf c-src/emacs/src/lisp.h 2910
@@ -4311,12 +4519,20 @@ sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) sigsetjmp (j, 0)$/
sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) setjmp (j)$/
syscall_error c-src/sysdep.h 34
t cp-src/c.C 52
+t tex-src/texinfo.tex /^\\def\\t#1{{\\tt \\exhyphenpenalty=10000\\rawbackslash /
+t tex-src/texinfo.tex /^\\def\\t##1{\\realbackslash r {##1}}%$/
+t tex-src/texinfo.tex /^\\let\\t=\\indexdummyfont$/
+t tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
t1 cp-src/c.C 34
t2 cp-src/c.C 38
tab_count_words c-src/tab.c /^int tab_count_words(char **tab)$/
tab_delete_first c-src/tab.c /^int tab_delete_first(char **tab)$/
tab_fill c-src/tab.c /^char **tab_fill(char *str, char delim)$/
tab_free c-src/tab.c /^void tab_free(char **tab)$/
+table tex-src/texinfo.tex /^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspaces\\/
+tablex tex-src/texinfo.tex /^\\gdef\\tablex #1^^M{%$/
+tabley tex-src/texinfo.tex /^\\gdef\\tabley#1#2 #3 #4 #5 #6 #7\\endtabley{\\endgrou/
+tablez tex-src/texinfo.tex /^\\def\\tablez #1#2#3#4#5#6{%$/
tag-any-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-any-match-p (_tag)$/
tag-exact-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-file-name-match-p (tag)$/
tag-exact-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-match-p (tag)$/
@@ -4395,12 +4611,79 @@ tags-tag-face el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-tag-face 'd
tags-verify-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-verify-table (file)$/
tags-with-face el-src/emacs/lisp/progmodes/etags.el /^(defmacro tags-with-face (face &rest body)$/
target_multibyte c-src/emacs/src/regex.h 407
+tclose tex-src/texinfo.tex /^\\def\\tclose#1{{\\rm \\tcloserm=\\fontdimen2\\font \\tt /
+tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}%$/
+tclose tex-src/texinfo.tex /^\\let\\tclose=\\indexdummyfont$/
+tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}$/
tcpdump html-src/software.html /^tcpdump$/
teats cp-src/c.C 127
tee ruby-src/test1.ru /^ attr_accessor :tee$/
tee= ruby-src/test1.ru /^ attr_accessor :tee$/
+temp tex-src/texinfo.tex /^\\expandafter\\ifx\\csname IF#1\\endcsname\\relax \\let\\/
+temp tex-src/texinfo.tex /^\\else \\let\\temp=\\relax \\fi$/
+temp tex-src/texinfo.tex /^\\expandafter\\ifx\\csname IF#1\\endcsname\\relax \\let\\/
+temp tex-src/texinfo.tex /^\\else \\let\\temp=\\ifclearfail \\fi$/
+temp tex-src/texinfo.tex /^\\edef\\temp{%$/
+temp tex-src/texinfo.tex /^\\edef\\temp{%$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash chapentry {#1}{\\the\\cha/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash chapentry $/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbchapentry {#1}{\\n/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash secentry %$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash secentry %$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbsecentry{#1}{\\noe/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash subsecentry %$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash subsecentry %$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbsubsecentry{#1}{\\/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash subsubsecentry %$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash subsubsecentry{#1}%$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbsubsubsecentry{#1/
+temp1 tex-src/texinfo.tex /^\\xdef\\temp1{#2}%$/
+temp1 tex-src/texinfo.tex /^\\xdef\\temp1{#2 #3}%$/
temporarily_switch_to_single_kboard c-src/emacs/src/keyboard.c /^temporarily_switch_to_single_kboard (struct frame /
+tenbf tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\textbf \\let\\tentt=\\texttt \\let\\small/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\secbf \\let\\tentt=\\sectt \\let\\smallca/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\ssecbf \\let\\tentt=\\ssectt \\let\\small/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\indbf \\let\\tentt=\\indtt \\let\\smallca/
tend c-src/etags.c 2432
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\textsf \\let\\teni=\\texti \\let\\tensy=\\/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\chapsf \\let\\teni=\\chapi \\let\\tensy=\\/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\secsf \\let\\teni=\\seci \\let\\tensy=\\se/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\ssecsf \\let\\teni=\\sseci \\let\\tensy=\\/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\indsf \\let\\teni=\\indi \\let\\tensy=\\in/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\textrm \\let\\tenit=\\textit \\let\\tensl/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\chaprm \\let\\tenit=\\chapit \\let\\tensl/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\secrm \\let\\tenit=\\secit \\let\\tensl=\\/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\ssecrm \\let\\tenit=\\ssecit \\let\\tensl/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\indrm \\let\\tenit=\\indit \\let\\tensl=\\/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\textrm \\let\\tenit=\\textit \\let\\tensl/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\chaprm \\let\\tenit=\\chapit \\let\\tensl/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\secrm \\let\\tenit=\\secit \\let\\tensl=\\/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\ssecrm \\let\\tenit=\\ssecit \\let\\tensl/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\indrm \\let\\tenit=\\indit \\let\\tensl=\\/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\textsf \\let\\teni=\\texti \\let\\tensy=\\/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\chapsf \\let\\teni=\\chapi \\let\\tensy=\\/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\secsf \\let\\teni=\\seci \\let\\tensy=\\se/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\ssecsf \\let\\teni=\\sseci \\let\\tensy=\\/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\indsf \\let\\teni=\\indi \\let\\tensy=\\in/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\textrm \\let\\tenit=\\textit \\let\\tensl/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\chaprm \\let\\tenit=\\chapit \\let\\tensl/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\secrm \\let\\tenit=\\secit \\let\\tensl=\\/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\ssecrm \\let\\tenit=\\ssecit \\let\\tensl/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\indrm \\let\\tenit=\\indit \\let\\tensl=\\/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\textsf \\let\\teni=\\texti \\let\\tensy=\\/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\chapsf \\let\\teni=\\chapi \\let\\tensy=\\/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\secsf \\let\\teni=\\seci \\let\\tensy=\\se/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\ssecsf \\let\\teni=\\sseci \\let\\tensy=\\/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\indsf \\let\\teni=\\indi \\let\\tensy=\\in/
+tentt tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\textbf \\let\\tentt=\\texttt \\let\\small/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\secbf \\let\\tentt=\\sectt \\let\\smallca/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\ssecbf \\let\\tentt=\\ssectt \\let\\small/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\indbf \\let\\tentt=\\indtt \\let\\smallca/
+tentt tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/
term merc-src/accumulator.m /^:- import_module term.$/
terminate objc-src/Subprocess.m /^- terminate:sender$/
terminateInput objc-src/Subprocess.m /^- terminateInput$/
@@ -4415,7 +4698,12 @@ test.me22b lua-src/test.lua /^ local function test.me22b (one)$/
test.me_22a lua-src/test.lua /^ function test.me_22a(one, two)$/
test1 rs-src/test.rs /^fn test1() {$/
test_undefined c-src/emacs/src/keyboard.c /^test_undefined (Lisp_Object binding)$/
+tex tex-src/texinfo.tex /^\\def\\tex{\\begingroup$/
+texinfoversion tex-src/texinfo.tex /^\\def\\texinfoversion{2.73}$/
+textfonts tex-src/texinfo.tex /^\\def\\textfonts{%$/
texttreelist prol-src/natded.prolog /^texttreelist([]).$/
+thearg tex-src/texinfo.tex /^ \\def\\thearg{#1}%$/
+thearg tex-src/texinfo.tex /^ \\ifx\\thearg\\empty \\def\\thearg{1}\\fi$/
there-is-a-=-in-the-middle! scm-src/test.scm /^(define (there-is-a-=-in-the-middle!) #t)$/
this c-src/a/b/b.c 1
this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys", Fthis_command_keys, St/
@@ -4427,6 +4715,36 @@ this_command_key_count_reset c-src/emacs/src/keyboard.c 112
this_command_keys c-src/emacs/src/keyboard.c 107
this_file_toc perl-src/htlmify-cystic 29
this_single_command_key_start c-src/emacs/src/keyboard.c 125
+thischapter tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/
+thischapter tex-src/texinfo.tex /^\\xdef\\thischapter{Chapter \\the\\chapno: \\noexpand\\t/
+thischapter tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix \\appendixletter: \\noexp/
+thischapter tex-src/texinfo.tex /^\\gdef\\thischapter{#1}\\gdef\\thissection{#1}%$/
+thischapter tex-src/texinfo.tex /^ \\unnumbchapmacro{#1}\\def\\thischapter{}%$/
+thischaptername tex-src/texinfo.tex /^\\def\\thischaptername{No Chapter Title}$/
+thischaptername tex-src/texinfo.tex /^\\gdef\\thischaptername{#1}%$/
+thischaptername tex-src/texinfo.tex /^\\gdef\\thischaptername{#1}%$/
+thisfile tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/
+thisfile tex-src/texinfo.tex /^\\def\\thisfile{}$/
+thisfootno tex-src/texinfo.tex /^\\edef\\thisfootno{$^{\\the\\footnoteno}$}%$/
+thispage tex-src/texinfo.tex /^\\let\\thispage=\\folio$/
+thissection tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}%$/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}%$/
+thissection tex-src/texinfo.tex /^\\gdef\\thischapter{#1}\\gdef\\thissection{#1}%$/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\the\\chapno}/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\appendixlet/
+thissection tex-src/texinfo.tex /^\\plainsecheading {#1}\\gdef\\thissection{#1}%$/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\subsubsecno=0 \\global\\advanc/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\subsubsecno=0 \\global\\advanc/
+thissection tex-src/texinfo.tex /^\\plainsecheading {#1}\\gdef\\thissection{#1}%$/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\global\\advance \\subsubsecno /
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\global\\advance \\subsubsecno /
+thissection tex-src/texinfo.tex /^\\plainsecheading {#1}\\gdef\\thissection{#1}%$/
+thistitle tex-src/texinfo.tex /^\\def\\thistitle{No Title}$/
+thistitle tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/
+three tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+threex tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+tie tex-src/texinfo.tex /^\\def\\tie{\\penalty 10000\\ } % Save plain tex de/
tignore c-src/etags.c 2433
timer_check c-src/emacs/src/keyboard.c /^timer_check (void)$/
timer_check_2 c-src/emacs/src/keyboard.c /^timer_check_2 (Lisp_Object timers, Lisp_Object idl/
@@ -4437,9 +4755,16 @@ timer_start_idle c-src/emacs/src/keyboard.c /^timer_start_idle (void)$/
timer_stop_idle c-src/emacs/src/keyboard.c /^timer_stop_idle (void)$/
timers_run c-src/emacs/src/keyboard.c 320
tinbody c-src/etags.c 2431
+tindex tex-src/texinfo.tex /^\\def\\tindex {\\tpindex}$/
+title tex-src/texinfo.tex /^ \\def\\title{\\parsearg\\titlezzz}%$/
+titlefont tex-src/texinfo.tex /^\\def\\titlefont#1{{\\titlerm #1}}$/
+titlepage tex-src/texinfo.tex /^\\let\\titlepage=\\relax$/
+titlepage tex-src/texinfo.tex /^\\def\\titlepage{\\begingroup \\parindent=0pt \\textfon/
+titlezzz tex-src/texinfo.tex /^ \\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/
tkeyseen c-src/etags.c 2429
tnone c-src/etags.c 2428
toc_line perl-src/htlmify-cystic /^sub toc_line ($)$/
+today tex-src/texinfo.tex /^\\def\\today{\\number\\day\\space$/
toggleDescription objc-src/PackInsp.m /^-toggleDescription$/
tok c-src/etags.c 2491
token c-src/etags.c 2508
@@ -4452,6 +4777,8 @@ tool_bar_item_properties c-src/emacs/src/keyboard.c 7970
tool_bar_items c-src/emacs/src/keyboard.c /^tool_bar_items (Lisp_Object reuse, int *nitems)$/
tool_bar_items_vector c-src/emacs/src/keyboard.c 7965
toolkit_menubar_in_use c-src/emacs/src/keyboard.c /^toolkit_menubar_in_use (struct frame *f)$/
+top tex-src/texinfo.tex /^\\let\\top=\\relax$/
+top tex-src/texinfo.tex /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/
top-level c-src/emacs/src/keyboard.c /^DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, /
top_level merc-src/accumulator.m /^:- type top_level$/
top_level_1 c-src/emacs/src/keyboard.c /^top_level_1 (Lisp_Object ignore)$/
@@ -4460,17 +4787,26 @@ total_keys c-src/emacs/src/keyboard.c 97
total_size_of_entries c-src/etags.c /^total_size_of_entries (register node *np)$/
total_surrounding cp-src/conway.cpp /^int site::total_surrounding(void)$/
totally_unblock_input c-src/emacs/src/keyboard.c /^totally_unblock_input (void)$/
+tpargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\deftpargs{#3}\\endgrou/
tpcmd c-src/h.h 8
tpcmd c-src/h.h 15
+tpheader tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+tpx\deftpheader tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
track-mouse c-src/emacs/src/keyboard.c /^DEFUN ("internal--track-mouse", Ftrack_mouse, Stra/
tracking_off c-src/emacs/src/keyboard.c /^tracking_off (Lisp_Object old_value)$/
traffic_light cp-src/conway.cpp /^void traffic_light(int x, int y)$/
translate c-src/emacs/src/regex.h 361
treats cp-src/c.C 131
tt prol-src/natded.prolog /^tt:-$/
-tt=cmtt10 tex-src/texinfo.tex /^\\font\\deftt=cmtt10 scaled \\magstep1$/
+tt tex-src/texinfo.tex /^\\font\\deftt=cmtt10 scaled \\magstep1$/
+tt tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}%$/
+tt tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/
+tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}$/
+ttfont tex-src/texinfo.tex /^\\let\\ttfont = \\t$/
tty_read_avail_input c-src/emacs/src/keyboard.c /^tty_read_avail_input (struct terminal *terminal,$/
ttypeseen c-src/etags.c 2430
+turnoffactive tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
typdef c-src/etags.c 2434
type c-src/etags.c 2271
type c-src/emacs/src/gmalloc.c 145
@@ -4485,10 +4821,22 @@ type c-src/emacs/src/lisp.h 2296
type c-src/emacs/src/lisp.h 2304
type c-src/emacs/src/lisp.h 2364
type c-src/emacs/src/lisp.h 3025
+typefnheader tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
+typefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheader #1#2#3{\\deftypefnheaderx{#1}{/
+typefnx\deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#3}\\endgroup %$/
typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#4}\\endgroup %$/
+typefunheader tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+typefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheader #1#2{\\deftypefunheaderx{#1}#/
+typefunx\deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+typemargin tex-src/texinfo.tex /^\\newskip\\deftypemargin \\deftypemargin=12pt$/
typemargin tex-src/texinfo.tex /^\\newskip\\deftypemargin \\deftypemargin=12pt$/
+typemargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip \\deflastargmargin{\\rm #2}\\hs/
typemargin tex-src/texinfo.tex /^\\rlap{\\rightline{{\\rm #2}\\hskip \\deftypemargin}}}%/
+typevarheader tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+typevarx\deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+typevrheader tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+typevrx\deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
u c-src/emacs/src/lisp.h 2397
u_any c-src/emacs/src/lisp.h 2214
u_boolfwd c-src/emacs/src/lisp.h 2371
@@ -4501,6 +4849,7 @@ u_marker c-src/emacs/src/lisp.h 2216
u_objfwd c-src/emacs/src/lisp.h 2372
u_overlay c-src/emacs/src/lisp.h 2217
u_save_value c-src/emacs/src/lisp.h 2218
+unargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defunargs{#3}\\endgrou/
unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/
unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/
unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/
@@ -4510,7 +4859,37 @@ unblock_input c-src/emacs/src/keyboard.c /^unblock_input (void)$/
unblock_input_to c-src/emacs/src/keyboard.c /^unblock_input_to (int level)$/
unchar c-src/h.h 99
unexpand-abbrev c-src/abbrev.c /^DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexp/
+unheader tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
univ merc-src/accumulator.m /^:- import_module univ.$/
+unnchfopen tex-src/texinfo.tex /^\\def\\unnchfopen #1{%$/
+unnchfplain tex-src/texinfo.tex /^\\def\\unnchfplain #1{%$/
+unnumbchapentry tex-src/texinfo.tex /^ \\let\\unnumbchapentry = \\shortunnumberedentry/
+unnumbchapentry tex-src/texinfo.tex /^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/
+unnumbchapmacro tex-src/texinfo.tex /^\\global\\let\\unnumbchapmacro=\\unnchfplain}$/
+unnumbchapmacro tex-src/texinfo.tex /^\\global\\let\\unnumbchapmacro=\\unnchfopen}$/
+unnumbered tex-src/texinfo.tex /^\\let\\unnumbered=\\relax$/
+unnumbered tex-src/texinfo.tex /^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/
+unnumberedsec tex-src/texinfo.tex /^\\let\\unnumberedsec=\\relax$/
+unnumberedsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/
+unnumberedsection tex-src/texinfo.tex /^\\let\\unnumberedsection=\\relax$/
+unnumberedseczzz tex-src/texinfo.tex /^\\def\\unnumberedseczzz #1{\\seccheck{unnumberedsec}%/
+unnumberedsubsec tex-src/texinfo.tex /^\\let\\unnumberedsubsec=\\relax$/
+unnumberedsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsec{\\parsearg\\unnumberedsu/
+unnumberedsubsection tex-src/texinfo.tex /^\\let\\unnumberedsubsection=\\relax$/
+unnumberedsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubseczzz #1{\\seccheck{unnumberedsu/
+unnumberedsubsubsec tex-src/texinfo.tex /^\\let\\unnumberedsubsubsec=\\relax$/
+unnumberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/
+unnumberedsubsubsection tex-src/texinfo.tex /^\\let\\unnumberedsubsubsection=\\relax$/
+unnumberedsubsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/
+unnumberedzzz tex-src/texinfo.tex /^\\def\\unnumberedzzz #1{\\seccheck{unnumbered}%$/
+unnumbnoderef tex-src/texinfo.tex /^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/
+unnumbsecentry tex-src/texinfo.tex /^ \\def\\unnumbsecentry ##1##2{}$/
+unnumbsecentry tex-src/texinfo.tex /^\\def\\unnumbsecentry#1#2{\\dosecentry{#1}{#2}}$/
+unnumbsetref tex-src/texinfo.tex /^\\def\\unnumbsetref#1{%$/
+unnumbsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsecentry ##1##2{}$/
+unnumbsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsecentry#1#2{\\dosubsecentry{#1}{#2}}/
+unnumbsubsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsubsecentry ##1##2{}$/
+unnumbsubsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/
unravel_univ merc-src/accumulator.m /^:- some [T] pred unravel_univ(univ::in, T::out) is/
unread_switch_frame c-src/emacs/src/keyboard.c 204
unsignedp y-src/cccp.y 112
@@ -4518,7 +4897,9 @@ unwind c-src/emacs/src/lisp.h 2962
unwind_int c-src/emacs/src/lisp.h 2972
unwind_ptr c-src/emacs/src/lisp.h 2967
unwind_void c-src/emacs/src/lisp.h 2976
+unx\defunheader tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
update_accumulator_pred merc-src/accumulator.m /^:- pred update_accumulator_pred(pred_id::in, proc_/
+uppercaseenumerate tex-src/texinfo.tex /^\\def\\uppercaseenumerate{%$/
uprintmax_t c-src/emacs/src/lisp.h 149
uprintmax_t c-src/emacs/src/lisp.h 154
usage perl-src/yagrip.pl /^sub usage {$/
@@ -4546,22 +4927,47 @@ value c-src/emacs/src/lisp.h 687
value y-src/cccp.y 112
var c-src/emacs/src/keyboard.c 11023
var c-src/emacs/src/lisp.h 3137
+var tex-src/texinfo.tex /^\\let\\var=\\smartitalic$/
+var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}%$/
+var tex-src/texinfo.tex /^\\let\\var=\\indexdummyfont$/
+var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}$/
varargs tex-src/texinfo.tex /^\\defvarargs {#3}\\endgroup %$/
varargs tex-src/texinfo.tex /^\\defvarargs {#3}\\endgroup %$/
+varargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defvarargs{#3}\\endgro/
varargs tex-src/texinfo.tex /^\\defvarargs {#2}\\endgroup %$/
varargs tex-src/texinfo.tex /^\\defvarargs {#2}\\endgroup %$/
+varargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/
+varheader tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
+varparsebody\Edefopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+varparsebody\Edeftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+varparsebody\Edefvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
varset merc-src/accumulator.m /^:- import_module varset.$/
+varx\defvarheader tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
vcopy c-src/emacs/src/lisp.h /^vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Objec/
vectorlike_header c-src/emacs/src/lisp.h 1343
verde cp-src/c.C 40
verify-tags-table-function el-src/emacs/lisp/progmodes/etags.el /^(defvar verify-tags-table-function nil$/
verify_ascii c-src/emacs/src/lisp.h /^# define verify_ascii(str) (str)$/
vignore c-src/etags.c 2417
+vindex tex-src/texinfo.tex /^\\def\\vindex {\\vrindex}$/
visit-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table (file &optional local)$/
visit-tags-table-buffer el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table-buffer (&optional cont)$/
void c-src/emacs/src/lisp.h /^INLINE void (check_cons_list) (void) { lisp_h_chec/
voidfuncptr c-src/emacs/src/lisp.h 2108
voidval y-src/cccp.y 115
+vrheader tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+vritemindex tex-src/texinfo.tex /^\\def\\vritemindex #1{\\doind {vr}{\\code{#1}}}%$/
+vrparsebody\Edefivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+vrparsebody\Edeftp tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+vrparsebody\Edeftypevr tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+vrparsebody\Edefvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+vrx\defvrheader tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+vtable tex-src/texinfo.tex /^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+vtablex tex-src/texinfo.tex /^\\gdef\\vtablex #1^^M{%$/
+w tex-src/texinfo.tex /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/
+w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w }%$/
+w tex-src/texinfo.tex /^\\let\\w=\\indexdummyfont$/
+w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w}$/
wait_status_ptr_t c.c 161
waiting_for_input c-src/emacs/src/keyboard.c 150
warning y-src/cccp.y /^warning (msg)$/
@@ -4609,18 +5015,31 @@ x cp-src/clheir.hpp 58
x cp-src/fail.C 10
x cp-src/fail.C 44
x tex-src/texinfo.tex /^\\refx{#1-snt}{} [\\printednodename], page\\tie\\refx{/
+x tex-src/texinfo.tex /^\\refx{#1-snt}{} [\\printednodename], page\\tie\\refx{/
x-get-selection-internal c.c /^DEFUN ("x-get-selection-internal", Fx_get_selectio/
x-get-selection-internal c.c /^ Fx_get_selection_internal, Sx_get_selection/
xcar_addr c-src/emacs/src/lisp.h /^xcar_addr (Lisp_Object c)$/
xcdr_addr c-src/emacs/src/lisp.h /^xcdr_addr (Lisp_Object c)$/
xdiff make-src/Makefile /^xdiff: ETAGS EXTAGS ${infiles}$/
+xitem tex-src/texinfo.tex /^\\def\\xitem{\\errmessage{@xitem while not in a table/
+xitem tex-src/texinfo.tex /^\\let\\xitem = \\internalBxitem %$/
+xitemsubtopix tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/
+xitemsubtopix tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/
+xitemx tex-src/texinfo.tex /^\\def\\xitemx{\\errmessage{@xitemx while not in a tab/
+xitemx tex-src/texinfo.tex /^\\let\\xitemx = \\internalBxitemx %$/
+xitemzzz tex-src/texinfo.tex /^\\def\\xitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
+xkey tex-src/texinfo.tex /^\\def\\xkey{\\key}$/
xmalloc c-src/etags.c /^xmalloc (size_t size)$/
xnew c-src/etags.c /^#define xnew(n, Type) ((Type *) xmalloc ((n) /
+xrdef tex-src/texinfo.tex /^\\def\\xrdef #1#2{$/
xrealloc c-src/etags.c /^xrealloc (void *ptr, size_t size)$/
+xref tex-src/texinfo.tex /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/
xref-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defclass xref-etags-location (xref-location)$/
xref-location-line el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-line ((l xref-etags-lo/
xref-location-marker el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-marker ((l xref-etags-/
xref-make-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defun xref-make-etags-location (tag-info file)$/
+xrefX tex-src/texinfo.tex /^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/
+xreftie tex-src/texinfo.tex /^\\gdef\\xreftie{'tie}$/
xrnew c-src/etags.c /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/
xx make-src/Makefile /^xx="this line is here because of a fontlock bug$/
xyz ruby-src/test1.ru /^ alias_method :xyz,$/
@@ -4684,8 +5103,22 @@ z c.c 144
z c.c 164
z cp-src/clheir.hpp 49
z cp-src/clheir.hpp 58
+zzz tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
+zzz tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
+{ tex-src/texinfo.tex /^\\let\\{=\\mylbrace$/
+{ tex-src/texinfo.tex /^\\let\\{=\\ptexlbrace$/
| tex-src/texinfo.tex /^\\def|{{\\tt \\char '174}}$/
+| tex-src/texinfo.tex /^\\let|=\\normalverticalbar$/
+} tex-src/texinfo.tex /^\\let\\}=\\myrbrace$/
+} tex-src/texinfo.tex /^\\let\\}=\\ptexrbrace$/
+~ tex-src/texinfo.tex /^\\catcode `\\^=7 \\catcode `\\_=8 \\catcode `\\~=13 \\let/
~ tex-src/texinfo.tex /^\\def~{{\\tt \\char '176}}$/
+~ tex-src/texinfo.tex /^\\let~=\\normaltilde$/
~A cp-src/c.C /^A::~A() {}$/
~B cp-src/c.C /^ ~B() {};$/
~MDiagArray2 cp-src/MDiagArray2.h /^ ~MDiagArray2 (void) { }$/
diff --git a/test/manual/etags/CTAGS.good_crlf b/test/manual/etags/CTAGS.good_crlf
index 3d64fa63c7a..29ac01d605d 100644
--- a/test/manual/etags/CTAGS.good_crlf
+++ b/test/manual/etags/CTAGS.good_crlf
@@ -1,3 +1,5 @@
+" tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
+" tex-src/texinfo.tex /^\\let"=\\activedoublequote$/
#a-defer-word forth-src/test-forth.fth /^defer #a-defer-word$/
#some-storage forth-src/test-forth.fth /^2000 buffer: #some-storage$/
$0x80 c-src/sysdep.h 32
@@ -32,14 +34,28 @@ $user_comment_lc php-src/lce_functions.php 115
${CHECKOBJS} make-src/Makefile /^${CHECKOBJS}: CFLAGS=-g3 -DNULLFREECHECK=0$/
%cdiff make-src/Makefile /^%cdiff: CTAGS% CTAGS ${infiles}$/
%ediff make-src/Makefile /^%ediff: ETAGS% ETAGS ${infiles}$/
+& tex-src/texinfo.tex /^\\gdef\\functionparens{\\boldbrax\\let&=\\amprm\\parenco/
+& tex-src/texinfo.tex /^\\gdef\\normalparens{\\boldbrax\\let&=\\ampnr}$/
+' tex-src/texinfo.tex /^\\def\\'{{'}}$/
+( tex-src/texinfo.tex /^\\gdef\\amprm#1 {{\\rm\\}\\let(=\\oprm \\let)=\\clrm\\ }/
+( tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
+( tex-src/texinfo.tex /^\\gdef\\oprm#1 {{\\rm\\char`\\(}#1 \\bf \\let(=\\opnested /
+( tex-src/texinfo.tex /^\\ifnum \\parencount=1 {\\rm \\char `\\)}\\sl \\let(=\\opr/
($_,$flag,$opt,$f,$r,@temp perl-src/yagrip.pl 8
($prog,$_,@list perl-src/yagrip.pl 39
($string,$flag,@string,@temp,@last perl-src/yagrip.pl 40
(a-forth-constant forth-src/test-forth.fth /^constant (a-forth-constant$/
(another-forth-word) forth-src/test-forth.fth /^: (another-forth-word) ( -- )$/
(foo) forth-src/test-forth.fth /^: (foo) 1 ;$/
+) tex-src/texinfo.tex /^\\gdef\\amprm#1 {{\\rm\\}\\let(=\\oprm \\let)=\\clrm\\ }/
+) tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
+* tex-src/texinfo.tex /^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/
+* tex-src/texinfo.tex /^\\let\\*=\\ptexstar$/
+ ruby-src/test.rb /^ def +(y)$/
+ tex-src/texinfo.tex /^\\def+{{\\tt \\char 43}}$/
++ tex-src/texinfo.tex /^\\let+=\\normalplus}$/
+. tex-src/texinfo.tex /^\\def\\.{.\\spacefactor=3000 }$/
+. tex-src/texinfo.tex /^\\let\\.=\\ptexdot$/
.PRECIOUS make-src/Makefile /^.PRECIOUS: ETAGS CTAGS ETAGS16 CTAGS16 ETAGS17 CTA/
/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/
/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/space \/exclam/
@@ -171,35 +187,26 @@ ${CHECKOBJS} make-src/Makefile /^${CHECKOBJS}: CFLAGS=-g3 -DNULLFREECHECK=0$/
2const forth-src/test-forth.fth /^3 4 2constant 2const$/
2val forth-src/test-forth.fth /^2const 2value 2val$/
2var forth-src/test-forth.fth /^2variable 2var$/
+: tex-src/texinfo.tex /^\\def\\:{\\spacefactor=1000 }$/
:a-forth-dictionary-entry forth-src/test-forth.fth /^create :a-forth-dictionary-entry$/
< tex-src/texinfo.tex /^\\def<{{\\tt \\less}}$/
+< tex-src/texinfo.tex /^\\let<=\\normalless$/
<< ruby-src/test.rb /^ def <<(y)$/
<= ruby-src/test.rb /^ def <=(y)$/
<=> ruby-src/test.rb /^ def <=>(y)$/
= tex-src/texinfo.tex /^\\global\\def={{\\tt \\char 61}}}$/
-= tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/
-= tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
-= tex-src/texinfo.tex /^\\global\\let\\section = \\unnumberedsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsection = \\unnumberedsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\unnumberedsubsubsec$/
=/f ada-src/etags-test-for.ada /^ function "=" (L, R : System.Address) return Boo/
== ruby-src/test.rb /^ def ==(y)$/
=== ruby-src/test.rb /^ def ===(y)$/
-=\indexdummyfont tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/
-=\relax tex-src/texinfo.tex /^\\let\\appendix=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\chapter=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\section=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\subsection=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\subsubsection=\\relax$/
-=\smartitalic tex-src/texinfo.tex /^\\let\\cite=\\smartitalic$/
=starts-with-equals! scm-src/test.scm /^(define =starts-with-equals! #t)$/
> tex-src/texinfo.tex /^\\def>{{\\tt \\gtr}}$/
+> tex-src/texinfo.tex /^\\let>=\\normalgreater$/
>field1 forth-src/test-forth.fth /^ 9 field >field1$/
>field2 forth-src/test-forth.fth /^ 5 field >field2$/
+@ tex-src/texinfo.tex /^\\def\\@{@}%$/
+@ tex-src/texinfo.tex /^\\def\\@{{\\tt \\char '100}}$/
+@sf tex-src/texinfo.tex /^\\ifhmode\\edef\\@sf{\\spacefactor\\the\\spacefactor}\\\/\\/
+@sf tex-src/texinfo.tex /^\\let\\@sf\\empty$/
A c.c 162
A cp-src/c.C /^void A::A() {}$/
A cp-src/c.C 117
@@ -324,6 +331,11 @@ CATCHER c-src/emacs/src/lisp.h 3021
CDR c-src/emacs/src/lisp.h /^CDR (Lisp_Object c)$/
CDR_SAFE c-src/emacs/src/lisp.h /^CDR_SAFE (Lisp_Object c)$/
CFLAGS make-src/Makefile /^CFLAGS=${WARNINGS} -ansi -g3 # -pg -O$/
+CHAPFopen tex-src/texinfo.tex /^\\def\\CHAPFopen{$/
+CHAPFplain tex-src/texinfo.tex /^\\def\\CHAPFplain{$/
+CHAPPAGodd tex-src/texinfo.tex /^\\def\\CHAPPAGodd{$/
+CHAPPAGoff tex-src/texinfo.tex /^\\def\\CHAPPAGoff{$/
+CHAPPAGon tex-src/texinfo.tex /^\\def\\CHAPPAGon{$/
CHAR c-src/etags.c /^#define CHAR(x) ((unsigned int)(x) & (CHARS - 1))/
CHAR y-src/cccp.c 7
CHARACTERBITS c-src/emacs/src/lisp.h 2457
@@ -529,6 +541,7 @@ EMACS_UINT c-src/emacs/src/lisp.h 97
ENTRY c-src/sysdep.h /^#define ENTRY(name) \\$/
ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) enum TYPE$/
ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) unsigned int$/
+ENVcheck tex-src/texinfo.tex /^\\def\\ENVcheck{%$/
EQ c-src/emacs/src/lisp.h /^# define EQ(x, y) lisp_h_EQ (x, y)$/
EQUAL y-src/cccp.c 12
ERLSRC make-src/Makefile /^ERLSRC=gs_dialog.erl lines.erl lists.erl$/
@@ -542,13 +555,37 @@ EXFUN c-src/emacs/src/lisp.h /^#define EXFUN(fnname, maxargs) \\$/
EXTAGS make-src/Makefile /^EXTAGS: extags ${infiles} Makefile$/
EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 3497
EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 4372
+Ealphaenumerate tex-src/texinfo.tex /^\\def\\Ealphaenumerate{\\Eenumerate}$/
+Ecapsenumerate tex-src/texinfo.tex /^\\def\\Ecapsenumerate{\\Eenumerate}$/
+Ecartouche tex-src/texinfo.tex /^\\def\\Ecartouche{%$/
+Edescription tex-src/texinfo.tex /^\\def\\Edescription{\\Etable}% Necessary kludge.$/
+Edisplay tex-src/texinfo.tex /^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/
+Eexample tex-src/texinfo.tex /^\\def\\Eexample{\\Elisp}$/
+Eflushleft tex-src/texinfo.tex /^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/
+Eflushright tex-src/texinfo.tex /^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/
+Eformat tex-src/texinfo.tex /^\\def\\Eformat{\\endgroup\\afterenvbreak}$/
+Eftable tex-src/texinfo.tex /^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/
+Egroup tex-src/texinfo.tex /^ \\def\\Egroup{\\egroup\\endgroup}%$/
+Eifclear tex-src/texinfo.tex /^\\def\\Eifclear{}$/
+Eifset tex-src/texinfo.tex /^\\def\\Eifset{}$/
+Eiftex tex-src/texinfo.tex /^\\def\\Eiftex{}$/
+Elisp tex-src/texinfo.tex /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/
EmptyNmStr pas-src/common.pas /^function EmptyNmStr(* : NameString*);$/
Environment tex-src/gzip.texi /^@node Environment, Tapes, Advanced usage, Top$/
+Equotation tex-src/texinfo.tex /^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/
Erlang_functions c-src/etags.c /^Erlang_functions (FILE *inf)$/
Erlang_help c-src/etags.c 567
Erlang_suffixes c-src/etags.c 565
ErrStrToNmStr pas-src/common.pas /^function ErrStrToNmStr;(*($/
Error_Information/t ada-src/2ataspri.ads /^ type Error_Information is new Interfaces.C.POSI/
+Esmallexample tex-src/texinfo.tex /^\\def\\Esmallexample{\\Elisp}$/
+Esmallexample tex-src/texinfo.tex /^\\global\\def\\Esmallexample{\\Esmalllisp}$/
+Esmalllisp tex-src/texinfo.tex /^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/
+Etable tex-src/texinfo.tex /^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/
+Etable tex-src/texinfo.tex /^\\let\\Etable=\\relax}}$/
+Etex tex-src/texinfo.tex /^\\let\\Etex=\\endgroup}$/
+Etitlepage tex-src/texinfo.tex /^\\def\\Etitlepage{%$/
+Evtable tex-src/texinfo.tex /^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/
Exit_LL_Task/p ada-src/2ataspri.adb /^ procedure Exit_LL_Task is$/
Exit_LL_Task/p ada-src/2ataspri.ads /^ procedure Exit_LL_Task;$/
ExtractCommentInfo pas-src/common.pas /^procedure ExtractCommentInfo; (*($/
@@ -689,6 +726,20 @@ HASH_TABLE_P c-src/emacs/src/lisp.h /^HASH_TABLE_P (Lisp_Object a)$/
HASH_TABLE_SIZE c-src/emacs/src/lisp.h /^HASH_TABLE_SIZE (struct Lisp_Hash_Table *h)$/
HASH_VALUE c-src/emacs/src/lisp.h /^HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t i/
HAVE_NTGUI c-src/etags.c 116
+HEADINGSafter tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
+HEADINGSdouble tex-src/texinfo.tex /^\\def\\HEADINGSdouble{$/
+HEADINGSdoubleafter tex-src/texinfo.tex /^\\let\\HEADINGSdoubleafter=\\HEADINGSafter$/
+HEADINGSdoublex tex-src/texinfo.tex /^\\def\\HEADINGSdoublex{%$/
+HEADINGShook tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
+HEADINGShook tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
+HEADINGShook tex-src/texinfo.tex /^\\let\\HEADINGShook=\\relax$/
+HEADINGSoff tex-src/texinfo.tex /^\\def\\HEADINGSoff{$/
+HEADINGSon tex-src/texinfo.tex /^\\def\\HEADINGSon{\\HEADINGSdouble}$/
+HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/
+HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/
+HEADINGSsingle tex-src/texinfo.tex /^\\def\\HEADINGSsingle{$/
+HEADINGSsingleafter tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
+HEADINGSsinglex tex-src/texinfo.tex /^\\def\\HEADINGSsinglex{%$/
HEAP c-src/emacs/src/gmalloc.c 131
HTMLSRC make-src/Makefile /^HTMLSRC=softwarelibero.html index.shtml algrthms.h/
HTML_help c-src/etags.c 584
@@ -750,6 +801,7 @@ JAVASRC make-src/Makefile /^JAVASRC=AWTEMul.java KeyEve.java SMan.java SysCol./
KBD_BUFFER_SIZE c-src/emacs/src/keyboard.c 82
KBYTES objc-src/PackInsp.m 58
KEY_TO_CHAR c-src/emacs/src/keyboard.c /^#define KEY_TO_CHAR(k) (XINT (k) & ((1 << CHARACTE/
+L tex-src/texinfo.tex /^\\let\\L=\\ptexL$/
LATEST make-src/Makefile /^LATEST=17$/
LCE_COMMENT php-src/lce_functions.php 13
LCE_COMMENT_TOOL php-src/lce_functions.php 17
@@ -1407,6 +1459,9 @@ Task_Type/b ada-src/etags-test-for.ada /^ task body Task_Type is$/
Task_Type/b ada-src/waroquiers.ada /^ task body Task_Type is$/
Task_Type/k ada-src/etags-test-for.ada /^ task type Task_Type is$/
Task_Type/k ada-src/waroquiers.ada /^ task type Task_Type is$/
+TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}$/
+TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}%$/
+TeX tex-src/texinfo.tex /^\\let\\TeX=\\indexdummytex$/
TeX_commands c-src/etags.c /^TeX_commands (FILE *inf)$/
TeX_help c-src/etags.c 674
TeX_suffixes c-src/etags.c 672
@@ -1666,551 +1721,22 @@ YY_DECL_VARIABLES /usr/share/bison/bison.simple 391
Yacc_entries c-src/etags.c /^Yacc_entries (FILE *inf)$/
Yacc_help c-src/etags.c 693
Yacc_suffixes c-src/etags.c 691
+Yappendixletterandtype tex-src/texinfo.tex /^\\def\\Yappendixletterandtype{%$/
+Ynothing tex-src/texinfo.tex /^\\def\\Ynothing{}$/
+Ypagenumber tex-src/texinfo.tex /^\\def\\Ypagenumber{\\folio}$/
+Ysectionnumberandtype tex-src/texinfo.tex /^\\def\\Ysectionnumberandtype{%$/
+Ytitle tex-src/texinfo.tex /^\\def\\Ytitle{\\thischapter}$/
Z c-src/h.h 100
+[ tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
[] ruby-src/test.rb /^ def [](y)$/
[]= ruby-src/test.rb /^ def []=(y, val)$/
-\ tex-src/texinfo.tex /^\\def\\ {{\\fontdimen2\\font=\\tclosesave{} }}%$/
-\ tex-src/texinfo.tex /^\\gdef\\sepspaces{\\def {\\ }}}$/
-\' tex-src/texinfo.tex /^\\def\\'{{'}}$/
-\* tex-src/texinfo.tex /^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/
-\. tex-src/texinfo.tex /^\\def\\.{.\\spacefactor=3000 }$/
-\: tex-src/texinfo.tex /^\\def\\:{\\spacefactor=1000 }$/
-\@ tex-src/texinfo.tex /^\\def\\@{@}%$/
-\@ tex-src/texinfo.tex /^\\def\\@{{\\tt \\char '100}}$/
-\CHAPFopen tex-src/texinfo.tex /^\\def\\CHAPFopen{$/
-\CHAPFplain tex-src/texinfo.tex /^\\def\\CHAPFplain{$/
-\CHAPPAGodd tex-src/texinfo.tex /^\\def\\CHAPPAGodd{$/
-\CHAPPAGoff tex-src/texinfo.tex /^\\def\\CHAPPAGoff{$/
-\CHAPPAGon tex-src/texinfo.tex /^\\def\\CHAPPAGon{$/
-\ENVcheck tex-src/texinfo.tex /^\\def\\ENVcheck{%$/
-\Ealphaenumerate tex-src/texinfo.tex /^\\def\\Ealphaenumerate{\\Eenumerate}$/
-\Ecapsenumerate tex-src/texinfo.tex /^\\def\\Ecapsenumerate{\\Eenumerate}$/
-\Ecartouche tex-src/texinfo.tex /^\\def\\Ecartouche{%$/
-\Edescription tex-src/texinfo.tex /^\\def\\Edescription{\\Etable}% Necessary kludge.$/
-\Edisplay tex-src/texinfo.tex /^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/
-\Eexample tex-src/texinfo.tex /^\\def\\Eexample{\\Elisp}$/
-\Eflushleft tex-src/texinfo.tex /^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/
-\Eflushright tex-src/texinfo.tex /^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/
-\Eformat tex-src/texinfo.tex /^\\def\\Eformat{\\endgroup\\afterenvbreak}$/
-\Eftable tex-src/texinfo.tex /^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/
-\Egroup tex-src/texinfo.tex /^ \\def\\Egroup{\\egroup\\endgroup}%$/
-\Eifclear tex-src/texinfo.tex /^\\def\\Eifclear{}$/
-\Eifset tex-src/texinfo.tex /^\\def\\Eifset{}$/
-\Eiftex tex-src/texinfo.tex /^\\def\\Eiftex{}$/
-\Elisp tex-src/texinfo.tex /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/
-\Equotation tex-src/texinfo.tex /^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/
-\Esmallexample tex-src/texinfo.tex /^\\def\\Esmallexample{\\Elisp}$/
-\Esmallexample tex-src/texinfo.tex /^\\global\\def\\Esmallexample{\\Esmalllisp}$/
-\Esmalllisp tex-src/texinfo.tex /^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/
-\Etable tex-src/texinfo.tex /^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/
-\Etitlepage tex-src/texinfo.tex /^\\def\\Etitlepage{%$/
-\Evtable tex-src/texinfo.tex /^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/
-\HEADINGSafter tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
-\HEADINGSdouble tex-src/texinfo.tex /^\\def\\HEADINGSdouble{$/
-\HEADINGSdoublex tex-src/texinfo.tex /^\\def\\HEADINGSdoublex{%$/
-\HEADINGSoff tex-src/texinfo.tex /^\\def\\HEADINGSoff{$/
-\HEADINGSon tex-src/texinfo.tex /^\\def\\HEADINGSon{\\HEADINGSdouble}$/
-\HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/
-\HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/
-\HEADINGSsingle tex-src/texinfo.tex /^\\def\\HEADINGSsingle{$/
-\HEADINGSsingleafter tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
-\HEADINGSsinglex tex-src/texinfo.tex /^\\def\\HEADINGSsinglex{%$/
-\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}$/
-\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}%$/
-\Yappendixletterandtype tex-src/texinfo.tex /^\\def\\Yappendixletterandtype{%$/
-\Ynothing tex-src/texinfo.tex /^\\def\\Ynothing{}$/
-\Ypagenumber tex-src/texinfo.tex /^\\def\\Ypagenumber{\\folio}$/
-\Ysectionnumberandtype tex-src/texinfo.tex /^\\def\\Ysectionnumberandtype{%$/
-\Ytitle tex-src/texinfo.tex /^\\def\\Ytitle{\\thischapter}$/
-\_ tex-src/texinfo.tex /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule width.3em /
-\_ tex-src/texinfo.tex /^\\def\\_{{\\realbackslash _}}%$/
-\` tex-src/texinfo.tex /^\\def\\`{{`}}$/
-\aboveenvbreak tex-src/texinfo.tex /^\\def\\aboveenvbreak{{\\advance\\aboveenvskipamount by/
-\activedoublequote tex-src/texinfo.tex /^\\def\\activedoublequote{{\\tt \\char '042}}$/
-\activeparens tex-src/texinfo.tex /^\\def\\activeparens{%$/
-\afourpaper tex-src/texinfo.tex /^\\def\\afourpaper{$/
-\afterenvbreak tex-src/texinfo.tex /^\\def\\afterenvbreak{\\endgraf \\ifdim\\lastskip<\\above/
-\alphaenumerate tex-src/texinfo.tex /^\\def\\alphaenumerate{\\enumerate{a}}$/
-\appendix tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
-\appendixletter tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/
-\appendixnoderef tex-src/texinfo.tex /^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/
-\appendixsec tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
-\appendixsection tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
-\appendixsectionzzz tex-src/texinfo.tex /^\\def\\appendixsectionzzz #1{\\seccheck{appendixsecti/
-\appendixsetref tex-src/texinfo.tex /^\\def\\appendixsetref#1{%$/
-\appendixsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
-\appendixsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubseczzz #1{\\seccheck{appendixsubsec/
-\appendixsubsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
-\appendixsubsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubsubseczzz #1{\\seccheck{appendixsub/
-\appendixzzz tex-src/texinfo.tex /^\\def\\appendixzzz #1{\\seccheck{appendix}%$/
-\asis tex-src/texinfo.tex /^\\def\\asis#1{#1}$/
-\author tex-src/texinfo.tex /^ \\def\\author{\\parsearg\\authorzzz}%$/
-\authorfont tex-src/texinfo.tex /^ \\def\\authorfont{\\authorrm \\normalbaselineskip =/
-\authorzzz tex-src/texinfo.tex /^ \\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt /
-\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}$/
-\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}%$/
-\b tex-src/texinfo.tex /^\\def\\b#1{{\\bf #1}}$/
-\balancecolumns tex-src/texinfo.tex /^\\def\\balancecolumns{%$/
-\begin tex-src/texinfo.tex /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/
-\begindoublecolumns tex-src/texinfo.tex /^\\def\\begindoublecolumns{\\begingroup$/
-\beginxxx tex-src/texinfo.tex /^\\def\\beginxxx #1{%$/
-\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }$/
-\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }%$/
-\bullet tex-src/texinfo.tex /^\\def\\bullet{$\\ptexbullet$}$/
-\bye tex-src/texinfo.tex /^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/
-\capsenumerate tex-src/texinfo.tex /^\\def\\capsenumerate{\\enumerate{A}}$/
-\cartbot tex-src/texinfo.tex /^\\def\\cartbot{\\hbox to \\cartouter{\\hskip\\lskip$/
-\cartouche tex-src/texinfo.tex /^\\long\\def\\cartouche{%$/
-\carttop tex-src/texinfo.tex /^\\def\\carttop{\\hbox to \\cartouter{\\hskip\\lskip$/
-\cbl tex-src/texinfo.tex /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/
-\cbr tex-src/texinfo.tex /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/
-\center tex-src/texinfo.tex /^\\def\\center{\\parsearg\\centerzzz}$/
-\centerzzz tex-src/texinfo.tex /^\\def\\centerzzz #1{{\\advance\\hsize by -\\leftskip$/
-\chapbreak tex-src/texinfo.tex /^\\def\\chapbreak{\\dobreak \\chapheadingskip {-4000}}$/
-\chapentry tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
-\chapentryfonts tex-src/texinfo.tex /^\\def\\chapentryfonts{\\secfonts \\rm}$/
-\chapfonts tex-src/texinfo.tex /^\\def\\chapfonts{%$/
-\chapheading tex-src/texinfo.tex /^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/
-\chapheadingzzz tex-src/texinfo.tex /^\\def\\chapheadingzzz #1{\\chapbreak %$/
-\chapoddpage tex-src/texinfo.tex /^\\def\\chapoddpage{\\chappager \\ifodd\\pageno \\else \\h/
-\chappager tex-src/texinfo.tex /^\\def\\chappager{\\par\\vfill\\supereject}$/
-\chapter tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
-\chapternofonts tex-src/texinfo.tex /^\\def\\chapternofonts{%$/
-\chapterzzz tex-src/texinfo.tex /^\\def\\chapterzzz #1{\\seccheck{chapter}%$/
-\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}$/
-\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}%$/
-\chfopen tex-src/texinfo.tex /^\\def\\chfopen #1#2{\\chapoddpage {\\chapfonts$/
-\chfplain tex-src/texinfo.tex /^\\def\\chfplain #1#2{%$/
-\cindex tex-src/texinfo.tex /^\\def\\cindex {\\cpindex}$/
-\cindexsub tex-src/texinfo.tex /^\\def\\cindexsub {\\begingroup\\obeylines\\cindexsub}$/
-\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}$/
-\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}%$/
-\clear tex-src/texinfo.tex /^\\def\\clear{\\parsearg\\clearxxx}$/
-\clearxxx tex-src/texinfo.tex /^\\def\\clearxxx #1{$/
-\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}$/
-\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}%$/
-\comment tex-src/texinfo.tex /^\\def\\comment{\\catcode 64=\\other \\catcode 123=\\othe/
-\commentxxx tex-src/texinfo.tex /^\\def\\commentxxx #1{\\catcode 64=0 \\catcode 123=1 \\c/
-\contents tex-src/texinfo.tex /^\\outer\\def\\contents{%$/
-\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright }%$/
-\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright}$/
-\cropmarks tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
-\croppageout tex-src/texinfo.tex /^\\def\\croppageout#1{\\hoffset=0pt % make sure this d/
-\ctl tex-src/texinfo.tex /^\\def\\ctl{{\\circle\\char'013\\hskip -6pt}}% 6pt from /
-\ctr tex-src/texinfo.tex /^\\def\\ctr{{\\hskip 6pt\\circle\\char'010}}$/
-\ctrl tex-src/texinfo.tex /^\\def\\ctrl #1{{\\tt \\rawbackslash \\hat}#1}$/
-\defcodeindex tex-src/texinfo.tex /^\\def\\defcodeindex{\\parsearg\\newcodeindex}$/
-\defcv tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
-\defcvarheader tex-src/texinfo.tex /^\\def\\defcvarheader #1#2#3{%$/
-\defcvx tex-src/texinfo.tex /^\\def\\defcvx #1 {\\errmessage{@defcvx in invalid con/
-\deffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
-\deffnheader tex-src/texinfo.tex /^\\def\\deffnheader #1#2#3{\\doind {fn}{\\code{#2}}%$/
-\deffnx tex-src/texinfo.tex /^\\def\\deffnx #1 {\\errmessage{@deffnx in invalid con/
-\defindex tex-src/texinfo.tex /^\\def\\defindex{\\parsearg\\newindex}$/
-\defivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
-\defivarheader tex-src/texinfo.tex /^\\def\\defivarheader #1#2#3{%$/
-\defivarx tex-src/texinfo.tex /^\\def\\defivarx #1 {\\errmessage{@defivarx in invalid/
-\defmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
-\defmacheader tex-src/texinfo.tex /^\\def\\defmacheader #1#2{\\doind {fn}{\\code{#1}}% Mak/
-\defmacx tex-src/texinfo.tex /^\\def\\defmacx #1 {\\errmessage{@defmacx in invalid c/
-\defmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
-\defmethodheader tex-src/texinfo.tex /^\\def\\defmethodheader #1#2#3{%$/
-\defmethodx tex-src/texinfo.tex /^\\def\\defmethodx #1 {\\errmessage{@defmethodx in inv/
-\defmethparsebody tex-src/texinfo.tex /^\\def\\defmethparsebody #1#2#3#4 {\\begingroup\\inENV /
-\defname tex-src/texinfo.tex /^\\def\\defname #1#2{%$/
-\defop tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
-\defopheader tex-src/texinfo.tex /^\\def\\defopheader #1#2#3{%$/
-\defopparsebody tex-src/texinfo.tex /^\\def\\defopparsebody #1#2#3#4#5 {\\begingroup\\inENV /
-\defopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
-\defoptheader tex-src/texinfo.tex /^\\def\\defoptheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
-\defoptx tex-src/texinfo.tex /^\\def\\defoptx #1 {\\errmessage{@defoptx in invalid c/
-\defopvarparsebody tex-src/texinfo.tex /^\\def\\defopvarparsebody #1#2#3#4#5 {\\begingroup\\inE/
-\defopx tex-src/texinfo.tex /^\\def\\defopx #1 {\\errmessage{@defopx in invalid con/
-\defparsebody tex-src/texinfo.tex /^\\def\\defparsebody #1#2#3{\\begingroup\\inENV% Enviro/
-\defspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
-\defspecheader tex-src/texinfo.tex /^\\def\\defspecheader #1#2{\\doind {fn}{\\code{#1}}% Ma/
-\defspecx tex-src/texinfo.tex /^\\def\\defspecx #1 {\\errmessage{@defspecx in invalid/
-\deftp tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
-\deftpargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/
-\deftpheader tex-src/texinfo.tex /^\\def\\deftpheader #1#2#3{\\doind {tp}{\\code{#2}}%$/
-\deftpx tex-src/texinfo.tex /^\\def\\deftpx #1 {\\errmessage{@deftpx in invalid con/
-\deftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
-\deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefnheader #1#2#3{\\deftypefnheaderx{#1}{/
-\deftypefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheaderx #1#2#3 #4\\relax{%$/
-\deftypefnx tex-src/texinfo.tex /^\\def\\deftypefnx #1 {\\errmessage{@deftypefnx in inv/
-\deftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
-\deftypefunargs tex-src/texinfo.tex /^\\def\\deftypefunargs #1{%$/
-\deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefunheader #1#2{\\deftypefunheaderx{#1}#/
-\deftypefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheaderx #1#2 #3\\relax{%$/
-\deftypeunx tex-src/texinfo.tex /^\\def\\deftypeunx #1 {\\errmessage{@deftypeunx in inv/
-\deftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
-\deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevarheader #1#2{%$/
-\deftypevarx tex-src/texinfo.tex /^\\def\\deftypevarx #1 {\\errmessage{@deftypevarx in i/
-\deftypevr tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
-\deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevrheader #1#2#3{\\doind {vr}{\\code{#3}}/
-\deftypevrx tex-src/texinfo.tex /^\\def\\deftypevrx #1 {\\errmessage{@deftypevrx in inv/
-\defun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
-\defunargs tex-src/texinfo.tex /^\\def\\defunargs #1{\\functionparens \\sl$/
-\defunheader tex-src/texinfo.tex /^\\def\\defunheader #1#2{\\doind {fn}{\\code{#1}}% Make/
-\defunx tex-src/texinfo.tex /^\\def\\defunx #1 {\\errmessage{@defunx in invalid con/
-\defvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
-\defvarargs tex-src/texinfo.tex /^\\def\\defvarargs #1{\\normalparens #1%$/
-\defvarheader tex-src/texinfo.tex /^\\def\\defvarheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
-\defvarparsebody tex-src/texinfo.tex /^\\def\\defvarparsebody #1#2#3{\\begingroup\\inENV% Env/
-\defvarx tex-src/texinfo.tex /^\\def\\defvarx #1 {\\errmessage{@defvarx in invalid c/
-\defvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
-\defvrheader tex-src/texinfo.tex /^\\def\\defvrheader #1#2#3{\\doind {vr}{\\code{#2}}%$/
-\defvrparsebody tex-src/texinfo.tex /^\\def\\defvrparsebody #1#2#3#4 {\\begingroup\\inENV %$/
-\defvrx tex-src/texinfo.tex /^\\def\\defvrx #1 {\\errmessage{@defvrx in invalid con/
-\description tex-src/texinfo.tex /^\\def\\description{\\tablez{\\dontindex}{1}{}{}{}{}}$/
-\df tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
-\dfn tex-src/texinfo.tex /^\\def\\dfn##1{\\realbackslash dfn {##1}}$/
-\direntry tex-src/texinfo.tex /^\\def\\direntry{\\begingroup\\direntryxxx}$/
-\direntryxxx tex-src/texinfo.tex /^\\long\\def\\direntryxxx #1\\end direntry{\\endgroup\\ig/
-\display tex-src/texinfo.tex /^\\def\\display{\\begingroup\\inENV %This group ends at/
-\dmn tex-src/texinfo.tex /^\\def\\dmn#1{\\thinspace #1}$/
-\dobreak tex-src/texinfo.tex /^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/
-\dochapentry tex-src/texinfo.tex /^\\def\\dochapentry#1#2{%$/
-\docodeindex tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
-\doind tex-src/texinfo.tex /^\\def\\doind #1#2{%$/
-\doindex tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
-\donoderef tex-src/texinfo.tex /^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/
-\dontindex tex-src/texinfo.tex /^\\def\\dontindex #1{}$/
-\dopageno tex-src/texinfo.tex /^\\def\\dopageno#1{{\\rm #1}}$/
-\doprintindex tex-src/texinfo.tex /^\\def\\doprintindex#1{%$/
-\dosecentry tex-src/texinfo.tex /^\\def\\dosecentry#1#2{%$/
-\dosetq tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/
-\doshortpageno tex-src/texinfo.tex /^\\def\\doshortpageno#1{{\\rm #1}}$/
-\dosubind tex-src/texinfo.tex /^\\def\\dosubind #1#2#3{%$/
-\dosubsecentry tex-src/texinfo.tex /^\\def\\dosubsecentry#1#2{%$/
-\dosubsubsecentry tex-src/texinfo.tex /^\\def\\dosubsubsecentry#1#2{%$/
-\dots tex-src/texinfo.tex /^\\def\\dots{$\\ldots$}$/
-\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots }%$/
-\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots}$/
-\doublecolumnout tex-src/texinfo.tex /^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/
-\emph tex-src/texinfo.tex /^\\def\\emph##1{\\realbackslash emph {##1}}$/
-\end tex-src/texinfo.tex /^\\def\\end{\\parsearg\\endxxx}$/
-\enddoublecolumns tex-src/texinfo.tex /^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/
-\endxxx tex-src/texinfo.tex /^\\def\\endxxx #1{%$/
-\entry tex-src/texinfo.tex /^\\def\\entry #1#2{\\begingroup$/
-\enumerate tex-src/texinfo.tex /^\\def\\enumerate{\\parsearg\\enumeratezzz}$/
-\enumeratey tex-src/texinfo.tex /^\\def\\enumeratey #1 #2\\endenumeratey{%$/
-\enumeratezzz tex-src/texinfo.tex /^\\def\\enumeratezzz #1{\\enumeratey #1 \\endenumerate/
-\equiv tex-src/texinfo.tex /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
-\equiv tex-src/texinfo.tex /^\\def\\equiv{\\realbackslash equiv}$/
-\error tex-src/texinfo.tex /^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/
-\errorE tex-src/texinfo.tex /^\\def\\errorE#1{$/
-\evenfooting tex-src/texinfo.tex /^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/
-\evenheading tex-src/texinfo.tex /^\\def\\evenheading{\\parsearg\\evenheadingxxx}$/
-\everyfooting tex-src/texinfo.tex /^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/
-\everyheading tex-src/texinfo.tex /^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/
-\ewbot tex-src/texinfo.tex /^\\def\\ewbot{\\vrule height0pt depth\\cornerthick widt/
-\ewtop tex-src/texinfo.tex /^\\def\\ewtop{\\vrule height\\cornerthick depth0pt widt/
-\exdent tex-src/texinfo.tex /^\\def\\exdent{\\parsearg\\exdentyyy}$/
-\exdentyyy tex-src/texinfo.tex /^\\def\\exdentyyy #1{{\\hfil\\break\\hbox{\\kern -\\exdent/
-\expansion tex-src/texinfo.tex /^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/
-\expansion tex-src/texinfo.tex /^\\def\\expansion{\\realbackslash expansion}$/
-\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}$/
-\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}%$/
-\finalout tex-src/texinfo.tex /^\\def\\finalout{\\overfullrule=0pt}$/
-\findex tex-src/texinfo.tex /^\\def\\findex {\\fnindex}$/
-\finishtitlepage tex-src/texinfo.tex /^\\def\\finishtitlepage{%$/
-\flushcr tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else /
-\flushleft tex-src/texinfo.tex /^\\def\\flushleft{%$/
-\flushright tex-src/texinfo.tex /^\\def\\flushright{%$/
-\fnitemindex tex-src/texinfo.tex /^\\def\\fnitemindex #1{\\doind {fn}{\\code{#1}}}%$/
-\format tex-src/texinfo.tex /^\\def\\format{\\begingroup\\inENV %This group ends at /
-\frenchspacing tex-src/texinfo.tex /^\\def\\frenchspacing{\\sfcode46=1000 \\sfcode63=1000 \\/
-\ftable tex-src/texinfo.tex /^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/
-\gloggingall tex-src/texinfo.tex /^\\def\\gloggingall{\\begingroup \\globaldefs = 1 \\logg/
-\group tex-src/texinfo.tex /^\\def\\group{\\begingroup$/
-\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}$/
-\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}%$/
-\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/
-\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}%$/
-\heading tex-src/texinfo.tex /^\\def\\heading{\\parsearg\\secheadingi}$/
-\headings tex-src/texinfo.tex /^\\def\\headings #1 {\\csname HEADINGS#1\\endcsname}$/
-\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}$/
-\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}%$/
-\ifclear tex-src/texinfo.tex /^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/
-\ifclearfail tex-src/texinfo.tex /^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/
-\ifclearfailxxx tex-src/texinfo.tex /^\\long\\def\\ifclearfailxxx #1\\end ifclear{\\endgroup\\/
-\ifclearxxx tex-src/texinfo.tex /^\\def\\ifclearxxx #1{\\endgroup$/
-\ifinfo tex-src/texinfo.tex /^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/
-\ifinfoxxx tex-src/texinfo.tex /^\\long\\def\\ifinfoxxx #1\\end ifinfo{\\endgroup\\ignore/
-\ifset tex-src/texinfo.tex /^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/
-\ifsetfail tex-src/texinfo.tex /^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/
-\ifsetfailxxx tex-src/texinfo.tex /^\\long\\def\\ifsetfailxxx #1\\end ifset{\\endgroup\\igno/
-\ifsetxxx tex-src/texinfo.tex /^\\def\\ifsetxxx #1{\\endgroup$/
-\iftex tex-src/texinfo.tex /^\\def\\iftex{}$/
-\ifusingtt tex-src/texinfo.tex /^\\def\\ifusingtt#1#2{\\ifdim \\fontdimen3\\the\\font=0pt/
-\ignore tex-src/texinfo.tex /^\\def\\ignore{\\begingroup\\ignoresections$/
-\ignoresections tex-src/texinfo.tex /^\\def\\ignoresections{%$/
-\ignorexxx tex-src/texinfo.tex /^\\long\\def\\ignorexxx #1\\end ignore{\\endgroup\\ignore/
-\ii tex-src/texinfo.tex /^\\def\\ii#1{{\\it #1}} % italic font$/
-\inENV tex-src/texinfo.tex /^\\newif\\ifENV \\ENVfalse \\def\\inENV{\\ifENV\\relax\\els/
-\include tex-src/texinfo.tex /^\\def\\include{\\parsearg\\includezzz}$/
-\includezzz tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/
-\indexbackslash tex-src/texinfo.tex /^ \\def\\indexbackslash{\\rawbackslashxx}$/
-\indexdotfill tex-src/texinfo.tex /^\\def\\indexdotfill{\\cleaders$/
-\indexdummies tex-src/texinfo.tex /^\\def\\indexdummies{%$/
-\indexdummydots tex-src/texinfo.tex /^\\def\\indexdummydots{...}$/
-\indexdummyfont tex-src/texinfo.tex /^\\def\\indexdummyfont#1{#1}$/
-\indexdummytex tex-src/texinfo.tex /^\\def\\indexdummytex{TeX}$/
-\indexfonts tex-src/texinfo.tex /^\\def\\indexfonts{%$/
-\indexnofonts tex-src/texinfo.tex /^\\def\\indexnofonts{%$/
-\infoappendix tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
-\infoappendixsec tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
-\infoappendixsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
-\infoappendixsubsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
-\infochapter tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/
-\inforef tex-src/texinfo.tex /^\\def\\inforef #1{\\inforefzzz #1,,,,**}$/
-\inforefzzz tex-src/texinfo.tex /^\\def\\inforefzzz #1,#2,#3,#4**{See Info file \\file{/
-\infosection tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/
-\infosubsection tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
-\infosubsubsection tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
-\infotop tex-src/texinfo.tex /^\\def\\infotop{\\parsearg\\unnumberedzzz}$/
-\infounnumbered tex-src/texinfo.tex /^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/
-\infounnumberedsec tex-src/texinfo.tex /^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/
-\infounnumberedsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/
-\infounnumberedsubsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/
-\initial tex-src/texinfo.tex /^\\def\\initial #1{%$/
-\internalBitem tex-src/texinfo.tex /^\\def\\internalBitem{\\smallbreak \\parsearg\\itemzzz}$/
-\internalBitemx tex-src/texinfo.tex /^\\def\\internalBitemx{\\par \\parsearg\\itemzzz}$/
-\internalBkitem tex-src/texinfo.tex /^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/
-\internalBkitemx tex-src/texinfo.tex /^\\def\\internalBkitemx{\\par \\parsearg\\kitemzzz}$/
-\internalBxitem tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/
-\internalBxitemx tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/
-\internalsetq tex-src/texinfo.tex /^\\def\\internalsetq #1#2{'xrdef {#1}{\\csname #2\\endc/
-\item tex-src/texinfo.tex /^\\def\\item{\\errmessage{@item while not in a table}}/
-\itemcontents tex-src/texinfo.tex /^\\def\\itemcontents{#1}%$/
-\itemfont tex-src/texinfo.tex /^\\def\\itemfont{#2}%$/
-\itemize tex-src/texinfo.tex /^\\def\\itemize{\\parsearg\\itemizezzz}$/
-\itemizeitem tex-src/texinfo.tex /^\\def\\itemizeitem{%$/
-\itemizey tex-src/texinfo.tex /^\\def\\itemizey #1#2{%$/
-\itemizezzz tex-src/texinfo.tex /^\\def\\itemizezzz #1{%$/
-\itemx tex-src/texinfo.tex /^\\def\\itemx{\\errmessage{@itemx while not in a table/
-\itemzzz tex-src/texinfo.tex /^\\def\\itemzzz #1{\\begingroup %$/
-\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/
-\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/
-\kbd tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
-\kbdfoo tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
-\key tex-src/texinfo.tex /^\\def\\key #1{{\\tt \\exhyphenpenalty=10000\\uppercase{/
-\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}$/
-\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}%$/
-\kindex tex-src/texinfo.tex /^\\def\\kindex {\\kyindex}$/
-\kitem tex-src/texinfo.tex /^\\def\\kitem{\\errmessage{@kitem while not in a table/
-\kitemx tex-src/texinfo.tex /^\\def\\kitemx{\\errmessage{@kitemx while not in a tab/
-\kitemzzz tex-src/texinfo.tex /^\\def\\kitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
-\l tex-src/texinfo.tex /^\\def\\l#1{{\\li #1}\\null} % $/
-\labelspace tex-src/texinfo.tex /^\\def\\labelspace{\\hskip1em \\relax}$/
-\lbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/
-\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}$/
-\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}%$/
-\linenumber tex-src/texinfo.tex /^ \\def\\linenumber{\\the\\inputlineno:\\space}$/
-\lisp tex-src/texinfo.tex /^\\def\\lisp{\\aboveenvbreak$/
-\loggingall tex-src/texinfo.tex /^\\def\\loggingall{\\tracingcommands2 \\tracingstats2 $/
-\losespace tex-src/texinfo.tex /^\\def\\losespace #1{#1}$/
-\lowercaseenumerate tex-src/texinfo.tex /^\\def\\lowercaseenumerate{%$/
-\lvvmode tex-src/texinfo.tex /^\\def\\lvvmode{\\vbox to 0pt{}}$/
-\majorheading tex-src/texinfo.tex /^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/
-\majorheadingzzz tex-src/texinfo.tex /^\\def\\majorheadingzzz #1{%$/
-\math tex-src/texinfo.tex /^\\def\\math#1{\\implicitmath #1\\implicitmath}$/
-\menu tex-src/texinfo.tex /^\\long\\def\\menu #1\\end menu{}$/
-\minus tex-src/texinfo.tex /^\\def\\minus{$-$}$/
-\mylbrace tex-src/texinfo.tex /^\\def\\mylbrace {{\\tt \\char '173}}$/
-\myrbrace tex-src/texinfo.tex /^\\def\\myrbrace {{\\tt \\char '175}}$/
-\need tex-src/texinfo.tex /^\\def\\need{\\parsearg\\needx}$/
-\needx tex-src/texinfo.tex /^\\def\\needx#1{%$/
-\newcodeindex tex-src/texinfo.tex /^\\def\\newcodeindex #1{$/
-\newindex tex-src/texinfo.tex /^\\def\\newindex #1{$/
-\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
-\nm tex-src/testenv.tex /^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/
-\node tex-src/texinfo.tex /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/
-\nodexxx[ tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
-\nodezzz tex-src/texinfo.tex /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/
-\nofillexdent tex-src/texinfo.tex /^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/
-\nofillexdentyyy tex-src/texinfo.tex /^\\def\\nofillexdentyyy #1{{\\advance \\leftskip by -\\e/
-\normalbackslash tex-src/texinfo.tex /^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/
-\normalcaret tex-src/texinfo.tex /^\\def\\normalcaret{^}$/
-\normaldoublequote tex-src/texinfo.tex /^\\def\\normaldoublequote{"}$/
-\normalgreater tex-src/texinfo.tex /^\\def\\normalgreater{>}$/
-\normalless tex-src/texinfo.tex /^\\def\\normalless{<}$/
-\normalplus tex-src/texinfo.tex /^\\def\\normalplus{+}$/
-\normaltilde tex-src/texinfo.tex /^\\def\\normaltilde{~}$/
-\normalunderscore tex-src/texinfo.tex /^\\def\\normalunderscore{_}$/
-\normalverticalbar tex-src/texinfo.tex /^\\def\\normalverticalbar{|}$/
-\nsbot tex-src/texinfo.tex /^\\def\\nsbot{\\vbox$/
-\nstop tex-src/texinfo.tex /^\\def\\nstop{\\vbox$/
-\numberedsec tex-src/texinfo.tex /^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/
-\numberedsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/
-\numberedsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubseczzz #1{\\seccheck{subsection}%$/
-\numberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/
-\numberedsubsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubsubseczzz #1{\\seccheck{subsubsecti/
-\numericenumerate tex-src/texinfo.tex /^\\def\\numericenumerate{%$/
-\oddfooting tex-src/texinfo.tex /^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/
-\oddheading tex-src/texinfo.tex /^\\def\\oddheading{\\parsearg\\oddheadingxxx}$/
-\onepageout tex-src/texinfo.tex /^\\def\\onepageout#1{\\hoffset=\\normaloffset$/
-\opencontents tex-src/texinfo.tex /^\\def\\opencontents{\\openout \\contentsfile = \\jobnam/
-\openindices tex-src/texinfo.tex /^\\def\\openindices{%$/
-\opnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
-\page tex-src/texinfo.tex /^ \\def\\page{%$/
-\page tex-src/texinfo.tex /^\\def\\page{\\par\\vfill\\supereject}$/
-\pagebody tex-src/texinfo.tex /^\\def\\pagebody#1{\\vbox to\\pageheight{\\boxmaxdepth=\\/
-\pagesofar tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/
-\parsearg tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/
-\parseargline tex-src/texinfo.tex /^\\def\\parseargline{\\begingroup \\obeylines \\parsearg/
-\parseargx tex-src/texinfo.tex /^\\def\\parseargx{%$/
-\pindex tex-src/texinfo.tex /^\\def\\pindex {\\pgindex}$/
-\plainsecheading tex-src/texinfo.tex /^\\def\\plainsecheading #1{\\secheadingi {#1}}$/
-\point tex-src/texinfo.tex /^\\def\\point{$\\star$}$/
-\primary tex-src/texinfo.tex /^\\def\\primary #1{\\line{#1\\hfil}}$/
-\print tex-src/texinfo.tex /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
-\print tex-src/texinfo.tex /^\\def\\print{\\realbackslash print}$/
-\printedmanual tex-src/texinfo.tex /^\\def\\printedmanual{\\ignorespaces #5}%$/
-\printedmanual tex-src/texinfo.tex /^section ``\\printednodename'' in \\cite{\\printedmanu/
-\printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #1}%$/
-\printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #3}%$/
-\printindex tex-src/texinfo.tex /^\\def\\printindex{\\parsearg\\doprintindex}$/
-\pxref tex-src/texinfo.tex /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/
-\quotation tex-src/texinfo.tex /^\\def\\quotation{%$/
-\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}$/
-\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}%$/
-\r tex-src/texinfo.tex /^\\def\\r#1{{\\rm #1}} % roman font$/
-\rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
-\rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/
-\readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/
-\ref tex-src/texinfo.tex /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/
-\refx tex-src/texinfo.tex /^\\def\\refx#1#2{%$/
-\resetmathfonts tex-src/texinfo.tex /^\\def\\resetmathfonts{%$/
-\result tex-src/texinfo.tex /^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/
-\result tex-src/texinfo.tex /^\\def\\result{\\realbackslash result}$/
-\rm tex-src/texinfo.tex /^\\def\\rm{\\realbackslash rm }%$/
-\samp tex-src/texinfo.tex /^\\def\\samp #1{`\\tclose{#1}'\\null}$/
-\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}$/
-\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}%$/
-\sc tex-src/texinfo.tex /^\\def\\sc#1{{\\smallcaps#1}} % smallcaps font$/
-\seccheck tex-src/texinfo.tex /^\\def\\seccheck#1{\\if \\pageno<0 %$/
-\secentry tex-src/texinfo.tex /^ \\def\\secentry ##1##2##3##4{}$/
-\secentry tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
-\secentryfonts tex-src/texinfo.tex /^\\def\\secentryfonts{\\textfonts}$/
-\secfonts tex-src/texinfo.tex /^\\def\\secfonts{%$/
-\secheading tex-src/texinfo.tex /^\\def\\secheading #1#2#3{\\secheadingi {#2.#3\\enspace/
-\secheadingbreak tex-src/texinfo.tex /^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/
-\secheadingi tex-src/texinfo.tex /^\\def\\secheadingi #1{{\\advance \\secheadingskip by \\/
-\secondary tex-src/texinfo.tex /^\\def\\secondary #1#2{$/
-\seczzz tex-src/texinfo.tex /^\\def\\seczzz #1{\\seccheck{section}%$/
-\set tex-src/texinfo.tex /^\\def\\set{\\parsearg\\setxxx}$/
-\setchapternewpage tex-src/texinfo.tex /^\\def\\setchapternewpage #1 {\\csname CHAPPAG#1\\endcs/
-\setchapterstyle tex-src/texinfo.tex /^\\def\\setchapterstyle #1 {\\csname CHAPF#1\\endcsname/
-\setdeffont tex-src/texinfo.tex /^\\def\\setdeffont #1 {\\csname DEF#1\\endcsname}$/
-\setfilename tex-src/texinfo.tex /^\\def\\setfilename{%$/
-\setref tex-src/texinfo.tex /^\\def\\setref#1{%$/
-\settitle tex-src/texinfo.tex /^\\def\\settitle{\\parsearg\\settitlezzz}$/
-\settitlezzz tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/
-\setxxx tex-src/texinfo.tex /^\\def\\setxxx #1{$/
-\sf tex-src/texinfo.tex /^\\def\\sf{\\fam=\\sffam \\tensf}$/
-\sf tex-src/texinfo.tex /^\\def\\sf{\\realbackslash sf}%$/
-\shortchapentry tex-src/texinfo.tex /^\\def\\shortchapentry#1#2#3{%$/
-\shortunnumberedentry tex-src/texinfo.tex /^\\def\\shortunnumberedentry#1#2{%$/
-\singlecodeindexer tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/
-\singleindexer tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/
-\singlespace tex-src/texinfo.tex /^\\def\\singlespace{%$/
-\sl tex-src/texinfo.tex /^\\def\\sl{\\realbackslash sl }%$/
-\smallbook tex-src/texinfo.tex /^\\def\\smallbook{$/
-\smalllispx tex-src/texinfo.tex /^\\def\\smalllispx{\\aboveenvbreak\\begingroup\\inENV$/
-\smartitalic tex-src/texinfo.tex /^\\def\\smartitalic#1{{\\sl #1}\\futurelet\\next\\smartit/
-\smartitalicx tex-src/texinfo.tex /^\\def\\smartitalicx{\\ifx\\next,\\else\\ifx\\next-\\else\\i/
-\sp tex-src/texinfo.tex /^\\def\\sp{\\parsearg\\spxxx}$/
-\splitoff tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
-\spxxx tex-src/texinfo.tex /^\\def\\spxxx #1{\\par \\vskip #1\\baselineskip}$/
-\startcontents tex-src/texinfo.tex /^\\def\\startcontents#1{%$/
-\startenumeration tex-src/texinfo.tex /^\\def\\startenumeration#1{%$/
-\subheading tex-src/texinfo.tex /^\\def\\subheading{\\parsearg\\subsecheadingi}$/
-\subsecentry tex-src/texinfo.tex /^ \\def\\subsecentry ##1##2##3##4##5{}$/
-\subsecentry tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
-\subsecfonts tex-src/texinfo.tex /^\\def\\subsecfonts{%$/
-\subsecheading tex-src/texinfo.tex /^\\def\\subsecheading #1#2#3#4{\\subsecheadingi {#2.#3/
-\subsecheadingbreak tex-src/texinfo.tex /^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/
-\subsecheadingi tex-src/texinfo.tex /^\\def\\subsecheadingi #1{{\\advance \\subsecheadingski/
-\subsubheading tex-src/texinfo.tex /^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/
-\subsubsecentry tex-src/texinfo.tex /^ \\def\\subsubsecentry ##1##2##3##4##5##6{}$/
-\subsubsecentry tex-src/texinfo.tex /^\\def\\subsubsecentry#1#2#3#4#5#6{%$/
-\subsubsecfonts tex-src/texinfo.tex /^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/
-\subsubsecheading tex-src/texinfo.tex /^\\def\\subsubsecheading #1#2#3#4#5{\\subsubsecheading/
-\subsubsecheadingi tex-src/texinfo.tex /^\\def\\subsubsecheadingi #1{{\\advance \\subsecheading/
-\subtitle tex-src/texinfo.tex /^ \\def\\subtitle{\\parsearg\\subtitlezzz}%$/
-\subtitlefont tex-src/texinfo.tex /^ \\def\\subtitlefont{\\subtitlerm \\normalbaselinesk/
-\subtitlezzz tex-src/texinfo.tex /^ \\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/
-\summarycontents tex-src/texinfo.tex /^\\outer\\def\\summarycontents{%$/
-\supereject tex-src/texinfo.tex /^\\def\\supereject{\\par\\penalty -20000\\footnoteno =0 /
-\syncodeindex tex-src/texinfo.tex /^\\def\\syncodeindex #1 #2 {%$/
-\synindex tex-src/texinfo.tex /^\\def\\synindex #1 #2 {%$/
-\t tex-src/texinfo.tex /^\\def\\t##1{\\realbackslash r {##1}}%$/
-\t tex-src/texinfo.tex /^\\def\\t#1{{\\tt \\exhyphenpenalty=10000\\rawbackslash /
-\table tex-src/texinfo.tex /^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspaces\\/
-\tablez tex-src/texinfo.tex /^\\def\\tablez #1#2#3#4#5#6{%$/
-\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}$/
-\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}%$/
-\tclose tex-src/texinfo.tex /^\\def\\tclose#1{{\\rm \\tcloserm=\\fontdimen2\\font \\tt /
-\tex tex-src/texinfo.tex /^\\def\\tex{\\begingroup$/
-\texinfoversion tex-src/texinfo.tex /^\\def\\texinfoversion{2.73}$/
-\textfonts tex-src/texinfo.tex /^\\def\\textfonts{%$/
-\thearg tex-src/texinfo.tex /^ \\def\\thearg{#1}%$/
-\thearg tex-src/texinfo.tex /^ \\ifx\\thearg\\empty \\def\\thearg{1}\\fi$/
-\thischapter tex-src/texinfo.tex /^ \\unnumbchapmacro{#1}\\def\\thischapter{}%$/
-\thischapter tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/
-\thischaptername tex-src/texinfo.tex /^\\def\\thischaptername{No Chapter Title}$/
-\thisfile tex-src/texinfo.tex /^\\def\\thisfile{}$/
-\thistitle tex-src/texinfo.tex /^\\def\\thistitle{No Title}$/
-\tie tex-src/texinfo.tex /^\\def\\tie{\\penalty 10000\\ } % Save plain tex de/
-\tindex tex-src/texinfo.tex /^\\def\\tindex {\\tpindex}$/
-\title tex-src/texinfo.tex /^ \\def\\title{\\parsearg\\titlezzz}%$/
-\titlefont tex-src/texinfo.tex /^\\def\\titlefont#1{{\\titlerm #1}}$/
-\titlepage tex-src/texinfo.tex /^\\def\\titlepage{\\begingroup \\parindent=0pt \\textfon/
-\titlezzz tex-src/texinfo.tex /^ \\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/
-\today tex-src/texinfo.tex /^\\def\\today{\\number\\day\\space$/
-\top tex-src/texinfo.tex /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/
-\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}$/
-\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}%$/
-\turnoffactive tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
-\unnchfopen tex-src/texinfo.tex /^\\def\\unnchfopen #1{%$/
-\unnchfplain tex-src/texinfo.tex /^\\def\\unnchfplain #1{%$/
-\unnumbchapentry tex-src/texinfo.tex /^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/
-\unnumbered tex-src/texinfo.tex /^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/
-\unnumberedsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/
-\unnumberedseczzz tex-src/texinfo.tex /^\\def\\unnumberedseczzz #1{\\seccheck{unnumberedsec}%/
-\unnumberedsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsec{\\parsearg\\unnumberedsu/
-\unnumberedsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubseczzz #1{\\seccheck{unnumberedsu/
-\unnumberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/
-\unnumberedsubsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/
-\unnumberedzzz tex-src/texinfo.tex /^\\def\\unnumberedzzz #1{\\seccheck{unnumbered}%$/
-\unnumbnoderef tex-src/texinfo.tex /^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/
-\unnumbsecentry tex-src/texinfo.tex /^ \\def\\unnumbsecentry ##1##2{}$/
-\unnumbsecentry tex-src/texinfo.tex /^\\def\\unnumbsecentry#1#2{\\dosecentry{#1}{#2}}$/
-\unnumbsetref tex-src/texinfo.tex /^\\def\\unnumbsetref#1{%$/
-\unnumbsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsecentry ##1##2{}$/
-\unnumbsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsecentry#1#2{\\dosubsecentry{#1}{#2}}/
-\unnumbsubsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsubsecentry ##1##2{}$/
-\unnumbsubsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/
-\uppercaseenumerate tex-src/texinfo.tex /^\\def\\uppercaseenumerate{%$/
-\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}$/
-\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}%$/
-\vindex tex-src/texinfo.tex /^\\def\\vindex {\\vrindex}$/
-\vritemindex tex-src/texinfo.tex /^\\def\\vritemindex #1{\\doind {vr}{\\code{#1}}}%$/
-\vtable tex-src/texinfo.tex /^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/
-\w tex-src/texinfo.tex /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/
-\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w }%$/
-\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w}$/
-\xitem tex-src/texinfo.tex /^\\def\\xitem{\\errmessage{@xitem while not in a table/
-\xitemx tex-src/texinfo.tex /^\\def\\xitemx{\\errmessage{@xitemx while not in a tab/
-\xitemzzz tex-src/texinfo.tex /^\\def\\xitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
-\xkey tex-src/texinfo.tex /^\\def\\xkey{\\key}$/
-\xrdef tex-src/texinfo.tex /^\\def\\xrdef #1#2{$/
-\xref tex-src/texinfo.tex /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/
-\xrefX[ tex-src/texinfo.tex /^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/
+] tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
^ tex-src/texinfo.tex /^\\def^{{\\tt \\hat}}$/
+^ tex-src/texinfo.tex /^\\let^=\\normalcaret$/
+_ tex-src/texinfo.tex /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule width.3em /
+_ tex-src/texinfo.tex /^\\def\\_{{\\realbackslash _}}%$/
_ tex-src/texinfo.tex /^\\def_{\\ifusingtt\\normalunderscore\\_}$/
+_ tex-src/texinfo.tex /^\\let_=\\normalunderscore$/
_GETOPT_H c-src/getopt.h 19
_GNU_SOURCE c-src/etags.c 94
_REGEX_H c-src/emacs/src/regex.h 21
@@ -2263,6 +1789,7 @@ _realloc c-src/emacs/src/gmalloc.c /^_realloc (void *ptr, size_t size)$/
_realloc_internal c-src/emacs/src/gmalloc.c /^_realloc_internal (void *ptr, size_t size)$/
_realloc_internal_nolock c-src/emacs/src/gmalloc.c /^_realloc_internal_nolock (void *ptr, size_t size)$/
` ruby-src/test.rb /^ def `(command)$/
+` tex-src/texinfo.tex /^\\def\\`{{`}}$/
a c-src/h.h 103
a c-src/h.h 40
a c.c /^a ()$/
@@ -2298,6 +1825,7 @@ abbrevs_changed c-src/abbrev.c 56
abc c-src/h.h 33
abc c-src/h.h 37
abort-recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("abort-recursive-edit", Fabort_recursive_ed/
+aboveenvbreak tex-src/texinfo.tex /^\\def\\aboveenvbreak{{\\advance\\aboveenvskipamount by/
abs/f ada-src/etags-test-for.ada /^ function "abs" (Right : Complex) return Real'/
absolute_dirname c-src/etags.c /^absolute_dirname (char *file, char *dir)$/
absolute_filename c-src/etags.c /^absolute_filename (char *file, char *dir)$/
@@ -2346,6 +1874,8 @@ accu_warning merc-src/accumulator.m /^:- type accu_warning$/
act prol-src/natded.prolog /^act(OutForm,OutSyn,Ws):-$/
action prol-src/natded.prolog /^action(KeyVals):-$/
active_maps c-src/emacs/src/keyboard.c /^active_maps (Lisp_Object first_event)$/
+activedoublequote tex-src/texinfo.tex /^\\def\\activedoublequote{{\\tt \\char '042}}$/
+activeparens tex-src/texinfo.tex /^\\def\\activeparens{%$/
actout prol-src/natded.prolog /^actout('Text',Trees):-$/
addArchs objc-src/PackInsp.m /^-(void)addArchs:(const char *)string$/
addPOReader php-src/lce_functions.php /^ function addPOReader($d_name, &$por)$/
@@ -2358,6 +1888,8 @@ add_user_signal c-src/emacs/src/keyboard.c /^add_user_signal (int sig, const cha
addnoise html-src/algrthms.html /^Adding Noise to the$/
address y-src/cccp.y 113
adjust_point_for_property c-src/emacs/src/keyboard.c /^adjust_point_for_property (ptrdiff_t last_pt, bool/
+afourpaper tex-src/texinfo.tex /^\\def\\afourpaper{$/
+afterenvbreak tex-src/texinfo.tex /^\\def\\afterenvbreak{\\endgraf \\ifdim\\lastskip<\\above/
agent cp-src/clheir.hpp 75
algorithms html-src/algrthms.html /^Description$/
alias c-src/emacs/src/lisp.h 688
@@ -2372,6 +1904,9 @@ alive cp-src/conway.hpp 7
all_kboards c-src/emacs/src/keyboard.c 86
allocate_kboard c-src/emacs/src/keyboard.c /^allocate_kboard (Lisp_Object type)$/
allocated c-src/emacs/src/regex.h 344
+alphaenumerate tex-src/texinfo.tex /^\\def\\alphaenumerate{\\enumerate{a}}$/
+ampnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
+amprm tex-src/texinfo.tex /^\\gdef\\amprm#1 {{\\rm\\}\\let(=\\oprm \\let)=\\clrm\\ }/
an_extern_linkage c-src/h.h 44
an_extern_linkage c-src/h.h 56
an_extern_linkage_ptr c-src/h.h 43
@@ -2388,8 +1923,27 @@ append_list prol-src/natded.prolog /^append_list([],[]).$/
append_string pas-src/common.pas /^procedure append_string;(*($/
append_tool_bar_item c-src/emacs/src/keyboard.c /^append_tool_bar_item (void)$/
appendix perl-src/htlmify-cystic 24
+appendix tex-src/texinfo.tex /^\\let\\appendix=\\relax$/
+appendix tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
appendix_name perl-src/htlmify-cystic 13
appendix_toc perl-src/htlmify-cystic 16
+appendixletter tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/
+appendixnoderef tex-src/texinfo.tex /^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/
+appendixsec tex-src/texinfo.tex /^\\let\\appendixsec=\\relax$/
+appendixsec tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
+appendixsection tex-src/texinfo.tex /^\\let\\appendixsection=\\relax$/
+appendixsection tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
+appendixsectionzzz tex-src/texinfo.tex /^\\def\\appendixsectionzzz #1{\\seccheck{appendixsecti/
+appendixsetref tex-src/texinfo.tex /^\\def\\appendixsetref#1{%$/
+appendixsubsec tex-src/texinfo.tex /^\\let\\appendixsubsec=\\relax$/
+appendixsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
+appendixsubsection tex-src/texinfo.tex /^\\let\\appendixsubsection=\\relax$/
+appendixsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubseczzz #1{\\seccheck{appendixsubsec/
+appendixsubsubsec tex-src/texinfo.tex /^\\let\\appendixsubsubsec=\\relax$/
+appendixsubsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
+appendixsubsubsection tex-src/texinfo.tex /^\\let\\appendixsubsubsection=\\relax$/
+appendixsubsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubsubseczzz #1{\\seccheck{appendixsub/
+appendixzzz tex-src/texinfo.tex /^\\def\\appendixzzz #1{\\seccheck{appendix}%$/
apply_modifiers c-src/emacs/src/keyboard.c /^apply_modifiers (int modifiers, Lisp_Object base)$/
apply_modifiers_uncached c-src/emacs/src/keyboard.c /^apply_modifiers_uncached (int modifiers, char *bas/
aref_addr c-src/emacs/src/lisp.h /^aref_addr (Lisp_Object array, ptrdiff_t idx)$/
@@ -2409,6 +1963,7 @@ argument c-src/etags.c 253
argvals prol-src/natded.prolog /^argvals([]) --> [].$/
array c.c 190
ascii c-src/emacs/src/lisp.h 1598
+asis tex-src/texinfo.tex /^\\def\\asis#1{#1}$/
asort cp-src/functions.cpp /^void asort(int *a, int num){$/
assemby-code-word forth-src/test-forth.fth /^code assemby-code-word ( dunno what it does )$/
assert c-src/etags.c /^# define assert(x) ((void) 0)$/
@@ -2426,7 +1981,11 @@ atom prol-src/natded.prolog /^atom(X) --> [X], {atomic(X)}.$/
atomval prol-src/natded.prolog /^atomval(X) --> atom(X).$/
aultparindent tex-src/texinfo.tex /^\\newdimen\\defaultparindent \\defaultparindent = 15p/
aultparindent tex-src/texinfo.tex /^\\parindent = \\defaultparindent$/
-aultparindent\hang\textindent tex-src/texinfo.tex /^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/
+aultparindent\hang tex-src/texinfo.tex /^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/
+author tex-src/texinfo.tex /^ \\def\\author{\\parsearg\\authorzzz}%$/
+authorfont tex-src/texinfo.tex /^ \\def\\authorfont{\\authorrm \\normalbaselineskip =/
+authorrm tex-src/texinfo.tex /^\\let\\authorrm = \\secrm$/
+authorzzz tex-src/texinfo.tex /^ \\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt /
auto_help c-src/etags.c 699
b c-src/h.h 103
b c-src/h.h 104
@@ -2438,7 +1997,14 @@ b c.c 260
b c.c 262
b cp-src/c.C 132
b ruby-src/test1.ru /^ def b()$/
-backslash=0 tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden during \\printin/
+b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}$/
+b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}%$/
+b tex-src/texinfo.tex /^\\def\\b#1{{\\bf #1}}$/
+b tex-src/texinfo.tex /^\\let\\b=\\indexdummyfont$/
+b tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+backslash tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
+backslash tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/
+balancecolumns tex-src/texinfo.tex /^\\def\\balancecolumns{%$/
bar c-src/c.c /^void bar() {while(0) {}}$/
bar c-src/h.h 19
bar c.c 143
@@ -2458,9 +2024,16 @@ bbbbbb c-src/h.h 113
been_warned c-src/etags.c 222
before_command_echo_length c-src/emacs/src/keyboard.c 130
before_command_key_count c-src/emacs/src/keyboard.c 129
+begin tex-src/texinfo.tex /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/
+begindoublecolumns tex-src/texinfo.tex /^\\def\\begindoublecolumns{\\begingroup$/
+beginxxx tex-src/texinfo.tex /^\\def\\beginxxx #1{%$/
begtoken c-src/etags.c /^#define begtoken(c) (_btk[CHAR (c)]) \/* c can star/
behaviour_info erl-src/gs_dialog.erl /^behaviour_info(callbacks) ->$/
-bf=cmbx10 tex-src/texinfo.tex /^\\font\\defbf=cmbx10 scaled \\magstep1 %was 1314$/
+bf tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/
+bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }$/
+bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }%$/
+bf tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+bf tex-src/texinfo.tex /^\\font\\defbf=cmbx10 scaled \\magstep1 %was 1314$/
bind pyt-src/server.py /^ def bind(self, key, action):$/
bind_polling_period c-src/emacs/src/keyboard.c /^bind_polling_period (int n)$/
bits_word c-src/emacs/src/lisp.h 123
@@ -2476,6 +2049,7 @@ bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by -\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\newskip\\defbodyindent \\defbodyindent=.4in$/
+boldbrax tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
bool c.c 222
bool merc-src/accumulator.m /^:- import_module bool.$/
bool_header_size c-src/emacs/src/lisp.h 1472
@@ -2488,6 +2062,7 @@ bool_vector_size c-src/emacs/src/lisp.h /^bool_vector_size (Lisp_Object a)$/
bool_vector_uchar_data c-src/emacs/src/lisp.h /^bool_vector_uchar_data (Lisp_Object a)$/
bool_vector_words c-src/emacs/src/lisp.h /^bool_vector_words (EMACS_INT size)$/
boolvar c-src/emacs/src/lisp.h 2287
+br tex-src/texinfo.tex /^\\let\\br = \\par$/
bracelev c-src/etags.c 2520
bsp_DevId c-src/h.h 25
bt c-src/emacs/src/lisp.h 2988
@@ -2501,10 +2076,13 @@ build_pure_c_string c-src/emacs/src/lisp.h /^build_pure_c_string (const char *st
build_string c-src/emacs/src/lisp.h /^build_string (const char *str)$/
buildact prol-src/natded.prolog /^buildact([SynIn],Right,RightPlus1):-$/
builtin_lisp_symbol c-src/emacs/src/lisp.h /^builtin_lisp_symbol (int index)$/
+bullet tex-src/texinfo.tex /^\\def\\bullet{$\\ptexbullet$}$/
+bullet tex-src/texinfo.tex /^\\let\\bullet=\\ptexbullet$/
burst c-src/h.h 28
busy c-src/emacs/src/gmalloc.c 158
button_down_location c-src/emacs/src/keyboard.c 5210
button_down_time c-src/emacs/src/keyboard.c 5218
+bye tex-src/texinfo.tex /^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/
byte_stack c-src/emacs/src/lisp.h 3049
bytecode_dest c-src/emacs/src/lisp.h 3037
bytecode_top c-src/emacs/src/lisp.h 3036
@@ -2515,6 +2093,8 @@ bytes_used c-src/emacs/src/gmalloc.c 312
c c-src/h.h /^#define c() d$/
c c-src/h.h 106
c c.c 180
+c tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+c tex-src/texinfo.tex /^\\let\\c=\\comment$/
c_ext c-src/etags.c 2271
caccacacca c.c /^caccacacca (a,b,c,d,e,f,g)$/
cacheLRUEntry_s c.c 172
@@ -2527,21 +2107,47 @@ calloc c-src/emacs/src/gmalloc.c 70
can_be_null c-src/emacs/src/regex.h 370
cancel_echoing c-src/emacs/src/keyboard.c /^cancel_echoing (void)$/
canonicalize_filename c-src/etags.c /^canonicalize_filename (register char *fn)$/
+capsenumerate tex-src/texinfo.tex /^\\def\\capsenumerate{\\enumerate{A}}$/
+cartbot tex-src/texinfo.tex /^\\def\\cartbot{\\hbox to \\cartouter{\\hskip\\lskip$/
+cartouche tex-src/texinfo.tex /^\\long\\def\\cartouche{%$/
+carttop tex-src/texinfo.tex /^\\def\\carttop{\\hbox to \\cartouter{\\hskip\\lskip$/
case_Lisp_Int c-src/emacs/src/lisp.h 438
cat c-src/h.h 81
cat cp-src/c.C 126
cat cp-src/c.C 130
cat prol-src/natded.prolog /^cat(A, Alpha@Beta, Ass3, Qs3, tree(fe,A:Alpha@Beta/
cat_atoms prol-src/natded.prolog /^cat_atoms(A1,A2,A3):-$/
+cbl tex-src/texinfo.tex /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/
+cbr tex-src/texinfo.tex /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/
cccccccccc c-src/h.h 115
cdr c-src/emacs/src/lisp.h 1159
cell y-src/parse.y 279
+center tex-src/texinfo.tex /^\\def\\center{\\parsearg\\centerzzz}$/
+centerzzz tex-src/texinfo.tex /^\\def\\centerzzz #1{{\\advance\\hsize by -\\leftskip$/
cgrep html-src/software.html /^cgrep$/
chain c-src/emacs/src/lisp.h 1162
chain c-src/emacs/src/lisp.h 2206
chain c-src/emacs/src/lisp.h 2396
chain_subst merc-src/accumulator.m /^:- func chain_subst(accu_subst, accu_subst) = accu/
chain_subst_2 merc-src/accumulator.m /^:- pred chain_subst_2(list(A)::in, map(A, B)::in, /
+chapbf tex-src/texinfo.tex /^\\let\\chapbf=\\chaprm$/
+chapbreak tex-src/texinfo.tex /^\\def\\chapbreak{\\dobreak \\chapheadingskip {-4000}}$/
+chapentry tex-src/texinfo.tex /^ \\let\\chapentry = \\shortchapentry$/
+chapentry tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
+chapentryfonts tex-src/texinfo.tex /^\\def\\chapentryfonts{\\secfonts \\rm}$/
+chapfonts tex-src/texinfo.tex /^\\def\\chapfonts{%$/
+chapheading tex-src/texinfo.tex /^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/
+chapheadingzzz tex-src/texinfo.tex /^\\def\\chapheadingzzz #1{\\chapbreak %$/
+chapmacro tex-src/texinfo.tex /^\\global\\let\\chapmacro=\\chfopen$/
+chapmacro tex-src/texinfo.tex /^\\global\\let\\chapmacro=\\chfplain$/
+chapoddpage tex-src/texinfo.tex /^\\def\\chapoddpage{\\chappager \\ifodd\\pageno \\else \\h/
+chappager tex-src/texinfo.tex /^\\def\\chappager{\\par\\vfill\\supereject}$/
+chapter tex-src/texinfo.tex /^\\let\\chapter=\\relax$/
+chapter tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
+chapternofonts tex-src/texinfo.tex /^\\def\\chapternofonts{%$/
+chapterzzz tex-src/texinfo.tex /^\\def\\chapterzzz #1{\\seccheck{chapter}%$/
+char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}$/
+char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}%$/
char_bits c-src/emacs/src/lisp.h 2443
char_table_specials c-src/emacs/src/lisp.h 1692
charpos c-src/emacs/src/lisp.h 2011
@@ -2552,14 +2158,24 @@ check_cons_list c-src/emacs/src/lisp.h /^# define check_cons_list() lisp_h_chec
checker make-src/Makefile /^checker:$/
checkhdr c-src/emacs/src/gmalloc.c /^checkhdr (const struct hdr *hdr)$/
checkiso html-src/software.html /^checkiso$/
+chfopen tex-src/texinfo.tex /^\\def\\chfopen #1#2{\\chapoddpage {\\chapfonts$/
+chfplain tex-src/texinfo.tex /^\\def\\chfplain #1#2{%$/
childDidExit objc-src/Subprocess.m /^- childDidExit$/
chunks_free c-src/emacs/src/gmalloc.c 313
chunks_used c-src/emacs/src/gmalloc.c 311
+cindex tex-src/texinfo.tex /^\\def\\cindex {\\cpindex}$/
+cindexsub tex-src/texinfo.tex /^\\def\\cindexsub {\\begingroup\\obeylines\\cindexsub}$/
+cindexsub tex-src/texinfo.tex /^\\gdef\\cindexsub "#1" #2^^M{\\endgroup %$/
+cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}$/
+cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}%$/
+cite tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/
+cite tex-src/texinfo.tex /^\\let\\cite=\\smartitalic$/
cjava c-src/etags.c 2936
class_method ruby-src/test.rb /^ def ClassExample.class_method$/
classifyLine php-src/lce_functions.php /^ function classifyLine($line)$/
clean make-src/Makefile /^clean:$/
clear cp-src/conway.hpp /^ void clear(void) { alive = 0; }$/
+clear tex-src/texinfo.tex /^\\def\\clear{\\parsearg\\clearxxx}$/
clear-abbrev-table c-src/abbrev.c /^DEFUN ("clear-abbrev-table", Fclear_abbrev_table, /
clear-this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("clear-this-command-keys", Fclear_this_comm/
clearAllKey objcpp-src/SimpleCalc.M /^- clearAllKey:sender$/
@@ -2569,12 +2185,19 @@ clear_input_pending c-src/emacs/src/keyboard.c /^clear_input_pending (void)$/
clear_neighbors cp-src/clheir.cpp /^void discrete_location::clear_neighbors(void)$/
clear_screen cp-src/screen.cpp /^void clear_screen(void)$/
clear_waiting_for_input c-src/emacs/src/keyboard.c /^clear_waiting_for_input (void)$/
+clearxxx tex-src/texinfo.tex /^\\def\\clearxxx #1{$/
+clnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
+clrm tex-src/texinfo.tex /^\\gdef\\clrm{% Print a paren in roman if it is takin/
cmd_error c-src/emacs/src/keyboard.c /^cmd_error (Lisp_Object data)$/
cmd_error_internal c-src/emacs/src/keyboard.c /^cmd_error_internal (Lisp_Object data, const char */
cmpfn c-src/emacs/src/lisp.h /^ bool (*cmpfn) (struct hash_table_test *t, Lisp_O/
cmt prol-src/natded.prolog /^cmt:-$/
cname c-src/etags.c 2519
cno c-src/etags.c 224
+code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}$/
+code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}%$/
+code tex-src/texinfo.tex /^\\let\\code=\\indexdummyfont$/
+code tex-src/texinfo.tex /^\\let\\code=\\tclose$/
colori cp-src/c.C 40
commaargvals prol-src/natded.prolog /^commaargvals(Args) -->$/
command c-src/etags.c 187
@@ -2584,6 +2207,8 @@ command_loop_1 c-src/emacs/src/keyboard.c /^command_loop_1 (void)$/
command_loop_2 c-src/emacs/src/keyboard.c /^command_loop_2 (Lisp_Object ignore)$/
command_loop_level c-src/emacs/src/keyboard.c 195
comment php-src/lce_functions.php /^ function comment($line, $class)$/
+comment tex-src/texinfo.tex /^\\def\\comment{\\catcode 64=\\other \\catcode 123=\\othe/
+commentxxx tex-src/texinfo.tex /^\\def\\commentxxx #1{\\catcode 64=0 \\catcode 123=1 \\c/
commutativity_assertion merc-src/accumulator.m /^:- pred commutativity_assertion(module_info::in,li/
compile_empty prol-src/natded.prolog /^compile_empty:-$/
compile_lex prol-src/natded.prolog /^compile_lex(File):-$/
@@ -2606,6 +2231,10 @@ consult_lex prol-src/natded.prolog /^consult_lex:-$/
contents c-src/emacs/src/lisp.h 1372
contents c-src/emacs/src/lisp.h 1600
contents c-src/emacs/src/lisp.h 1624
+contents tex-src/texinfo.tex /^\\let\\contents=\\relax$/
+contents tex-src/texinfo.tex /^\\outer\\def\\contents{%$/
+copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright }%$/
+copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright}$/
count c-src/emacs/src/lisp.h 1863
count_layers lua-src/allegro.lua /^local function count_layers (layer)$/
count_words c-src/tab.c /^static int count_words(char *str, char delim)$/
@@ -2625,10 +2254,20 @@ create_new_orig_recursive_goals merc-src/accumulator.m /^:- func create_new_orig
create_new_recursive_goals merc-src/accumulator.m /^:- func create_new_recursive_goals(set(accu_goal_i/
create_new_var merc-src/accumulator.m /^:- pred create_new_var(prog_var::in, string::in, p/
create_orig_goal merc-src/accumulator.m /^:- pred create_orig_goal(hlds_goal::in, accu_subst/
+cropmarks tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
+croppageout tex-src/texinfo.tex /^\\def\\croppageout#1{\\hoffset=0pt % make sure this d/
cscInitTime cp-src/c.C 7
cscSegmentationTime cp-src/c.C 8
+csname tex-src/texinfo.tex /^\\expandafter\\let\\csname IF#1\\endcsname=\\relax}$/
+csname tex-src/texinfo.tex /^\\expandafter\\let\\csname IF#1\\endcsname=\\set}$/
+csname tex-src/texinfo.tex /^\\expandafter\\let\\csname#1indfile\\endcsname=\\synind/
+csname tex-src/texinfo.tex /^\\expandafter\\xdef\\csname#1index\\endcsname{% % Defi/
+csname tex-src/texinfo.tex /^{\\catcode`\\'=\\other\\expandafter \\gdef \\csname X#1\\/
cstack c-src/etags.c 2523
ctags make-src/Makefile /^ctags: etags.c ${OBJS}$/
+ctl tex-src/texinfo.tex /^\\def\\ctl{{\\circle\\char'013\\hskip -6pt}}% 6pt from /
+ctr tex-src/texinfo.tex /^\\def\\ctr{{\\hskip 6pt\\circle\\char'010}}$/
+ctrl tex-src/texinfo.tex /^\\def\\ctrl #1{{\\tt \\rawbackslash \\hat}#1}$/
curlb c-src/etags.c 2929
curlinepos c-src/etags.c 2931
current-idle-time c-src/emacs/src/keyboard.c /^DEFUN ("current-idle-time", Fcurrent_idle_time, Sc/
@@ -2639,6 +2278,10 @@ curry-test scm-src/test.scm /^(define (((((curry-test a) b) c) d) e)$/
cursor_position cp-src/screen.cpp /^void cursor_position(void)$/
cursor_x cp-src/screen.cpp 15
cursor_y cp-src/screen.cpp 15
+cvarheader\defcvtype tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+cvtype tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defcvtype{} of #1}%$/
+cvtype tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+cvx\defcvarheader tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
d c-src/emacs/src/lisp.h 4673
d c-src/emacs/src/lisp.h 4679
d c.c 180
@@ -2660,6 +2303,15 @@ default_C_help c-src/etags.c 515
default_C_help c-src/etags.c 523
default_C_suffixes c-src/etags.c 512
defcell c-src/emacs/src/lisp.h 2351
+defcodeindex tex-src/texinfo.tex /^\\def\\defcodeindex{\\parsearg\\newcodeindex}$/
+defcv tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
+defcvarheader tex-src/texinfo.tex /^\\def\\defcvarheader #1#2#3{%$/
+defcvtype tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
+defcvx tex-src/texinfo.tex /^\\def\\defcvx #1 {\\errmessage{@defcvx in invalid con/
+deffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
+deffnheader tex-src/texinfo.tex /^\\def\\deffnheader #1#2#3{\\doind {fn}{\\code{#2}}%$/
+deffnx tex-src/texinfo.tex /^\\def\\deffnx #1 {\\errmessage{@deffnx in invalid con/
+defindex tex-src/texinfo.tex /^\\def\\defindex{\\parsearg\\newindex}$/
define-abbrev c-src/abbrev.c /^DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_ab/
define-abbrev-table c-src/abbrev.c /^DEFUN ("define-abbrev-table", Fdefine_abbrev_table/
define-global-abbrev c-src/abbrev.c /^DEFUN ("define-global-abbrev", Fdefine_global_abbr/
@@ -2667,7 +2319,63 @@ define-mode-abbrev c-src/abbrev.c /^DEFUN ("define-mode-abbrev", Fdefine_mode_ab
defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4663
defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4665
definedef c-src/etags.c 2464
+defivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+defivarheader tex-src/texinfo.tex /^\\def\\defivarheader #1#2#3{%$/
+defivarx tex-src/texinfo.tex /^\\def\\defivarx #1 {\\errmessage{@defivarx in invalid/
+defmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+defmacheader tex-src/texinfo.tex /^\\def\\defmacheader #1#2{\\doind {fn}{\\code{#1}}% Mak/
+defmacx tex-src/texinfo.tex /^\\def\\defmacx #1 {\\errmessage{@defmacx in invalid c/
+defmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+defmethodheader tex-src/texinfo.tex /^\\def\\defmethodheader #1#2#3{%$/
+defmethodx tex-src/texinfo.tex /^\\def\\defmethodx #1 {\\errmessage{@defmethodx in inv/
+defmethparsebody tex-src/texinfo.tex /^\\def\\defmethparsebody #1#2#3#4 {\\begingroup\\inENV /
+defname tex-src/texinfo.tex /^\\def\\defname #1#2{%$/
+defop tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
+defopheader tex-src/texinfo.tex /^\\def\\defopheader #1#2#3{%$/
+defopparsebody tex-src/texinfo.tex /^\\def\\defopparsebody #1#2#3#4#5 {\\begingroup\\inENV /
+defopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+defoptheader tex-src/texinfo.tex /^\\def\\defoptheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
+defoptx tex-src/texinfo.tex /^\\def\\defoptx #1 {\\errmessage{@defoptx in invalid c/
+defoptype tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
+defopvarparsebody tex-src/texinfo.tex /^\\def\\defopvarparsebody #1#2#3#4#5 {\\begingroup\\inE/
+defopx tex-src/texinfo.tex /^\\def\\defopx #1 {\\errmessage{@defopx in invalid con/
+defparsebody tex-src/texinfo.tex /^\\def\\defparsebody #1#2#3{\\begingroup\\inENV% Enviro/
+defspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
+defspecheader tex-src/texinfo.tex /^\\def\\defspecheader #1#2{\\doind {fn}{\\code{#1}}% Ma/
+defspecx tex-src/texinfo.tex /^\\def\\defspecx #1 {\\errmessage{@defspecx in invalid/
+deftp tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+deftpargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/
+deftpheader tex-src/texinfo.tex /^\\def\\deftpheader #1#2#3{\\doind {tp}{\\code{#2}}%$/
+deftpx tex-src/texinfo.tex /^\\def\\deftpx #1 {\\errmessage{@deftpx in invalid con/
+deftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
+deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefnheader #1#2#3{\\deftypefnheaderx{#1}{/
+deftypefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheaderx #1#2#3 #4\\relax{%$/
+deftypefnx tex-src/texinfo.tex /^\\def\\deftypefnx #1 {\\errmessage{@deftypefnx in inv/
+deftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+deftypefunargs tex-src/texinfo.tex /^\\def\\deftypefunargs #1{%$/
+deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefunheader #1#2{\\deftypefunheaderx{#1}#/
+deftypefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheaderx #1#2 #3\\relax{%$/
+deftypeunx tex-src/texinfo.tex /^\\def\\deftypeunx #1 {\\errmessage{@deftypeunx in inv/
+deftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevarheader #1#2{%$/
+deftypevarx tex-src/texinfo.tex /^\\def\\deftypevarx #1 {\\errmessage{@deftypevarx in i/
+deftypevr tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevrheader #1#2#3{\\doind {vr}{\\code{#3}}/
+deftypevrx tex-src/texinfo.tex /^\\def\\deftypevrx #1 {\\errmessage{@deftypevrx in inv/
+defun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
defun_func1 c.c /^defun_func1()$/
+defunargs tex-src/texinfo.tex /^\\def\\defunargs #1{\\functionparens \\sl$/
+defunheader tex-src/texinfo.tex /^\\def\\defunheader #1#2{\\doind {fn}{\\code{#1}}% Make/
+defunx tex-src/texinfo.tex /^\\def\\defunx #1 {\\errmessage{@defunx in invalid con/
+defvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
+defvarargs tex-src/texinfo.tex /^\\def\\defvarargs #1{\\normalparens #1%$/
+defvarheader tex-src/texinfo.tex /^\\def\\defvarheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
+defvarparsebody tex-src/texinfo.tex /^\\def\\defvarparsebody #1#2#3{\\begingroup\\inENV% Env/
+defvarx tex-src/texinfo.tex /^\\def\\defvarx #1 {\\errmessage{@defvarx in invalid c/
+defvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+defvrheader tex-src/texinfo.tex /^\\def\\defvrheader #1#2#3{\\doind {vr}{\\code{#2}}%$/
+defvrparsebody tex-src/texinfo.tex /^\\def\\defvrparsebody #1#2#3#4 {\\begingroup\\inENV %$/
+defvrx tex-src/texinfo.tex /^\\def\\defvrx #1 {\\errmessage{@defvrx in invalid con/
delegate objc-src/Subprocess.m /^- delegate$/
deleteItem pyt-src/server.py /^ def deleteItem(self):$/
delete_kboard c-src/emacs/src/keyboard.c /^delete_kboard (KBOARD *kb)$/
@@ -2677,25 +2385,54 @@ deliver_user_signal c-src/emacs/src/keyboard.c /^deliver_user_signal (int sig)$/
depth c-src/emacs/src/lisp.h 1618
derived_analyses prol-src/natded.prolog /^derived_analyses([],[]).$/
describe_abbrev c-src/abbrev.c /^describe_abbrev (sym, stream)$/
+description tex-src/texinfo.tex /^\\def\\description{\\tablez{\\dontindex}{1}{}{}{}{}}$/
detect_input_pending c-src/emacs/src/keyboard.c /^detect_input_pending (void)$/
detect_input_pending_ignore_squeezables c-src/emacs/src/keyboard.c /^detect_input_pending_ignore_squeezables (void)$/
detect_input_pending_run_timers c-src/emacs/src/keyboard.c /^detect_input_pending_run_timers (bool do_display)$/
+df tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+dfn tex-src/texinfo.tex /^\\def\\dfn##1{\\realbackslash dfn {##1}}$/
+dfn tex-src/texinfo.tex /^\\let\\dfn=\\smartitalic$/
dialog_loop erl-src/gs_dialog.erl /^dialog_loop(Module, Window, Frame, Extra, Args) ->/
dignorerest c-src/etags.c 2463
+direntry tex-src/texinfo.tex /^\\def\\direntry{\\begingroup\\direntryxxx}$/
+direntryxxx tex-src/texinfo.tex /^\\long\\def\\direntryxxx #1\\end direntry{\\endgroup\\ig/
discard-input c-src/emacs/src/keyboard.c /^DEFUN ("discard-input", Fdiscard_input, Sdiscard_i/
discard_mouse_events c-src/emacs/src/keyboard.c /^discard_mouse_events (void)$/
discrete_location cp-src/clheir.hpp /^ discrete_location(int xi, int yi, int zi):$/
discrete_location cp-src/clheir.hpp 56
display cp-src/conway.cpp /^void display(void)$/
+display tex-src/texinfo.tex /^\\def\\display{\\begingroup\\inENV %This group ends at/
disposetextstring pas-src/common.pas /^procedure disposetextstring;(*($/
+dmn tex-src/texinfo.tex /^\\def\\dmn#1{\\thinspace #1}$/
dnone c-src/etags.c 2460
+dobreak tex-src/texinfo.tex /^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/
doc c-src/emacs/src/lisp.h 1689
+dochapentry tex-src/texinfo.tex /^\\def\\dochapentry#1#2{%$/
+docodeindex tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
dog c-src/h.h 81
dog cp-src/c.C 126
dog cp-src/c.C 130
+doind tex-src/texinfo.tex /^\\def\\doind #1#2{%$/
+doindex tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
+donoderef tex-src/texinfo.tex /^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/
+dontindex tex-src/texinfo.tex /^\\def\\dontindex #1{}$/
+dopageno tex-src/texinfo.tex /^\\def\\dopageno#1{{\\rm #1}}$/
+doprintindex tex-src/texinfo.tex /^\\def\\doprintindex#1{%$/
+dosecentry tex-src/texinfo.tex /^\\def\\dosecentry#1#2{%$/
+dosetq tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/
+doshortpageno tex-src/texinfo.tex /^\\def\\doshortpageno#1{{\\rm #1}}$/
+dosubind tex-src/texinfo.tex /^\\def\\dosubind #1#2#3{%$/
+dosubsecentry tex-src/texinfo.tex /^\\def\\dosubsecentry#1#2{%$/
+dosubsubsecentry tex-src/texinfo.tex /^\\def\\dosubsubsecentry#1#2{%$/
dotfill tex-src/texinfo.tex /^ \\null\\nobreak\\indexdotfill % Have leaders before/
dotfill tex-src/texinfo.tex /^\\noindent\\hskip\\secondaryindent\\hbox{#1}\\indexdotf/
+dots tex-src/texinfo.tex /^\\def\\dots{$\\ldots$}$/
+dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots }%$/
+dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots}$/
+dots tex-src/texinfo.tex /^\\let\\dots=\\indexdummydots$/
+dots tex-src/texinfo.tex /^\\let\\dots=\\ptexdots$/
double_click_count c-src/emacs/src/keyboard.c 5222
+doublecolumnout tex-src/texinfo.tex /^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/
drag_n_drop_syms c-src/emacs/src/keyboard.c 4629
dribble c-src/emacs/src/keyboard.c 236
dsharpseen c-src/etags.c 2461
@@ -2705,6 +2442,7 @@ dummy2 cp-src/burton.cpp /^::dummy::dummy test::dummy2(::CORBA::Long dummy)$/
dummy3 cp-src/burton.cpp /^::dummy::dummy test::dummy3(char* name, ::CORBA::L/
dummydots tex-src/texinfo.tex /^\\let\\dots=\\indexdummydots$/
dummyfont tex-src/texinfo.tex /^\\let\\b=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\code=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\emph=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\file=\\indexdummyfont$/
@@ -2743,10 +2481,16 @@ editsite pyt-src/server.py /^ def editsite(self, site):$/
edituser pyt-src/server.py /^ def edituser(self, user):$/
egetenv c-src/emacs/src/lisp.h /^egetenv (const char *var)$/
emacs_abort c-src/emacs/src/lisp.h /^extern _Noreturn void emacs_abort (void) NO_INLINE/
+emph tex-src/texinfo.tex /^\\def\\emph##1{\\realbackslash emph {##1}}$/
+emph tex-src/texinfo.tex /^\\let\\emph=\\indexdummyfont$/
+emph tex-src/texinfo.tex /^\\let\\emph=\\smartitalic$/
end c-src/emacs/src/keyboard.c 8753
end c-src/emacs/src/lisp.h 2039
end c-src/emacs/src/regex.h 432
+end tex-src/texinfo.tex /^\\def\\end{\\parsearg\\endxxx}$/
+enddoublecolumns tex-src/texinfo.tex /^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/
endtoken c-src/etags.c /^#define endtoken(c) (_etk[CHAR (c)]) \/* c ends tok/
+endxxx tex-src/texinfo.tex /^\\def\\endxxx #1{%$/
enter_critical_section c-src/h.h 116
entry perl-src/htlmify-cystic 218
entry perl-src/htlmify-cystic 234
@@ -2756,14 +2500,22 @@ entry perl-src/htlmify-cystic 268
entry perl-src/htlmify-cystic 276
entry perl-src/htlmify-cystic 281
entry perl-src/htlmify-cystic 296
+entry tex-src/texinfo.tex /^\\def\\entry #1#2{\\begingroup$/
+enumerate tex-src/texinfo.tex /^\\def\\enumerate{\\parsearg\\enumeratezzz}$/
+enumeratey tex-src/texinfo.tex /^\\def\\enumeratey #1 #2\\endenumeratey{%$/
+enumeratezzz tex-src/texinfo.tex /^\\def\\enumeratezzz #1{\\enumeratey #1 \\endenumerate/
equalsKey objcpp-src/SimpleCalc.M /^- equalsKey:sender$/
+equiv tex-src/texinfo.tex /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
+equiv tex-src/texinfo.tex /^\\def\\equiv{\\realbackslash equiv}$/
erlang_atom c-src/etags.c /^erlang_atom (char *s)$/
erlang_attribute c-src/etags.c /^erlang_attribute (char *s)$/
erlang_func c-src/etags.c /^erlang_func (char *s, char *last)$/
error c-src/emacs/src/lisp.h /^extern _Noreturn void error (const char *, ...) AT/
error c-src/etags.c /^error (const char *format, ...)$/
error c-src/etags.c /^static void error (const char *, ...) ATTRIBUTE_FO/
+error tex-src/texinfo.tex /^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/
error y-src/cccp.y /^error (msg)$/
+errorE tex-src/texinfo.tex /^\\def\\errorE#1{$/
error_signaled c-src/etags.c 264
etags el-src/emacs/lisp/progmodes/etags.el /^(defgroup etags nil "Tags tables."$/
etags html-src/software.html /^Etags$/
@@ -2786,11 +2538,29 @@ etags-xref-find-definitions-tag-order el-src/emacs/lisp/progmodes/etags.el /^(de
etags.1.man make-src/Makefile /^etags.1.man: etags.1$/
etags_getcwd c-src/etags.c /^etags_getcwd (void)$/
eval_dyn c-src/emacs/src/keyboard.c /^eval_dyn (Lisp_Object form)$/
+evenfooting tex-src/texinfo.tex /^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/
+evenfootingxxx tex-src/texinfo.tex /^\\gdef\\evenfootingxxx #1{\\evenfootingyyy #1@|@|@|@|/
+evenfootingyyy tex-src/texinfo.tex /^\\gdef\\evenfootingyyy #1@|#2@|#3@|#4\\finish{%$/
+evenheading tex-src/texinfo.tex /^\\def\\evenheading{\\parsearg\\evenheadingxxx}$/
+evenheadingxxx tex-src/texinfo.tex /^\\gdef\\evenheadingxxx #1{\\evenheadingyyy #1@|@|@|@|/
+evenheadingyyy tex-src/texinfo.tex /^\\gdef\\evenheadingyyy #1@|#2@|#3@|#4\\finish{%$/
event-convert-list c-src/emacs/src/keyboard.c /^DEFUN ("event-convert-list", Fevent_convert_list, /
event-symbol-parse-modifiers c-src/emacs/src/keyboard.c /^DEFUN ("internal-event-symbol-parse-modifiers", Fe/
event_head c-src/emacs/src/keyboard.c 11021
event_to_kboard c-src/emacs/src/keyboard.c /^event_to_kboard (struct input_event *event)$/
+everyfooting tex-src/texinfo.tex /^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/
+everyfootingxxx tex-src/texinfo.tex /^\\gdef\\everyfootingxxx #1{\\everyfootingyyy #1@|@|@|/
+everyfootingyyy tex-src/texinfo.tex /^\\gdef\\everyfootingyyy #1@|#2@|#3@|#4\\finish{%$/
+everyheading tex-src/texinfo.tex /^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/
+everyheadingxxx tex-src/texinfo.tex /^\\gdef\\everyheadingxxx #1{\\everyheadingyyy #1@|@|@|/
+everyheadingyyy tex-src/texinfo.tex /^\\gdef\\everyheadingyyy #1@|#2@|#3@|#4\\finish{%$/
+ewbot tex-src/texinfo.tex /^\\def\\ewbot{\\vrule height0pt depth\\cornerthick widt/
+ewtop tex-src/texinfo.tex /^\\def\\ewtop{\\vrule height\\cornerthick depth0pt widt/
exact c-src/emacs/src/gmalloc.c 200
+example tex-src/texinfo.tex /^\\let\\example=\\lisp$/
+exdent tex-src/texinfo.tex /^\\def\\exdent{\\parsearg\\exdentyyy}$/
+exdent tex-src/texinfo.tex /^\\let\\exdent=\\nofillexdent$/
+exdentyyy tex-src/texinfo.tex /^\\def\\exdentyyy #1{{\\hfil\\break\\hbox{\\kern -\\exdent/
execute cp-src/c.C /^ void execute(CPluginCSCState& p, int w, in/
exit c-src/exit.c /^DEFUN(exit, (status), int status)$/
exit c-src/exit.strange_suffix /^DEFUN(exit, (status), int status)$/
@@ -2803,10 +2573,13 @@ exp y-src/parse.y 95
exp1 y-src/cccp.y 148
exp_list y-src/parse.y 263
expand-abbrev c-src/abbrev.c /^DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_ab/
+expandafter tex-src/texinfo.tex /^\\expandafter\\let\\expandafter\\synindexfoo\\expandaft/
expandmng prol-src/natded.prolog /^expandmng(var(V),var(V)).$/
expandmng_tree prol-src/natded.prolog /^expandmng_tree(tree(Rule,Syn:Sem,Trees),$/
expandmng_trees prol-src/natded.prolog /^expandmng_trees([],[]).$/
expandsyn prol-src/natded.prolog /^expandsyn(Syn,Syn):-$/
+expansion tex-src/texinfo.tex /^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/
+expansion tex-src/texinfo.tex /^\\def\\expansion{\\realbackslash expansion}$/
explicitly-quoted-pending-delete-mode el-src/TAGTEST.EL /^(defalias (quote explicitly-quoted-pending-delete-/
expression_value y-src/cccp.y 68
extras c-src/emacs/src/lisp.h 1603
@@ -2853,6 +2626,10 @@ fdp c-src/etags.c 217
ff cp-src/c.C /^ int ff(){return 1;};$/
field_of_play cp-src/conway.cpp 18
fignore c-src/etags.c 2416
+file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}$/
+file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}%$/
+file tex-src/texinfo.tex /^\\let\\file=\\indexdummyfont$/
+file tex-src/texinfo.tex /^\\let\\file=\\samp$/
file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun file-of-tag (&optional relative)$/
file-of-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar file-of-tag-function nil$/
fileJoin php-src/lce_functions.php /^ function fileJoin()$/
@@ -2861,6 +2638,7 @@ file_index perl-src/htlmify-cystic 33
file_tocs perl-src/htlmify-cystic 30
filename_is_absolute c-src/etags.c /^filename_is_absolute (char *fn)$/
filenames c-src/etags.c 196
+finalout tex-src/texinfo.tex /^\\def\\finalout{\\overfullrule=0pt}$/
find-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag (tagname &optional next-p regexp-p/
find-tag-default-function el-src/emacs/lisp/progmodes/etags.el /^(defcustom find-tag-default-function nil$/
find-tag-history el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-history nil) ; Doc string?$/
@@ -2883,21 +2661,33 @@ find-tag-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-tag-o
find_entries c-src/etags.c /^find_entries (FILE *inf)$/
find_user_signal_name c-src/emacs/src/keyboard.c /^find_user_signal_name (int sig)$/
findcats prol-src/natded.prolog /^findcats([],Left,Left).$/
+findex tex-src/texinfo.tex /^\\def\\findex {\\fnindex}$/
finish_appendices perl-src/htlmify-cystic /^sub finish_appendices ()$/
finish_sections perl-src/htlmify-cystic /^sub finish_sections ()$/
finish_subsections perl-src/htlmify-cystic /^sub finish_subsections ()$/
finish_subsubsections perl-src/htlmify-cystic /^sub finish_subsubsections ()$/
+finishtitlepage tex-src/texinfo.tex /^\\def\\finishtitlepage{%$/
finlist c-src/etags.c 2414
first c-src/emacs/src/gmalloc.c 151
+first tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
fitchtreelist prol-src/natded.prolog /^fitchtreelist([]).$/
fixup_locale c-src/emacs/src/lisp.h /^INLINE void fixup_locale (void) {}$/
flag c-src/getopt.h 83
flag2str pyt-src/server.py /^def flag2str(value, string):$/
flistseen c-src/etags.c 2415
+flushcr tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else /
+flushleft tex-src/texinfo.tex /^\\def\\flushleft{%$/
+flushright tex-src/texinfo.tex /^\\def\\flushright{%$/
fn c-src/exit.c /^ void EXFUN((*fn[1]), (NOARGS));$/
fn c-src/exit.strange_suffix /^ void EXFUN((*fn[1]), (NOARGS));$/
+fnheader tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
fnin y-src/parse.y 68
+fnitemindex tex-src/texinfo.tex /^\\def\\fnitemindex #1{\\doind {fn}{\\code{#1}}}%$/
+fnx\deffnheader tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
focus_set pyt-src/server.py /^ def focus_set(self):$/
+folio tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/
+folio tex-src/texinfo.tex /^{\\let\\folio=0% Expand all macros now EXCEPT \\folio/
+folio tex-src/texinfo.tex /^{\\let\\folio=0%$/
follow_key c-src/emacs/src/keyboard.c /^follow_key (Lisp_Object keymap, Lisp_Object key)$/
fonts tex-src/texinfo.tex /^\\obeyspaces \\obeylines \\ninett \\indexfonts \\rawbac/
fonts\rm tex-src/texinfo.tex /^ \\indexfonts\\rm \\tolerance=9500 \\advance\\baseline/
@@ -2925,11 +2715,15 @@ foobar c-src/c.c /^int foobar() {;}$/
foobar c.c /^extern void foobar (void) __attribute__ ((section /
foobar2 c-src/h.h 20
foobar2_ c-src/h.h 16
+footnote tex-src/texinfo.tex /^\\long\\gdef\\footnote #1{\\global\\advance \\footnoteno/
+footnotestyle tex-src/texinfo.tex /^\\let\\footnotestyle=\\comment$/
+footnotezzz tex-src/texinfo.tex /^\\long\\gdef\\footnotezzz #1{\\insert\\footins{$/
foperator c-src/etags.c 2411
force_auto_save_soon c-src/emacs/src/keyboard.c /^force_auto_save_soon (void)$/
force_explicit_name c-src/etags.c 265
force_quit_count c-src/emacs/src/keyboard.c 10387
foreign_export merc-src/accumulator.m /^:- pragma foreign_export("C", unravel_univ(in, out/
+format tex-src/texinfo.tex /^\\def\\format{\\begingroup\\inENV %This group ends at /
formatSize objc-src/PackInsp.m /^-(const char *)formatSize:(const char *)size inBuf/
found c-src/emacs/src/lisp.h 2344
fracas html-src/software.html /^Fracas$/
@@ -2946,8 +2740,12 @@ free_regexps c-src/etags.c /^free_regexps (void)$/
free_tree c-src/etags.c /^free_tree (register node *np)$/
free_var prol-src/natded.prolog /^free_var(var(V),var(V)).$/
freehook c-src/emacs/src/gmalloc.c /^freehook (void *ptr)$/
+frenchspacing tex-src/texinfo.tex /^\\def\\frenchspacing{\\sfcode46=1000 \\sfcode63=1000 \\/
+frenchspacing tex-src/texinfo.tex /^\\let\\frenchspacing=\\relax%$/
fresh_vars prol-src/natded.prolog /^fresh_vars(var(V),var(V)).$/
fstartlist c-src/etags.c 2413
+ftable tex-src/texinfo.tex /^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+ftablex tex-src/texinfo.tex /^\\gdef\\ftablex #1^^M{%$/
func c-src/emacs/src/lisp.h /^ void (*func) (Lisp_Object);$/
func c-src/emacs/src/lisp.h /^ void (*func) (int);$/
func c-src/emacs/src/lisp.h /^ void (*func) (void *);$/
@@ -2964,6 +2762,7 @@ function c-src/emacs/src/lisp.h 2985
function c-src/emacs/src/lisp.h 694
function c-src/etags.c 194
functionp c-src/emacs/src/lisp.h /^functionp (Lisp_Object object)$/
+functionparens tex-src/texinfo.tex /^\\gdef\\functionparens{\\boldbrax\\let&=\\amprm\\parenco/
fval forth-src/test-forth.fth /^fconst fvalue fval$/
fvar forth-src/test-forth.fth /^fvariable fvar$/
fvdef c-src/etags.c 2418
@@ -3019,10 +2818,14 @@ ghi1 c-src/h.h 36
ghi2 c-src/h.h 39
giallo cp-src/c.C 40
glider cp-src/conway.cpp /^void glider(int x, int y)$/
+gloggingall tex-src/texinfo.tex /^\\def\\gloggingall{\\begingroup \\globaldefs = 1 \\logg/
gnu html-src/software.html /^Free software that I wrote for the GNU project or /
gobble_input c-src/emacs/src/keyboard.c /^gobble_input (void)$/
goto-tag-location-function el-src/emacs/lisp/progmodes/etags.el /^(defvar goto-tag-location-function nil$/
goto_xy cp-src/screen.cpp /^void goto_xy(unsigned char x, unsigned char y)$/
+group tex-src/texinfo.tex /^\\def\\group{\\begingroup$/
+gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}$/
+gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}%$/
handleList pyt-src/server.py /^ def handleList(self, event):$/
handleNew pyt-src/server.py /^ def handleNew(self, event):$/
handle_async_input c-src/emacs/src/keyboard.c /^handle_async_input (void)$/
@@ -3037,6 +2840,8 @@ hash c-src/emacs/src/lisp.h 1843
hash c-src/etags.c /^hash (const char *str, int len)$/
hash_table_test c-src/emacs/src/lisp.h 1805
hashfn c-src/emacs/src/lisp.h /^ EMACS_UINT (*hashfn) (struct hash_table_test *t,/
+hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/
+hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}%$/
hdr c-src/emacs/src/gmalloc.c 1860
head_table c-src/emacs/src/keyboard.c 11027
header c-src/emacs/src/lisp.h 1371
@@ -3046,6 +2851,8 @@ header c-src/emacs/src/lisp.h 1610
header c-src/emacs/src/lisp.h 1672
header c-src/emacs/src/lisp.h 1826
header_size c-src/emacs/src/lisp.h 1471
+heading tex-src/texinfo.tex /^\\def\\heading{\\parsearg\\secheadingi}$/
+headings tex-src/texinfo.tex /^\\def\\headings #1 {\\csname HEADINGS#1\\endcsname}$/
heapsize c-src/emacs/src/gmalloc.c 361
hello scm-src/test.scm /^(define hello "Hello, Emacs!")$/
hello scm-src/test.scm /^(set! hello "Hello, world!")$/
@@ -3057,6 +2864,10 @@ help_form_saved_window_configs c-src/emacs/src/keyboard.c 2156
helpwin pyt-src/server.py /^def helpwin(helpdict):$/
hide_cursor cp-src/screen.cpp /^void hide_cursor(void)$/
hlds merc-src/accumulator.m /^:- import_module hlds.$/
+hsize tex-src/texinfo.tex /^ {\\let\\hsize=\\pagewidth \\makefootline}}$/
+hsize tex-src/texinfo.tex /^ {\\let\\hsize=\\pagewidth \\makeheadline}$/
+hsize tex-src/texinfo.tex /^\\shipout\\vbox{{\\let\\hsize=\\pagewidth \\makeheadline/
+hsize tex-src/texinfo.tex /^{\\let\\hsize=\\pagewidth \\makefootline}}}%$/
htmltreelist prol-src/natded.prolog /^htmltreelist([]).$/
hybrid_aligned_alloc c-src/emacs/src/gmalloc.c /^hybrid_aligned_alloc (size_t alignment, size_t siz/
hybrid_calloc c-src/emacs/src/gmalloc.c /^hybrid_calloc (size_t nmemb, size_t size)$/
@@ -3071,31 +2882,87 @@ i c-src/emacs/src/lisp.h 4679
i c-src/emacs/src/lisp.h 567
i c.c 169
i cp-src/c.C 132
+i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}$/
+i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}%$/
+i tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+i tex-src/texinfo.tex /^\\let\\i=\\indexdummyfont$/
+i tex-src/texinfo.tex /^\\let\\i=\\smartitalic$/
ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\pa/
ialpage tex-src/texinfo.tex /^ \\availdimen@=\\pageheight \\advance\\availdimen@ by/
ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\parti/
+ialpage tex-src/texinfo.tex /^ \\output={\\global\\setbox\\partialpage=$/
+ialpage tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/
ialpage tex-src/texinfo.tex /^\\newbox\\partialpage$/
-ialpage= tex-src/texinfo.tex /^ \\output={\\global\\setbox\\partialpage=$/
identify_goal_type merc-src/accumulator.m /^:- pred identify_goal_type(pred_id::in, proc_id::i/
identify_out_and_out_prime merc-src/accumulator.m /^:- pred identify_out_and_out_prime(module_info::in/
identify_recursive_calls merc-src/accumulator.m /^:- pred identify_recursive_calls(pred_id::in, proc/
idx c-src/emacs/src/lisp.h 3150
+ifclear tex-src/texinfo.tex /^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/
+ifclearfail tex-src/texinfo.tex /^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/
+ifclearfailxxx tex-src/texinfo.tex /^\\long\\def\\ifclearfailxxx #1\\end ifclear{\\endgroup\\/
+ifclearxxx tex-src/texinfo.tex /^\\def\\ifclearxxx #1{\\endgroup$/
+ifinfo tex-src/texinfo.tex /^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/
+ifinfoxxx tex-src/texinfo.tex /^\\long\\def\\ifinfoxxx #1\\end ifinfo{\\endgroup\\ignore/
+ifset tex-src/texinfo.tex /^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/
+ifsetfail tex-src/texinfo.tex /^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/
+ifsetfailxxx tex-src/texinfo.tex /^\\long\\def\\ifsetfailxxx #1\\end ifset{\\endgroup\\igno/
+ifsetxxx tex-src/texinfo.tex /^\\def\\ifsetxxx #1{\\endgroup$/
+iftex tex-src/texinfo.tex /^\\def\\iftex{}$/
+ifusingtt tex-src/texinfo.tex /^\\def\\ifusingtt#1#2{\\ifdim \\fontdimen3\\the\\font=0pt/
+ignore tex-src/texinfo.tex /^\\def\\ignore{\\begingroup\\ignoresections$/
ignore_case c-src/etags.c 266
ignore_mouse_drag_p c-src/emacs/src/keyboard.c 1256
-ill=\relax tex-src/texinfo.tex /^\\let\\refill=\\relax$/
+ignoresections tex-src/texinfo.tex /^\\def\\ignoresections{%$/
+ignorexxx tex-src/texinfo.tex /^\\long\\def\\ignorexxx #1\\end ignore{\\endgroup\\ignore/
+ii tex-src/texinfo.tex /^\\def\\ii#1{{\\it #1}} % italic font$/
immediate_quit c-src/emacs/src/keyboard.c 174
impatto html-src/softwarelibero.html /^Impatto pratico del software libero$/
implementation merc-src/accumulator.m /^:- implementation.$/
+implicitmath tex-src/texinfo.tex /^\\let\\implicitmath = $$/
+inENV tex-src/texinfo.tex /^\\newif\\ifENV \\ENVfalse \\def\\inENV{\\ifENV\\relax\\els/
in_word_set c-src/etags.c /^in_word_set (register const char *str, register un/
inattribute c-src/etags.c 2400
inc cp-src/Range.h /^ double inc (void) const { return rng_inc; }$/
+include tex-src/texinfo.tex /^\\def\\include{\\parsearg\\includezzz}$/
+includezzz tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/
+indbf tex-src/texinfo.tex /^\\let\\indbf=\\indrm$/
index c-src/emacs/src/lisp.h 1856
+indexbackslash tex-src/texinfo.tex /^ \\def\\indexbackslash{\\rawbackslashxx}$/
+indexbackslash tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden during \\printin/
+indexdotfill tex-src/texinfo.tex /^\\def\\indexdotfill{\\cleaders$/
+indexdummies tex-src/texinfo.tex /^\\def\\indexdummies{%$/
+indexdummydots tex-src/texinfo.tex /^\\def\\indexdummydots{...}$/
+indexdummyfont tex-src/texinfo.tex /^\\def\\indexdummyfont#1{#1}$/
+indexdummytex tex-src/texinfo.tex /^\\def\\indexdummytex{TeX}$/
+indexfonts tex-src/texinfo.tex /^\\def\\indexfonts{%$/
+indexname tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
+indexname tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
+indexnofonts tex-src/texinfo.tex /^\\def\\indexnofonts{%$/
+indsc tex-src/texinfo.tex /^\\let\\indsc=\\indrm$/
+indsf tex-src/texinfo.tex /^\\let\\indsf=\\indrm$/
+indsl tex-src/texinfo.tex /^\\let\\indsl=\\indit$/
+indtt tex-src/texinfo.tex /^\\let\\indtt=\\ninett$/
infabsdir c-src/etags.c 206
infabsname c-src/etags.c 205
infiles make-src/Makefile /^infiles = $(filter-out ${NONSRCS},${SRCS}) srclist/
infname c-src/etags.c 204
info c-src/emacs/src/gmalloc.c 157
infoPanel objcpp-src/SimpleCalc.M /^- infoPanel:sender$/
+infoappendix tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
+infoappendixsec tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
+infoappendixsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
+infoappendixsubsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
+infochapter tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/
+inforef tex-src/texinfo.tex /^\\def\\inforef #1{\\inforefzzz #1,,,,**}$/
+inforefzzz tex-src/texinfo.tex /^\\def\\inforefzzz #1,#2,#3,#4**{See Info file \\file{/
+infosection tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/
+infosubsection tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
+infosubsubsection tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
+infotop tex-src/texinfo.tex /^\\def\\infotop{\\parsearg\\unnumberedzzz}$/
+infounnumbered tex-src/texinfo.tex /^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/
+infounnumberedsec tex-src/texinfo.tex /^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/
+infounnumberedsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/
+infounnumberedsubsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/
init c-src/etags.c /^init (void)$/
init objc-src/Subprocess.m /^ andStdErr:(BOOL)wantsStdErr$/
init objc-src/Subprocess.m /^- init:(const char *)subprocessString$/
@@ -3107,6 +2974,7 @@ init_registry cp-src/clheir.cpp /^void init_registry(void)$/
init_tool_bar_items c-src/emacs/src/keyboard.c /^init_tool_bar_items (Lisp_Object reuse)$/
inita c.c /^static void inita () {}$/
initb c.c /^static void initb () {}$/
+initial tex-src/texinfo.tex /^\\def\\initial #1{%$/
initial_kboard c-src/emacs/src/keyboard.c 84
initialize-new-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun initialize-new-tags-table ()$/
initialize_goal_store merc-src/accumulator.m /^:- func initialize_goal_store(list(hlds_goal), ins/
@@ -3138,7 +3006,14 @@ interface merc-src/accumulator.m /^:- interface.$/
interface_locate c-src/c.c /^interface_locate(void)$/
intern c-src/emacs/src/lisp.h /^intern (const char *str)$/
intern_c_string c-src/emacs/src/lisp.h /^intern_c_string (const char *str)$/
+internalBitem tex-src/texinfo.tex /^\\def\\internalBitem{\\smallbreak \\parsearg\\itemzzz}$/
+internalBitemx tex-src/texinfo.tex /^\\def\\internalBitemx{\\par \\parsearg\\itemzzz}$/
+internalBkitem tex-src/texinfo.tex /^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/
+internalBkitemx tex-src/texinfo.tex /^\\def\\internalBkitemx{\\par \\parsearg\\kitemzzz}$/
+internalBxitem tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/
+internalBxitemx tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/
internal_last_event_frame c-src/emacs/src/keyboard.c 228
+internalsetq tex-src/texinfo.tex /^\\def\\internalsetq #1#2{'xrdef {#1}{\\csname #2\\endc/
interned c-src/emacs/src/lisp.h 672
interpreters c-src/etags.c 197
interrupt_input c-src/emacs/src/keyboard.c 328
@@ -3173,9 +3048,28 @@ iso_lispy_function_keys c-src/emacs/src/keyboard.c 5151
isoperator prol-src/natded.prolog /^isoperator(Char):-$/
isoptab prol-src/natded.prolog /^isoptab('%').$/
iswhite c-src/etags.c /^#define iswhite(c) (_wht[CHAR (c)]) \/* c is white /
+item tex-src/texinfo.tex /^\\def\\item{\\errmessage{@item while not in a table}}/
+item tex-src/texinfo.tex /^\\let\\item = \\internalBitem %$/
+item tex-src/texinfo.tex /^\\let\\item=\\itemizeitem}$/
item_properties c-src/emacs/src/keyboard.c 7568
+itemcontents tex-src/texinfo.tex /^\\def\\itemcontents{#1}%$/
+itemfont tex-src/texinfo.tex /^\\def\\itemfont{#2}%$/
+itemindex tex-src/texinfo.tex /^\\let\\itemindex=#1%$/
+itemize tex-src/texinfo.tex /^\\def\\itemize{\\parsearg\\itemizezzz}$/
+itemizeitem tex-src/texinfo.tex /^\\def\\itemizeitem{%$/
+itemizey tex-src/texinfo.tex /^\\def\\itemizey #1#2{%$/
+itemizezzz tex-src/texinfo.tex /^\\def\\itemizezzz #1{%$/
+itemx tex-src/texinfo.tex /^\\def\\itemx{\\errmessage{@itemx while not in a table/
+itemx tex-src/texinfo.tex /^\\let\\itemx = \\internalBitemx %$/
+itemzzz tex-src/texinfo.tex /^\\def\\itemzzz #1{\\begingroup %$/
+ivarheader tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+ivarx\defivarheader tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
jmp c-src/emacs/src/lisp.h 3044
just_read_file c-src/etags.c /^just_read_file (FILE *inf)$/
+kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/
+kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/
+kbd tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
+kbd tex-src/texinfo.tex /^\\let\\kbd=\\indexdummyfont$/
kbd_buffer c-src/emacs/src/keyboard.c 291
kbd_buffer_events_waiting c-src/emacs/src/keyboard.c /^kbd_buffer_events_waiting (void)$/
kbd_buffer_get_event c-src/emacs/src/keyboard.c /^kbd_buffer_get_event (KBOARD **kbp,$/
@@ -3186,9 +3080,14 @@ kbd_buffer_store_help_event c-src/emacs/src/keyboard.c /^kbd_buffer_store_help_e
kbd_buffer_unget_event c-src/emacs/src/keyboard.c /^kbd_buffer_unget_event (register struct input_even/
kbd_fetch_ptr c-src/emacs/src/keyboard.c 297
kbd_store_ptr c-src/emacs/src/keyboard.c 302
+kbdfoo tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
kboard c-src/emacs/src/keyboard.c 860
kboard_stack c-src/emacs/src/keyboard.c 858
kboard_stack c-src/emacs/src/keyboard.c 864
+key tex-src/texinfo.tex /^\\def\\key #1{{\\tt \\exhyphenpenalty=10000\\uppercase{/
+key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}$/
+key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}%$/
+key tex-src/texinfo.tex /^\\let\\key=\\indexdummyfont$/
key_and_value c-src/emacs/src/lisp.h 1868
keyremap c-src/emacs/src/keyboard.c 8742
keyremap c-src/emacs/src/keyboard.c 8754
@@ -3203,6 +3102,12 @@ keywords y-src/cccp.y 114
keywords y-src/cccp.y 306
kind c-src/emacs/src/keyboard.c 11024
kind c-src/h.h 46
+kindex tex-src/texinfo.tex /^\\def\\kindex {\\kyindex}$/
+kitem tex-src/texinfo.tex /^\\def\\kitem{\\errmessage{@kitem while not in a table/
+kitem tex-src/texinfo.tex /^\\let\\kitem = \\internalBkitem %$/
+kitemx tex-src/texinfo.tex /^\\def\\kitemx{\\errmessage{@kitemx while not in a tab/
+kitemx tex-src/texinfo.tex /^\\let\\kitemx = \\internalBkitemx %$/
+kitemzzz tex-src/texinfo.tex /^\\def\\kitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
kset_echo_string c-src/emacs/src/keyboard.c /^kset_echo_string (struct kboard *kb, Lisp_Object v/
kset_kbd_queue c-src/emacs/src/keyboard.c /^kset_kbd_queue (struct kboard *kb, Lisp_Object val/
kset_keyboard_translate_table c-src/emacs/src/keyboard.c /^kset_keyboard_translate_table (struct kboard *kb, /
@@ -3212,6 +3117,9 @@ kset_local_function_key_map c-src/emacs/src/keyboard.c /^kset_local_function_key
kset_overriding_terminal_local_map c-src/emacs/src/keyboard.c /^kset_overriding_terminal_local_map (struct kboard /
kset_real_last_command c-src/emacs/src/keyboard.c /^kset_real_last_command (struct kboard *kb, Lisp_Ob/
kset_system_key_syms c-src/emacs/src/keyboard.c /^kset_system_key_syms (struct kboard *kb, Lisp_Obje/
+l tex-src/texinfo.tex /^\\def\\l#1{{\\li #1}\\null} % $/
+l tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+labelspace tex-src/texinfo.tex /^\\def\\labelspace{\\hskip1em \\relax}$/
lang c-src/etags.c 208
lang c-src/etags.c 251
lang c-src/etags.c 259
@@ -3232,7 +3140,11 @@ lasta c.c 272
lastargmargin tex-src/texinfo.tex /^\\newskip\\deflastargmargin \\deflastargmargin=18pt$/
lastargmargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip \\deflastargmargin{\\rm #2}\\hs/
lastb c.c 278
+lastnode tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
+lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax$/
+lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax}$/
lb c-src/etags.c 2923
+lbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/
lbs c-src/etags.c 2924
lce php-src/lce_functions.php /^ function lce()$/
lce_bindtextdomain php-src/lce_functions.php /^ function lce_bindtextdomain($d_name, $d_path/
@@ -3248,12 +3160,15 @@ len c-src/etags.c 237
length c-src/etags.c 2495
length y-src/cccp.y 113
length y-src/cccp.y 44
+less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}$/
+less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}%$/
let c-src/emacs/src/lisp.h 2981
letter tex-src/texinfo.tex /^ {#1}{Appendix \\appendixletter}{\\noexpand\\folio}}/
letter tex-src/texinfo.tex /^ {\\appendixletter}$/
letter tex-src/texinfo.tex /^ {\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\th/
letter tex-src/texinfo.tex /^\\chapmacro {#1}{Appendix \\appendixletter}%$/
letter tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\appendixlet/
+letter tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1 \\message{Appendix/
letter tex-src/texinfo.tex /^\\subsecheading {#1}{\\appendixletter}{\\the\\secno}{\\/
letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\noexpand\\folio}/
letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\/
@@ -3261,6 +3176,7 @@ letter: tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix \\appendixletter: \\n
level c-src/emacs/src/lisp.h 3153
lex prol-src/natded.prolog /^lex(W,SynOut,Sem):-$/
lexptr y-src/cccp.y 332
+li tex-src/texinfo.tex /^\\let\\li = \\sf % Sometimes we call it \\li, not \\sf./
libs merc-src/accumulator.m /^:- import_module libs.$/
licenze html-src/softwarelibero.html /^Licenze d'uso di un programma$/
limit cp-src/Range.h /^ double limit (void) const { return rng_limit; }$/
@@ -3273,9 +3189,12 @@ linebuffer_init c-src/etags.c /^linebuffer_init (linebuffer *lbp)$/
linebuffer_setlen c-src/etags.c /^linebuffer_setlen (linebuffer *lbp, int toksize)$/
lineno c-src/emacs/src/lisp.h 3147
lineno c-src/etags.c 2506
+linenumber tex-src/texinfo.tex /^ \\def\\linenumber{\\the\\inputlineno:\\space}$/
+linenumber tex-src/texinfo.tex /^ \\let\\linenumber = \\empty % Non-3.0.$/
linepos c-src/etags.c 2507
linepos c-src/etags.c 2922
links html-src/software.html /^Links to interesting software$/
+lisp tex-src/texinfo.tex /^\\def\\lisp{\\aboveenvbreak$/
lisp_eval_depth c-src/emacs/src/lisp.h 3045
lisp_h_CHECK_LIST_CONS c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (C/
lisp_h_CHECK_NUMBER c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGER/
@@ -3309,6 +3228,7 @@ lisp_h_XTYPE c-src/emacs/src/lisp.h /^# define lisp_h_XTYPE(a) ((enum Lisp_Type)
lisp_h_XUNTAG c-src/emacs/src/lisp.h /^# define lisp_h_XUNTAG(a, type) ((void *) (intptr_/
lisp_h_check_cons_list c-src/emacs/src/lisp.h /^# define lisp_h_check_cons_list() ((void) 0)$/
lisp_h_make_number c-src/emacs/src/lisp.h /^# define lisp_h_make_number(n) \\$/
+lisppar tex-src/texinfo.tex /^\\gdef\\lisppar{\\null\\endgraf}}$/
lispy_accent_codes c-src/emacs/src/keyboard.c 4634
lispy_accent_keys c-src/emacs/src/keyboard.c 4741
lispy_drag_n_drop_names c-src/emacs/src/keyboard.c 5181
@@ -3335,18 +3255,29 @@ loadPORManager php-src/lce_functions.php /^ function &loadPORManager()$/
local_if_set c-src/emacs/src/lisp.h 2338
location cp-src/clheir.hpp /^ location() { }$/
location cp-src/clheir.hpp 33
+loggingall tex-src/texinfo.tex /^\\def\\loggingall{\\tracingcommands2 \\tracingstats2 $/
+look tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
lookup y-src/cccp.y /^lookup (name, len, hash)$/
lookup_call merc-src/accumulator.m /^:- pred lookup_call(accu_goal_store::in, accu_goal/
+losespace tex-src/texinfo.tex /^\\def\\losespace #1{#1}$/
lowcase c-src/etags.c /^#define lowcase(c) tolower (CHAR (c))$/
+lowercaseenumerate tex-src/texinfo.tex /^\\def\\lowercaseenumerate{%$/
lucid_event_type_list_p c-src/emacs/src/keyboard.c /^lucid_event_type_list_p (Lisp_Object object)$/
+lvvmode tex-src/texinfo.tex /^\\def\\lvvmode{\\vbox to 0pt{}}$/
mabort c-src/emacs/src/gmalloc.c /^mabort (enum mcheck_status status)$/
mach_host_self c-src/machsyscalls.h /^SYSCALL (mach_host_self, -29,$/
mach_msg_trap c-src/machsyscalls.h /^SYSCALL (mach_msg_trap, -25,$/
mach_reply_port c-src/machsyscalls.h /^SYSCALL (mach_reply_port, -26,$/
mach_task_self c-src/machsyscalls.h /^SYSCALL (mach_task_self, -28,$/
mach_thread_self c-src/machsyscalls.h /^SYSCALL (mach_thread_self, -27,$/
+macheader tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+macx\defmacheader tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
magic c-src/emacs/src/gmalloc.c 1863
+mainmagstep tex-src/texinfo.tex /^\\let\\mainmagstep=\\magstep1$/
+mainmagstep tex-src/texinfo.tex /^\\let\\mainmagstep=\\magstephalf$/
maintaining.info make-src/Makefile /^maintaining.info: maintaining.texi$/
+majorheading tex-src/texinfo.tex /^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/
+majorheadingzzz tex-src/texinfo.tex /^\\def\\majorheadingzzz #1{%$/
make-abbrev-table c-src/abbrev.c /^DEFUN ("make-abbrev-table", Fmake_abbrev_table, Sm/
make_C_tag c-src/etags.c /^make_C_tag (bool isfun)$/
make_coor prol-src/natded.prolog /^make_coor(s(_),Alpha,Sem1,Sem2,Alpha@Sem1@Sem2).$/
@@ -3387,6 +3318,7 @@ map_word prol-src/natded.prolog /^map_word([[_]|Ws],Exp):-$/
mapping html-src/algrthms.html /^Mapping the Channel Symbols$/
mapsyn prol-src/natded.prolog /^mapsyn(A\/B,AM\/BM):-$/
mark_kboards c-src/emacs/src/keyboard.c /^mark_kboards (void)$/
+math tex-src/texinfo.tex /^\\def\\math#1{\\implicitmath #1\\implicitmath}$/
max c-src/emacs/src/lisp.h /^#define max(a, b) ((a) > (b) ? (a) : (b))$/
max c-src/emacs/src/lisp.h 58
max c.c /^__attribute__ ((always_inline)) max (int a, int b)/
@@ -3409,6 +3341,7 @@ memalign c-src/emacs/src/gmalloc.c /^memalign (size_t alignment, size_t size)$/
member prol-src/natded.prolog /^member(X,[X|_]).$/
member_lessthan_goalid merc-src/accumulator.m /^:- pred member_lessthan_goalid(accu_goal_store::in/
memclear c-src/emacs/src/lisp.h /^memclear (void *p, ptrdiff_t nbytes)$/
+menu tex-src/texinfo.tex /^\\long\\def\\menu #1\\end menu{}$/
menu_bar_item c-src/emacs/src/keyboard.c /^menu_bar_item (Lisp_Object key, Lisp_Object item, /
menu_bar_items c-src/emacs/src/keyboard.c /^menu_bar_items (Lisp_Object old)$/
menu_bar_items_index c-src/emacs/src/keyboard.c 7369
@@ -3418,6 +3351,11 @@ menu_item_eval_property c-src/emacs/src/keyboard.c /^menu_item_eval_property (Li
menu_item_eval_property_1 c-src/emacs/src/keyboard.c /^menu_item_eval_property_1 (Lisp_Object arg)$/
menu_separator_name_p c-src/emacs/src/keyboard.c /^menu_separator_name_p (const char *label)$/
metasource c-src/etags.c 198
+methodheader tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+methodx\defmethodheader tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+methparsebody\Edeffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
+methparsebody\Edefmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+methparsebody\Edeftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
min c-src/emacs/src/gmalloc.c /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
min c-src/emacs/src/lisp.h /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
min c-src/emacs/src/lisp.h 57
@@ -3425,6 +3363,7 @@ min cp-src/conway.cpp /^#define min(x,y) ((x > y) ? y : x)$/
min_args c-src/emacs/src/lisp.h 1686
min_char c-src/emacs/src/lisp.h 1621
minus cp-src/functions.cpp /^void Date::minus ( int days , int month , int year/
+minus tex-src/texinfo.tex /^\\def\\minus{$-$}$/
miti html-src/softwarelibero.html /^Sfatiamo alcuni miti$/
modifier_names c-src/emacs/src/keyboard.c 6319
modifier_symbols c-src/emacs/src/keyboard.c 6327
@@ -3450,7 +3389,9 @@ my_struct c-src/h.h 91
my_struct c.c 226
my_typedef c-src/h.h 93
my_typedef c.c 228
+mylbrace tex-src/texinfo.tex /^\\def\\mylbrace {{\\tt \\char '173}}$/
mypi forth-src/test-forth.fth /^synonym mypi fconst$/
+myrbrace tex-src/texinfo.tex /^\\def\\myrbrace {{\\tt \\char '175}}$/
n c-src/exit.c 28
n c-src/exit.strange_suffix 28
name c-src/emacs/src/keyboard.c 7241
@@ -3480,21 +3421,28 @@ name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1} #2}{Function}%$/
name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1} #2}{Variable}%$/
name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}$/
name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}%$/
+name tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/
+name tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/
name y-src/cccp.y 113
name y-src/cccp.y 43
named c-src/etags.c 2505
namestringequal pas-src/common.pas /^function namestringequal;(*(var Name1,Name2 : Name/
nargs c-src/emacs/src/lisp.h 2987
+need tex-src/texinfo.tex /^\\def\\need{\\parsearg\\needx}$/
need_adjustment c-src/emacs/src/lisp.h 1986
+needx tex-src/texinfo.tex /^\\def\\needx#1{%$/
neighbors cp-src/clheir.hpp 59
nelem cp-src/Range.h /^ int nelem (void) const { return rng_nelem; }$/
nestlev c-src/etags.c 2525
new objc-src/PackInsp.m /^+new$/
new perl-src/htlmify-cystic 163
new_tag perl-src/htlmify-cystic 18
+newcodeindex tex-src/texinfo.tex /^\\def\\newcodeindex #1{$/
+newindex tex-src/texinfo.tex /^\\def\\newindex #1{$/
newlb c-src/etags.c 2930
newlinepos c-src/etags.c 2932
newtextstring pas-src/common.pas /^function newtextstring; (*: TextString;*)$/
+newwrite tex-src/texinfo.tex /^\\gdef\\newwrite{\\alloc@7\\write\\chardef\\sixt@@n}}$/
next c-src/emacs/src/gmalloc.c 164
next c-src/emacs/src/gmalloc.c 188
next c-src/emacs/src/gmalloc.c 198
@@ -3509,6 +3457,10 @@ next c-src/emacs/src/lisp.h 3134
next c-src/emacs/src/lisp.h 700
next c-src/etags.c 203
next c.c 174
+next tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else /
+next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+next tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/
+next tex-src/texinfo.tex /^\\edef\\next{\\write\\auxfile{\\internalsetq {#1}{#2}}}/
next y-src/cccp.y 42
next-file el-src/emacs/lisp/progmodes/etags.el /^(defun next-file (&optional initialize novisit)$/
next-file-list el-src/emacs/lisp/progmodes/etags.el /^(defvar next-file-list nil$/
@@ -3519,26 +3471,44 @@ next_weak c-src/emacs/src/lisp.h 1875
nextfree c-src/emacs/src/lisp.h 3029
nfree c-src/emacs/src/gmalloc.c 150
nl c-src/etags.c 2521
+nm tex-src/testenv.tex /^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/
+no tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/
no tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1 \\message{Appendix/
no tex-src/texinfo.tex /^\\ifnum\\secno=0 Appendix\\xreftie'char\\the\\appendixn/
no tex-src/texinfo.tex /^\\newcount \\appendixno \\appendixno = `\\@$/
-no.\the\secno tex-src/texinfo.tex /^\\else \\ifnum \\subsecno=0 Section\\xreftie'char\\the\\/
-no.\the\secno.\the\subsecno tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
-no.\the\secno.\the\subsecno.\the\subsubsecno tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no.\the tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no.\the tex-src/texinfo.tex /^\\else \\ifnum \\subsecno=0 Section\\xreftie'char\\the\\/
no_argument c-src/getopt.h 89
no_lang_help c-src/etags.c 707
no_sub c-src/emacs/src/regex.h 387
nocase_tail c-src/etags.c /^nocase_tail (const char *cp)$/
node c-src/etags.c 225
+node tex-src/texinfo.tex /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/
node_st c-src/etags.c 214
noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
+nodexxx tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
+nodezzz tex-src/texinfo.tex /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/
+nofillexdent tex-src/texinfo.tex /^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/
+nofillexdentyyy tex-src/texinfo.tex /^\\def\\nofillexdentyyy #1{{\\advance \\leftskip by -\\e/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
nofonts tex-src/texinfo.tex /^{\\indexnofonts$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nonarrowing tex-src/texinfo.tex /^ \\let\\nonarrowing=\\comment$/
+nonarrowing tex-src/texinfo.tex /^\\let\\nonarrowing=\\relax$/
none_help c-src/etags.c 703
+normalbackslash tex-src/texinfo.tex /^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/
+normalcaret tex-src/texinfo.tex /^\\def\\normalcaret{^}$/
+normaldoublequote tex-src/texinfo.tex /^\\def\\normaldoublequote{"}$/
+normalgreater tex-src/texinfo.tex /^\\def\\normalgreater{>}$/
normalize prol-src/natded.prolog /^normalize(M,MNorm):-$/
normalize_fresh prol-src/natded.prolog /^normalize_fresh(M,N):-$/
normalize_tree prol-src/natded.prolog /^normalize_tree(tree(Rule,Syn:Sem,Trees),$/
normalize_trees prol-src/natded.prolog /^normalize_trees([],[]).$/
+normalless tex-src/texinfo.tex /^\\def\\normalless{<}$/
+normalparens tex-src/texinfo.tex /^\\gdef\\normalparens{\\boldbrax\\let&=\\ampnr}$/
+normalplus tex-src/texinfo.tex /^\\def\\normalplus{+}$/
+normaltilde tex-src/texinfo.tex /^\\def\\normaltilde{~}$/
+normalunderscore tex-src/texinfo.tex /^\\def\\normalunderscore{_}$/
+normalverticalbar tex-src/texinfo.tex /^\\def\\normalverticalbar{|}$/
nosave pyt-src/server.py /^ def nosave(self):$/
not_bol c-src/emacs/src/regex.h 391
not_eol c-src/emacs/src/regex.h 394
@@ -3549,6 +3519,8 @@ notag4 c-src/dostorture.c 45
notag4 c-src/torture.c 45
notinname c-src/etags.c /^#define notinname(c) (_nin[CHAR (c)]) \/* c is not /
npending c-src/emacs/src/keyboard.c 7244
+nsbot tex-src/texinfo.tex /^\\def\\nsbot{\\vbox$/
+nstop tex-src/texinfo.tex /^\\def\\nstop{\\vbox$/
ntool_bar_items c-src/emacs/src/keyboard.c 7974
numOfChannels cp-src/c.C 1
num_columns cp-src/conway.cpp 16
@@ -3557,8 +3529,15 @@ num_regs c-src/emacs/src/regex.h 430
num_rows cp-src/conway.cpp 15
numberKeys objcpp-src/SimpleCalc.M /^- numberKeys:sender$/
number_len c-src/etags.c /^static int number_len (long) ATTRIBUTE_CONST;$/
+numberedsec tex-src/texinfo.tex /^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/
+numberedsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/
+numberedsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubseczzz #1{\\seccheck{subsection}%$/
+numberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/
+numberedsubsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubsubseczzz #1{\\seccheck{subsubsecti/
numbervars prol-src/natded.prolog /^numbervars(X):-$/
+numericenumerate tex-src/texinfo.tex /^\\def\\numericenumerate{%$/
nvars c-src/emacs/src/lisp.h 3140
+obeyedspace tex-src/texinfo.tex /^\\gdef\\obeyedspace{\\ }$/
objdef c-src/etags.c 2484
object c-src/emacs/src/lisp.h 2128
object_registry cp-src/clheir.cpp 10
@@ -3569,6 +3548,12 @@ obstack_chunk_free y-src/parse.y 48
ocatseen c-src/etags.c 2477
octave_MDiagArray2_h cp-src/MDiagArray2.h 29
octave_Range_h cp-src/Range.h 24
+oddfooting tex-src/texinfo.tex /^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/
+oddfootingxxx tex-src/texinfo.tex /^\\gdef\\oddfootingxxx #1{\\oddfootingyyy #1@|@|@|@|\\f/
+oddfootingyyy tex-src/texinfo.tex /^\\gdef\\oddfootingyyy #1@|#2@|#3@|#4\\finish{%$/
+oddheading tex-src/texinfo.tex /^\\def\\oddheading{\\parsearg\\oddheadingxxx}$/
+oddheadingxxx tex-src/texinfo.tex /^\\gdef\\oddheadingxxx #1{\\oddheadingyyy #1@|@|@|@|\\f/
+oddheadingyyy tex-src/texinfo.tex /^\\gdef\\oddheadingyyy #1@|#2@|#3@|#4\\finish{%$/
oediff make-src/Makefile /^oediff: OTAGS ETAGS ${infiles}$/
offset c-src/emacs/src/lisp.h 2305
offset c-src/emacs/src/lisp.h 2365
@@ -3579,15 +3564,21 @@ oinbody c-src/etags.c 2478
ok objc-src/PackInsp.m /^-ok:sender$/
ok_to_echo_at_next_pause c-src/emacs/src/keyboard.c 159
old_value c-src/emacs/src/lisp.h 2980
+oldpage tex-src/texinfo.tex /^ \\let\\oldpage = \\page$/
omethodcolon c-src/etags.c 2481
omethodparm c-src/etags.c 2482
omethodsign c-src/etags.c 2479
omethodtag c-src/etags.c 2480
+one tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+onepageout tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
+onepageout tex-src/texinfo.tex /^\\def\\onepageout#1{\\hoffset=\\normaloffset$/
onone c-src/etags.c 2472
oparenseen c-src/etags.c 2476
open objc-src/PackInsp.m /^-open:sender$/
open-dribble-file c-src/emacs/src/keyboard.c /^DEFUN ("open-dribble-file", Fopen_dribble_file, So/
openInWorkspace objc-src/PackInsp.m /^static void openInWorkspace(const char *filename)$/
+opencontents tex-src/texinfo.tex /^\\def\\opencontents{\\openout \\contentsfile = \\jobnam/
+openindices tex-src/texinfo.tex /^\\def\\openindices{%$/
operationKeys objcpp-src/SimpleCalc.M /^- operationKeys:sender$/
operator y-src/cccp.y 438
operator ++ cp-src/functions.cpp /^Date & Date::operator ++ ( void ){$/
@@ -3609,11 +3600,20 @@ operator int cp-src/fail.C /^ operator int() const {return x;}$/
operator+ cp-src/c.C /^ A operator+(A& a) {};$/
operator+ cp-src/c.C /^const A& A::operator+(const A&) { }$/
operator+ cp-src/c.C /^void operator+(int, int) {}$/
-opparsebody\Edefop\defopx\defopheader\defoptype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+opheader\defoptype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+opnested tex-src/texinfo.tex /^\\gdef\\opnested{\\char`\\(\\global\\advance\\parencount /
+opnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
+opparsebody\Edefop tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+oprm tex-src/texinfo.tex /^\\gdef\\oprm#1 {{\\rm\\char`\\(}#1 \\bf \\let(=\\opnested /
oprotocol c-src/etags.c 2473
+optheader tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
option c-src/getopt.h 73
optional_argument c-src/getopt.h 91
-opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+optx\defoptheader tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+optype tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defoptype{} on #1}%$/
+optype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+opvarparsebody\Edefcv tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+opx\defopheader tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
ord_add_element prol-src/ordsets.prolog /^ord_add_element([], Element, [Element]).$/
ord_del_element prol-src/ordsets.prolog /^ord_del_element([], _, []).$/
ord_disjoint prol-src/ordsets.prolog /^ord_disjoint(Set1, Set2) :-$/
@@ -3659,8 +3659,20 @@ pMd c-src/emacs/src/lisp.h 155
pMu c-src/emacs/src/lisp.h 151
pMu c-src/emacs/src/lisp.h 156
p_next c-src/etags.c 258
+page tex-src/texinfo.tex /^ \\let\\page = \\oldpage$/
+page tex-src/texinfo.tex /^ \\def\\page{%$/
+page tex-src/texinfo.tex /^\\def\\page{\\par\\vfill\\supereject}$/
+pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chapoddpage$/
+pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chappager$/
+pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chappager}$/
+pagebody tex-src/texinfo.tex /^\\def\\pagebody#1{\\vbox to\\pageheight{\\boxmaxdepth=\\/
+pagecontents tex-src/texinfo.tex /^\\gdef\\pagecontents#1{\\ifvoid\\topins\\else\\unvbox\\to/
pagesize c-src/emacs/src/gmalloc.c 1703
+pagesofar tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/
pair merc-src/accumulator.m /^:- import_module pair.$/
+par tex-src/texinfo.tex /^\\let\\par=\\lisppar$/
+par tex-src/texinfo.tex /^{\\let\\par=\\endgraf \\smallbreak}%$/
+paragraphindent tex-src/texinfo.tex /^\\let\\paragraphindent=\\comment$/
parent c-src/emacs/src/keyboard.c 8745
parent c-src/emacs/src/lisp.h 1590
parse prol-src/natded.prolog /^parse(Ws,Cat):-$/
@@ -3679,8 +3691,20 @@ parse_return_error y-src/cccp.y 70
parse_solitary_modifier c-src/emacs/src/keyboard.c /^parse_solitary_modifier (Lisp_Object symbol)$/
parse_tool_bar_item c-src/emacs/src/keyboard.c /^parse_tool_bar_item (Lisp_Object key, Lisp_Object /
parse_tree merc-src/accumulator.m /^:- import_module parse_tree.$/
+parsearg tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/
+parseargdiscardspace tex-src/texinfo.tex /^\\gdef\\parseargdiscardspace {\\begingroup\\obeylines\\/
+parseargline tex-src/texinfo.tex /^\\def\\parseargline{\\begingroup \\obeylines \\parsearg/
+parsearglinex tex-src/texinfo.tex /^\\gdef\\parsearglinex #1^^M{\\endgroup \\next {#1}}}$/
+parseargx tex-src/texinfo.tex /^\\def\\parseargx{%$/
+parsebody\Edefmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+parsebody\Edefspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
+parsebody\Edeftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+parsebody\Edefun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
pat c-src/etags.c 262
pattern c-src/etags.c 260
+pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chapbreak$/
+pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chapoddpage$/
+pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chappager$/
pdlcount c-src/emacs/src/lisp.h 3046
pending-delete-mode el-src/TAGTEST.EL /^(defalias 'pending-delete-mode 'delete-selection-m/
pending_funcalls c-src/emacs/src/keyboard.c 4377
@@ -3688,16 +3712,19 @@ pending_signals c-src/emacs/src/keyboard.c 80
pfatal c-src/etags.c /^pfatal (const char *s1)$/
pfdset c-src/h.h 57
pfnote c-src/etags.c /^pfnote (char *name, bool is_func, char *linestart,/
+pindex tex-src/texinfo.tex /^\\def\\pindex {\\pgindex}$/
pinned c-src/emacs/src/lisp.h 679
plain_C_entries c-src/etags.c /^plain_C_entries (FILE *inf)$/
plain_C_suffixes c-src/etags.c 643
plainc c-src/etags.c 2934
+plainsecheading tex-src/texinfo.tex /^\\def\\plainsecheading #1{\\secheadingi {#1}}$/
plist c-src/emacs/src/lisp.h 2040
plist c-src/emacs/src/lisp.h 697
plus cp-src/functions.cpp /^void Date::plus ( int days , int month , int year /
plus go-src/test1.go 5
plusvalseq prol-src/natded.prolog /^plusvalseq([]) --> [].$/
point forth-src/test-forth.fth /^BEGIN-STRUCTURE point \\ create the named structure/
+point tex-src/texinfo.tex /^\\def\\point{$\\star$}$/
pointer c-src/emacs/src/lisp.h 2125
poll_for_input c-src/emacs/src/keyboard.c /^poll_for_input (struct atimer *timer)$/
poll_for_input_1 c-src/emacs/src/keyboard.c /^poll_for_input_1 (void)$/
@@ -3747,10 +3774,18 @@ prev c-src/emacs/src/gmalloc.c 165
prev c-src/emacs/src/gmalloc.c 189
prev c-src/emacs/src/lisp.h 2191
prev c.c 175
+primary tex-src/texinfo.tex /^\\def\\primary #1{\\line{#1\\hfil}}$/
+print tex-src/texinfo.tex /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
+print tex-src/texinfo.tex /^\\def\\print{\\realbackslash print}$/
printClassification php-src/lce_functions.php /^ function printClassification()$/
print_help c-src/etags.c /^print_help (argument *argbuffer)$/
print_language_names c-src/etags.c /^print_language_names (void)$/
print_version c-src/etags.c /^print_version (void)$/
+printedmanual tex-src/texinfo.tex /^\\def\\printedmanual{\\ignorespaces #5}%$/
+printedmanual tex-src/texinfo.tex /^section ``\\printednodename'' in \\cite{\\printedmanu/
+printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #1}%$/
+printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #3}%$/
+printindex tex-src/texinfo.tex /^\\def\\printindex{\\parsearg\\doprintindex}$/
printmax_t c-src/emacs/src/lisp.h 148
printmax_t c-src/emacs/src/lisp.h 153
proc c-src/h.h 87
@@ -3765,6 +3800,21 @@ prolog_pr c-src/etags.c /^prolog_pr (char *s, char *last)$/
prolog_skip_comment c-src/etags.c /^prolog_skip_comment (linebuffer *plb, FILE *inf)$/
prop c-src/etags.c 209
protect_malloc_state c-src/emacs/src/gmalloc.c /^protect_malloc_state (int protect_p)$/
+ptexL tex-src/texinfo.tex /^\\let\\ptexL=\\L$/
+ptexb tex-src/texinfo.tex /^\\let\\ptexb=\\b$/
+ptexbullet tex-src/texinfo.tex /^\\let\\ptexbullet=\\bullet$/
+ptexc tex-src/texinfo.tex /^\\let\\ptexc=\\c$/
+ptexdot tex-src/texinfo.tex /^\\let\\ptexdot=\\.$/
+ptexdots tex-src/texinfo.tex /^\\let\\ptexdots=\\dots$/
+ptexend tex-src/texinfo.tex /^\\let\\ptexend=\\end$/
+ptexequiv tex-src/texinfo.tex /^\\let\\ptexequiv = \\equiv$/
+ptexfootnote tex-src/texinfo.tex /^\\let\\ptexfootnote=\\footnote$/
+ptexi tex-src/texinfo.tex /^\\let\\ptexi=\\i$/
+ptexl tex-src/texinfo.tex /^\\let\\ptexl=\\l$/
+ptexlbrace tex-src/texinfo.tex /^\\let\\ptexlbrace=\\{$/
+ptexrbrace tex-src/texinfo.tex /^\\let\\ptexrbrace=\\}$/
+ptexstar tex-src/texinfo.tex /^\\let\\ptexstar=\\*$/
+ptext tex-src/texinfo.tex /^\\let\\ptext=\\t$/
pthread_mutexattr_setprio_ceiling/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprio_ceiling$/
pthread_mutexattr_setprotocol/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprotocol$/
purpose c-src/emacs/src/lisp.h 1594
@@ -3772,14 +3822,20 @@ push_kboard c-src/emacs/src/keyboard.c /^push_kboard (struct kboard *k)$/
pushclass_above c-src/etags.c /^pushclass_above (int bracelev, char *str, int len)/
put_entries c-src/etags.c /^put_entries (register node *np)$/
pvec_type c-src/emacs/src/lisp.h 780
+pxref tex-src/texinfo.tex /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/
quantizing html-src/algrthms.html /^Quantizing the Received$/
questo ../c/c.web 34
quiettest make-src/Makefile /^quiettest:$/
quit_char c-src/emacs/src/keyboard.c 192
quit_throw_to_read_char c-src/emacs/src/keyboard.c /^quit_throw_to_read_char (bool from_signal)$/
+quotation tex-src/texinfo.tex /^\\def\\quotation{%$/
qux ruby-src/test1.ru /^ alias_method :qux, :tee, attr_accessor(:bogus)/
qux1 ruby-src/test1.ru /^ :qux1)$/
qux= ruby-src/test1.ru /^ def qux=(tee)$/
+r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}$/
+r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}%$/
+r tex-src/texinfo.tex /^\\def\\r#1{{\\rm #1}} % roman font$/
+r tex-src/texinfo.tex /^\\let\\r=\\indexdummyfont$/
r0 c-src/sysdep.h 54
r1 c-src/sysdep.h 55
r_alloc c-src/emacs/src/lisp.h /^extern void *r_alloc (void **, size_t) ATTRIBUTE_A/
@@ -3787,6 +3843,10 @@ range_exp y-src/parse.y 269
range_exp_list y-src/parse.y 273
raw_keybuf c-src/emacs/src/keyboard.c 116
raw_keybuf_count c-src/emacs/src/keyboard.c 117
+rawbackslash tex-src/texinfo.tex /^\\let\\rawbackslash=\\relax%$/
+rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
+rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/
+rbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/
rbtp c.c 240
re_iswctype c-src/emacs/src/regex.h 602
re_nsub c-src/emacs/src/regex.h 364
@@ -3818,6 +3878,7 @@ read_key_sequence_vs c-src/emacs/src/keyboard.c /^read_key_sequence_vs (Lisp_Obj
read_menu_command c-src/emacs/src/keyboard.c /^read_menu_command (void)$/
read_toc perl-src/htlmify-cystic /^sub read_toc ()$/
readable_events c-src/emacs/src/keyboard.c /^readable_events (int flags)$/
+readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/
readline c-src/etags.c /^readline (linebuffer *lbp, FILE *stream)$/
readline_internal c-src/etags.c /^readline_internal (linebuffer *lbp, register FILE /
realloc c-src/emacs/src/gmalloc.c /^realloc (void *ptr, size_t size)$/
@@ -3842,7 +3903,10 @@ recursive_edit_unwind c-src/emacs/src/keyboard.c /^recursive_edit_unwind (Lisp_O
redirect c-src/emacs/src/lisp.h 663
reduce prol-src/natded.prolog /^reduce((X^M)@N,L):- % beta reduction$/
reduce_subterm prol-src/natded.prolog /^reduce_subterm(M,M2):-$/
+ref tex-src/texinfo.tex /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/
+refill tex-src/texinfo.tex /^\\let\\refill=\\relax$/
refreshPort pyt-src/server.py /^ def refreshPort(self):$/
+refx tex-src/texinfo.tex /^\\def\\refx#1#2{%$/
reg_errcode_t c-src/emacs/src/regex.h 323
reg_errcode_t c.c 279
reg_syntax_t c-src/emacs/src/regex.h 43
@@ -3873,8 +3937,12 @@ requeued_events_pending_p c-src/emacs/src/keyboard.c /^requeued_events_pending_p
require merc-src/accumulator.m /^:- import_module require.$/
required_argument c-src/getopt.h 90
reset-this-command-lengths c-src/emacs/src/keyboard.c /^DEFUN ("reset-this-command-lengths", Freset_this_c/
+resetmathfonts tex-src/texinfo.tex /^\\def\\resetmathfonts{%$/
+rest tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
restore_getcjmp c-src/emacs/src/keyboard.c /^restore_getcjmp (sys_jmp_buf temp)$/
restore_kboard_configuration c-src/emacs/src/keyboard.c /^restore_kboard_configuration (int was_locked)$/
+result tex-src/texinfo.tex /^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/
+result tex-src/texinfo.tex /^\\def\\result{\\realbackslash result}$/
return_to_command_loop c-src/emacs/src/keyboard.c 135
reverse prol-src/natded.prolog /^reverse([],Ws,Ws).$/
revert objc-src/PackInsp.m /^-revert:sender$/
@@ -3882,6 +3950,8 @@ right c-src/etags.c 216
right_shift y-src/cccp.y /^right_shift (a, b)$/
ring1 c.c 241
ring2 c.c 242
+rm tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/
+rm tex-src/texinfo.tex /^\\def\\rm{\\realbackslash rm }%$/
rm_eo c-src/emacs/src/regex.h 450
rm_so c-src/emacs/src/regex.h 449
rng_base cp-src/Range.h 79
@@ -3908,19 +3978,37 @@ safe_run_hook_funcall c-src/emacs/src/keyboard.c /^safe_run_hook_funcall (ptrdif
safe_run_hooks c-src/emacs/src/keyboard.c /^safe_run_hooks (Lisp_Object hook)$/
safe_run_hooks_1 c-src/emacs/src/keyboard.c /^safe_run_hooks_1 (ptrdiff_t nargs, Lisp_Object *ar/
safe_run_hooks_error c-src/emacs/src/keyboard.c /^safe_run_hooks_error (Lisp_Object error, ptrdiff_t/
+samp tex-src/texinfo.tex /^\\def\\samp #1{`\\tclose{#1}'\\null}$/
+samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}$/
+samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}%$/
+samp tex-src/texinfo.tex /^\\let\\samp=\\indexdummyfont$/
save pyt-src/server.py /^ def save(self):$/
save_getcjmp c-src/emacs/src/keyboard.c /^save_getcjmp (sys_jmp_buf temp)$/
save_type c-src/emacs/src/lisp.h /^save_type (struct Lisp_Save_Value *v, int n)$/
savenstr c-src/etags.c /^savenstr (const char *cp, int len)$/
savestr c-src/etags.c /^savestr (const char *cp)$/
say go-src/test.go /^func say(msg string) {$/
+sc tex-src/texinfo.tex /^\\def\\sc#1{{\\smallcaps#1}} % smallcaps font$/
+sc tex-src/texinfo.tex /^\\let\\sc=\\indexdummyfont$/
scan_separators c-src/etags.c /^scan_separators (char *name)$/
scolonseen c-src/etags.c 2447
scratch c-src/sysdep.h 56
scroll_bar_parts c-src/emacs/src/keyboard.c 5189
-sec=\relax tex-src/texinfo.tex /^\\let\\appendixsec=\\relax$/
+sec tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/
+seccheck tex-src/texinfo.tex /^\\def\\seccheck#1{\\if \\pageno<0 %$/
+secentry tex-src/texinfo.tex /^ \\def\\secentry ##1##2##3##4{}$/
+secentry tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
+secentryfonts tex-src/texinfo.tex /^\\def\\secentryfonts{\\textfonts}$/
+secfonts tex-src/texinfo.tex /^\\def\\secfonts{%$/
+secheading tex-src/texinfo.tex /^\\def\\secheading #1#2#3{\\secheadingi {#2.#3\\enspace/
+secheadingbreak tex-src/texinfo.tex /^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/
+secheadingi tex-src/texinfo.tex /^\\def\\secheadingi #1{{\\advance \\secheadingskip by \\/
+secondary tex-src/texinfo.tex /^\\def\\secondary #1#2{$/
section perl-src/htlmify-cystic 25
-section=\relax tex-src/texinfo.tex /^\\let\\appendixsection=\\relax$/
+section tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/
+section tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
+section tex-src/texinfo.tex /^\\global\\let\\section = \\unnumberedsec$/
+section tex-src/texinfo.tex /^\\let\\section=\\relax$/
section_href perl-src/htlmify-cystic /^sub section_href ($)$/
section_name perl-src/htlmify-cystic /^sub section_name ($)$/
section_name perl-src/htlmify-cystic 12
@@ -3928,6 +4016,10 @@ section_toc perl-src/htlmify-cystic 15
section_url perl-src/htlmify-cystic /^sub section_url ()$/
section_url_base perl-src/htlmify-cystic /^sub section_url_base ()$/
section_url_name perl-src/htlmify-cystic /^sub section_url_name ()$/
+sectionzzz tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
+sectionzzz tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
+seczzz tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
+seczzz tex-src/texinfo.tex /^\\def\\seczzz #1{\\seccheck{section}%$/
select prol-src/natded.prolog /^select(X,[X|Xs],Xs).$/
select-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table ()$/
select-tags-table-mode el-src/emacs/lisp/progmodes/etags.el /^(define-derived-mode select-tags-table-mode specia/
@@ -3938,9 +4030,11 @@ select_last prol-src/natded.prolog /^select_last([X],X,[]).$/
send objc-src/Subprocess.m /^- send:(const char *)string withNewline:(BOOL)want/
send objc-src/Subprocess.m /^- send:(const char *)string$/
separator_names c-src/emacs/src/keyboard.c 7372
+sepspaces tex-src/texinfo.tex /^\\gdef\\sepspaces{\\def {\\ }}}$/
serializeToVars php-src/lce_functions.php /^ function serializeToVars($prefix)$/
set cp-src/conway.hpp /^ void set(void) { alive = 1; }$/
set merc-src/accumulator.m /^:- import_module set.$/
+set tex-src/texinfo.tex /^\\def\\set{\\parsearg\\setxxx}$/
set-input-interrupt-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-interrupt-mode", Fset_input_inte/
set-input-meta-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-meta-mode", Fset_input_meta_mode/
set-input-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-mode", Fset_input_mode, Sset_inp/
@@ -3970,9 +4064,24 @@ set_symbol_next c-src/emacs/src/lisp.h /^set_symbol_next (Lisp_Object sym, struc
set_symbol_plist c-src/emacs/src/lisp.h /^set_symbol_plist (Lisp_Object sym, Lisp_Object pli/
set_upto merc-src/accumulator.m /^:- func set_upto(accu_case, int) = set(accu_goal_i/
set_waiting_for_input c-src/emacs/src/keyboard.c /^set_waiting_for_input (struct timespec *time_to_cl/
+setchapternewpage tex-src/texinfo.tex /^\\def\\setchapternewpage #1 {\\csname CHAPPAG#1\\endcs/
+setchapterstyle tex-src/texinfo.tex /^\\def\\setchapterstyle #1 {\\csname CHAPF#1\\endcsname/
+setdeffont tex-src/texinfo.tex /^\\def\\setdeffont #1 {\\csname DEF#1\\endcsname}$/
+setfilename tex-src/texinfo.tex /^ \\global\\let\\setfilename=\\comment % Ignore extra/
+setfilename tex-src/texinfo.tex /^\\def\\setfilename{%$/
+setref tex-src/texinfo.tex /^\\def\\setref#1{%$/
setref tex-src/texinfo.tex /^\\expandafter\\expandafter\\expandafter\\appendixsetre/
+settitle tex-src/texinfo.tex /^\\def\\settitle{\\parsearg\\settitlezzz}$/
+settitlezzz tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/
setup cp-src/c.C 5
+setxxx tex-src/texinfo.tex /^\\def\\setxxx #1{$/
+sf tex-src/texinfo.tex /^\\def\\sf{\\fam=\\sffam \\tensf}$/
+sf tex-src/texinfo.tex /^\\def\\sf{\\realbackslash sf}%$/
+sf tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/
shift cp-src/functions.cpp /^void Date::shift ( void ){\/\/Shift this date to pre/
+shortchapentry tex-src/texinfo.tex /^\\def\\shortchapentry#1#2#3{%$/
+shortcontents tex-src/texinfo.tex /^\\let\\shortcontents = \\summarycontents$/
+shortunnumberedentry tex-src/texinfo.tex /^\\def\\shortunnumberedentry#1#2{%$/
shouldLoad objc-src/PackInsp.m /^-(BOOL)shouldLoad$/
should_attempt_accu_transform merc-src/accumulator.m /^:- pred should_attempt_accu_transform(module_info:/
should_attempt_accu_transform_2 merc-src/accumulator.m /^:- pred should_attempt_accu_transform_2(module_inf/
@@ -3990,6 +4099,9 @@ signal_handler_t c-src/h.h 94
simulation html-src/software.html /^Software that I wrote for supporting my research a/
single_kboard c-src/emacs/src/keyboard.c 89
single_kboard_state c-src/emacs/src/keyboard.c /^single_kboard_state ()$/
+singlecodeindexer tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/
+singleindexer tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/
+singlespace tex-src/texinfo.tex /^\\def\\singlespace{%$/
site cp-src/conway.hpp /^ site(int xi, int yi): x(xi), y(yi), alive(0) {/
site cp-src/conway.hpp 5
size c-src/emacs/src/gmalloc.c 156
@@ -4003,20 +4115,45 @@ skeyseen c-src/etags.c 2445
skip_name c-src/etags.c /^skip_name (char *cp)$/
skip_non_spaces c-src/etags.c /^skip_non_spaces (char *cp)$/
skip_spaces c-src/etags.c /^skip_spaces (char *cp)$/
+sl tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/
+sl tex-src/texinfo.tex /^\\def\\sl{\\realbackslash sl }%$/
+smallbook tex-src/texinfo.tex /^\\def\\smallbook{$/
+smallbook tex-src/texinfo.tex /^\\let\\smallbook=\\relax$/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\indbf \\let\\tentt=\\indtt \\let\\smallca/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\secbf \\let\\tentt=\\sectt \\let\\smallca/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\ssecbf \\let\\tentt=\\ssectt \\let\\small/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\textbf \\let\\tentt=\\texttt \\let\\small/
+smallexample tex-src/texinfo.tex /^\\global\\let\\smallexample=\\smalllispx$/
+smallexample tex-src/texinfo.tex /^\\let\\smallexample=\\lisp$/
+smalllisp tex-src/texinfo.tex /^\\global\\let\\smalllisp=\\smalllispx$/
+smalllispx tex-src/texinfo.tex /^\\def\\smalllispx{\\aboveenvbreak\\begingroup\\inENV$/
+smartitalic tex-src/texinfo.tex /^\\def\\smartitalic#1{{\\sl #1}\\futurelet\\next\\smartit/
+smartitalicx tex-src/texinfo.tex /^\\def\\smartitalicx{\\ifx\\next,\\else\\ifx\\next-\\else\\i/
snarf-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar snarf-tag-function nil$/
snone c-src/etags.c 2443
solutions merc-src/accumulator.m /^:- import_module solutions.$/
some_mouse_moved c-src/emacs/src/keyboard.c /^some_mouse_moved (void)$/
+sp tex-src/texinfo.tex /^\\def\\sp{\\parsearg\\spxxx}$/
space tex-src/texinfo.tex /^ {#2\\labelspace #1}\\dotfill\\doshortpageno{#3}}%/
space tex-src/texinfo.tex /^ \\dosubsubsecentry{#2.#3.#4.#5\\labelspace#1}{#6}}/
+space tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
+space tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
+space tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
spacer c-src/emacs/src/lisp.h 1975
spacer c-src/emacs/src/lisp.h 1982
spacer c-src/emacs/src/lisp.h 2036
spacer c-src/emacs/src/lisp.h 2205
+spacesplit tex-src/texinfo.tex /^\\gdef\\spacesplit#1#2^^M{\\endgroup\\spacesplitfoo{#1/
+spacesplitfoo tex-src/texinfo.tex /^\\long\\gdef\\spacesplitfoo#1#2 #3#4\\spacesplitfoo{%$/
specbind_tag c-src/emacs/src/lisp.h 2943
specbinding c-src/emacs/src/lisp.h 2955
+specheader tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
specialsymbol prol-src/natded.prolog /^specialsymbol(C1,C2,S):-$/
+specx\defspecheader tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
splitexp prol-src/natded.prolog /^splitexp(E,E,('NIL','NIL')):-!.$/
+splitoff tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
+spxxx tex-src/texinfo.tex /^\\def\\spxxx #1{\\par \\vskip #1\\baselineskip}$/
srclist make-src/Makefile /^srclist: Makefile$/
ss3 c.c 255
sss1 c.c 252
@@ -4048,6 +4185,8 @@ start php-src/lce_functions.php /^ function start($line, $class)$/
start y-src/cccp.y 143
start_polling c-src/emacs/src/keyboard.c /^start_polling (void)$/
start_up prol-src/natded.prolog /^start_up:-$/
+startcontents tex-src/texinfo.tex /^\\def\\startcontents#1{%$/
+startenumeration tex-src/texinfo.tex /^\\def\\startenumeration#1{%$/
state_protected_p c-src/emacs/src/gmalloc.c 400
statetable html-src/algrthms.html /^Next$/
staticetags make-src/Makefile /^staticetags:$/
@@ -4067,24 +4206,59 @@ stripLine php-src/lce_functions.php /^ function stripLine($line, $class)$/
stripname pas-src/common.pas /^function stripname; (* ($/
strncaseeq c-src/etags.c /^#define strncaseeq(s,t,n) (assert ((s)!=NULL && (t/
strneq c-src/etags.c /^#define strneq(s,t,n) (assert ((s)!=NULL || (t)!=N/
+strong tex-src/texinfo.tex /^\\let\\strong=\\b$/
+strong tex-src/texinfo.tex /^\\let\\strong=\\indexdummyfont$/
structdef c-src/etags.c 2448
stuff_buffered_input c-src/emacs/src/keyboard.c /^stuff_buffered_input (Lisp_Object stuffstring)$/
+subheading tex-src/texinfo.tex /^\\def\\subheading{\\parsearg\\subsecheadingi}$/
subprocess objc-src/PackInsp.m /^-subprocess:(Subprocess *)sender output:(char *)bu/
subprocessDone objc-src/PackInsp.m /^-subprocessDone:(Subprocess *)sender$/
-subsec=\relax tex-src/texinfo.tex /^\\let\\appendixsubsec=\\relax$/
+subsec tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/
+subsec tex-src/texinfo.tex /^\\let\\subsec=\\relax$/
+subsecentry tex-src/texinfo.tex /^ \\def\\subsecentry ##1##2##3##4##5{}$/
+subsecentry tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
+subsecentryfonts tex-src/texinfo.tex /^\\let\\subsecentryfonts = \\textfonts$/
+subsecfonts tex-src/texinfo.tex /^\\def\\subsecfonts{%$/
+subsecheading tex-src/texinfo.tex /^\\def\\subsecheading #1#2#3#4{\\subsecheadingi {#2.#3/
+subsecheadingbreak tex-src/texinfo.tex /^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/
+subsecheadingi tex-src/texinfo.tex /^\\def\\subsecheadingi #1{{\\advance \\subsecheadingski/
subsection perl-src/htlmify-cystic 26
-subsection=\relax tex-src/texinfo.tex /^\\let\\appendixsubsection=\\relax$/
+subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/
+subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
+subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\unnumberedsubsec$/
+subsection tex-src/texinfo.tex /^\\let\\subsection=\\relax$/
subsection_marker perl-src/htlmify-cystic 161
+subseczzz tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
+subseczzz tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
subst prol-src/natded.prolog /^subst(var(Y),var(X),M,N):-$/
substitute c-src/etags.c /^substitute (char *in, char *out, struct re_registe/
-subsubsec=\relax tex-src/texinfo.tex /^\\let\\appendixsubsubsec=\\relax$/
+subsubheading tex-src/texinfo.tex /^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/
+subsubsec tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/
+subsubsec tex-src/texinfo.tex /^\\let\\subsubsec=\\relax$/
+subsubsecentry tex-src/texinfo.tex /^ \\def\\subsubsecentry ##1##2##3##4##5##6{}$/
+subsubsecentry tex-src/texinfo.tex /^\\def\\subsubsecentry#1#2#3#4#5#6{%$/
+subsubsecentryfonts tex-src/texinfo.tex /^\\let\\subsubsecentryfonts = \\textfonts$/
+subsubsecfonts tex-src/texinfo.tex /^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/
+subsubsecheading tex-src/texinfo.tex /^\\def\\subsubsecheading #1#2#3#4#5{\\subsubsecheading/
+subsubsecheadingi tex-src/texinfo.tex /^\\def\\subsubsecheadingi #1{{\\advance \\subsecheading/
subsubsection perl-src/htlmify-cystic 27
-subsubsection=\relax tex-src/texinfo.tex /^\\let\\appendixsubsubsection=\\relax$/
+subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/
+subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/
+subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\unnumberedsubsubsec$/
+subsubsection tex-src/texinfo.tex /^\\let\\subsubsection=\\relax$/
+subsubseczzz tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
+subsubseczzz tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
+subtitle tex-src/texinfo.tex /^ \\def\\subtitle{\\parsearg\\subtitlezzz}%$/
+subtitlefont tex-src/texinfo.tex /^ \\def\\subtitlefont{\\subtitlerm \\normalbaselinesk/
+subtitlerm tex-src/texinfo.tex /^ \\let\\subtitlerm=\\tenrm$/
+subtitlezzz tex-src/texinfo.tex /^ \\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/
subtle ruby-src/test1.ru /^ :tee ; attr_reader :subtle$/
subtree prol-src/natded.prolog /^subtree(T,T).$/
suffix c-src/etags.c 186
suffixes c-src/etags.c 195
suggest_asking_for_help c-src/etags.c /^suggest_asking_for_help (void)$/
+summarycontents tex-src/texinfo.tex /^\\outer\\def\\summarycontents{%$/
+supereject tex-src/texinfo.tex /^\\def\\supereject{\\par\\penalty -20000\\footnoteno =0 /
suspend-emacs c-src/emacs/src/keyboard.c /^DEFUN ("suspend-emacs", Fsuspend_emacs, Ssuspend_e/
sval y-src/cccp.y 116
swallow_events c-src/emacs/src/keyboard.c /^swallow_events (bool do_display)$/
@@ -4099,6 +4273,8 @@ syms_of_abbrev c-src/abbrev.c /^syms_of_abbrev ()$/
syms_of_keyboard c-src/emacs/src/keyboard.c /^syms_of_keyboard (void)$/
synchronize_system_messages_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_messages_locale (vo/
synchronize_system_time_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_time_locale (void) /
+syncodeindex tex-src/texinfo.tex /^\\def\\syncodeindex #1 #2 {%$/
+synindex tex-src/texinfo.tex /^\\def\\synindex #1 #2 {%$/
syntax c-src/emacs/src/regex.h 350
sys_jmp_buf c-src/emacs/src/lisp.h 2906
sys_jmp_buf c-src/emacs/src/lisp.h 2910
@@ -4111,12 +4287,20 @@ sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) setjmp (j)$/
sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) sigsetjmp (j, 0)$/
syscall_error c-src/sysdep.h 34
t cp-src/c.C 52
+t tex-src/texinfo.tex /^\\def\\t##1{\\realbackslash r {##1}}%$/
+t tex-src/texinfo.tex /^\\def\\t#1{{\\tt \\exhyphenpenalty=10000\\rawbackslash /
+t tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+t tex-src/texinfo.tex /^\\let\\t=\\indexdummyfont$/
t1 cp-src/c.C 34
t2 cp-src/c.C 38
tab_count_words c-src/tab.c /^int tab_count_words(char **tab)$/
tab_delete_first c-src/tab.c /^int tab_delete_first(char **tab)$/
tab_fill c-src/tab.c /^char **tab_fill(char *str, char delim)$/
tab_free c-src/tab.c /^void tab_free(char **tab)$/
+table tex-src/texinfo.tex /^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspaces\\/
+tablex tex-src/texinfo.tex /^\\gdef\\tablex #1^^M{%$/
+tabley tex-src/texinfo.tex /^\\gdef\\tabley#1#2 #3 #4 #5 #6 #7\\endtabley{\\endgrou/
+tablez tex-src/texinfo.tex /^\\def\\tablez #1#2#3#4#5#6{%$/
tag-any-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-any-match-p (_tag)$/
tag-exact-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-file-name-match-p (tag)$/
tag-exact-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-match-p (tag)$/
@@ -4195,12 +4379,75 @@ tags-tag-face el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-tag-face 'd
tags-verify-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-verify-table (file)$/
tags-with-face el-src/emacs/lisp/progmodes/etags.el /^(defmacro tags-with-face (face &rest body)$/
target_multibyte c-src/emacs/src/regex.h 407
+tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}$/
+tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}%$/
+tclose tex-src/texinfo.tex /^\\def\\tclose#1{{\\rm \\tcloserm=\\fontdimen2\\font \\tt /
+tclose tex-src/texinfo.tex /^\\let\\tclose=\\indexdummyfont$/
tcpdump html-src/software.html /^tcpdump$/
teats cp-src/c.C 127
tee ruby-src/test1.ru /^ attr_accessor :tee$/
tee= ruby-src/test1.ru /^ attr_accessor :tee$/
+temp tex-src/texinfo.tex /^\\edef\\temp{%$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash chapentry $/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash chapentry {#1}{\\the\\cha/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash secentry %$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash subsecentry %$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash subsubsecentry %$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash subsubsecentry{#1}%$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbchapentry {#1}{\\n/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbsecentry{#1}{\\noe/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbsubsecentry{#1}{\\/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbsubsubsecentry{#1/
+temp tex-src/texinfo.tex /^\\else \\let\\temp=\\ifclearfail \\fi$/
+temp tex-src/texinfo.tex /^\\else \\let\\temp=\\relax \\fi$/
+temp tex-src/texinfo.tex /^\\expandafter\\ifx\\csname IF#1\\endcsname\\relax \\let\\/
+temp1 tex-src/texinfo.tex /^\\xdef\\temp1{#2 #3}%$/
+temp1 tex-src/texinfo.tex /^\\xdef\\temp1{#2}%$/
temporarily_switch_to_single_kboard c-src/emacs/src/keyboard.c /^temporarily_switch_to_single_kboard (struct frame /
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\indbf \\let\\tentt=\\indtt \\let\\smallca/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\secbf \\let\\tentt=\\sectt \\let\\smallca/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\ssecbf \\let\\tentt=\\ssectt \\let\\small/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\textbf \\let\\tentt=\\texttt \\let\\small/
+tenbf tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
tend c-src/etags.c 2432
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\chapsf \\let\\teni=\\chapi \\let\\tensy=\\/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\indsf \\let\\teni=\\indi \\let\\tensy=\\in/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\secsf \\let\\teni=\\seci \\let\\tensy=\\se/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\ssecsf \\let\\teni=\\sseci \\let\\tensy=\\/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\textsf \\let\\teni=\\texti \\let\\tensy=\\/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\chaprm \\let\\tenit=\\chapit \\let\\tensl/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\indrm \\let\\tenit=\\indit \\let\\tensl=\\/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\secrm \\let\\tenit=\\secit \\let\\tensl=\\/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\ssecrm \\let\\tenit=\\ssecit \\let\\tensl/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\textrm \\let\\tenit=\\textit \\let\\tensl/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\chaprm \\let\\tenit=\\chapit \\let\\tensl/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\indrm \\let\\tenit=\\indit \\let\\tensl=\\/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\secrm \\let\\tenit=\\secit \\let\\tensl=\\/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\ssecrm \\let\\tenit=\\ssecit \\let\\tensl/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\textrm \\let\\tenit=\\textit \\let\\tensl/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\chapsf \\let\\teni=\\chapi \\let\\tensy=\\/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\indsf \\let\\teni=\\indi \\let\\tensy=\\in/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\secsf \\let\\teni=\\seci \\let\\tensy=\\se/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\ssecsf \\let\\teni=\\sseci \\let\\tensy=\\/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\textsf \\let\\teni=\\texti \\let\\tensy=\\/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\chaprm \\let\\tenit=\\chapit \\let\\tensl/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\indrm \\let\\tenit=\\indit \\let\\tensl=\\/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\secrm \\let\\tenit=\\secit \\let\\tensl=\\/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\ssecrm \\let\\tenit=\\ssecit \\let\\tensl/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\textrm \\let\\tenit=\\textit \\let\\tensl/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\chapsf \\let\\teni=\\chapi \\let\\tensy=\\/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\indsf \\let\\teni=\\indi \\let\\tensy=\\in/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\secsf \\let\\teni=\\seci \\let\\tensy=\\se/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\ssecsf \\let\\teni=\\sseci \\let\\tensy=\\/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\textsf \\let\\teni=\\texti \\let\\tensy=\\/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\indbf \\let\\tentt=\\indtt \\let\\smallca/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\secbf \\let\\tentt=\\sectt \\let\\smallca/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\ssecbf \\let\\tentt=\\ssectt \\let\\small/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\textbf \\let\\tentt=\\texttt \\let\\small/
+tentt tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+tentt tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/
term merc-src/accumulator.m /^:- import_module term.$/
terminate objc-src/Subprocess.m /^- terminate:sender$/
terminateInput objc-src/Subprocess.m /^- terminateInput$/
@@ -4217,7 +4464,12 @@ test1 rs-src/test.rs /^fn test1() {$/
test_crlf1 test_crlf.c /^void test_crlf1()$/
test_crlf2 tset_crlf.c /^void test_crlf2()$/
test_undefined c-src/emacs/src/keyboard.c /^test_undefined (Lisp_Object binding)$/
+tex tex-src/texinfo.tex /^\\def\\tex{\\begingroup$/
+texinfoversion tex-src/texinfo.tex /^\\def\\texinfoversion{2.73}$/
+textfonts tex-src/texinfo.tex /^\\def\\textfonts{%$/
texttreelist prol-src/natded.prolog /^texttreelist([]).$/
+thearg tex-src/texinfo.tex /^ \\def\\thearg{#1}%$/
+thearg tex-src/texinfo.tex /^ \\ifx\\thearg\\empty \\def\\thearg{1}\\fi$/
there-is-a-=-in-the-middle! scm-src/test.scm /^(define (there-is-a-=-in-the-middle!) #t)$/
this c-src/a/b/b.c 1
this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys", Fthis_command_keys, St/
@@ -4229,6 +4481,30 @@ this_command_key_count_reset c-src/emacs/src/keyboard.c 112
this_command_keys c-src/emacs/src/keyboard.c 107
this_file_toc perl-src/htlmify-cystic 29
this_single_command_key_start c-src/emacs/src/keyboard.c 125
+thischapter tex-src/texinfo.tex /^ \\unnumbchapmacro{#1}\\def\\thischapter{}%$/
+thischapter tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/
+thischapter tex-src/texinfo.tex /^\\gdef\\thischapter{#1}\\gdef\\thissection{#1}%$/
+thischapter tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix \\appendixletter: \\noexp/
+thischapter tex-src/texinfo.tex /^\\xdef\\thischapter{Chapter \\the\\chapno: \\noexpand\\t/
+thischaptername tex-src/texinfo.tex /^\\def\\thischaptername{No Chapter Title}$/
+thischaptername tex-src/texinfo.tex /^\\gdef\\thischaptername{#1}%$/
+thisfile tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/
+thisfile tex-src/texinfo.tex /^\\def\\thisfile{}$/
+thisfootno tex-src/texinfo.tex /^\\edef\\thisfootno{$^{\\the\\footnoteno}$}%$/
+thispage tex-src/texinfo.tex /^\\let\\thispage=\\folio$/
+thissection tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/
+thissection tex-src/texinfo.tex /^\\gdef\\thischapter{#1}\\gdef\\thissection{#1}%$/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}%$/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\global\\advance \\subsubsecno /
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\appendixlet/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\the\\chapno}/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\subsubsecno=0 \\global\\advanc/
+thissection tex-src/texinfo.tex /^\\plainsecheading {#1}\\gdef\\thissection{#1}%$/
+thistitle tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/
+thistitle tex-src/texinfo.tex /^\\def\\thistitle{No Title}$/
+three tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+threex tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+tie tex-src/texinfo.tex /^\\def\\tie{\\penalty 10000\\ } % Save plain tex de/
tignore c-src/etags.c 2433
timer_check c-src/emacs/src/keyboard.c /^timer_check (void)$/
timer_check_2 c-src/emacs/src/keyboard.c /^timer_check_2 (Lisp_Object timers, Lisp_Object idl/
@@ -4239,9 +4515,16 @@ timer_start_idle c-src/emacs/src/keyboard.c /^timer_start_idle (void)$/
timer_stop_idle c-src/emacs/src/keyboard.c /^timer_stop_idle (void)$/
timers_run c-src/emacs/src/keyboard.c 320
tinbody c-src/etags.c 2431
+tindex tex-src/texinfo.tex /^\\def\\tindex {\\tpindex}$/
+title tex-src/texinfo.tex /^ \\def\\title{\\parsearg\\titlezzz}%$/
+titlefont tex-src/texinfo.tex /^\\def\\titlefont#1{{\\titlerm #1}}$/
+titlepage tex-src/texinfo.tex /^\\def\\titlepage{\\begingroup \\parindent=0pt \\textfon/
+titlepage tex-src/texinfo.tex /^\\let\\titlepage=\\relax$/
+titlezzz tex-src/texinfo.tex /^ \\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/
tkeyseen c-src/etags.c 2429
tnone c-src/etags.c 2428
toc_line perl-src/htlmify-cystic /^sub toc_line ($)$/
+today tex-src/texinfo.tex /^\\def\\today{\\number\\day\\space$/
toggleDescription objc-src/PackInsp.m /^-toggleDescription$/
tok c-src/etags.c 2491
token c-src/etags.c 2508
@@ -4254,6 +4537,8 @@ tool_bar_item_properties c-src/emacs/src/keyboard.c 7970
tool_bar_items c-src/emacs/src/keyboard.c /^tool_bar_items (Lisp_Object reuse, int *nitems)$/
tool_bar_items_vector c-src/emacs/src/keyboard.c 7965
toolkit_menubar_in_use c-src/emacs/src/keyboard.c /^toolkit_menubar_in_use (struct frame *f)$/
+top tex-src/texinfo.tex /^\\let\\top=\\relax$/
+top tex-src/texinfo.tex /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/
top-level c-src/emacs/src/keyboard.c /^DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, /
top_level merc-src/accumulator.m /^:- type top_level$/
top_level_1 c-src/emacs/src/keyboard.c /^top_level_1 (Lisp_Object ignore)$/
@@ -4262,17 +4547,26 @@ total_keys c-src/emacs/src/keyboard.c 97
total_size_of_entries c-src/etags.c /^total_size_of_entries (register node *np)$/
total_surrounding cp-src/conway.cpp /^int site::total_surrounding(void)$/
totally_unblock_input c-src/emacs/src/keyboard.c /^totally_unblock_input (void)$/
+tpargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\deftpargs{#3}\\endgrou/
tpcmd c-src/h.h 15
tpcmd c-src/h.h 8
+tpheader tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+tpx\deftpheader tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
track-mouse c-src/emacs/src/keyboard.c /^DEFUN ("internal--track-mouse", Ftrack_mouse, Stra/
tracking_off c-src/emacs/src/keyboard.c /^tracking_off (Lisp_Object old_value)$/
traffic_light cp-src/conway.cpp /^void traffic_light(int x, int y)$/
translate c-src/emacs/src/regex.h 361
treats cp-src/c.C 131
tt prol-src/natded.prolog /^tt:-$/
-tt=cmtt10 tex-src/texinfo.tex /^\\font\\deftt=cmtt10 scaled \\magstep1$/
+tt tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}$/
+tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}%$/
+tt tex-src/texinfo.tex /^\\font\\deftt=cmtt10 scaled \\magstep1$/
+tt tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/
+ttfont tex-src/texinfo.tex /^\\let\\ttfont = \\t$/
tty_read_avail_input c-src/emacs/src/keyboard.c /^tty_read_avail_input (struct terminal *terminal,$/
ttypeseen c-src/etags.c 2430
+turnoffactive tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
typdef c-src/etags.c 2434
type c-src/emacs/src/gmalloc.c 145
type c-src/emacs/src/lisp.h 1973
@@ -4287,10 +4581,21 @@ type c-src/emacs/src/lisp.h 2304
type c-src/emacs/src/lisp.h 2364
type c-src/emacs/src/lisp.h 3025
type c-src/etags.c 2271
+typefnheader tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
+typefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheader #1#2#3{\\deftypefnheaderx{#1}{/
+typefnx\deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#3}\\endgroup %$/
typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#4}\\endgroup %$/
+typefunheader tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+typefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheader #1#2{\\deftypefunheaderx{#1}#/
+typefunx\deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
typemargin tex-src/texinfo.tex /^\\newskip\\deftypemargin \\deftypemargin=12pt$/
typemargin tex-src/texinfo.tex /^\\rlap{\\rightline{{\\rm #2}\\hskip \\deftypemargin}}}%/
+typemargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip \\deflastargmargin{\\rm #2}\\hs/
+typevarheader tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+typevarx\deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+typevrheader tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+typevrx\deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
u c-src/emacs/src/lisp.h 2397
u_any c-src/emacs/src/lisp.h 2214
u_boolfwd c-src/emacs/src/lisp.h 2371
@@ -4303,13 +4608,44 @@ u_marker c-src/emacs/src/lisp.h 2216
u_objfwd c-src/emacs/src/lisp.h 2372
u_overlay c-src/emacs/src/lisp.h 2217
u_save_value c-src/emacs/src/lisp.h 2218
+unargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defunargs{#3}\\endgrou/
unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/
unargs tex-src/texinfo.tex /^\\defunargs {#3}\\endgroup %$/
unblock_input c-src/emacs/src/keyboard.c /^unblock_input (void)$/
unblock_input_to c-src/emacs/src/keyboard.c /^unblock_input_to (int level)$/
unchar c-src/h.h 99
unexpand-abbrev c-src/abbrev.c /^DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexp/
+unheader tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
univ merc-src/accumulator.m /^:- import_module univ.$/
+unnchfopen tex-src/texinfo.tex /^\\def\\unnchfopen #1{%$/
+unnchfplain tex-src/texinfo.tex /^\\def\\unnchfplain #1{%$/
+unnumbchapentry tex-src/texinfo.tex /^ \\let\\unnumbchapentry = \\shortunnumberedentry/
+unnumbchapentry tex-src/texinfo.tex /^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/
+unnumbchapmacro tex-src/texinfo.tex /^\\global\\let\\unnumbchapmacro=\\unnchfopen}$/
+unnumbchapmacro tex-src/texinfo.tex /^\\global\\let\\unnumbchapmacro=\\unnchfplain}$/
+unnumbered tex-src/texinfo.tex /^\\let\\unnumbered=\\relax$/
+unnumbered tex-src/texinfo.tex /^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/
+unnumberedsec tex-src/texinfo.tex /^\\let\\unnumberedsec=\\relax$/
+unnumberedsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/
+unnumberedsection tex-src/texinfo.tex /^\\let\\unnumberedsection=\\relax$/
+unnumberedseczzz tex-src/texinfo.tex /^\\def\\unnumberedseczzz #1{\\seccheck{unnumberedsec}%/
+unnumberedsubsec tex-src/texinfo.tex /^\\let\\unnumberedsubsec=\\relax$/
+unnumberedsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsec{\\parsearg\\unnumberedsu/
+unnumberedsubsection tex-src/texinfo.tex /^\\let\\unnumberedsubsection=\\relax$/
+unnumberedsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubseczzz #1{\\seccheck{unnumberedsu/
+unnumberedsubsubsec tex-src/texinfo.tex /^\\let\\unnumberedsubsubsec=\\relax$/
+unnumberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/
+unnumberedsubsubsection tex-src/texinfo.tex /^\\let\\unnumberedsubsubsection=\\relax$/
+unnumberedsubsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/
+unnumberedzzz tex-src/texinfo.tex /^\\def\\unnumberedzzz #1{\\seccheck{unnumbered}%$/
+unnumbnoderef tex-src/texinfo.tex /^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/
+unnumbsecentry tex-src/texinfo.tex /^ \\def\\unnumbsecentry ##1##2{}$/
+unnumbsecentry tex-src/texinfo.tex /^\\def\\unnumbsecentry#1#2{\\dosecentry{#1}{#2}}$/
+unnumbsetref tex-src/texinfo.tex /^\\def\\unnumbsetref#1{%$/
+unnumbsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsecentry ##1##2{}$/
+unnumbsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsecentry#1#2{\\dosubsecentry{#1}{#2}}/
+unnumbsubsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsubsecentry ##1##2{}$/
+unnumbsubsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/
unravel_univ merc-src/accumulator.m /^:- some [T] pred unravel_univ(univ::in, T::out) is/
unread_switch_frame c-src/emacs/src/keyboard.c 204
unsignedp y-src/cccp.y 112
@@ -4317,7 +4653,9 @@ unwind c-src/emacs/src/lisp.h 2962
unwind_int c-src/emacs/src/lisp.h 2972
unwind_ptr c-src/emacs/src/lisp.h 2967
unwind_void c-src/emacs/src/lisp.h 2976
+unx\defunheader tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
update_accumulator_pred merc-src/accumulator.m /^:- pred update_accumulator_pred(pred_id::in, proc_/
+uppercaseenumerate tex-src/texinfo.tex /^\\def\\uppercaseenumerate{%$/
uprintmax_t c-src/emacs/src/lisp.h 149
uprintmax_t c-src/emacs/src/lisp.h 154
usage perl-src/yagrip.pl /^sub usage {$/
@@ -4344,20 +4682,45 @@ value c-src/emacs/src/lisp.h 687
value y-src/cccp.y 112
var c-src/emacs/src/keyboard.c 11023
var c-src/emacs/src/lisp.h 3137
+var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}$/
+var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}%$/
+var tex-src/texinfo.tex /^\\let\\var=\\indexdummyfont$/
+var tex-src/texinfo.tex /^\\let\\var=\\smartitalic$/
+varargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defvarargs{#3}\\endgro/
+varargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/
varargs tex-src/texinfo.tex /^\\defvarargs {#2}\\endgroup %$/
varargs tex-src/texinfo.tex /^\\defvarargs {#3}\\endgroup %$/
+varheader tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
+varparsebody\Edefopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+varparsebody\Edeftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+varparsebody\Edefvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
varset merc-src/accumulator.m /^:- import_module varset.$/
+varx\defvarheader tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
vcopy c-src/emacs/src/lisp.h /^vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Objec/
vectorlike_header c-src/emacs/src/lisp.h 1343
verde cp-src/c.C 40
verify-tags-table-function el-src/emacs/lisp/progmodes/etags.el /^(defvar verify-tags-table-function nil$/
verify_ascii c-src/emacs/src/lisp.h /^# define verify_ascii(str) (str)$/
vignore c-src/etags.c 2417
+vindex tex-src/texinfo.tex /^\\def\\vindex {\\vrindex}$/
visit-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table (file &optional local)$/
visit-tags-table-buffer el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table-buffer (&optional cont)$/
void c-src/emacs/src/lisp.h /^INLINE void (check_cons_list) (void) { lisp_h_chec/
voidfuncptr c-src/emacs/src/lisp.h 2108
voidval y-src/cccp.y 115
+vrheader tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+vritemindex tex-src/texinfo.tex /^\\def\\vritemindex #1{\\doind {vr}{\\code{#1}}}%$/
+vrparsebody\Edefivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+vrparsebody\Edeftp tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+vrparsebody\Edeftypevr tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+vrparsebody\Edefvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+vrx\defvrheader tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+vtable tex-src/texinfo.tex /^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+vtablex tex-src/texinfo.tex /^\\gdef\\vtablex #1^^M{%$/
+w tex-src/texinfo.tex /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/
+w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w }%$/
+w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w}$/
+w tex-src/texinfo.tex /^\\let\\w=\\indexdummyfont$/
wait_status_ptr_t c.c 161
waiting_for_input c-src/emacs/src/keyboard.c 150
warning y-src/cccp.y /^warning (msg)$/
@@ -4410,13 +4773,25 @@ x-get-selection-internal c.c /^DEFUN ("x-get-selection-internal", Fx_get_selecti
xcar_addr c-src/emacs/src/lisp.h /^xcar_addr (Lisp_Object c)$/
xcdr_addr c-src/emacs/src/lisp.h /^xcdr_addr (Lisp_Object c)$/
xdiff make-src/Makefile /^xdiff: ETAGS EXTAGS ${infiles}$/
+xitem tex-src/texinfo.tex /^\\def\\xitem{\\errmessage{@xitem while not in a table/
+xitem tex-src/texinfo.tex /^\\let\\xitem = \\internalBxitem %$/
+xitemsubtopix tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/
+xitemsubtopix tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/
+xitemx tex-src/texinfo.tex /^\\def\\xitemx{\\errmessage{@xitemx while not in a tab/
+xitemx tex-src/texinfo.tex /^\\let\\xitemx = \\internalBxitemx %$/
+xitemzzz tex-src/texinfo.tex /^\\def\\xitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
+xkey tex-src/texinfo.tex /^\\def\\xkey{\\key}$/
xmalloc c-src/etags.c /^xmalloc (size_t size)$/
xnew c-src/etags.c /^#define xnew(n, Type) ((Type *) xmalloc ((n) /
+xrdef tex-src/texinfo.tex /^\\def\\xrdef #1#2{$/
xrealloc c-src/etags.c /^xrealloc (void *ptr, size_t size)$/
+xref tex-src/texinfo.tex /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/
xref-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defclass xref-etags-location (xref-location)$/
xref-location-line el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-line ((l xref-etags-lo/
xref-location-marker el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-marker ((l xref-etags-/
xref-make-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defun xref-make-etags-location (tag-info file)$/
+xrefX tex-src/texinfo.tex /^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/
+xreftie tex-src/texinfo.tex /^\\gdef\\xreftie{'tie}$/
xrnew c-src/etags.c /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/
xx make-src/Makefile /^xx="this line is here because of a fontlock bug$/
xyz ruby-src/test1.ru /^ alias_method :xyz,$/
@@ -4476,8 +4851,22 @@ z c.c 144
z c.c 164
z cp-src/clheir.hpp 49
z cp-src/clheir.hpp 58
+zzz tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
+zzz tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
+zzz tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
+{ tex-src/texinfo.tex /^\\let\\{=\\mylbrace$/
+{ tex-src/texinfo.tex /^\\let\\{=\\ptexlbrace$/
| tex-src/texinfo.tex /^\\def|{{\\tt \\char '174}}$/
+| tex-src/texinfo.tex /^\\let|=\\normalverticalbar$/
+} tex-src/texinfo.tex /^\\let\\}=\\myrbrace$/
+} tex-src/texinfo.tex /^\\let\\}=\\ptexrbrace$/
+~ tex-src/texinfo.tex /^\\catcode `\\^=7 \\catcode `\\_=8 \\catcode `\\~=13 \\let/
~ tex-src/texinfo.tex /^\\def~{{\\tt \\char '176}}$/
+~ tex-src/texinfo.tex /^\\let~=\\normaltilde$/
~A cp-src/c.C /^A::~A() {}$/
~B cp-src/c.C /^ ~B() {};$/
~MDiagArray2 cp-src/MDiagArray2.h /^ ~MDiagArray2 (void) { }$/
diff --git a/test/manual/etags/CTAGS.good_update b/test/manual/etags/CTAGS.good_update
index c618b9582da..64f01f2c9e4 100644
--- a/test/manual/etags/CTAGS.good_update
+++ b/test/manual/etags/CTAGS.good_update
@@ -1,4 +1,6 @@
+" tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
+" tex-src/texinfo.tex /^\\let"=\\activedoublequote$/
#a-defer-word forth-src/test-forth.fth /^defer #a-defer-word$/
#some-storage forth-src/test-forth.fth /^2000 buffer: #some-storage$/
$0x80 c-src/sysdep.h 32
@@ -33,14 +35,28 @@ $user_comment_lc php-src/lce_functions.php 115
${CHECKOBJS} make-src/Makefile /^${CHECKOBJS}: CFLAGS=-g3 -DNULLFREECHECK=0$/
%cdiff make-src/Makefile /^%cdiff: CTAGS% CTAGS ${infiles}$/
%ediff make-src/Makefile /^%ediff: ETAGS% ETAGS ${infiles}$/
+& tex-src/texinfo.tex /^\\gdef\\functionparens{\\boldbrax\\let&=\\amprm\\parenco/
+& tex-src/texinfo.tex /^\\gdef\\normalparens{\\boldbrax\\let&=\\ampnr}$/
+' tex-src/texinfo.tex /^\\def\\'{{'}}$/
+( tex-src/texinfo.tex /^\\gdef\\amprm#1 {{\\rm\\}\\let(=\\oprm \\let)=\\clrm\\ }/
+( tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
+( tex-src/texinfo.tex /^\\gdef\\oprm#1 {{\\rm\\char`\\(}#1 \\bf \\let(=\\opnested /
+( tex-src/texinfo.tex /^\\ifnum \\parencount=1 {\\rm \\char `\\)}\\sl \\let(=\\opr/
($_,$flag,$opt,$f,$r,@temp perl-src/yagrip.pl 8
($prog,$_,@list perl-src/yagrip.pl 39
($string,$flag,@string,@temp,@last perl-src/yagrip.pl 40
(a-forth-constant forth-src/test-forth.fth /^constant (a-forth-constant$/
(another-forth-word) forth-src/test-forth.fth /^: (another-forth-word) ( -- )$/
(foo) forth-src/test-forth.fth /^: (foo) 1 ;$/
+) tex-src/texinfo.tex /^\\gdef\\amprm#1 {{\\rm\\}\\let(=\\oprm \\let)=\\clrm\\ }/
+) tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
+* tex-src/texinfo.tex /^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/
+* tex-src/texinfo.tex /^\\let\\*=\\ptexstar$/
+ ruby-src/test.rb /^ def +(y)$/
+ tex-src/texinfo.tex /^\\def+{{\\tt \\char 43}}$/
++ tex-src/texinfo.tex /^\\let+=\\normalplus}$/
+. tex-src/texinfo.tex /^\\def\\.{.\\spacefactor=3000 }$/
+. tex-src/texinfo.tex /^\\let\\.=\\ptexdot$/
.PRECIOUS make-src/Makefile /^.PRECIOUS: ETAGS CTAGS ETAGS16 CTAGS16 ETAGS17 CTA/
/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/
/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/space \/exclam/
@@ -172,35 +188,26 @@ ${CHECKOBJS} make-src/Makefile /^${CHECKOBJS}: CFLAGS=-g3 -DNULLFREECHECK=0$/
2const forth-src/test-forth.fth /^3 4 2constant 2const$/
2val forth-src/test-forth.fth /^2const 2value 2val$/
2var forth-src/test-forth.fth /^2variable 2var$/
+: tex-src/texinfo.tex /^\\def\\:{\\spacefactor=1000 }$/
:a-forth-dictionary-entry forth-src/test-forth.fth /^create :a-forth-dictionary-entry$/
< tex-src/texinfo.tex /^\\def<{{\\tt \\less}}$/
+< tex-src/texinfo.tex /^\\let<=\\normalless$/
<< ruby-src/test.rb /^ def <<(y)$/
<= ruby-src/test.rb /^ def <=(y)$/
<=> ruby-src/test.rb /^ def <=>(y)$/
= tex-src/texinfo.tex /^\\global\\def={{\\tt \\char 61}}}$/
-= tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/
-= tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
-= tex-src/texinfo.tex /^\\global\\let\\section = \\unnumberedsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsection = \\unnumberedsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/
-= tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\unnumberedsubsubsec$/
=/f ada-src/etags-test-for.ada /^ function "=" (L, R : System.Address) return Boo/
== ruby-src/test.rb /^ def ==(y)$/
=== ruby-src/test.rb /^ def ===(y)$/
-=\indexdummyfont tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/
-=\relax tex-src/texinfo.tex /^\\let\\appendix=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\chapter=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\section=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\subsection=\\relax$/
-=\relax tex-src/texinfo.tex /^\\let\\subsubsection=\\relax$/
-=\smartitalic tex-src/texinfo.tex /^\\let\\cite=\\smartitalic$/
=starts-with-equals! scm-src/test.scm /^(define =starts-with-equals! #t)$/
> tex-src/texinfo.tex /^\\def>{{\\tt \\gtr}}$/
+> tex-src/texinfo.tex /^\\let>=\\normalgreater$/
>field1 forth-src/test-forth.fth /^ 9 field >field1$/
>field2 forth-src/test-forth.fth /^ 5 field >field2$/
+@ tex-src/texinfo.tex /^\\def\\@{@}%$/
+@ tex-src/texinfo.tex /^\\def\\@{{\\tt \\char '100}}$/
+@sf tex-src/texinfo.tex /^\\ifhmode\\edef\\@sf{\\spacefactor\\the\\spacefactor}\\\/\\/
+@sf tex-src/texinfo.tex /^\\let\\@sf\\empty$/
A c.c 162
A cp-src/c.C /^void A::A() {}$/
A cp-src/c.C 117
@@ -325,6 +332,11 @@ CATCHER c-src/emacs/src/lisp.h 3021
CDR c-src/emacs/src/lisp.h /^CDR (Lisp_Object c)$/
CDR_SAFE c-src/emacs/src/lisp.h /^CDR_SAFE (Lisp_Object c)$/
CFLAGS make-src/Makefile /^CFLAGS=${WARNINGS} -ansi -g3 # -pg -O$/
+CHAPFopen tex-src/texinfo.tex /^\\def\\CHAPFopen{$/
+CHAPFplain tex-src/texinfo.tex /^\\def\\CHAPFplain{$/
+CHAPPAGodd tex-src/texinfo.tex /^\\def\\CHAPPAGodd{$/
+CHAPPAGoff tex-src/texinfo.tex /^\\def\\CHAPPAGoff{$/
+CHAPPAGon tex-src/texinfo.tex /^\\def\\CHAPPAGon{$/
CHAR c-src/etags.c /^#define CHAR(x) ((unsigned int)(x) & (CHARS - 1))/
CHAR y-src/cccp.c 7
CHARACTERBITS c-src/emacs/src/lisp.h 2457
@@ -530,6 +542,7 @@ EMACS_UINT c-src/emacs/src/lisp.h 97
ENTRY c-src/sysdep.h /^#define ENTRY(name) \\$/
ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) enum TYPE$/
ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) unsigned int$/
+ENVcheck tex-src/texinfo.tex /^\\def\\ENVcheck{%$/
EQ c-src/emacs/src/lisp.h /^# define EQ(x, y) lisp_h_EQ (x, y)$/
EQUAL y-src/cccp.c 12
ERLSRC make-src/Makefile /^ERLSRC=gs_dialog.erl lines.erl lists.erl$/
@@ -543,13 +556,37 @@ EXFUN c-src/emacs/src/lisp.h /^#define EXFUN(fnname, maxargs) \\$/
EXTAGS make-src/Makefile /^EXTAGS: extags ${infiles} Makefile$/
EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 3497
EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 4372
+Ealphaenumerate tex-src/texinfo.tex /^\\def\\Ealphaenumerate{\\Eenumerate}$/
+Ecapsenumerate tex-src/texinfo.tex /^\\def\\Ecapsenumerate{\\Eenumerate}$/
+Ecartouche tex-src/texinfo.tex /^\\def\\Ecartouche{%$/
+Edescription tex-src/texinfo.tex /^\\def\\Edescription{\\Etable}% Necessary kludge.$/
+Edisplay tex-src/texinfo.tex /^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/
+Eexample tex-src/texinfo.tex /^\\def\\Eexample{\\Elisp}$/
+Eflushleft tex-src/texinfo.tex /^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/
+Eflushright tex-src/texinfo.tex /^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/
+Eformat tex-src/texinfo.tex /^\\def\\Eformat{\\endgroup\\afterenvbreak}$/
+Eftable tex-src/texinfo.tex /^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/
+Egroup tex-src/texinfo.tex /^ \\def\\Egroup{\\egroup\\endgroup}%$/
+Eifclear tex-src/texinfo.tex /^\\def\\Eifclear{}$/
+Eifset tex-src/texinfo.tex /^\\def\\Eifset{}$/
+Eiftex tex-src/texinfo.tex /^\\def\\Eiftex{}$/
+Elisp tex-src/texinfo.tex /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/
EmptyNmStr pas-src/common.pas /^function EmptyNmStr(* : NameString*);$/
Environment tex-src/gzip.texi /^@node Environment, Tapes, Advanced usage, Top$/
+Equotation tex-src/texinfo.tex /^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/
Erlang_functions c-src/etags.c /^Erlang_functions (FILE *inf)$/
Erlang_help c-src/etags.c 567
Erlang_suffixes c-src/etags.c 565
ErrStrToNmStr pas-src/common.pas /^function ErrStrToNmStr;(*($/
Error_Information/t ada-src/2ataspri.ads /^ type Error_Information is new Interfaces.C.POSI/
+Esmallexample tex-src/texinfo.tex /^\\def\\Esmallexample{\\Elisp}$/
+Esmallexample tex-src/texinfo.tex /^\\global\\def\\Esmallexample{\\Esmalllisp}$/
+Esmalllisp tex-src/texinfo.tex /^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/
+Etable tex-src/texinfo.tex /^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/
+Etable tex-src/texinfo.tex /^\\let\\Etable=\\relax}}$/
+Etex tex-src/texinfo.tex /^\\let\\Etex=\\endgroup}$/
+Etitlepage tex-src/texinfo.tex /^\\def\\Etitlepage{%$/
+Evtable tex-src/texinfo.tex /^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/
Exit_LL_Task/p ada-src/2ataspri.adb /^ procedure Exit_LL_Task is$/
Exit_LL_Task/p ada-src/2ataspri.ads /^ procedure Exit_LL_Task;$/
ExtractCommentInfo pas-src/common.pas /^procedure ExtractCommentInfo; (*($/
@@ -690,6 +727,20 @@ HASH_TABLE_P c-src/emacs/src/lisp.h /^HASH_TABLE_P (Lisp_Object a)$/
HASH_TABLE_SIZE c-src/emacs/src/lisp.h /^HASH_TABLE_SIZE (struct Lisp_Hash_Table *h)$/
HASH_VALUE c-src/emacs/src/lisp.h /^HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t i/
HAVE_NTGUI c-src/etags.c 116
+HEADINGSafter tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
+HEADINGSdouble tex-src/texinfo.tex /^\\def\\HEADINGSdouble{$/
+HEADINGSdoubleafter tex-src/texinfo.tex /^\\let\\HEADINGSdoubleafter=\\HEADINGSafter$/
+HEADINGSdoublex tex-src/texinfo.tex /^\\def\\HEADINGSdoublex{%$/
+HEADINGShook tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
+HEADINGShook tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
+HEADINGShook tex-src/texinfo.tex /^\\let\\HEADINGShook=\\relax$/
+HEADINGSoff tex-src/texinfo.tex /^\\def\\HEADINGSoff{$/
+HEADINGSon tex-src/texinfo.tex /^\\def\\HEADINGSon{\\HEADINGSdouble}$/
+HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/
+HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/
+HEADINGSsingle tex-src/texinfo.tex /^\\def\\HEADINGSsingle{$/
+HEADINGSsingleafter tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
+HEADINGSsinglex tex-src/texinfo.tex /^\\def\\HEADINGSsinglex{%$/
HEAP c-src/emacs/src/gmalloc.c 131
HTMLSRC make-src/Makefile /^HTMLSRC=softwarelibero.html index.shtml algrthms.h/
HTML_help c-src/etags.c 584
@@ -751,6 +802,7 @@ JAVASRC make-src/Makefile /^JAVASRC=AWTEMul.java KeyEve.java SMan.java SysCol./
KBD_BUFFER_SIZE c-src/emacs/src/keyboard.c 82
KBYTES objc-src/PackInsp.m 58
KEY_TO_CHAR c-src/emacs/src/keyboard.c /^#define KEY_TO_CHAR(k) (XINT (k) & ((1 << CHARACTE/
+L tex-src/texinfo.tex /^\\let\\L=\\ptexL$/
LATEST make-src/Makefile /^LATEST=17$/
LCE_COMMENT php-src/lce_functions.php 13
LCE_COMMENT_TOOL php-src/lce_functions.php 17
@@ -1408,6 +1460,9 @@ Task_Type/b ada-src/etags-test-for.ada /^ task body Task_Type is$/
Task_Type/b ada-src/waroquiers.ada /^ task body Task_Type is$/
Task_Type/k ada-src/etags-test-for.ada /^ task type Task_Type is$/
Task_Type/k ada-src/waroquiers.ada /^ task type Task_Type is$/
+TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}$/
+TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}%$/
+TeX tex-src/texinfo.tex /^\\let\\TeX=\\indexdummytex$/
TeX_commands c-src/etags.c /^TeX_commands (FILE *inf)$/
TeX_help c-src/etags.c 674
TeX_suffixes c-src/etags.c 672
@@ -1667,551 +1722,22 @@ YY_DECL_VARIABLES /usr/share/bison/bison.simple 391
Yacc_entries c-src/etags.c /^Yacc_entries (FILE *inf)$/
Yacc_help c-src/etags.c 693
Yacc_suffixes c-src/etags.c 691
+Yappendixletterandtype tex-src/texinfo.tex /^\\def\\Yappendixletterandtype{%$/
+Ynothing tex-src/texinfo.tex /^\\def\\Ynothing{}$/
+Ypagenumber tex-src/texinfo.tex /^\\def\\Ypagenumber{\\folio}$/
+Ysectionnumberandtype tex-src/texinfo.tex /^\\def\\Ysectionnumberandtype{%$/
+Ytitle tex-src/texinfo.tex /^\\def\\Ytitle{\\thischapter}$/
Z c-src/h.h 100
+[ tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
[] ruby-src/test.rb /^ def [](y)$/
[]= ruby-src/test.rb /^ def []=(y, val)$/
-\ tex-src/texinfo.tex /^\\def\\ {{\\fontdimen2\\font=\\tclosesave{} }}%$/
-\ tex-src/texinfo.tex /^\\gdef\\sepspaces{\\def {\\ }}}$/
-\' tex-src/texinfo.tex /^\\def\\'{{'}}$/
-\* tex-src/texinfo.tex /^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/
-\. tex-src/texinfo.tex /^\\def\\.{.\\spacefactor=3000 }$/
-\: tex-src/texinfo.tex /^\\def\\:{\\spacefactor=1000 }$/
-\@ tex-src/texinfo.tex /^\\def\\@{@}%$/
-\@ tex-src/texinfo.tex /^\\def\\@{{\\tt \\char '100}}$/
-\CHAPFopen tex-src/texinfo.tex /^\\def\\CHAPFopen{$/
-\CHAPFplain tex-src/texinfo.tex /^\\def\\CHAPFplain{$/
-\CHAPPAGodd tex-src/texinfo.tex /^\\def\\CHAPPAGodd{$/
-\CHAPPAGoff tex-src/texinfo.tex /^\\def\\CHAPPAGoff{$/
-\CHAPPAGon tex-src/texinfo.tex /^\\def\\CHAPPAGon{$/
-\ENVcheck tex-src/texinfo.tex /^\\def\\ENVcheck{%$/
-\Ealphaenumerate tex-src/texinfo.tex /^\\def\\Ealphaenumerate{\\Eenumerate}$/
-\Ecapsenumerate tex-src/texinfo.tex /^\\def\\Ecapsenumerate{\\Eenumerate}$/
-\Ecartouche tex-src/texinfo.tex /^\\def\\Ecartouche{%$/
-\Edescription tex-src/texinfo.tex /^\\def\\Edescription{\\Etable}% Necessary kludge.$/
-\Edisplay tex-src/texinfo.tex /^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/
-\Eexample tex-src/texinfo.tex /^\\def\\Eexample{\\Elisp}$/
-\Eflushleft tex-src/texinfo.tex /^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/
-\Eflushright tex-src/texinfo.tex /^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/
-\Eformat tex-src/texinfo.tex /^\\def\\Eformat{\\endgroup\\afterenvbreak}$/
-\Eftable tex-src/texinfo.tex /^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/
-\Egroup tex-src/texinfo.tex /^ \\def\\Egroup{\\egroup\\endgroup}%$/
-\Eifclear tex-src/texinfo.tex /^\\def\\Eifclear{}$/
-\Eifset tex-src/texinfo.tex /^\\def\\Eifset{}$/
-\Eiftex tex-src/texinfo.tex /^\\def\\Eiftex{}$/
-\Elisp tex-src/texinfo.tex /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/
-\Equotation tex-src/texinfo.tex /^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/
-\Esmallexample tex-src/texinfo.tex /^\\def\\Esmallexample{\\Elisp}$/
-\Esmallexample tex-src/texinfo.tex /^\\global\\def\\Esmallexample{\\Esmalllisp}$/
-\Esmalllisp tex-src/texinfo.tex /^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/
-\Etable tex-src/texinfo.tex /^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/
-\Etitlepage tex-src/texinfo.tex /^\\def\\Etitlepage{%$/
-\Evtable tex-src/texinfo.tex /^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/
-\HEADINGSafter tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/
-\HEADINGSdouble tex-src/texinfo.tex /^\\def\\HEADINGSdouble{$/
-\HEADINGSdoublex tex-src/texinfo.tex /^\\def\\HEADINGSdoublex{%$/
-\HEADINGSoff tex-src/texinfo.tex /^\\def\\HEADINGSoff{$/
-\HEADINGSon tex-src/texinfo.tex /^\\def\\HEADINGSon{\\HEADINGSdouble}$/
-\HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/
-\HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/
-\HEADINGSsingle tex-src/texinfo.tex /^\\def\\HEADINGSsingle{$/
-\HEADINGSsingleafter tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/
-\HEADINGSsinglex tex-src/texinfo.tex /^\\def\\HEADINGSsinglex{%$/
-\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}$/
-\TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}%$/
-\Yappendixletterandtype tex-src/texinfo.tex /^\\def\\Yappendixletterandtype{%$/
-\Ynothing tex-src/texinfo.tex /^\\def\\Ynothing{}$/
-\Ypagenumber tex-src/texinfo.tex /^\\def\\Ypagenumber{\\folio}$/
-\Ysectionnumberandtype tex-src/texinfo.tex /^\\def\\Ysectionnumberandtype{%$/
-\Ytitle tex-src/texinfo.tex /^\\def\\Ytitle{\\thischapter}$/
-\_ tex-src/texinfo.tex /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule width.3em /
-\_ tex-src/texinfo.tex /^\\def\\_{{\\realbackslash _}}%$/
-\` tex-src/texinfo.tex /^\\def\\`{{`}}$/
-\aboveenvbreak tex-src/texinfo.tex /^\\def\\aboveenvbreak{{\\advance\\aboveenvskipamount by/
-\activedoublequote tex-src/texinfo.tex /^\\def\\activedoublequote{{\\tt \\char '042}}$/
-\activeparens tex-src/texinfo.tex /^\\def\\activeparens{%$/
-\afourpaper tex-src/texinfo.tex /^\\def\\afourpaper{$/
-\afterenvbreak tex-src/texinfo.tex /^\\def\\afterenvbreak{\\endgraf \\ifdim\\lastskip<\\above/
-\alphaenumerate tex-src/texinfo.tex /^\\def\\alphaenumerate{\\enumerate{a}}$/
-\appendix tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
-\appendixletter tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/
-\appendixnoderef tex-src/texinfo.tex /^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/
-\appendixsec tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
-\appendixsection tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
-\appendixsectionzzz tex-src/texinfo.tex /^\\def\\appendixsectionzzz #1{\\seccheck{appendixsecti/
-\appendixsetref tex-src/texinfo.tex /^\\def\\appendixsetref#1{%$/
-\appendixsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
-\appendixsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubseczzz #1{\\seccheck{appendixsubsec/
-\appendixsubsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
-\appendixsubsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubsubseczzz #1{\\seccheck{appendixsub/
-\appendixzzz tex-src/texinfo.tex /^\\def\\appendixzzz #1{\\seccheck{appendix}%$/
-\asis tex-src/texinfo.tex /^\\def\\asis#1{#1}$/
-\author tex-src/texinfo.tex /^ \\def\\author{\\parsearg\\authorzzz}%$/
-\authorfont tex-src/texinfo.tex /^ \\def\\authorfont{\\authorrm \\normalbaselineskip =/
-\authorzzz tex-src/texinfo.tex /^ \\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt /
-\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}$/
-\b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}%$/
-\b tex-src/texinfo.tex /^\\def\\b#1{{\\bf #1}}$/
-\balancecolumns tex-src/texinfo.tex /^\\def\\balancecolumns{%$/
-\begin tex-src/texinfo.tex /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/
-\begindoublecolumns tex-src/texinfo.tex /^\\def\\begindoublecolumns{\\begingroup$/
-\beginxxx tex-src/texinfo.tex /^\\def\\beginxxx #1{%$/
-\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }$/
-\bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }%$/
-\bullet tex-src/texinfo.tex /^\\def\\bullet{$\\ptexbullet$}$/
-\bye tex-src/texinfo.tex /^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/
-\capsenumerate tex-src/texinfo.tex /^\\def\\capsenumerate{\\enumerate{A}}$/
-\cartbot tex-src/texinfo.tex /^\\def\\cartbot{\\hbox to \\cartouter{\\hskip\\lskip$/
-\cartouche tex-src/texinfo.tex /^\\long\\def\\cartouche{%$/
-\carttop tex-src/texinfo.tex /^\\def\\carttop{\\hbox to \\cartouter{\\hskip\\lskip$/
-\cbl tex-src/texinfo.tex /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/
-\cbr tex-src/texinfo.tex /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/
-\center tex-src/texinfo.tex /^\\def\\center{\\parsearg\\centerzzz}$/
-\centerzzz tex-src/texinfo.tex /^\\def\\centerzzz #1{{\\advance\\hsize by -\\leftskip$/
-\chapbreak tex-src/texinfo.tex /^\\def\\chapbreak{\\dobreak \\chapheadingskip {-4000}}$/
-\chapentry tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
-\chapentryfonts tex-src/texinfo.tex /^\\def\\chapentryfonts{\\secfonts \\rm}$/
-\chapfonts tex-src/texinfo.tex /^\\def\\chapfonts{%$/
-\chapheading tex-src/texinfo.tex /^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/
-\chapheadingzzz tex-src/texinfo.tex /^\\def\\chapheadingzzz #1{\\chapbreak %$/
-\chapoddpage tex-src/texinfo.tex /^\\def\\chapoddpage{\\chappager \\ifodd\\pageno \\else \\h/
-\chappager tex-src/texinfo.tex /^\\def\\chappager{\\par\\vfill\\supereject}$/
-\chapter tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
-\chapternofonts tex-src/texinfo.tex /^\\def\\chapternofonts{%$/
-\chapterzzz tex-src/texinfo.tex /^\\def\\chapterzzz #1{\\seccheck{chapter}%$/
-\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}$/
-\char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}%$/
-\chfopen tex-src/texinfo.tex /^\\def\\chfopen #1#2{\\chapoddpage {\\chapfonts$/
-\chfplain tex-src/texinfo.tex /^\\def\\chfplain #1#2{%$/
-\cindex tex-src/texinfo.tex /^\\def\\cindex {\\cpindex}$/
-\cindexsub tex-src/texinfo.tex /^\\def\\cindexsub {\\begingroup\\obeylines\\cindexsub}$/
-\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}$/
-\cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}%$/
-\clear tex-src/texinfo.tex /^\\def\\clear{\\parsearg\\clearxxx}$/
-\clearxxx tex-src/texinfo.tex /^\\def\\clearxxx #1{$/
-\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}$/
-\code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}%$/
-\comment tex-src/texinfo.tex /^\\def\\comment{\\catcode 64=\\other \\catcode 123=\\othe/
-\commentxxx tex-src/texinfo.tex /^\\def\\commentxxx #1{\\catcode 64=0 \\catcode 123=1 \\c/
-\contents tex-src/texinfo.tex /^\\outer\\def\\contents{%$/
-\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright }%$/
-\copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright}$/
-\cropmarks tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
-\croppageout tex-src/texinfo.tex /^\\def\\croppageout#1{\\hoffset=0pt % make sure this d/
-\ctl tex-src/texinfo.tex /^\\def\\ctl{{\\circle\\char'013\\hskip -6pt}}% 6pt from /
-\ctr tex-src/texinfo.tex /^\\def\\ctr{{\\hskip 6pt\\circle\\char'010}}$/
-\ctrl tex-src/texinfo.tex /^\\def\\ctrl #1{{\\tt \\rawbackslash \\hat}#1}$/
-\defcodeindex tex-src/texinfo.tex /^\\def\\defcodeindex{\\parsearg\\newcodeindex}$/
-\defcv tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
-\defcvarheader tex-src/texinfo.tex /^\\def\\defcvarheader #1#2#3{%$/
-\defcvx tex-src/texinfo.tex /^\\def\\defcvx #1 {\\errmessage{@defcvx in invalid con/
-\deffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
-\deffnheader tex-src/texinfo.tex /^\\def\\deffnheader #1#2#3{\\doind {fn}{\\code{#2}}%$/
-\deffnx tex-src/texinfo.tex /^\\def\\deffnx #1 {\\errmessage{@deffnx in invalid con/
-\defindex tex-src/texinfo.tex /^\\def\\defindex{\\parsearg\\newindex}$/
-\defivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
-\defivarheader tex-src/texinfo.tex /^\\def\\defivarheader #1#2#3{%$/
-\defivarx tex-src/texinfo.tex /^\\def\\defivarx #1 {\\errmessage{@defivarx in invalid/
-\defmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
-\defmacheader tex-src/texinfo.tex /^\\def\\defmacheader #1#2{\\doind {fn}{\\code{#1}}% Mak/
-\defmacx tex-src/texinfo.tex /^\\def\\defmacx #1 {\\errmessage{@defmacx in invalid c/
-\defmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
-\defmethodheader tex-src/texinfo.tex /^\\def\\defmethodheader #1#2#3{%$/
-\defmethodx tex-src/texinfo.tex /^\\def\\defmethodx #1 {\\errmessage{@defmethodx in inv/
-\defmethparsebody tex-src/texinfo.tex /^\\def\\defmethparsebody #1#2#3#4 {\\begingroup\\inENV /
-\defname tex-src/texinfo.tex /^\\def\\defname #1#2{%$/
-\defop tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
-\defopheader tex-src/texinfo.tex /^\\def\\defopheader #1#2#3{%$/
-\defopparsebody tex-src/texinfo.tex /^\\def\\defopparsebody #1#2#3#4#5 {\\begingroup\\inENV /
-\defopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
-\defoptheader tex-src/texinfo.tex /^\\def\\defoptheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
-\defoptx tex-src/texinfo.tex /^\\def\\defoptx #1 {\\errmessage{@defoptx in invalid c/
-\defopvarparsebody tex-src/texinfo.tex /^\\def\\defopvarparsebody #1#2#3#4#5 {\\begingroup\\inE/
-\defopx tex-src/texinfo.tex /^\\def\\defopx #1 {\\errmessage{@defopx in invalid con/
-\defparsebody tex-src/texinfo.tex /^\\def\\defparsebody #1#2#3{\\begingroup\\inENV% Enviro/
-\defspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
-\defspecheader tex-src/texinfo.tex /^\\def\\defspecheader #1#2{\\doind {fn}{\\code{#1}}% Ma/
-\defspecx tex-src/texinfo.tex /^\\def\\defspecx #1 {\\errmessage{@defspecx in invalid/
-\deftp tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
-\deftpargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/
-\deftpheader tex-src/texinfo.tex /^\\def\\deftpheader #1#2#3{\\doind {tp}{\\code{#2}}%$/
-\deftpx tex-src/texinfo.tex /^\\def\\deftpx #1 {\\errmessage{@deftpx in invalid con/
-\deftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
-\deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefnheader #1#2#3{\\deftypefnheaderx{#1}{/
-\deftypefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheaderx #1#2#3 #4\\relax{%$/
-\deftypefnx tex-src/texinfo.tex /^\\def\\deftypefnx #1 {\\errmessage{@deftypefnx in inv/
-\deftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
-\deftypefunargs tex-src/texinfo.tex /^\\def\\deftypefunargs #1{%$/
-\deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefunheader #1#2{\\deftypefunheaderx{#1}#/
-\deftypefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheaderx #1#2 #3\\relax{%$/
-\deftypeunx tex-src/texinfo.tex /^\\def\\deftypeunx #1 {\\errmessage{@deftypeunx in inv/
-\deftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
-\deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevarheader #1#2{%$/
-\deftypevarx tex-src/texinfo.tex /^\\def\\deftypevarx #1 {\\errmessage{@deftypevarx in i/
-\deftypevr tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
-\deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevrheader #1#2#3{\\doind {vr}{\\code{#3}}/
-\deftypevrx tex-src/texinfo.tex /^\\def\\deftypevrx #1 {\\errmessage{@deftypevrx in inv/
-\defun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
-\defunargs tex-src/texinfo.tex /^\\def\\defunargs #1{\\functionparens \\sl$/
-\defunheader tex-src/texinfo.tex /^\\def\\defunheader #1#2{\\doind {fn}{\\code{#1}}% Make/
-\defunx tex-src/texinfo.tex /^\\def\\defunx #1 {\\errmessage{@defunx in invalid con/
-\defvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
-\defvarargs tex-src/texinfo.tex /^\\def\\defvarargs #1{\\normalparens #1%$/
-\defvarheader tex-src/texinfo.tex /^\\def\\defvarheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
-\defvarparsebody tex-src/texinfo.tex /^\\def\\defvarparsebody #1#2#3{\\begingroup\\inENV% Env/
-\defvarx tex-src/texinfo.tex /^\\def\\defvarx #1 {\\errmessage{@defvarx in invalid c/
-\defvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
-\defvrheader tex-src/texinfo.tex /^\\def\\defvrheader #1#2#3{\\doind {vr}{\\code{#2}}%$/
-\defvrparsebody tex-src/texinfo.tex /^\\def\\defvrparsebody #1#2#3#4 {\\begingroup\\inENV %$/
-\defvrx tex-src/texinfo.tex /^\\def\\defvrx #1 {\\errmessage{@defvrx in invalid con/
-\description tex-src/texinfo.tex /^\\def\\description{\\tablez{\\dontindex}{1}{}{}{}{}}$/
-\df tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
-\dfn tex-src/texinfo.tex /^\\def\\dfn##1{\\realbackslash dfn {##1}}$/
-\direntry tex-src/texinfo.tex /^\\def\\direntry{\\begingroup\\direntryxxx}$/
-\direntryxxx tex-src/texinfo.tex /^\\long\\def\\direntryxxx #1\\end direntry{\\endgroup\\ig/
-\display tex-src/texinfo.tex /^\\def\\display{\\begingroup\\inENV %This group ends at/
-\dmn tex-src/texinfo.tex /^\\def\\dmn#1{\\thinspace #1}$/
-\dobreak tex-src/texinfo.tex /^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/
-\dochapentry tex-src/texinfo.tex /^\\def\\dochapentry#1#2{%$/
-\docodeindex tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
-\doind tex-src/texinfo.tex /^\\def\\doind #1#2{%$/
-\doindex tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
-\donoderef tex-src/texinfo.tex /^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/
-\dontindex tex-src/texinfo.tex /^\\def\\dontindex #1{}$/
-\dopageno tex-src/texinfo.tex /^\\def\\dopageno#1{{\\rm #1}}$/
-\doprintindex tex-src/texinfo.tex /^\\def\\doprintindex#1{%$/
-\dosecentry tex-src/texinfo.tex /^\\def\\dosecentry#1#2{%$/
-\dosetq tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/
-\doshortpageno tex-src/texinfo.tex /^\\def\\doshortpageno#1{{\\rm #1}}$/
-\dosubind tex-src/texinfo.tex /^\\def\\dosubind #1#2#3{%$/
-\dosubsecentry tex-src/texinfo.tex /^\\def\\dosubsecentry#1#2{%$/
-\dosubsubsecentry tex-src/texinfo.tex /^\\def\\dosubsubsecentry#1#2{%$/
-\dots tex-src/texinfo.tex /^\\def\\dots{$\\ldots$}$/
-\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots }%$/
-\dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots}$/
-\doublecolumnout tex-src/texinfo.tex /^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/
-\emph tex-src/texinfo.tex /^\\def\\emph##1{\\realbackslash emph {##1}}$/
-\end tex-src/texinfo.tex /^\\def\\end{\\parsearg\\endxxx}$/
-\enddoublecolumns tex-src/texinfo.tex /^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/
-\endxxx tex-src/texinfo.tex /^\\def\\endxxx #1{%$/
-\entry tex-src/texinfo.tex /^\\def\\entry #1#2{\\begingroup$/
-\enumerate tex-src/texinfo.tex /^\\def\\enumerate{\\parsearg\\enumeratezzz}$/
-\enumeratey tex-src/texinfo.tex /^\\def\\enumeratey #1 #2\\endenumeratey{%$/
-\enumeratezzz tex-src/texinfo.tex /^\\def\\enumeratezzz #1{\\enumeratey #1 \\endenumerate/
-\equiv tex-src/texinfo.tex /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
-\equiv tex-src/texinfo.tex /^\\def\\equiv{\\realbackslash equiv}$/
-\error tex-src/texinfo.tex /^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/
-\errorE tex-src/texinfo.tex /^\\def\\errorE#1{$/
-\evenfooting tex-src/texinfo.tex /^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/
-\evenheading tex-src/texinfo.tex /^\\def\\evenheading{\\parsearg\\evenheadingxxx}$/
-\everyfooting tex-src/texinfo.tex /^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/
-\everyheading tex-src/texinfo.tex /^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/
-\ewbot tex-src/texinfo.tex /^\\def\\ewbot{\\vrule height0pt depth\\cornerthick widt/
-\ewtop tex-src/texinfo.tex /^\\def\\ewtop{\\vrule height\\cornerthick depth0pt widt/
-\exdent tex-src/texinfo.tex /^\\def\\exdent{\\parsearg\\exdentyyy}$/
-\exdentyyy tex-src/texinfo.tex /^\\def\\exdentyyy #1{{\\hfil\\break\\hbox{\\kern -\\exdent/
-\expansion tex-src/texinfo.tex /^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/
-\expansion tex-src/texinfo.tex /^\\def\\expansion{\\realbackslash expansion}$/
-\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}$/
-\file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}%$/
-\finalout tex-src/texinfo.tex /^\\def\\finalout{\\overfullrule=0pt}$/
-\findex tex-src/texinfo.tex /^\\def\\findex {\\fnindex}$/
-\finishtitlepage tex-src/texinfo.tex /^\\def\\finishtitlepage{%$/
-\flushcr tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else /
-\flushleft tex-src/texinfo.tex /^\\def\\flushleft{%$/
-\flushright tex-src/texinfo.tex /^\\def\\flushright{%$/
-\fnitemindex tex-src/texinfo.tex /^\\def\\fnitemindex #1{\\doind {fn}{\\code{#1}}}%$/
-\format tex-src/texinfo.tex /^\\def\\format{\\begingroup\\inENV %This group ends at /
-\frenchspacing tex-src/texinfo.tex /^\\def\\frenchspacing{\\sfcode46=1000 \\sfcode63=1000 \\/
-\ftable tex-src/texinfo.tex /^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/
-\gloggingall tex-src/texinfo.tex /^\\def\\gloggingall{\\begingroup \\globaldefs = 1 \\logg/
-\group tex-src/texinfo.tex /^\\def\\group{\\begingroup$/
-\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}$/
-\gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}%$/
-\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/
-\hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}%$/
-\heading tex-src/texinfo.tex /^\\def\\heading{\\parsearg\\secheadingi}$/
-\headings tex-src/texinfo.tex /^\\def\\headings #1 {\\csname HEADINGS#1\\endcsname}$/
-\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}$/
-\i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}%$/
-\ifclear tex-src/texinfo.tex /^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/
-\ifclearfail tex-src/texinfo.tex /^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/
-\ifclearfailxxx tex-src/texinfo.tex /^\\long\\def\\ifclearfailxxx #1\\end ifclear{\\endgroup\\/
-\ifclearxxx tex-src/texinfo.tex /^\\def\\ifclearxxx #1{\\endgroup$/
-\ifinfo tex-src/texinfo.tex /^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/
-\ifinfoxxx tex-src/texinfo.tex /^\\long\\def\\ifinfoxxx #1\\end ifinfo{\\endgroup\\ignore/
-\ifset tex-src/texinfo.tex /^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/
-\ifsetfail tex-src/texinfo.tex /^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/
-\ifsetfailxxx tex-src/texinfo.tex /^\\long\\def\\ifsetfailxxx #1\\end ifset{\\endgroup\\igno/
-\ifsetxxx tex-src/texinfo.tex /^\\def\\ifsetxxx #1{\\endgroup$/
-\iftex tex-src/texinfo.tex /^\\def\\iftex{}$/
-\ifusingtt tex-src/texinfo.tex /^\\def\\ifusingtt#1#2{\\ifdim \\fontdimen3\\the\\font=0pt/
-\ignore tex-src/texinfo.tex /^\\def\\ignore{\\begingroup\\ignoresections$/
-\ignoresections tex-src/texinfo.tex /^\\def\\ignoresections{%$/
-\ignorexxx tex-src/texinfo.tex /^\\long\\def\\ignorexxx #1\\end ignore{\\endgroup\\ignore/
-\ii tex-src/texinfo.tex /^\\def\\ii#1{{\\it #1}} % italic font$/
-\inENV tex-src/texinfo.tex /^\\newif\\ifENV \\ENVfalse \\def\\inENV{\\ifENV\\relax\\els/
-\include tex-src/texinfo.tex /^\\def\\include{\\parsearg\\includezzz}$/
-\includezzz tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/
-\indexbackslash tex-src/texinfo.tex /^ \\def\\indexbackslash{\\rawbackslashxx}$/
-\indexdotfill tex-src/texinfo.tex /^\\def\\indexdotfill{\\cleaders$/
-\indexdummies tex-src/texinfo.tex /^\\def\\indexdummies{%$/
-\indexdummydots tex-src/texinfo.tex /^\\def\\indexdummydots{...}$/
-\indexdummyfont tex-src/texinfo.tex /^\\def\\indexdummyfont#1{#1}$/
-\indexdummytex tex-src/texinfo.tex /^\\def\\indexdummytex{TeX}$/
-\indexfonts tex-src/texinfo.tex /^\\def\\indexfonts{%$/
-\indexnofonts tex-src/texinfo.tex /^\\def\\indexnofonts{%$/
-\infoappendix tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
-\infoappendixsec tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
-\infoappendixsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
-\infoappendixsubsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
-\infochapter tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/
-\inforef tex-src/texinfo.tex /^\\def\\inforef #1{\\inforefzzz #1,,,,**}$/
-\inforefzzz tex-src/texinfo.tex /^\\def\\inforefzzz #1,#2,#3,#4**{See Info file \\file{/
-\infosection tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/
-\infosubsection tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
-\infosubsubsection tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
-\infotop tex-src/texinfo.tex /^\\def\\infotop{\\parsearg\\unnumberedzzz}$/
-\infounnumbered tex-src/texinfo.tex /^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/
-\infounnumberedsec tex-src/texinfo.tex /^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/
-\infounnumberedsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/
-\infounnumberedsubsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/
-\initial tex-src/texinfo.tex /^\\def\\initial #1{%$/
-\internalBitem tex-src/texinfo.tex /^\\def\\internalBitem{\\smallbreak \\parsearg\\itemzzz}$/
-\internalBitemx tex-src/texinfo.tex /^\\def\\internalBitemx{\\par \\parsearg\\itemzzz}$/
-\internalBkitem tex-src/texinfo.tex /^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/
-\internalBkitemx tex-src/texinfo.tex /^\\def\\internalBkitemx{\\par \\parsearg\\kitemzzz}$/
-\internalBxitem tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/
-\internalBxitemx tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/
-\internalsetq tex-src/texinfo.tex /^\\def\\internalsetq #1#2{'xrdef {#1}{\\csname #2\\endc/
-\item tex-src/texinfo.tex /^\\def\\item{\\errmessage{@item while not in a table}}/
-\itemcontents tex-src/texinfo.tex /^\\def\\itemcontents{#1}%$/
-\itemfont tex-src/texinfo.tex /^\\def\\itemfont{#2}%$/
-\itemize tex-src/texinfo.tex /^\\def\\itemize{\\parsearg\\itemizezzz}$/
-\itemizeitem tex-src/texinfo.tex /^\\def\\itemizeitem{%$/
-\itemizey tex-src/texinfo.tex /^\\def\\itemizey #1#2{%$/
-\itemizezzz tex-src/texinfo.tex /^\\def\\itemizezzz #1{%$/
-\itemx tex-src/texinfo.tex /^\\def\\itemx{\\errmessage{@itemx while not in a table/
-\itemzzz tex-src/texinfo.tex /^\\def\\itemzzz #1{\\begingroup %$/
-\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/
-\kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/
-\kbd tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
-\kbdfoo tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
-\key tex-src/texinfo.tex /^\\def\\key #1{{\\tt \\exhyphenpenalty=10000\\uppercase{/
-\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}$/
-\key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}%$/
-\kindex tex-src/texinfo.tex /^\\def\\kindex {\\kyindex}$/
-\kitem tex-src/texinfo.tex /^\\def\\kitem{\\errmessage{@kitem while not in a table/
-\kitemx tex-src/texinfo.tex /^\\def\\kitemx{\\errmessage{@kitemx while not in a tab/
-\kitemzzz tex-src/texinfo.tex /^\\def\\kitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
-\l tex-src/texinfo.tex /^\\def\\l#1{{\\li #1}\\null} % $/
-\labelspace tex-src/texinfo.tex /^\\def\\labelspace{\\hskip1em \\relax}$/
-\lbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/
-\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}$/
-\less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}%$/
-\linenumber tex-src/texinfo.tex /^ \\def\\linenumber{\\the\\inputlineno:\\space}$/
-\lisp tex-src/texinfo.tex /^\\def\\lisp{\\aboveenvbreak$/
-\loggingall tex-src/texinfo.tex /^\\def\\loggingall{\\tracingcommands2 \\tracingstats2 $/
-\losespace tex-src/texinfo.tex /^\\def\\losespace #1{#1}$/
-\lowercaseenumerate tex-src/texinfo.tex /^\\def\\lowercaseenumerate{%$/
-\lvvmode tex-src/texinfo.tex /^\\def\\lvvmode{\\vbox to 0pt{}}$/
-\majorheading tex-src/texinfo.tex /^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/
-\majorheadingzzz tex-src/texinfo.tex /^\\def\\majorheadingzzz #1{%$/
-\math tex-src/texinfo.tex /^\\def\\math#1{\\implicitmath #1\\implicitmath}$/
-\menu tex-src/texinfo.tex /^\\long\\def\\menu #1\\end menu{}$/
-\minus tex-src/texinfo.tex /^\\def\\minus{$-$}$/
-\mylbrace tex-src/texinfo.tex /^\\def\\mylbrace {{\\tt \\char '173}}$/
-\myrbrace tex-src/texinfo.tex /^\\def\\myrbrace {{\\tt \\char '175}}$/
-\need tex-src/texinfo.tex /^\\def\\need{\\parsearg\\needx}$/
-\needx tex-src/texinfo.tex /^\\def\\needx#1{%$/
-\newcodeindex tex-src/texinfo.tex /^\\def\\newcodeindex #1{$/
-\newindex tex-src/texinfo.tex /^\\def\\newindex #1{$/
-\next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
-\nm tex-src/testenv.tex /^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/
-\node tex-src/texinfo.tex /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/
-\nodexxx[ tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
-\nodezzz tex-src/texinfo.tex /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/
-\nofillexdent tex-src/texinfo.tex /^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/
-\nofillexdentyyy tex-src/texinfo.tex /^\\def\\nofillexdentyyy #1{{\\advance \\leftskip by -\\e/
-\normalbackslash tex-src/texinfo.tex /^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/
-\normalcaret tex-src/texinfo.tex /^\\def\\normalcaret{^}$/
-\normaldoublequote tex-src/texinfo.tex /^\\def\\normaldoublequote{"}$/
-\normalgreater tex-src/texinfo.tex /^\\def\\normalgreater{>}$/
-\normalless tex-src/texinfo.tex /^\\def\\normalless{<}$/
-\normalplus tex-src/texinfo.tex /^\\def\\normalplus{+}$/
-\normaltilde tex-src/texinfo.tex /^\\def\\normaltilde{~}$/
-\normalunderscore tex-src/texinfo.tex /^\\def\\normalunderscore{_}$/
-\normalverticalbar tex-src/texinfo.tex /^\\def\\normalverticalbar{|}$/
-\nsbot tex-src/texinfo.tex /^\\def\\nsbot{\\vbox$/
-\nstop tex-src/texinfo.tex /^\\def\\nstop{\\vbox$/
-\numberedsec tex-src/texinfo.tex /^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/
-\numberedsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/
-\numberedsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubseczzz #1{\\seccheck{subsection}%$/
-\numberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/
-\numberedsubsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubsubseczzz #1{\\seccheck{subsubsecti/
-\numericenumerate tex-src/texinfo.tex /^\\def\\numericenumerate{%$/
-\oddfooting tex-src/texinfo.tex /^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/
-\oddheading tex-src/texinfo.tex /^\\def\\oddheading{\\parsearg\\oddheadingxxx}$/
-\onepageout tex-src/texinfo.tex /^\\def\\onepageout#1{\\hoffset=\\normaloffset$/
-\opencontents tex-src/texinfo.tex /^\\def\\opencontents{\\openout \\contentsfile = \\jobnam/
-\openindices tex-src/texinfo.tex /^\\def\\openindices{%$/
-\opnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
-\page tex-src/texinfo.tex /^ \\def\\page{%$/
-\page tex-src/texinfo.tex /^\\def\\page{\\par\\vfill\\supereject}$/
-\pagebody tex-src/texinfo.tex /^\\def\\pagebody#1{\\vbox to\\pageheight{\\boxmaxdepth=\\/
-\pagesofar tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/
-\parsearg tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/
-\parseargline tex-src/texinfo.tex /^\\def\\parseargline{\\begingroup \\obeylines \\parsearg/
-\parseargx tex-src/texinfo.tex /^\\def\\parseargx{%$/
-\pindex tex-src/texinfo.tex /^\\def\\pindex {\\pgindex}$/
-\plainsecheading tex-src/texinfo.tex /^\\def\\plainsecheading #1{\\secheadingi {#1}}$/
-\point tex-src/texinfo.tex /^\\def\\point{$\\star$}$/
-\primary tex-src/texinfo.tex /^\\def\\primary #1{\\line{#1\\hfil}}$/
-\print tex-src/texinfo.tex /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
-\print tex-src/texinfo.tex /^\\def\\print{\\realbackslash print}$/
-\printedmanual tex-src/texinfo.tex /^\\def\\printedmanual{\\ignorespaces #5}%$/
-\printedmanual tex-src/texinfo.tex /^section ``\\printednodename'' in \\cite{\\printedmanu/
-\printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #1}%$/
-\printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #3}%$/
-\printindex tex-src/texinfo.tex /^\\def\\printindex{\\parsearg\\doprintindex}$/
-\pxref tex-src/texinfo.tex /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/
-\quotation tex-src/texinfo.tex /^\\def\\quotation{%$/
-\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}$/
-\r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}%$/
-\r tex-src/texinfo.tex /^\\def\\r#1{{\\rm #1}} % roman font$/
-\rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
-\rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/
-\readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/
-\ref tex-src/texinfo.tex /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/
-\refx tex-src/texinfo.tex /^\\def\\refx#1#2{%$/
-\resetmathfonts tex-src/texinfo.tex /^\\def\\resetmathfonts{%$/
-\result tex-src/texinfo.tex /^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/
-\result tex-src/texinfo.tex /^\\def\\result{\\realbackslash result}$/
-\rm tex-src/texinfo.tex /^\\def\\rm{\\realbackslash rm }%$/
-\samp tex-src/texinfo.tex /^\\def\\samp #1{`\\tclose{#1}'\\null}$/
-\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}$/
-\samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}%$/
-\sc tex-src/texinfo.tex /^\\def\\sc#1{{\\smallcaps#1}} % smallcaps font$/
-\seccheck tex-src/texinfo.tex /^\\def\\seccheck#1{\\if \\pageno<0 %$/
-\secentry tex-src/texinfo.tex /^ \\def\\secentry ##1##2##3##4{}$/
-\secentry tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
-\secentryfonts tex-src/texinfo.tex /^\\def\\secentryfonts{\\textfonts}$/
-\secfonts tex-src/texinfo.tex /^\\def\\secfonts{%$/
-\secheading tex-src/texinfo.tex /^\\def\\secheading #1#2#3{\\secheadingi {#2.#3\\enspace/
-\secheadingbreak tex-src/texinfo.tex /^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/
-\secheadingi tex-src/texinfo.tex /^\\def\\secheadingi #1{{\\advance \\secheadingskip by \\/
-\secondary tex-src/texinfo.tex /^\\def\\secondary #1#2{$/
-\seczzz tex-src/texinfo.tex /^\\def\\seczzz #1{\\seccheck{section}%$/
-\set tex-src/texinfo.tex /^\\def\\set{\\parsearg\\setxxx}$/
-\setchapternewpage tex-src/texinfo.tex /^\\def\\setchapternewpage #1 {\\csname CHAPPAG#1\\endcs/
-\setchapterstyle tex-src/texinfo.tex /^\\def\\setchapterstyle #1 {\\csname CHAPF#1\\endcsname/
-\setdeffont tex-src/texinfo.tex /^\\def\\setdeffont #1 {\\csname DEF#1\\endcsname}$/
-\setfilename tex-src/texinfo.tex /^\\def\\setfilename{%$/
-\setref tex-src/texinfo.tex /^\\def\\setref#1{%$/
-\settitle tex-src/texinfo.tex /^\\def\\settitle{\\parsearg\\settitlezzz}$/
-\settitlezzz tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/
-\setxxx tex-src/texinfo.tex /^\\def\\setxxx #1{$/
-\sf tex-src/texinfo.tex /^\\def\\sf{\\fam=\\sffam \\tensf}$/
-\sf tex-src/texinfo.tex /^\\def\\sf{\\realbackslash sf}%$/
-\shortchapentry tex-src/texinfo.tex /^\\def\\shortchapentry#1#2#3{%$/
-\shortunnumberedentry tex-src/texinfo.tex /^\\def\\shortunnumberedentry#1#2{%$/
-\singlecodeindexer tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/
-\singleindexer tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/
-\singlespace tex-src/texinfo.tex /^\\def\\singlespace{%$/
-\sl tex-src/texinfo.tex /^\\def\\sl{\\realbackslash sl }%$/
-\smallbook tex-src/texinfo.tex /^\\def\\smallbook{$/
-\smalllispx tex-src/texinfo.tex /^\\def\\smalllispx{\\aboveenvbreak\\begingroup\\inENV$/
-\smartitalic tex-src/texinfo.tex /^\\def\\smartitalic#1{{\\sl #1}\\futurelet\\next\\smartit/
-\smartitalicx tex-src/texinfo.tex /^\\def\\smartitalicx{\\ifx\\next,\\else\\ifx\\next-\\else\\i/
-\sp tex-src/texinfo.tex /^\\def\\sp{\\parsearg\\spxxx}$/
-\splitoff tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
-\spxxx tex-src/texinfo.tex /^\\def\\spxxx #1{\\par \\vskip #1\\baselineskip}$/
-\startcontents tex-src/texinfo.tex /^\\def\\startcontents#1{%$/
-\startenumeration tex-src/texinfo.tex /^\\def\\startenumeration#1{%$/
-\subheading tex-src/texinfo.tex /^\\def\\subheading{\\parsearg\\subsecheadingi}$/
-\subsecentry tex-src/texinfo.tex /^ \\def\\subsecentry ##1##2##3##4##5{}$/
-\subsecentry tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
-\subsecfonts tex-src/texinfo.tex /^\\def\\subsecfonts{%$/
-\subsecheading tex-src/texinfo.tex /^\\def\\subsecheading #1#2#3#4{\\subsecheadingi {#2.#3/
-\subsecheadingbreak tex-src/texinfo.tex /^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/
-\subsecheadingi tex-src/texinfo.tex /^\\def\\subsecheadingi #1{{\\advance \\subsecheadingski/
-\subsubheading tex-src/texinfo.tex /^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/
-\subsubsecentry tex-src/texinfo.tex /^ \\def\\subsubsecentry ##1##2##3##4##5##6{}$/
-\subsubsecentry tex-src/texinfo.tex /^\\def\\subsubsecentry#1#2#3#4#5#6{%$/
-\subsubsecfonts tex-src/texinfo.tex /^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/
-\subsubsecheading tex-src/texinfo.tex /^\\def\\subsubsecheading #1#2#3#4#5{\\subsubsecheading/
-\subsubsecheadingi tex-src/texinfo.tex /^\\def\\subsubsecheadingi #1{{\\advance \\subsecheading/
-\subtitle tex-src/texinfo.tex /^ \\def\\subtitle{\\parsearg\\subtitlezzz}%$/
-\subtitlefont tex-src/texinfo.tex /^ \\def\\subtitlefont{\\subtitlerm \\normalbaselinesk/
-\subtitlezzz tex-src/texinfo.tex /^ \\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/
-\summarycontents tex-src/texinfo.tex /^\\outer\\def\\summarycontents{%$/
-\supereject tex-src/texinfo.tex /^\\def\\supereject{\\par\\penalty -20000\\footnoteno =0 /
-\syncodeindex tex-src/texinfo.tex /^\\def\\syncodeindex #1 #2 {%$/
-\synindex tex-src/texinfo.tex /^\\def\\synindex #1 #2 {%$/
-\t tex-src/texinfo.tex /^\\def\\t##1{\\realbackslash r {##1}}%$/
-\t tex-src/texinfo.tex /^\\def\\t#1{{\\tt \\exhyphenpenalty=10000\\rawbackslash /
-\table tex-src/texinfo.tex /^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspaces\\/
-\tablez tex-src/texinfo.tex /^\\def\\tablez #1#2#3#4#5#6{%$/
-\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}$/
-\tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}%$/
-\tclose tex-src/texinfo.tex /^\\def\\tclose#1{{\\rm \\tcloserm=\\fontdimen2\\font \\tt /
-\tex tex-src/texinfo.tex /^\\def\\tex{\\begingroup$/
-\texinfoversion tex-src/texinfo.tex /^\\def\\texinfoversion{2.73}$/
-\textfonts tex-src/texinfo.tex /^\\def\\textfonts{%$/
-\thearg tex-src/texinfo.tex /^ \\def\\thearg{#1}%$/
-\thearg tex-src/texinfo.tex /^ \\ifx\\thearg\\empty \\def\\thearg{1}\\fi$/
-\thischapter tex-src/texinfo.tex /^ \\unnumbchapmacro{#1}\\def\\thischapter{}%$/
-\thischapter tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/
-\thischaptername tex-src/texinfo.tex /^\\def\\thischaptername{No Chapter Title}$/
-\thisfile tex-src/texinfo.tex /^\\def\\thisfile{}$/
-\thistitle tex-src/texinfo.tex /^\\def\\thistitle{No Title}$/
-\tie tex-src/texinfo.tex /^\\def\\tie{\\penalty 10000\\ } % Save plain tex de/
-\tindex tex-src/texinfo.tex /^\\def\\tindex {\\tpindex}$/
-\title tex-src/texinfo.tex /^ \\def\\title{\\parsearg\\titlezzz}%$/
-\titlefont tex-src/texinfo.tex /^\\def\\titlefont#1{{\\titlerm #1}}$/
-\titlepage tex-src/texinfo.tex /^\\def\\titlepage{\\begingroup \\parindent=0pt \\textfon/
-\titlezzz tex-src/texinfo.tex /^ \\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/
-\today tex-src/texinfo.tex /^\\def\\today{\\number\\day\\space$/
-\top tex-src/texinfo.tex /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/
-\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}$/
-\tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}%$/
-\turnoffactive tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
-\unnchfopen tex-src/texinfo.tex /^\\def\\unnchfopen #1{%$/
-\unnchfplain tex-src/texinfo.tex /^\\def\\unnchfplain #1{%$/
-\unnumbchapentry tex-src/texinfo.tex /^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/
-\unnumbered tex-src/texinfo.tex /^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/
-\unnumberedsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/
-\unnumberedseczzz tex-src/texinfo.tex /^\\def\\unnumberedseczzz #1{\\seccheck{unnumberedsec}%/
-\unnumberedsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsec{\\parsearg\\unnumberedsu/
-\unnumberedsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubseczzz #1{\\seccheck{unnumberedsu/
-\unnumberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/
-\unnumberedsubsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/
-\unnumberedzzz tex-src/texinfo.tex /^\\def\\unnumberedzzz #1{\\seccheck{unnumbered}%$/
-\unnumbnoderef tex-src/texinfo.tex /^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/
-\unnumbsecentry tex-src/texinfo.tex /^ \\def\\unnumbsecentry ##1##2{}$/
-\unnumbsecentry tex-src/texinfo.tex /^\\def\\unnumbsecentry#1#2{\\dosecentry{#1}{#2}}$/
-\unnumbsetref tex-src/texinfo.tex /^\\def\\unnumbsetref#1{%$/
-\unnumbsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsecentry ##1##2{}$/
-\unnumbsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsecentry#1#2{\\dosubsecentry{#1}{#2}}/
-\unnumbsubsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsubsecentry ##1##2{}$/
-\unnumbsubsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/
-\uppercaseenumerate tex-src/texinfo.tex /^\\def\\uppercaseenumerate{%$/
-\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}$/
-\var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}%$/
-\vindex tex-src/texinfo.tex /^\\def\\vindex {\\vrindex}$/
-\vritemindex tex-src/texinfo.tex /^\\def\\vritemindex #1{\\doind {vr}{\\code{#1}}}%$/
-\vtable tex-src/texinfo.tex /^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/
-\w tex-src/texinfo.tex /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/
-\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w }%$/
-\w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w}$/
-\xitem tex-src/texinfo.tex /^\\def\\xitem{\\errmessage{@xitem while not in a table/
-\xitemx tex-src/texinfo.tex /^\\def\\xitemx{\\errmessage{@xitemx while not in a tab/
-\xitemzzz tex-src/texinfo.tex /^\\def\\xitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
-\xkey tex-src/texinfo.tex /^\\def\\xkey{\\key}$/
-\xrdef tex-src/texinfo.tex /^\\def\\xrdef #1#2{$/
-\xref tex-src/texinfo.tex /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/
-\xrefX[ tex-src/texinfo.tex /^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/
+] tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
^ tex-src/texinfo.tex /^\\def^{{\\tt \\hat}}$/
+^ tex-src/texinfo.tex /^\\let^=\\normalcaret$/
+_ tex-src/texinfo.tex /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule width.3em /
+_ tex-src/texinfo.tex /^\\def\\_{{\\realbackslash _}}%$/
_ tex-src/texinfo.tex /^\\def_{\\ifusingtt\\normalunderscore\\_}$/
+_ tex-src/texinfo.tex /^\\let_=\\normalunderscore$/
_GETOPT_H c-src/getopt.h 19
_GNU_SOURCE c-src/etags.c 94
_REGEX_H c-src/emacs/src/regex.h 21
@@ -2264,6 +1790,7 @@ _realloc c-src/emacs/src/gmalloc.c /^_realloc (void *ptr, size_t size)$/
_realloc_internal c-src/emacs/src/gmalloc.c /^_realloc_internal (void *ptr, size_t size)$/
_realloc_internal_nolock c-src/emacs/src/gmalloc.c /^_realloc_internal_nolock (void *ptr, size_t size)$/
` ruby-src/test.rb /^ def `(command)$/
+` tex-src/texinfo.tex /^\\def\\`{{`}}$/
a c-src/h.h 103
a c-src/h.h 40
a c.c /^a ()$/
@@ -2299,6 +1826,7 @@ abbrevs_changed c-src/abbrev.c 56
abc c-src/h.h 33
abc c-src/h.h 37
abort-recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("abort-recursive-edit", Fabort_recursive_ed/
+aboveenvbreak tex-src/texinfo.tex /^\\def\\aboveenvbreak{{\\advance\\aboveenvskipamount by/
abs/f ada-src/etags-test-for.ada /^ function "abs" (Right : Complex) return Real'/
absolute_dirname c-src/etags.c /^absolute_dirname (char *file, char *dir)$/
absolute_filename c-src/etags.c /^absolute_filename (char *file, char *dir)$/
@@ -2347,6 +1875,8 @@ accu_warning merc-src/accumulator.m /^:- type accu_warning$/
act prol-src/natded.prolog /^act(OutForm,OutSyn,Ws):-$/
action prol-src/natded.prolog /^action(KeyVals):-$/
active_maps c-src/emacs/src/keyboard.c /^active_maps (Lisp_Object first_event)$/
+activedoublequote tex-src/texinfo.tex /^\\def\\activedoublequote{{\\tt \\char '042}}$/
+activeparens tex-src/texinfo.tex /^\\def\\activeparens{%$/
actout prol-src/natded.prolog /^actout('Text',Trees):-$/
addArchs objc-src/PackInsp.m /^-(void)addArchs:(const char *)string$/
addPOReader php-src/lce_functions.php /^ function addPOReader($d_name, &$por)$/
@@ -2359,6 +1889,8 @@ add_user_signal c-src/emacs/src/keyboard.c /^add_user_signal (int sig, const cha
addnoise html-src/algrthms.html /^Adding Noise to the$/
address y-src/cccp.y 113
adjust_point_for_property c-src/emacs/src/keyboard.c /^adjust_point_for_property (ptrdiff_t last_pt, bool/
+afourpaper tex-src/texinfo.tex /^\\def\\afourpaper{$/
+afterenvbreak tex-src/texinfo.tex /^\\def\\afterenvbreak{\\endgraf \\ifdim\\lastskip<\\above/
agent cp-src/clheir.hpp 75
algorithms html-src/algrthms.html /^Description$/
alias c-src/emacs/src/lisp.h 688
@@ -2373,6 +1905,9 @@ alive cp-src/conway.hpp 7
all_kboards c-src/emacs/src/keyboard.c 86
allocate_kboard c-src/emacs/src/keyboard.c /^allocate_kboard (Lisp_Object type)$/
allocated c-src/emacs/src/regex.h 344
+alphaenumerate tex-src/texinfo.tex /^\\def\\alphaenumerate{\\enumerate{a}}$/
+ampnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
+amprm tex-src/texinfo.tex /^\\gdef\\amprm#1 {{\\rm\\}\\let(=\\oprm \\let)=\\clrm\\ }/
an_extern_linkage c-src/h.h 44
an_extern_linkage c-src/h.h 56
an_extern_linkage_ptr c-src/h.h 43
@@ -2389,8 +1924,27 @@ append_list prol-src/natded.prolog /^append_list([],[]).$/
append_string pas-src/common.pas /^procedure append_string;(*($/
append_tool_bar_item c-src/emacs/src/keyboard.c /^append_tool_bar_item (void)$/
appendix perl-src/htlmify-cystic 24
+appendix tex-src/texinfo.tex /^\\let\\appendix=\\relax$/
+appendix tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
appendix_name perl-src/htlmify-cystic 13
appendix_toc perl-src/htlmify-cystic 16
+appendixletter tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/
+appendixnoderef tex-src/texinfo.tex /^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/
+appendixsec tex-src/texinfo.tex /^\\let\\appendixsec=\\relax$/
+appendixsec tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
+appendixsection tex-src/texinfo.tex /^\\let\\appendixsection=\\relax$/
+appendixsection tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
+appendixsectionzzz tex-src/texinfo.tex /^\\def\\appendixsectionzzz #1{\\seccheck{appendixsecti/
+appendixsetref tex-src/texinfo.tex /^\\def\\appendixsetref#1{%$/
+appendixsubsec tex-src/texinfo.tex /^\\let\\appendixsubsec=\\relax$/
+appendixsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
+appendixsubsection tex-src/texinfo.tex /^\\let\\appendixsubsection=\\relax$/
+appendixsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubseczzz #1{\\seccheck{appendixsubsec/
+appendixsubsubsec tex-src/texinfo.tex /^\\let\\appendixsubsubsec=\\relax$/
+appendixsubsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
+appendixsubsubsection tex-src/texinfo.tex /^\\let\\appendixsubsubsection=\\relax$/
+appendixsubsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubsubseczzz #1{\\seccheck{appendixsub/
+appendixzzz tex-src/texinfo.tex /^\\def\\appendixzzz #1{\\seccheck{appendix}%$/
apply_modifiers c-src/emacs/src/keyboard.c /^apply_modifiers (int modifiers, Lisp_Object base)$/
apply_modifiers_uncached c-src/emacs/src/keyboard.c /^apply_modifiers_uncached (int modifiers, char *bas/
aref_addr c-src/emacs/src/lisp.h /^aref_addr (Lisp_Object array, ptrdiff_t idx)$/
@@ -2410,6 +1964,7 @@ argument c-src/etags.c 253
argvals prol-src/natded.prolog /^argvals([]) --> [].$/
array c.c 190
ascii c-src/emacs/src/lisp.h 1598
+asis tex-src/texinfo.tex /^\\def\\asis#1{#1}$/
asort cp-src/functions.cpp /^void asort(int *a, int num){$/
assemby-code-word forth-src/test-forth.fth /^code assemby-code-word ( dunno what it does )$/
assert c-src/etags.c /^# define assert(x) ((void) 0)$/
@@ -2427,7 +1982,11 @@ atom prol-src/natded.prolog /^atom(X) --> [X], {atomic(X)}.$/
atomval prol-src/natded.prolog /^atomval(X) --> atom(X).$/
aultparindent tex-src/texinfo.tex /^\\newdimen\\defaultparindent \\defaultparindent = 15p/
aultparindent tex-src/texinfo.tex /^\\parindent = \\defaultparindent$/
-aultparindent\hang\textindent tex-src/texinfo.tex /^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/
+aultparindent\hang tex-src/texinfo.tex /^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/
+author tex-src/texinfo.tex /^ \\def\\author{\\parsearg\\authorzzz}%$/
+authorfont tex-src/texinfo.tex /^ \\def\\authorfont{\\authorrm \\normalbaselineskip =/
+authorrm tex-src/texinfo.tex /^\\let\\authorrm = \\secrm$/
+authorzzz tex-src/texinfo.tex /^ \\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt /
auto_help c-src/etags.c 699
b c-src/h.h 103
b c-src/h.h 104
@@ -2439,7 +1998,14 @@ b c.c 260
b c.c 262
b cp-src/c.C 132
b ruby-src/test1.ru /^ def b()$/
-backslash=0 tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden during \\printin/
+b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}$/
+b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}%$/
+b tex-src/texinfo.tex /^\\def\\b#1{{\\bf #1}}$/
+b tex-src/texinfo.tex /^\\let\\b=\\indexdummyfont$/
+b tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+backslash tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
+backslash tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/
+balancecolumns tex-src/texinfo.tex /^\\def\\balancecolumns{%$/
bar c-src/c.c /^void bar() {while(0) {}}$/
bar c-src/h.h 19
bar c.c 143
@@ -2459,9 +2025,16 @@ bbbbbb c-src/h.h 113
been_warned c-src/etags.c 222
before_command_echo_length c-src/emacs/src/keyboard.c 130
before_command_key_count c-src/emacs/src/keyboard.c 129
+begin tex-src/texinfo.tex /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/
+begindoublecolumns tex-src/texinfo.tex /^\\def\\begindoublecolumns{\\begingroup$/
+beginxxx tex-src/texinfo.tex /^\\def\\beginxxx #1{%$/
begtoken c-src/etags.c /^#define begtoken(c) (_btk[CHAR (c)]) \/* c can star/
behaviour_info erl-src/gs_dialog.erl /^behaviour_info(callbacks) ->$/
-bf=cmbx10 tex-src/texinfo.tex /^\\font\\defbf=cmbx10 scaled \\magstep1 %was 1314$/
+bf tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/
+bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }$/
+bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }%$/
+bf tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+bf tex-src/texinfo.tex /^\\font\\defbf=cmbx10 scaled \\magstep1 %was 1314$/
bind pyt-src/server.py /^ def bind(self, key, action):$/
bind_polling_period c-src/emacs/src/keyboard.c /^bind_polling_period (int n)$/
bits_word c-src/emacs/src/lisp.h 123
@@ -2477,6 +2050,7 @@ bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by -\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/
bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/
bodyindent tex-src/texinfo.tex /^\\newskip\\defbodyindent \\defbodyindent=.4in$/
+boldbrax tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/
bool c.c 222
bool merc-src/accumulator.m /^:- import_module bool.$/
bool_header_size c-src/emacs/src/lisp.h 1472
@@ -2489,6 +2063,7 @@ bool_vector_size c-src/emacs/src/lisp.h /^bool_vector_size (Lisp_Object a)$/
bool_vector_uchar_data c-src/emacs/src/lisp.h /^bool_vector_uchar_data (Lisp_Object a)$/
bool_vector_words c-src/emacs/src/lisp.h /^bool_vector_words (EMACS_INT size)$/
boolvar c-src/emacs/src/lisp.h 2287
+br tex-src/texinfo.tex /^\\let\\br = \\par$/
bracelev c-src/etags.c 2520
bsp_DevId c-src/h.h 25
bt c-src/emacs/src/lisp.h 2988
@@ -2502,10 +2077,13 @@ build_pure_c_string c-src/emacs/src/lisp.h /^build_pure_c_string (const char *st
build_string c-src/emacs/src/lisp.h /^build_string (const char *str)$/
buildact prol-src/natded.prolog /^buildact([SynIn],Right,RightPlus1):-$/
builtin_lisp_symbol c-src/emacs/src/lisp.h /^builtin_lisp_symbol (int index)$/
+bullet tex-src/texinfo.tex /^\\def\\bullet{$\\ptexbullet$}$/
+bullet tex-src/texinfo.tex /^\\let\\bullet=\\ptexbullet$/
burst c-src/h.h 28
busy c-src/emacs/src/gmalloc.c 158
button_down_location c-src/emacs/src/keyboard.c 5210
button_down_time c-src/emacs/src/keyboard.c 5218
+bye tex-src/texinfo.tex /^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/
byte_stack c-src/emacs/src/lisp.h 3049
bytecode_dest c-src/emacs/src/lisp.h 3037
bytecode_top c-src/emacs/src/lisp.h 3036
@@ -2516,6 +2094,8 @@ bytes_used c-src/emacs/src/gmalloc.c 312
c c-src/h.h /^#define c() d$/
c c-src/h.h 106
c c.c 180
+c tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+c tex-src/texinfo.tex /^\\let\\c=\\comment$/
c_ext c-src/etags.c 2271
caccacacca c.c /^caccacacca (a,b,c,d,e,f,g)$/
cacheLRUEntry_s c.c 172
@@ -2528,21 +2108,47 @@ calloc c-src/emacs/src/gmalloc.c 70
can_be_null c-src/emacs/src/regex.h 370
cancel_echoing c-src/emacs/src/keyboard.c /^cancel_echoing (void)$/
canonicalize_filename c-src/etags.c /^canonicalize_filename (register char *fn)$/
+capsenumerate tex-src/texinfo.tex /^\\def\\capsenumerate{\\enumerate{A}}$/
+cartbot tex-src/texinfo.tex /^\\def\\cartbot{\\hbox to \\cartouter{\\hskip\\lskip$/
+cartouche tex-src/texinfo.tex /^\\long\\def\\cartouche{%$/
+carttop tex-src/texinfo.tex /^\\def\\carttop{\\hbox to \\cartouter{\\hskip\\lskip$/
case_Lisp_Int c-src/emacs/src/lisp.h 438
cat c-src/h.h 81
cat cp-src/c.C 126
cat cp-src/c.C 130
cat prol-src/natded.prolog /^cat(A, Alpha@Beta, Ass3, Qs3, tree(fe,A:Alpha@Beta/
cat_atoms prol-src/natded.prolog /^cat_atoms(A1,A2,A3):-$/
+cbl tex-src/texinfo.tex /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/
+cbr tex-src/texinfo.tex /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/
cccccccccc c-src/h.h 115
cdr c-src/emacs/src/lisp.h 1159
cell y-src/parse.y 279
+center tex-src/texinfo.tex /^\\def\\center{\\parsearg\\centerzzz}$/
+centerzzz tex-src/texinfo.tex /^\\def\\centerzzz #1{{\\advance\\hsize by -\\leftskip$/
cgrep html-src/software.html /^cgrep$/
chain c-src/emacs/src/lisp.h 1162
chain c-src/emacs/src/lisp.h 2206
chain c-src/emacs/src/lisp.h 2396
chain_subst merc-src/accumulator.m /^:- func chain_subst(accu_subst, accu_subst) = accu/
chain_subst_2 merc-src/accumulator.m /^:- pred chain_subst_2(list(A)::in, map(A, B)::in, /
+chapbf tex-src/texinfo.tex /^\\let\\chapbf=\\chaprm$/
+chapbreak tex-src/texinfo.tex /^\\def\\chapbreak{\\dobreak \\chapheadingskip {-4000}}$/
+chapentry tex-src/texinfo.tex /^ \\let\\chapentry = \\shortchapentry$/
+chapentry tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
+chapentryfonts tex-src/texinfo.tex /^\\def\\chapentryfonts{\\secfonts \\rm}$/
+chapfonts tex-src/texinfo.tex /^\\def\\chapfonts{%$/
+chapheading tex-src/texinfo.tex /^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/
+chapheadingzzz tex-src/texinfo.tex /^\\def\\chapheadingzzz #1{\\chapbreak %$/
+chapmacro tex-src/texinfo.tex /^\\global\\let\\chapmacro=\\chfopen$/
+chapmacro tex-src/texinfo.tex /^\\global\\let\\chapmacro=\\chfplain$/
+chapoddpage tex-src/texinfo.tex /^\\def\\chapoddpage{\\chappager \\ifodd\\pageno \\else \\h/
+chappager tex-src/texinfo.tex /^\\def\\chappager{\\par\\vfill\\supereject}$/
+chapter tex-src/texinfo.tex /^\\let\\chapter=\\relax$/
+chapter tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
+chapternofonts tex-src/texinfo.tex /^\\def\\chapternofonts{%$/
+chapterzzz tex-src/texinfo.tex /^\\def\\chapterzzz #1{\\seccheck{chapter}%$/
+char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}$/
+char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}%$/
char_bits c-src/emacs/src/lisp.h 2443
char_table_specials c-src/emacs/src/lisp.h 1692
charpos c-src/emacs/src/lisp.h 2011
@@ -2553,14 +2159,24 @@ check_cons_list c-src/emacs/src/lisp.h /^# define check_cons_list() lisp_h_chec
checker make-src/Makefile /^checker:$/
checkhdr c-src/emacs/src/gmalloc.c /^checkhdr (const struct hdr *hdr)$/
checkiso html-src/software.html /^checkiso$/
+chfopen tex-src/texinfo.tex /^\\def\\chfopen #1#2{\\chapoddpage {\\chapfonts$/
+chfplain tex-src/texinfo.tex /^\\def\\chfplain #1#2{%$/
childDidExit objc-src/Subprocess.m /^- childDidExit$/
chunks_free c-src/emacs/src/gmalloc.c 313
chunks_used c-src/emacs/src/gmalloc.c 311
+cindex tex-src/texinfo.tex /^\\def\\cindex {\\cpindex}$/
+cindexsub tex-src/texinfo.tex /^\\def\\cindexsub {\\begingroup\\obeylines\\cindexsub}$/
+cindexsub tex-src/texinfo.tex /^\\gdef\\cindexsub "#1" #2^^M{\\endgroup %$/
+cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}$/
+cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}%$/
+cite tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/
+cite tex-src/texinfo.tex /^\\let\\cite=\\smartitalic$/
cjava c-src/etags.c 2936
class_method ruby-src/test.rb /^ def ClassExample.class_method$/
classifyLine php-src/lce_functions.php /^ function classifyLine($line)$/
clean make-src/Makefile /^clean:$/
clear cp-src/conway.hpp /^ void clear(void) { alive = 0; }$/
+clear tex-src/texinfo.tex /^\\def\\clear{\\parsearg\\clearxxx}$/
clear-abbrev-table c-src/abbrev.c /^DEFUN ("clear-abbrev-table", Fclear_abbrev_table, /
clear-this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("clear-this-command-keys", Fclear_this_comm/
clearAllKey objcpp-src/SimpleCalc.M /^- clearAllKey:sender$/
@@ -2570,12 +2186,19 @@ clear_input_pending c-src/emacs/src/keyboard.c /^clear_input_pending (void)$/
clear_neighbors cp-src/clheir.cpp /^void discrete_location::clear_neighbors(void)$/
clear_screen cp-src/screen.cpp /^void clear_screen(void)$/
clear_waiting_for_input c-src/emacs/src/keyboard.c /^clear_waiting_for_input (void)$/
+clearxxx tex-src/texinfo.tex /^\\def\\clearxxx #1{$/
+clnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
+clrm tex-src/texinfo.tex /^\\gdef\\clrm{% Print a paren in roman if it is takin/
cmd_error c-src/emacs/src/keyboard.c /^cmd_error (Lisp_Object data)$/
cmd_error_internal c-src/emacs/src/keyboard.c /^cmd_error_internal (Lisp_Object data, const char */
cmpfn c-src/emacs/src/lisp.h /^ bool (*cmpfn) (struct hash_table_test *t, Lisp_O/
cmt prol-src/natded.prolog /^cmt:-$/
cname c-src/etags.c 2519
cno c-src/etags.c 224
+code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}$/
+code tex-src/texinfo.tex /^\\def\\code##1{\\realbackslash code {##1}}%$/
+code tex-src/texinfo.tex /^\\let\\code=\\indexdummyfont$/
+code tex-src/texinfo.tex /^\\let\\code=\\tclose$/
colori cp-src/c.C 40
commaargvals prol-src/natded.prolog /^commaargvals(Args) -->$/
command c-src/etags.c 187
@@ -2585,6 +2208,8 @@ command_loop_1 c-src/emacs/src/keyboard.c /^command_loop_1 (void)$/
command_loop_2 c-src/emacs/src/keyboard.c /^command_loop_2 (Lisp_Object ignore)$/
command_loop_level c-src/emacs/src/keyboard.c 195
comment php-src/lce_functions.php /^ function comment($line, $class)$/
+comment tex-src/texinfo.tex /^\\def\\comment{\\catcode 64=\\other \\catcode 123=\\othe/
+commentxxx tex-src/texinfo.tex /^\\def\\commentxxx #1{\\catcode 64=0 \\catcode 123=1 \\c/
commutativity_assertion merc-src/accumulator.m /^:- pred commutativity_assertion(module_info::in,li/
compile_empty prol-src/natded.prolog /^compile_empty:-$/
compile_lex prol-src/natded.prolog /^compile_lex(File):-$/
@@ -2607,6 +2232,10 @@ consult_lex prol-src/natded.prolog /^consult_lex:-$/
contents c-src/emacs/src/lisp.h 1372
contents c-src/emacs/src/lisp.h 1600
contents c-src/emacs/src/lisp.h 1624
+contents tex-src/texinfo.tex /^\\let\\contents=\\relax$/
+contents tex-src/texinfo.tex /^\\outer\\def\\contents{%$/
+copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright }%$/
+copyright tex-src/texinfo.tex /^\\def\\copyright{\\realbackslash copyright}$/
count c-src/emacs/src/lisp.h 1863
count_layers lua-src/allegro.lua /^local function count_layers (layer)$/
count_words c-src/tab.c /^static int count_words(char *str, char delim)$/
@@ -2626,10 +2255,20 @@ create_new_orig_recursive_goals merc-src/accumulator.m /^:- func create_new_orig
create_new_recursive_goals merc-src/accumulator.m /^:- func create_new_recursive_goals(set(accu_goal_i/
create_new_var merc-src/accumulator.m /^:- pred create_new_var(prog_var::in, string::in, p/
create_orig_goal merc-src/accumulator.m /^:- pred create_orig_goal(hlds_goal::in, accu_subst/
+cropmarks tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
+croppageout tex-src/texinfo.tex /^\\def\\croppageout#1{\\hoffset=0pt % make sure this d/
cscInitTime cp-src/c.C 7
cscSegmentationTime cp-src/c.C 8
+csname tex-src/texinfo.tex /^\\expandafter\\let\\csname IF#1\\endcsname=\\relax}$/
+csname tex-src/texinfo.tex /^\\expandafter\\let\\csname IF#1\\endcsname=\\set}$/
+csname tex-src/texinfo.tex /^\\expandafter\\let\\csname#1indfile\\endcsname=\\synind/
+csname tex-src/texinfo.tex /^\\expandafter\\xdef\\csname#1index\\endcsname{% % Defi/
+csname tex-src/texinfo.tex /^{\\catcode`\\'=\\other\\expandafter \\gdef \\csname X#1\\/
cstack c-src/etags.c 2523
ctags make-src/Makefile /^ctags: etags.c ${OBJS}$/
+ctl tex-src/texinfo.tex /^\\def\\ctl{{\\circle\\char'013\\hskip -6pt}}% 6pt from /
+ctr tex-src/texinfo.tex /^\\def\\ctr{{\\hskip 6pt\\circle\\char'010}}$/
+ctrl tex-src/texinfo.tex /^\\def\\ctrl #1{{\\tt \\rawbackslash \\hat}#1}$/
curlb c-src/etags.c 2929
curlinepos c-src/etags.c 2931
current-idle-time c-src/emacs/src/keyboard.c /^DEFUN ("current-idle-time", Fcurrent_idle_time, Sc/
@@ -2640,6 +2279,10 @@ curry-test scm-src/test.scm /^(define (((((curry-test a) b) c) d) e)$/
cursor_position cp-src/screen.cpp /^void cursor_position(void)$/
cursor_x cp-src/screen.cpp 15
cursor_y cp-src/screen.cpp 15
+cvarheader\defcvtype tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+cvtype tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defcvtype{} of #1}%$/
+cvtype tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+cvx\defcvarheader tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
d c-src/emacs/src/lisp.h 4673
d c-src/emacs/src/lisp.h 4679
d c.c 180
@@ -2661,6 +2304,15 @@ default_C_help c-src/etags.c 515
default_C_help c-src/etags.c 523
default_C_suffixes c-src/etags.c 512
defcell c-src/emacs/src/lisp.h 2351
+defcodeindex tex-src/texinfo.tex /^\\def\\defcodeindex{\\parsearg\\newcodeindex}$/
+defcv tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
+defcvarheader tex-src/texinfo.tex /^\\def\\defcvarheader #1#2#3{%$/
+defcvtype tex-src/texinfo.tex /^\\def\\defcv #1 {\\def\\defcvtype{#1}%$/
+defcvx tex-src/texinfo.tex /^\\def\\defcvx #1 {\\errmessage{@defcvx in invalid con/
+deffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
+deffnheader tex-src/texinfo.tex /^\\def\\deffnheader #1#2#3{\\doind {fn}{\\code{#2}}%$/
+deffnx tex-src/texinfo.tex /^\\def\\deffnx #1 {\\errmessage{@deffnx in invalid con/
+defindex tex-src/texinfo.tex /^\\def\\defindex{\\parsearg\\newindex}$/
define-abbrev c-src/abbrev.c /^DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_ab/
define-abbrev-table c-src/abbrev.c /^DEFUN ("define-abbrev-table", Fdefine_abbrev_table/
define-global-abbrev c-src/abbrev.c /^DEFUN ("define-global-abbrev", Fdefine_global_abbr/
@@ -2668,7 +2320,63 @@ define-mode-abbrev c-src/abbrev.c /^DEFUN ("define-mode-abbrev", Fdefine_mode_ab
defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4663
defined_GC_CHECK_STRING_BYTES c-src/emacs/src/lisp.h 4665
definedef c-src/etags.c 2464
+defivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+defivarheader tex-src/texinfo.tex /^\\def\\defivarheader #1#2#3{%$/
+defivarx tex-src/texinfo.tex /^\\def\\defivarx #1 {\\errmessage{@defivarx in invalid/
+defmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+defmacheader tex-src/texinfo.tex /^\\def\\defmacheader #1#2{\\doind {fn}{\\code{#1}}% Mak/
+defmacx tex-src/texinfo.tex /^\\def\\defmacx #1 {\\errmessage{@defmacx in invalid c/
+defmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+defmethodheader tex-src/texinfo.tex /^\\def\\defmethodheader #1#2#3{%$/
+defmethodx tex-src/texinfo.tex /^\\def\\defmethodx #1 {\\errmessage{@defmethodx in inv/
+defmethparsebody tex-src/texinfo.tex /^\\def\\defmethparsebody #1#2#3#4 {\\begingroup\\inENV /
+defname tex-src/texinfo.tex /^\\def\\defname #1#2{%$/
+defop tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
+defopheader tex-src/texinfo.tex /^\\def\\defopheader #1#2#3{%$/
+defopparsebody tex-src/texinfo.tex /^\\def\\defopparsebody #1#2#3#4#5 {\\begingroup\\inENV /
+defopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+defoptheader tex-src/texinfo.tex /^\\def\\defoptheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
+defoptx tex-src/texinfo.tex /^\\def\\defoptx #1 {\\errmessage{@defoptx in invalid c/
+defoptype tex-src/texinfo.tex /^\\def\\defop #1 {\\def\\defoptype{#1}%$/
+defopvarparsebody tex-src/texinfo.tex /^\\def\\defopvarparsebody #1#2#3#4#5 {\\begingroup\\inE/
+defopx tex-src/texinfo.tex /^\\def\\defopx #1 {\\errmessage{@defopx in invalid con/
+defparsebody tex-src/texinfo.tex /^\\def\\defparsebody #1#2#3{\\begingroup\\inENV% Enviro/
+defspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
+defspecheader tex-src/texinfo.tex /^\\def\\defspecheader #1#2{\\doind {fn}{\\code{#1}}% Ma/
+defspecx tex-src/texinfo.tex /^\\def\\defspecx #1 {\\errmessage{@defspecx in invalid/
+deftp tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+deftpargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/
+deftpheader tex-src/texinfo.tex /^\\def\\deftpheader #1#2#3{\\doind {tp}{\\code{#2}}%$/
+deftpx tex-src/texinfo.tex /^\\def\\deftpx #1 {\\errmessage{@deftpx in invalid con/
+deftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
+deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefnheader #1#2#3{\\deftypefnheaderx{#1}{/
+deftypefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheaderx #1#2#3 #4\\relax{%$/
+deftypefnx tex-src/texinfo.tex /^\\def\\deftypefnx #1 {\\errmessage{@deftypefnx in inv/
+deftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+deftypefunargs tex-src/texinfo.tex /^\\def\\deftypefunargs #1{%$/
+deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefunheader #1#2{\\deftypefunheaderx{#1}#/
+deftypefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheaderx #1#2 #3\\relax{%$/
+deftypeunx tex-src/texinfo.tex /^\\def\\deftypeunx #1 {\\errmessage{@deftypeunx in inv/
+deftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevarheader #1#2{%$/
+deftypevarx tex-src/texinfo.tex /^\\def\\deftypevarx #1 {\\errmessage{@deftypevarx in i/
+deftypevr tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevrheader #1#2#3{\\doind {vr}{\\code{#3}}/
+deftypevrx tex-src/texinfo.tex /^\\def\\deftypevrx #1 {\\errmessage{@deftypevrx in inv/
+defun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
defun_func1 c.c /^defun_func1()$/
+defunargs tex-src/texinfo.tex /^\\def\\defunargs #1{\\functionparens \\sl$/
+defunheader tex-src/texinfo.tex /^\\def\\defunheader #1#2{\\doind {fn}{\\code{#1}}% Make/
+defunx tex-src/texinfo.tex /^\\def\\defunx #1 {\\errmessage{@defunx in invalid con/
+defvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
+defvarargs tex-src/texinfo.tex /^\\def\\defvarargs #1{\\normalparens #1%$/
+defvarheader tex-src/texinfo.tex /^\\def\\defvarheader #1#2{\\doind {vr}{\\code{#1}}% Mak/
+defvarparsebody tex-src/texinfo.tex /^\\def\\defvarparsebody #1#2#3{\\begingroup\\inENV% Env/
+defvarx tex-src/texinfo.tex /^\\def\\defvarx #1 {\\errmessage{@defvarx in invalid c/
+defvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+defvrheader tex-src/texinfo.tex /^\\def\\defvrheader #1#2#3{\\doind {vr}{\\code{#2}}%$/
+defvrparsebody tex-src/texinfo.tex /^\\def\\defvrparsebody #1#2#3#4 {\\begingroup\\inENV %$/
+defvrx tex-src/texinfo.tex /^\\def\\defvrx #1 {\\errmessage{@defvrx in invalid con/
delegate objc-src/Subprocess.m /^- delegate$/
deleteItem pyt-src/server.py /^ def deleteItem(self):$/
delete_kboard c-src/emacs/src/keyboard.c /^delete_kboard (KBOARD *kb)$/
@@ -2678,25 +2386,54 @@ deliver_user_signal c-src/emacs/src/keyboard.c /^deliver_user_signal (int sig)$/
depth c-src/emacs/src/lisp.h 1618
derived_analyses prol-src/natded.prolog /^derived_analyses([],[]).$/
describe_abbrev c-src/abbrev.c /^describe_abbrev (sym, stream)$/
+description tex-src/texinfo.tex /^\\def\\description{\\tablez{\\dontindex}{1}{}{}{}{}}$/
detect_input_pending c-src/emacs/src/keyboard.c /^detect_input_pending (void)$/
detect_input_pending_ignore_squeezables c-src/emacs/src/keyboard.c /^detect_input_pending_ignore_squeezables (void)$/
detect_input_pending_run_timers c-src/emacs/src/keyboard.c /^detect_input_pending_run_timers (bool do_display)$/
+df tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+dfn tex-src/texinfo.tex /^\\def\\dfn##1{\\realbackslash dfn {##1}}$/
+dfn tex-src/texinfo.tex /^\\let\\dfn=\\smartitalic$/
dialog_loop erl-src/gs_dialog.erl /^dialog_loop(Module, Window, Frame, Extra, Args) ->/
dignorerest c-src/etags.c 2463
+direntry tex-src/texinfo.tex /^\\def\\direntry{\\begingroup\\direntryxxx}$/
+direntryxxx tex-src/texinfo.tex /^\\long\\def\\direntryxxx #1\\end direntry{\\endgroup\\ig/
discard-input c-src/emacs/src/keyboard.c /^DEFUN ("discard-input", Fdiscard_input, Sdiscard_i/
discard_mouse_events c-src/emacs/src/keyboard.c /^discard_mouse_events (void)$/
discrete_location cp-src/clheir.hpp /^ discrete_location(int xi, int yi, int zi):$/
discrete_location cp-src/clheir.hpp 56
display cp-src/conway.cpp /^void display(void)$/
+display tex-src/texinfo.tex /^\\def\\display{\\begingroup\\inENV %This group ends at/
disposetextstring pas-src/common.pas /^procedure disposetextstring;(*($/
+dmn tex-src/texinfo.tex /^\\def\\dmn#1{\\thinspace #1}$/
dnone c-src/etags.c 2460
+dobreak tex-src/texinfo.tex /^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/
doc c-src/emacs/src/lisp.h 1689
+dochapentry tex-src/texinfo.tex /^\\def\\dochapentry#1#2{%$/
+docodeindex tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
dog c-src/h.h 81
dog cp-src/c.C 126
dog cp-src/c.C 130
+doind tex-src/texinfo.tex /^\\def\\doind #1#2{%$/
+doindex tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
+donoderef tex-src/texinfo.tex /^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/
+dontindex tex-src/texinfo.tex /^\\def\\dontindex #1{}$/
+dopageno tex-src/texinfo.tex /^\\def\\dopageno#1{{\\rm #1}}$/
+doprintindex tex-src/texinfo.tex /^\\def\\doprintindex#1{%$/
+dosecentry tex-src/texinfo.tex /^\\def\\dosecentry#1#2{%$/
+dosetq tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/
+doshortpageno tex-src/texinfo.tex /^\\def\\doshortpageno#1{{\\rm #1}}$/
+dosubind tex-src/texinfo.tex /^\\def\\dosubind #1#2#3{%$/
+dosubsecentry tex-src/texinfo.tex /^\\def\\dosubsecentry#1#2{%$/
+dosubsubsecentry tex-src/texinfo.tex /^\\def\\dosubsubsecentry#1#2{%$/
dotfill tex-src/texinfo.tex /^ \\null\\nobreak\\indexdotfill % Have leaders before/
dotfill tex-src/texinfo.tex /^\\noindent\\hskip\\secondaryindent\\hbox{#1}\\indexdotf/
+dots tex-src/texinfo.tex /^\\def\\dots{$\\ldots$}$/
+dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots }%$/
+dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots}$/
+dots tex-src/texinfo.tex /^\\let\\dots=\\indexdummydots$/
+dots tex-src/texinfo.tex /^\\let\\dots=\\ptexdots$/
double_click_count c-src/emacs/src/keyboard.c 5222
+doublecolumnout tex-src/texinfo.tex /^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/
drag_n_drop_syms c-src/emacs/src/keyboard.c 4629
dribble c-src/emacs/src/keyboard.c 236
dsharpseen c-src/etags.c 2461
@@ -2706,6 +2443,7 @@ dummy2 cp-src/burton.cpp /^::dummy::dummy test::dummy2(::CORBA::Long dummy)$/
dummy3 cp-src/burton.cpp /^::dummy::dummy test::dummy3(char* name, ::CORBA::L/
dummydots tex-src/texinfo.tex /^\\let\\dots=\\indexdummydots$/
dummyfont tex-src/texinfo.tex /^\\let\\b=\\indexdummyfont$/
+dummyfont tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\code=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\emph=\\indexdummyfont$/
dummyfont tex-src/texinfo.tex /^\\let\\file=\\indexdummyfont$/
@@ -2744,10 +2482,16 @@ editsite pyt-src/server.py /^ def editsite(self, site):$/
edituser pyt-src/server.py /^ def edituser(self, user):$/
egetenv c-src/emacs/src/lisp.h /^egetenv (const char *var)$/
emacs_abort c-src/emacs/src/lisp.h /^extern _Noreturn void emacs_abort (void) NO_INLINE/
+emph tex-src/texinfo.tex /^\\def\\emph##1{\\realbackslash emph {##1}}$/
+emph tex-src/texinfo.tex /^\\let\\emph=\\indexdummyfont$/
+emph tex-src/texinfo.tex /^\\let\\emph=\\smartitalic$/
end c-src/emacs/src/keyboard.c 8753
end c-src/emacs/src/lisp.h 2039
end c-src/emacs/src/regex.h 432
+end tex-src/texinfo.tex /^\\def\\end{\\parsearg\\endxxx}$/
+enddoublecolumns tex-src/texinfo.tex /^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/
endtoken c-src/etags.c /^#define endtoken(c) (_etk[CHAR (c)]) \/* c ends tok/
+endxxx tex-src/texinfo.tex /^\\def\\endxxx #1{%$/
enter_critical_section c-src/h.h 116
entry perl-src/htlmify-cystic 218
entry perl-src/htlmify-cystic 234
@@ -2757,14 +2501,22 @@ entry perl-src/htlmify-cystic 268
entry perl-src/htlmify-cystic 276
entry perl-src/htlmify-cystic 281
entry perl-src/htlmify-cystic 296
+entry tex-src/texinfo.tex /^\\def\\entry #1#2{\\begingroup$/
+enumerate tex-src/texinfo.tex /^\\def\\enumerate{\\parsearg\\enumeratezzz}$/
+enumeratey tex-src/texinfo.tex /^\\def\\enumeratey #1 #2\\endenumeratey{%$/
+enumeratezzz tex-src/texinfo.tex /^\\def\\enumeratezzz #1{\\enumeratey #1 \\endenumerate/
equalsKey objcpp-src/SimpleCalc.M /^- equalsKey:sender$/
+equiv tex-src/texinfo.tex /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
+equiv tex-src/texinfo.tex /^\\def\\equiv{\\realbackslash equiv}$/
erlang_atom c-src/etags.c /^erlang_atom (char *s)$/
erlang_attribute c-src/etags.c /^erlang_attribute (char *s)$/
erlang_func c-src/etags.c /^erlang_func (char *s, char *last)$/
error c-src/emacs/src/lisp.h /^extern _Noreturn void error (const char *, ...) AT/
error c-src/etags.c /^error (const char *format, ...)$/
error c-src/etags.c /^static void error (const char *, ...) ATTRIBUTE_FO/
+error tex-src/texinfo.tex /^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/
error y-src/cccp.y /^error (msg)$/
+errorE tex-src/texinfo.tex /^\\def\\errorE#1{$/
error_signaled c-src/etags.c 264
etags el-src/emacs/lisp/progmodes/etags.el /^(defgroup etags nil "Tags tables."$/
etags html-src/software.html /^Etags$/
@@ -2787,11 +2539,29 @@ etags-xref-find-definitions-tag-order el-src/emacs/lisp/progmodes/etags.el /^(de
etags.1.man make-src/Makefile /^etags.1.man: etags.1$/
etags_getcwd c-src/etags.c /^etags_getcwd (void)$/
eval_dyn c-src/emacs/src/keyboard.c /^eval_dyn (Lisp_Object form)$/
+evenfooting tex-src/texinfo.tex /^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/
+evenfootingxxx tex-src/texinfo.tex /^\\gdef\\evenfootingxxx #1{\\evenfootingyyy #1@|@|@|@|/
+evenfootingyyy tex-src/texinfo.tex /^\\gdef\\evenfootingyyy #1@|#2@|#3@|#4\\finish{%$/
+evenheading tex-src/texinfo.tex /^\\def\\evenheading{\\parsearg\\evenheadingxxx}$/
+evenheadingxxx tex-src/texinfo.tex /^\\gdef\\evenheadingxxx #1{\\evenheadingyyy #1@|@|@|@|/
+evenheadingyyy tex-src/texinfo.tex /^\\gdef\\evenheadingyyy #1@|#2@|#3@|#4\\finish{%$/
event-convert-list c-src/emacs/src/keyboard.c /^DEFUN ("event-convert-list", Fevent_convert_list, /
event-symbol-parse-modifiers c-src/emacs/src/keyboard.c /^DEFUN ("internal-event-symbol-parse-modifiers", Fe/
event_head c-src/emacs/src/keyboard.c 11021
event_to_kboard c-src/emacs/src/keyboard.c /^event_to_kboard (struct input_event *event)$/
+everyfooting tex-src/texinfo.tex /^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/
+everyfootingxxx tex-src/texinfo.tex /^\\gdef\\everyfootingxxx #1{\\everyfootingyyy #1@|@|@|/
+everyfootingyyy tex-src/texinfo.tex /^\\gdef\\everyfootingyyy #1@|#2@|#3@|#4\\finish{%$/
+everyheading tex-src/texinfo.tex /^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/
+everyheadingxxx tex-src/texinfo.tex /^\\gdef\\everyheadingxxx #1{\\everyheadingyyy #1@|@|@|/
+everyheadingyyy tex-src/texinfo.tex /^\\gdef\\everyheadingyyy #1@|#2@|#3@|#4\\finish{%$/
+ewbot tex-src/texinfo.tex /^\\def\\ewbot{\\vrule height0pt depth\\cornerthick widt/
+ewtop tex-src/texinfo.tex /^\\def\\ewtop{\\vrule height\\cornerthick depth0pt widt/
exact c-src/emacs/src/gmalloc.c 200
+example tex-src/texinfo.tex /^\\let\\example=\\lisp$/
+exdent tex-src/texinfo.tex /^\\def\\exdent{\\parsearg\\exdentyyy}$/
+exdent tex-src/texinfo.tex /^\\let\\exdent=\\nofillexdent$/
+exdentyyy tex-src/texinfo.tex /^\\def\\exdentyyy #1{{\\hfil\\break\\hbox{\\kern -\\exdent/
execute cp-src/c.C /^ void execute(CPluginCSCState& p, int w, in/
exit c-src/exit.c /^DEFUN(exit, (status), int status)$/
exit c-src/exit.strange_suffix /^DEFUN(exit, (status), int status)$/
@@ -2804,10 +2574,13 @@ exp y-src/parse.y 95
exp1 y-src/cccp.y 148
exp_list y-src/parse.y 263
expand-abbrev c-src/abbrev.c /^DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_ab/
+expandafter tex-src/texinfo.tex /^\\expandafter\\let\\expandafter\\synindexfoo\\expandaft/
expandmng prol-src/natded.prolog /^expandmng(var(V),var(V)).$/
expandmng_tree prol-src/natded.prolog /^expandmng_tree(tree(Rule,Syn:Sem,Trees),$/
expandmng_trees prol-src/natded.prolog /^expandmng_trees([],[]).$/
expandsyn prol-src/natded.prolog /^expandsyn(Syn,Syn):-$/
+expansion tex-src/texinfo.tex /^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/
+expansion tex-src/texinfo.tex /^\\def\\expansion{\\realbackslash expansion}$/
explicitly-quoted-pending-delete-mode el-src/TAGTEST.EL /^(defalias (quote explicitly-quoted-pending-delete-/
expression_value y-src/cccp.y 68
extras c-src/emacs/src/lisp.h 1603
@@ -2854,6 +2627,10 @@ fdp c-src/etags.c 217
ff cp-src/c.C /^ int ff(){return 1;};$/
field_of_play cp-src/conway.cpp 18
fignore c-src/etags.c 2416
+file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}$/
+file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}%$/
+file tex-src/texinfo.tex /^\\let\\file=\\indexdummyfont$/
+file tex-src/texinfo.tex /^\\let\\file=\\samp$/
file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun file-of-tag (&optional relative)$/
file-of-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar file-of-tag-function nil$/
fileJoin php-src/lce_functions.php /^ function fileJoin()$/
@@ -2862,6 +2639,7 @@ file_index perl-src/htlmify-cystic 33
file_tocs perl-src/htlmify-cystic 30
filename_is_absolute c-src/etags.c /^filename_is_absolute (char *fn)$/
filenames c-src/etags.c 196
+finalout tex-src/texinfo.tex /^\\def\\finalout{\\overfullrule=0pt}$/
find-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag (tagname &optional next-p regexp-p/
find-tag-default-function el-src/emacs/lisp/progmodes/etags.el /^(defcustom find-tag-default-function nil$/
find-tag-history el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-history nil) ; Doc string?$/
@@ -2884,21 +2662,33 @@ find-tag-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-tag-o
find_entries c-src/etags.c /^find_entries (FILE *inf)$/
find_user_signal_name c-src/emacs/src/keyboard.c /^find_user_signal_name (int sig)$/
findcats prol-src/natded.prolog /^findcats([],Left,Left).$/
+findex tex-src/texinfo.tex /^\\def\\findex {\\fnindex}$/
finish_appendices perl-src/htlmify-cystic /^sub finish_appendices ()$/
finish_sections perl-src/htlmify-cystic /^sub finish_sections ()$/
finish_subsections perl-src/htlmify-cystic /^sub finish_subsections ()$/
finish_subsubsections perl-src/htlmify-cystic /^sub finish_subsubsections ()$/
+finishtitlepage tex-src/texinfo.tex /^\\def\\finishtitlepage{%$/
finlist c-src/etags.c 2414
first c-src/emacs/src/gmalloc.c 151
+first tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
fitchtreelist prol-src/natded.prolog /^fitchtreelist([]).$/
fixup_locale c-src/emacs/src/lisp.h /^INLINE void fixup_locale (void) {}$/
flag c-src/getopt.h 83
flag2str pyt-src/server.py /^def flag2str(value, string):$/
flistseen c-src/etags.c 2415
+flushcr tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else /
+flushleft tex-src/texinfo.tex /^\\def\\flushleft{%$/
+flushright tex-src/texinfo.tex /^\\def\\flushright{%$/
fn c-src/exit.c /^ void EXFUN((*fn[1]), (NOARGS));$/
fn c-src/exit.strange_suffix /^ void EXFUN((*fn[1]), (NOARGS));$/
+fnheader tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
fnin y-src/parse.y 68
+fnitemindex tex-src/texinfo.tex /^\\def\\fnitemindex #1{\\doind {fn}{\\code{#1}}}%$/
+fnx\deffnheader tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
focus_set pyt-src/server.py /^ def focus_set(self):$/
+folio tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/
+folio tex-src/texinfo.tex /^{\\let\\folio=0% Expand all macros now EXCEPT \\folio/
+folio tex-src/texinfo.tex /^{\\let\\folio=0%$/
follow_key c-src/emacs/src/keyboard.c /^follow_key (Lisp_Object keymap, Lisp_Object key)$/
fonts tex-src/texinfo.tex /^\\obeyspaces \\obeylines \\ninett \\indexfonts \\rawbac/
fonts\rm tex-src/texinfo.tex /^ \\indexfonts\\rm \\tolerance=9500 \\advance\\baseline/
@@ -2926,11 +2716,15 @@ foobar c-src/c.c /^int foobar() {;}$/
foobar c.c /^extern void foobar (void) __attribute__ ((section /
foobar2 c-src/h.h 20
foobar2_ c-src/h.h 16
+footnote tex-src/texinfo.tex /^\\long\\gdef\\footnote #1{\\global\\advance \\footnoteno/
+footnotestyle tex-src/texinfo.tex /^\\let\\footnotestyle=\\comment$/
+footnotezzz tex-src/texinfo.tex /^\\long\\gdef\\footnotezzz #1{\\insert\\footins{$/
foperator c-src/etags.c 2411
force_auto_save_soon c-src/emacs/src/keyboard.c /^force_auto_save_soon (void)$/
force_explicit_name c-src/etags.c 265
force_quit_count c-src/emacs/src/keyboard.c 10387
foreign_export merc-src/accumulator.m /^:- pragma foreign_export("C", unravel_univ(in, out/
+format tex-src/texinfo.tex /^\\def\\format{\\begingroup\\inENV %This group ends at /
formatSize objc-src/PackInsp.m /^-(const char *)formatSize:(const char *)size inBuf/
found c-src/emacs/src/lisp.h 2344
fracas html-src/software.html /^Fracas$/
@@ -2947,8 +2741,12 @@ free_regexps c-src/etags.c /^free_regexps (void)$/
free_tree c-src/etags.c /^free_tree (register node *np)$/
free_var prol-src/natded.prolog /^free_var(var(V),var(V)).$/
freehook c-src/emacs/src/gmalloc.c /^freehook (void *ptr)$/
+frenchspacing tex-src/texinfo.tex /^\\def\\frenchspacing{\\sfcode46=1000 \\sfcode63=1000 \\/
+frenchspacing tex-src/texinfo.tex /^\\let\\frenchspacing=\\relax%$/
fresh_vars prol-src/natded.prolog /^fresh_vars(var(V),var(V)).$/
fstartlist c-src/etags.c 2413
+ftable tex-src/texinfo.tex /^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+ftablex tex-src/texinfo.tex /^\\gdef\\ftablex #1^^M{%$/
func c-src/emacs/src/lisp.h /^ void (*func) (Lisp_Object);$/
func c-src/emacs/src/lisp.h /^ void (*func) (int);$/
func c-src/emacs/src/lisp.h /^ void (*func) (void *);$/
@@ -2965,6 +2763,7 @@ function c-src/emacs/src/lisp.h 2985
function c-src/emacs/src/lisp.h 694
function c-src/etags.c 194
functionp c-src/emacs/src/lisp.h /^functionp (Lisp_Object object)$/
+functionparens tex-src/texinfo.tex /^\\gdef\\functionparens{\\boldbrax\\let&=\\amprm\\parenco/
fval forth-src/test-forth.fth /^fconst fvalue fval$/
fvar forth-src/test-forth.fth /^fvariable fvar$/
fvdef c-src/etags.c 2418
@@ -3020,10 +2819,14 @@ ghi1 c-src/h.h 36
ghi2 c-src/h.h 39
giallo cp-src/c.C 40
glider cp-src/conway.cpp /^void glider(int x, int y)$/
+gloggingall tex-src/texinfo.tex /^\\def\\gloggingall{\\begingroup \\globaldefs = 1 \\logg/
gnu html-src/software.html /^Free software that I wrote for the GNU project or /
gobble_input c-src/emacs/src/keyboard.c /^gobble_input (void)$/
goto-tag-location-function el-src/emacs/lisp/progmodes/etags.el /^(defvar goto-tag-location-function nil$/
goto_xy cp-src/screen.cpp /^void goto_xy(unsigned char x, unsigned char y)$/
+group tex-src/texinfo.tex /^\\def\\group{\\begingroup$/
+gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}$/
+gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}%$/
handleList pyt-src/server.py /^ def handleList(self, event):$/
handleNew pyt-src/server.py /^ def handleNew(self, event):$/
handle_async_input c-src/emacs/src/keyboard.c /^handle_async_input (void)$/
@@ -3038,6 +2841,8 @@ hash c-src/emacs/src/lisp.h 1843
hash c-src/etags.c /^hash (const char *str, int len)$/
hash_table_test c-src/emacs/src/lisp.h 1805
hashfn c-src/emacs/src/lisp.h /^ EMACS_UINT (*hashfn) (struct hash_table_test *t,/
+hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/
+hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}%$/
hdr c-src/emacs/src/gmalloc.c 1860
head_table c-src/emacs/src/keyboard.c 11027
header c-src/emacs/src/lisp.h 1371
@@ -3047,6 +2852,8 @@ header c-src/emacs/src/lisp.h 1610
header c-src/emacs/src/lisp.h 1672
header c-src/emacs/src/lisp.h 1826
header_size c-src/emacs/src/lisp.h 1471
+heading tex-src/texinfo.tex /^\\def\\heading{\\parsearg\\secheadingi}$/
+headings tex-src/texinfo.tex /^\\def\\headings #1 {\\csname HEADINGS#1\\endcsname}$/
heapsize c-src/emacs/src/gmalloc.c 361
hello scm-src/test.scm /^(define hello "Hello, Emacs!")$/
hello scm-src/test.scm /^(set! hello "Hello, world!")$/
@@ -3058,6 +2865,10 @@ help_form_saved_window_configs c-src/emacs/src/keyboard.c 2156
helpwin pyt-src/server.py /^def helpwin(helpdict):$/
hide_cursor cp-src/screen.cpp /^void hide_cursor(void)$/
hlds merc-src/accumulator.m /^:- import_module hlds.$/
+hsize tex-src/texinfo.tex /^ {\\let\\hsize=\\pagewidth \\makefootline}}$/
+hsize tex-src/texinfo.tex /^ {\\let\\hsize=\\pagewidth \\makeheadline}$/
+hsize tex-src/texinfo.tex /^\\shipout\\vbox{{\\let\\hsize=\\pagewidth \\makeheadline/
+hsize tex-src/texinfo.tex /^{\\let\\hsize=\\pagewidth \\makefootline}}}%$/
htmltreelist prol-src/natded.prolog /^htmltreelist([]).$/
hybrid_aligned_alloc c-src/emacs/src/gmalloc.c /^hybrid_aligned_alloc (size_t alignment, size_t siz/
hybrid_calloc c-src/emacs/src/gmalloc.c /^hybrid_calloc (size_t nmemb, size_t size)$/
@@ -3072,31 +2883,87 @@ i c-src/emacs/src/lisp.h 4679
i c-src/emacs/src/lisp.h 567
i c.c 169
i cp-src/c.C 132
+i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}$/
+i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}%$/
+i tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+i tex-src/texinfo.tex /^\\let\\i=\\indexdummyfont$/
+i tex-src/texinfo.tex /^\\let\\i=\\smartitalic$/
ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\pa/
ialpage tex-src/texinfo.tex /^ \\availdimen@=\\pageheight \\advance\\availdimen@ by/
ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\parti/
+ialpage tex-src/texinfo.tex /^ \\output={\\global\\setbox\\partialpage=$/
+ialpage tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/
ialpage tex-src/texinfo.tex /^\\newbox\\partialpage$/
-ialpage= tex-src/texinfo.tex /^ \\output={\\global\\setbox\\partialpage=$/
identify_goal_type merc-src/accumulator.m /^:- pred identify_goal_type(pred_id::in, proc_id::i/
identify_out_and_out_prime merc-src/accumulator.m /^:- pred identify_out_and_out_prime(module_info::in/
identify_recursive_calls merc-src/accumulator.m /^:- pred identify_recursive_calls(pred_id::in, proc/
idx c-src/emacs/src/lisp.h 3150
+ifclear tex-src/texinfo.tex /^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/
+ifclearfail tex-src/texinfo.tex /^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/
+ifclearfailxxx tex-src/texinfo.tex /^\\long\\def\\ifclearfailxxx #1\\end ifclear{\\endgroup\\/
+ifclearxxx tex-src/texinfo.tex /^\\def\\ifclearxxx #1{\\endgroup$/
+ifinfo tex-src/texinfo.tex /^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/
+ifinfoxxx tex-src/texinfo.tex /^\\long\\def\\ifinfoxxx #1\\end ifinfo{\\endgroup\\ignore/
+ifset tex-src/texinfo.tex /^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/
+ifsetfail tex-src/texinfo.tex /^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/
+ifsetfailxxx tex-src/texinfo.tex /^\\long\\def\\ifsetfailxxx #1\\end ifset{\\endgroup\\igno/
+ifsetxxx tex-src/texinfo.tex /^\\def\\ifsetxxx #1{\\endgroup$/
+iftex tex-src/texinfo.tex /^\\def\\iftex{}$/
+ifusingtt tex-src/texinfo.tex /^\\def\\ifusingtt#1#2{\\ifdim \\fontdimen3\\the\\font=0pt/
+ignore tex-src/texinfo.tex /^\\def\\ignore{\\begingroup\\ignoresections$/
ignore_case c-src/etags.c 266
ignore_mouse_drag_p c-src/emacs/src/keyboard.c 1256
-ill=\relax tex-src/texinfo.tex /^\\let\\refill=\\relax$/
+ignoresections tex-src/texinfo.tex /^\\def\\ignoresections{%$/
+ignorexxx tex-src/texinfo.tex /^\\long\\def\\ignorexxx #1\\end ignore{\\endgroup\\ignore/
+ii tex-src/texinfo.tex /^\\def\\ii#1{{\\it #1}} % italic font$/
immediate_quit c-src/emacs/src/keyboard.c 174
impatto html-src/softwarelibero.html /^Impatto pratico del software libero$/
implementation merc-src/accumulator.m /^:- implementation.$/
+implicitmath tex-src/texinfo.tex /^\\let\\implicitmath = $$/
+inENV tex-src/texinfo.tex /^\\newif\\ifENV \\ENVfalse \\def\\inENV{\\ifENV\\relax\\els/
in_word_set c-src/etags.c /^in_word_set (register const char *str, register un/
inattribute c-src/etags.c 2400
inc cp-src/Range.h /^ double inc (void) const { return rng_inc; }$/
+include tex-src/texinfo.tex /^\\def\\include{\\parsearg\\includezzz}$/
+includezzz tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/
+indbf tex-src/texinfo.tex /^\\let\\indbf=\\indrm$/
index c-src/emacs/src/lisp.h 1856
+indexbackslash tex-src/texinfo.tex /^ \\def\\indexbackslash{\\rawbackslashxx}$/
+indexbackslash tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden during \\printin/
+indexdotfill tex-src/texinfo.tex /^\\def\\indexdotfill{\\cleaders$/
+indexdummies tex-src/texinfo.tex /^\\def\\indexdummies{%$/
+indexdummydots tex-src/texinfo.tex /^\\def\\indexdummydots{...}$/
+indexdummyfont tex-src/texinfo.tex /^\\def\\indexdummyfont#1{#1}$/
+indexdummytex tex-src/texinfo.tex /^\\def\\indexdummytex{TeX}$/
+indexfonts tex-src/texinfo.tex /^\\def\\indexfonts{%$/
+indexname tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/
+indexname tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/
+indexnofonts tex-src/texinfo.tex /^\\def\\indexnofonts{%$/
+indsc tex-src/texinfo.tex /^\\let\\indsc=\\indrm$/
+indsf tex-src/texinfo.tex /^\\let\\indsf=\\indrm$/
+indsl tex-src/texinfo.tex /^\\let\\indsl=\\indit$/
+indtt tex-src/texinfo.tex /^\\let\\indtt=\\ninett$/
infabsdir c-src/etags.c 206
infabsname c-src/etags.c 205
infiles make-src/Makefile /^infiles = $(filter-out ${NONSRCS},${SRCS}) srclist/
infname c-src/etags.c 204
info c-src/emacs/src/gmalloc.c 157
infoPanel objcpp-src/SimpleCalc.M /^- infoPanel:sender$/
+infoappendix tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
+infoappendixsec tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
+infoappendixsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
+infoappendixsubsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
+infochapter tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/
+inforef tex-src/texinfo.tex /^\\def\\inforef #1{\\inforefzzz #1,,,,**}$/
+inforefzzz tex-src/texinfo.tex /^\\def\\inforefzzz #1,#2,#3,#4**{See Info file \\file{/
+infosection tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/
+infosubsection tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
+infosubsubsection tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
+infotop tex-src/texinfo.tex /^\\def\\infotop{\\parsearg\\unnumberedzzz}$/
+infounnumbered tex-src/texinfo.tex /^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/
+infounnumberedsec tex-src/texinfo.tex /^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/
+infounnumberedsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/
+infounnumberedsubsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/
init c-src/etags.c /^init (void)$/
init objc-src/Subprocess.m /^ andStdErr:(BOOL)wantsStdErr$/
init objc-src/Subprocess.m /^- init:(const char *)subprocessString$/
@@ -3108,6 +2975,7 @@ init_registry cp-src/clheir.cpp /^void init_registry(void)$/
init_tool_bar_items c-src/emacs/src/keyboard.c /^init_tool_bar_items (Lisp_Object reuse)$/
inita c.c /^static void inita () {}$/
initb c.c /^static void initb () {}$/
+initial tex-src/texinfo.tex /^\\def\\initial #1{%$/
initial_kboard c-src/emacs/src/keyboard.c 84
initialize-new-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun initialize-new-tags-table ()$/
initialize_goal_store merc-src/accumulator.m /^:- func initialize_goal_store(list(hlds_goal), ins/
@@ -3139,7 +3007,14 @@ interface merc-src/accumulator.m /^:- interface.$/
interface_locate c-src/c.c /^interface_locate(void)$/
intern c-src/emacs/src/lisp.h /^intern (const char *str)$/
intern_c_string c-src/emacs/src/lisp.h /^intern_c_string (const char *str)$/
+internalBitem tex-src/texinfo.tex /^\\def\\internalBitem{\\smallbreak \\parsearg\\itemzzz}$/
+internalBitemx tex-src/texinfo.tex /^\\def\\internalBitemx{\\par \\parsearg\\itemzzz}$/
+internalBkitem tex-src/texinfo.tex /^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/
+internalBkitemx tex-src/texinfo.tex /^\\def\\internalBkitemx{\\par \\parsearg\\kitemzzz}$/
+internalBxitem tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/
+internalBxitemx tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/
internal_last_event_frame c-src/emacs/src/keyboard.c 228
+internalsetq tex-src/texinfo.tex /^\\def\\internalsetq #1#2{'xrdef {#1}{\\csname #2\\endc/
interned c-src/emacs/src/lisp.h 672
interpreters c-src/etags.c 197
interrupt_input c-src/emacs/src/keyboard.c 328
@@ -3174,9 +3049,28 @@ iso_lispy_function_keys c-src/emacs/src/keyboard.c 5151
isoperator prol-src/natded.prolog /^isoperator(Char):-$/
isoptab prol-src/natded.prolog /^isoptab('%').$/
iswhite c-src/etags.c /^#define iswhite(c) (_wht[CHAR (c)]) \/* c is white /
+item tex-src/texinfo.tex /^\\def\\item{\\errmessage{@item while not in a table}}/
+item tex-src/texinfo.tex /^\\let\\item = \\internalBitem %$/
+item tex-src/texinfo.tex /^\\let\\item=\\itemizeitem}$/
item_properties c-src/emacs/src/keyboard.c 7568
+itemcontents tex-src/texinfo.tex /^\\def\\itemcontents{#1}%$/
+itemfont tex-src/texinfo.tex /^\\def\\itemfont{#2}%$/
+itemindex tex-src/texinfo.tex /^\\let\\itemindex=#1%$/
+itemize tex-src/texinfo.tex /^\\def\\itemize{\\parsearg\\itemizezzz}$/
+itemizeitem tex-src/texinfo.tex /^\\def\\itemizeitem{%$/
+itemizey tex-src/texinfo.tex /^\\def\\itemizey #1#2{%$/
+itemizezzz tex-src/texinfo.tex /^\\def\\itemizezzz #1{%$/
+itemx tex-src/texinfo.tex /^\\def\\itemx{\\errmessage{@itemx while not in a table/
+itemx tex-src/texinfo.tex /^\\let\\itemx = \\internalBitemx %$/
+itemzzz tex-src/texinfo.tex /^\\def\\itemzzz #1{\\begingroup %$/
+ivarheader tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+ivarx\defivarheader tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
jmp c-src/emacs/src/lisp.h 3044
just_read_file c-src/etags.c /^just_read_file (FILE *inf)$/
+kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/
+kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/
+kbd tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
+kbd tex-src/texinfo.tex /^\\let\\kbd=\\indexdummyfont$/
kbd_buffer c-src/emacs/src/keyboard.c 291
kbd_buffer_events_waiting c-src/emacs/src/keyboard.c /^kbd_buffer_events_waiting (void)$/
kbd_buffer_get_event c-src/emacs/src/keyboard.c /^kbd_buffer_get_event (KBOARD **kbp,$/
@@ -3187,9 +3081,14 @@ kbd_buffer_store_help_event c-src/emacs/src/keyboard.c /^kbd_buffer_store_help_e
kbd_buffer_unget_event c-src/emacs/src/keyboard.c /^kbd_buffer_unget_event (register struct input_even/
kbd_fetch_ptr c-src/emacs/src/keyboard.c 297
kbd_store_ptr c-src/emacs/src/keyboard.c 302
+kbdfoo tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
kboard c-src/emacs/src/keyboard.c 860
kboard_stack c-src/emacs/src/keyboard.c 858
kboard_stack c-src/emacs/src/keyboard.c 864
+key tex-src/texinfo.tex /^\\def\\key #1{{\\tt \\exhyphenpenalty=10000\\uppercase{/
+key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}$/
+key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}%$/
+key tex-src/texinfo.tex /^\\let\\key=\\indexdummyfont$/
key_and_value c-src/emacs/src/lisp.h 1868
keyremap c-src/emacs/src/keyboard.c 8742
keyremap c-src/emacs/src/keyboard.c 8754
@@ -3204,6 +3103,12 @@ keywords y-src/cccp.y 114
keywords y-src/cccp.y 306
kind c-src/emacs/src/keyboard.c 11024
kind c-src/h.h 46
+kindex tex-src/texinfo.tex /^\\def\\kindex {\\kyindex}$/
+kitem tex-src/texinfo.tex /^\\def\\kitem{\\errmessage{@kitem while not in a table/
+kitem tex-src/texinfo.tex /^\\let\\kitem = \\internalBkitem %$/
+kitemx tex-src/texinfo.tex /^\\def\\kitemx{\\errmessage{@kitemx while not in a tab/
+kitemx tex-src/texinfo.tex /^\\let\\kitemx = \\internalBkitemx %$/
+kitemzzz tex-src/texinfo.tex /^\\def\\kitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
kset_echo_string c-src/emacs/src/keyboard.c /^kset_echo_string (struct kboard *kb, Lisp_Object v/
kset_kbd_queue c-src/emacs/src/keyboard.c /^kset_kbd_queue (struct kboard *kb, Lisp_Object val/
kset_keyboard_translate_table c-src/emacs/src/keyboard.c /^kset_keyboard_translate_table (struct kboard *kb, /
@@ -3213,6 +3118,9 @@ kset_local_function_key_map c-src/emacs/src/keyboard.c /^kset_local_function_key
kset_overriding_terminal_local_map c-src/emacs/src/keyboard.c /^kset_overriding_terminal_local_map (struct kboard /
kset_real_last_command c-src/emacs/src/keyboard.c /^kset_real_last_command (struct kboard *kb, Lisp_Ob/
kset_system_key_syms c-src/emacs/src/keyboard.c /^kset_system_key_syms (struct kboard *kb, Lisp_Obje/
+l tex-src/texinfo.tex /^\\def\\l#1{{\\li #1}\\null} % $/
+l tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+labelspace tex-src/texinfo.tex /^\\def\\labelspace{\\hskip1em \\relax}$/
lang c-src/etags.c 208
lang c-src/etags.c 251
lang c-src/etags.c 259
@@ -3233,7 +3141,11 @@ lasta c.c 272
lastargmargin tex-src/texinfo.tex /^\\newskip\\deflastargmargin \\deflastargmargin=18pt$/
lastargmargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip \\deflastargmargin{\\rm #2}\\hs/
lastb c.c 278
+lastnode tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
+lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax$/
+lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax}$/
lb c-src/etags.c 2923
+lbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/
lbs c-src/etags.c 2924
lce php-src/lce_functions.php /^ function lce()$/
lce_bindtextdomain php-src/lce_functions.php /^ function lce_bindtextdomain($d_name, $d_path/
@@ -3249,12 +3161,15 @@ len c-src/etags.c 237
length c-src/etags.c 2495
length y-src/cccp.y 113
length y-src/cccp.y 44
+less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}$/
+less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}%$/
let c-src/emacs/src/lisp.h 2981
letter tex-src/texinfo.tex /^ {#1}{Appendix \\appendixletter}{\\noexpand\\folio}}/
letter tex-src/texinfo.tex /^ {\\appendixletter}$/
letter tex-src/texinfo.tex /^ {\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\th/
letter tex-src/texinfo.tex /^\\chapmacro {#1}{Appendix \\appendixletter}%$/
letter tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\appendixlet/
+letter tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1 \\message{Appendix/
letter tex-src/texinfo.tex /^\\subsecheading {#1}{\\appendixletter}{\\the\\secno}{\\/
letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\noexpand\\folio}/
letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\/
@@ -3262,6 +3177,7 @@ letter: tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix \\appendixletter: \\n
level c-src/emacs/src/lisp.h 3153
lex prol-src/natded.prolog /^lex(W,SynOut,Sem):-$/
lexptr y-src/cccp.y 332
+li tex-src/texinfo.tex /^\\let\\li = \\sf % Sometimes we call it \\li, not \\sf./
libs merc-src/accumulator.m /^:- import_module libs.$/
licenze html-src/softwarelibero.html /^Licenze d'uso di un programma$/
limit cp-src/Range.h /^ double limit (void) const { return rng_limit; }$/
@@ -3274,9 +3190,12 @@ linebuffer_init c-src/etags.c /^linebuffer_init (linebuffer *lbp)$/
linebuffer_setlen c-src/etags.c /^linebuffer_setlen (linebuffer *lbp, int toksize)$/
lineno c-src/emacs/src/lisp.h 3147
lineno c-src/etags.c 2506
+linenumber tex-src/texinfo.tex /^ \\def\\linenumber{\\the\\inputlineno:\\space}$/
+linenumber tex-src/texinfo.tex /^ \\let\\linenumber = \\empty % Non-3.0.$/
linepos c-src/etags.c 2507
linepos c-src/etags.c 2922
links html-src/software.html /^Links to interesting software$/
+lisp tex-src/texinfo.tex /^\\def\\lisp{\\aboveenvbreak$/
lisp_eval_depth c-src/emacs/src/lisp.h 3045
lisp_h_CHECK_LIST_CONS c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (C/
lisp_h_CHECK_NUMBER c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGER/
@@ -3310,6 +3229,7 @@ lisp_h_XTYPE c-src/emacs/src/lisp.h /^# define lisp_h_XTYPE(a) ((enum Lisp_Type)
lisp_h_XUNTAG c-src/emacs/src/lisp.h /^# define lisp_h_XUNTAG(a, type) ((void *) (intptr_/
lisp_h_check_cons_list c-src/emacs/src/lisp.h /^# define lisp_h_check_cons_list() ((void) 0)$/
lisp_h_make_number c-src/emacs/src/lisp.h /^# define lisp_h_make_number(n) \\$/
+lisppar tex-src/texinfo.tex /^\\gdef\\lisppar{\\null\\endgraf}}$/
lispy_accent_codes c-src/emacs/src/keyboard.c 4634
lispy_accent_keys c-src/emacs/src/keyboard.c 4741
lispy_drag_n_drop_names c-src/emacs/src/keyboard.c 5181
@@ -3336,18 +3256,29 @@ loadPORManager php-src/lce_functions.php /^ function &loadPORManager()$/
local_if_set c-src/emacs/src/lisp.h 2338
location cp-src/clheir.hpp /^ location() { }$/
location cp-src/clheir.hpp 33
+loggingall tex-src/texinfo.tex /^\\def\\loggingall{\\tracingcommands2 \\tracingstats2 $/
+look tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/
lookup y-src/cccp.y /^lookup (name, len, hash)$/
lookup_call merc-src/accumulator.m /^:- pred lookup_call(accu_goal_store::in, accu_goal/
+losespace tex-src/texinfo.tex /^\\def\\losespace #1{#1}$/
lowcase c-src/etags.c /^#define lowcase(c) tolower (CHAR (c))$/
+lowercaseenumerate tex-src/texinfo.tex /^\\def\\lowercaseenumerate{%$/
lucid_event_type_list_p c-src/emacs/src/keyboard.c /^lucid_event_type_list_p (Lisp_Object object)$/
+lvvmode tex-src/texinfo.tex /^\\def\\lvvmode{\\vbox to 0pt{}}$/
mabort c-src/emacs/src/gmalloc.c /^mabort (enum mcheck_status status)$/
mach_host_self c-src/machsyscalls.h /^SYSCALL (mach_host_self, -29,$/
mach_msg_trap c-src/machsyscalls.h /^SYSCALL (mach_msg_trap, -25,$/
mach_reply_port c-src/machsyscalls.h /^SYSCALL (mach_reply_port, -26,$/
mach_task_self c-src/machsyscalls.h /^SYSCALL (mach_task_self, -28,$/
mach_thread_self c-src/machsyscalls.h /^SYSCALL (mach_thread_self, -27,$/
+macheader tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+macx\defmacheader tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
magic c-src/emacs/src/gmalloc.c 1863
+mainmagstep tex-src/texinfo.tex /^\\let\\mainmagstep=\\magstep1$/
+mainmagstep tex-src/texinfo.tex /^\\let\\mainmagstep=\\magstephalf$/
maintaining.info make-src/Makefile /^maintaining.info: maintaining.texi$/
+majorheading tex-src/texinfo.tex /^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/
+majorheadingzzz tex-src/texinfo.tex /^\\def\\majorheadingzzz #1{%$/
make-abbrev-table c-src/abbrev.c /^DEFUN ("make-abbrev-table", Fmake_abbrev_table, Sm/
make_C_tag c-src/etags.c /^make_C_tag (bool isfun)$/
make_coor prol-src/natded.prolog /^make_coor(s(_),Alpha,Sem1,Sem2,Alpha@Sem1@Sem2).$/
@@ -3388,6 +3319,7 @@ map_word prol-src/natded.prolog /^map_word([[_]|Ws],Exp):-$/
mapping html-src/algrthms.html /^Mapping the Channel Symbols$/
mapsyn prol-src/natded.prolog /^mapsyn(A\/B,AM\/BM):-$/
mark_kboards c-src/emacs/src/keyboard.c /^mark_kboards (void)$/
+math tex-src/texinfo.tex /^\\def\\math#1{\\implicitmath #1\\implicitmath}$/
max c-src/emacs/src/lisp.h /^#define max(a, b) ((a) > (b) ? (a) : (b))$/
max c-src/emacs/src/lisp.h 58
max c.c /^__attribute__ ((always_inline)) max (int a, int b)/
@@ -3410,6 +3342,7 @@ memalign c-src/emacs/src/gmalloc.c /^memalign (size_t alignment, size_t size)$/
member prol-src/natded.prolog /^member(X,[X|_]).$/
member_lessthan_goalid merc-src/accumulator.m /^:- pred member_lessthan_goalid(accu_goal_store::in/
memclear c-src/emacs/src/lisp.h /^memclear (void *p, ptrdiff_t nbytes)$/
+menu tex-src/texinfo.tex /^\\long\\def\\menu #1\\end menu{}$/
menu_bar_item c-src/emacs/src/keyboard.c /^menu_bar_item (Lisp_Object key, Lisp_Object item, /
menu_bar_items c-src/emacs/src/keyboard.c /^menu_bar_items (Lisp_Object old)$/
menu_bar_items_index c-src/emacs/src/keyboard.c 7369
@@ -3419,6 +3352,11 @@ menu_item_eval_property c-src/emacs/src/keyboard.c /^menu_item_eval_property (Li
menu_item_eval_property_1 c-src/emacs/src/keyboard.c /^menu_item_eval_property_1 (Lisp_Object arg)$/
menu_separator_name_p c-src/emacs/src/keyboard.c /^menu_separator_name_p (const char *label)$/
metasource c-src/etags.c 198
+methodheader tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+methodx\defmethodheader tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+methparsebody\Edeffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/
+methparsebody\Edefmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/
+methparsebody\Edeftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
min c-src/emacs/src/gmalloc.c /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
min c-src/emacs/src/lisp.h /^#define min(a, b) ((a) < (b) ? (a) : (b))$/
min c-src/emacs/src/lisp.h 57
@@ -3426,6 +3364,7 @@ min cp-src/conway.cpp /^#define min(x,y) ((x > y) ? y : x)$/
min_args c-src/emacs/src/lisp.h 1686
min_char c-src/emacs/src/lisp.h 1621
minus cp-src/functions.cpp /^void Date::minus ( int days , int month , int year/
+minus tex-src/texinfo.tex /^\\def\\minus{$-$}$/
miti html-src/softwarelibero.html /^Sfatiamo alcuni miti$/
modifier_names c-src/emacs/src/keyboard.c 6319
modifier_symbols c-src/emacs/src/keyboard.c 6327
@@ -3451,7 +3390,9 @@ my_struct c-src/h.h 91
my_struct c.c 226
my_typedef c-src/h.h 93
my_typedef c.c 228
+mylbrace tex-src/texinfo.tex /^\\def\\mylbrace {{\\tt \\char '173}}$/
mypi forth-src/test-forth.fth /^synonym mypi fconst$/
+myrbrace tex-src/texinfo.tex /^\\def\\myrbrace {{\\tt \\char '175}}$/
n c-src/exit.c 28
n c-src/exit.strange_suffix 28
name c-src/emacs/src/keyboard.c 7241
@@ -3481,21 +3422,28 @@ name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1} #2}{Function}%$/
name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1} #2}{Variable}%$/
name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}$/
name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}%$/
+name tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/
+name tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/
name y-src/cccp.y 113
name y-src/cccp.y 43
named c-src/etags.c 2505
namestringequal pas-src/common.pas /^function namestringequal;(*(var Name1,Name2 : Name/
nargs c-src/emacs/src/lisp.h 2987
+need tex-src/texinfo.tex /^\\def\\need{\\parsearg\\needx}$/
need_adjustment c-src/emacs/src/lisp.h 1986
+needx tex-src/texinfo.tex /^\\def\\needx#1{%$/
neighbors cp-src/clheir.hpp 59
nelem cp-src/Range.h /^ int nelem (void) const { return rng_nelem; }$/
nestlev c-src/etags.c 2525
new objc-src/PackInsp.m /^+new$/
new perl-src/htlmify-cystic 163
new_tag perl-src/htlmify-cystic 18
+newcodeindex tex-src/texinfo.tex /^\\def\\newcodeindex #1{$/
+newindex tex-src/texinfo.tex /^\\def\\newindex #1{$/
newlb c-src/etags.c 2930
newlinepos c-src/etags.c 2932
newtextstring pas-src/common.pas /^function newtextstring; (*: TextString;*)$/
+newwrite tex-src/texinfo.tex /^\\gdef\\newwrite{\\alloc@7\\write\\chardef\\sixt@@n}}$/
next c-src/emacs/src/gmalloc.c 164
next c-src/emacs/src/gmalloc.c 188
next c-src/emacs/src/gmalloc.c 198
@@ -3510,6 +3458,10 @@ next c-src/emacs/src/lisp.h 3134
next c-src/emacs/src/lisp.h 700
next c-src/etags.c 203
next c.c 174
+next tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else /
+next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/
+next tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/
+next tex-src/texinfo.tex /^\\edef\\next{\\write\\auxfile{\\internalsetq {#1}{#2}}}/
next y-src/cccp.y 42
next-file el-src/emacs/lisp/progmodes/etags.el /^(defun next-file (&optional initialize novisit)$/
next-file-list el-src/emacs/lisp/progmodes/etags.el /^(defvar next-file-list nil$/
@@ -3520,26 +3472,44 @@ next_weak c-src/emacs/src/lisp.h 1875
nextfree c-src/emacs/src/lisp.h 3029
nfree c-src/emacs/src/gmalloc.c 150
nl c-src/etags.c 2521
+nm tex-src/testenv.tex /^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/
+no tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/
no tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1 \\message{Appendix/
no tex-src/texinfo.tex /^\\ifnum\\secno=0 Appendix\\xreftie'char\\the\\appendixn/
no tex-src/texinfo.tex /^\\newcount \\appendixno \\appendixno = `\\@$/
-no.\the\secno tex-src/texinfo.tex /^\\else \\ifnum \\subsecno=0 Section\\xreftie'char\\the\\/
-no.\the\secno.\the\subsecno tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
-no.\the\secno.\the\subsecno.\the\subsubsecno tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no.\the tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/
+no.\the tex-src/texinfo.tex /^\\else \\ifnum \\subsecno=0 Section\\xreftie'char\\the\\/
no_argument c-src/getopt.h 89
no_lang_help c-src/etags.c 707
no_sub c-src/emacs/src/regex.h 387
nocase_tail c-src/etags.c /^nocase_tail (const char *cp)$/
node c-src/etags.c 225
+node tex-src/texinfo.tex /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/
node_st c-src/etags.c 214
noderef tex-src/texinfo.tex /^\\appendixnoderef %$/
+nodexxx tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/
+nodezzz tex-src/texinfo.tex /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/
+nofillexdent tex-src/texinfo.tex /^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/
+nofillexdentyyy tex-src/texinfo.tex /^\\def\\nofillexdentyyy #1{{\\advance \\leftskip by -\\e/
+nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/
nofonts tex-src/texinfo.tex /^{\\indexnofonts$/
-nofonts% tex-src/texinfo.tex /^{\\chapternofonts%$/
+nonarrowing tex-src/texinfo.tex /^ \\let\\nonarrowing=\\comment$/
+nonarrowing tex-src/texinfo.tex /^\\let\\nonarrowing=\\relax$/
none_help c-src/etags.c 703
+normalbackslash tex-src/texinfo.tex /^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/
+normalcaret tex-src/texinfo.tex /^\\def\\normalcaret{^}$/
+normaldoublequote tex-src/texinfo.tex /^\\def\\normaldoublequote{"}$/
+normalgreater tex-src/texinfo.tex /^\\def\\normalgreater{>}$/
normalize prol-src/natded.prolog /^normalize(M,MNorm):-$/
normalize_fresh prol-src/natded.prolog /^normalize_fresh(M,N):-$/
normalize_tree prol-src/natded.prolog /^normalize_tree(tree(Rule,Syn:Sem,Trees),$/
normalize_trees prol-src/natded.prolog /^normalize_trees([],[]).$/
+normalless tex-src/texinfo.tex /^\\def\\normalless{<}$/
+normalparens tex-src/texinfo.tex /^\\gdef\\normalparens{\\boldbrax\\let&=\\ampnr}$/
+normalplus tex-src/texinfo.tex /^\\def\\normalplus{+}$/
+normaltilde tex-src/texinfo.tex /^\\def\\normaltilde{~}$/
+normalunderscore tex-src/texinfo.tex /^\\def\\normalunderscore{_}$/
+normalverticalbar tex-src/texinfo.tex /^\\def\\normalverticalbar{|}$/
nosave pyt-src/server.py /^ def nosave(self):$/
not_bol c-src/emacs/src/regex.h 391
not_eol c-src/emacs/src/regex.h 394
@@ -3550,6 +3520,8 @@ notag4 c-src/dostorture.c 45
notag4 c-src/torture.c 45
notinname c-src/etags.c /^#define notinname(c) (_nin[CHAR (c)]) \/* c is not /
npending c-src/emacs/src/keyboard.c 7244
+nsbot tex-src/texinfo.tex /^\\def\\nsbot{\\vbox$/
+nstop tex-src/texinfo.tex /^\\def\\nstop{\\vbox$/
ntool_bar_items c-src/emacs/src/keyboard.c 7974
numOfChannels cp-src/c.C 1
num_columns cp-src/conway.cpp 16
@@ -3558,8 +3530,15 @@ num_regs c-src/emacs/src/regex.h 430
num_rows cp-src/conway.cpp 15
numberKeys objcpp-src/SimpleCalc.M /^- numberKeys:sender$/
number_len c-src/etags.c /^static int number_len (long) ATTRIBUTE_CONST;$/
+numberedsec tex-src/texinfo.tex /^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/
+numberedsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/
+numberedsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubseczzz #1{\\seccheck{subsection}%$/
+numberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/
+numberedsubsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubsubseczzz #1{\\seccheck{subsubsecti/
numbervars prol-src/natded.prolog /^numbervars(X):-$/
+numericenumerate tex-src/texinfo.tex /^\\def\\numericenumerate{%$/
nvars c-src/emacs/src/lisp.h 3140
+obeyedspace tex-src/texinfo.tex /^\\gdef\\obeyedspace{\\ }$/
objdef c-src/etags.c 2484
object c-src/emacs/src/lisp.h 2128
object_registry cp-src/clheir.cpp 10
@@ -3570,6 +3549,12 @@ obstack_chunk_free y-src/parse.y 48
ocatseen c-src/etags.c 2477
octave_MDiagArray2_h cp-src/MDiagArray2.h 29
octave_Range_h cp-src/Range.h 24
+oddfooting tex-src/texinfo.tex /^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/
+oddfootingxxx tex-src/texinfo.tex /^\\gdef\\oddfootingxxx #1{\\oddfootingyyy #1@|@|@|@|\\f/
+oddfootingyyy tex-src/texinfo.tex /^\\gdef\\oddfootingyyy #1@|#2@|#3@|#4\\finish{%$/
+oddheading tex-src/texinfo.tex /^\\def\\oddheading{\\parsearg\\oddheadingxxx}$/
+oddheadingxxx tex-src/texinfo.tex /^\\gdef\\oddheadingxxx #1{\\oddheadingyyy #1@|@|@|@|\\f/
+oddheadingyyy tex-src/texinfo.tex /^\\gdef\\oddheadingyyy #1@|#2@|#3@|#4\\finish{%$/
oediff make-src/Makefile /^oediff: OTAGS ETAGS ${infiles}$/
offset c-src/emacs/src/lisp.h 2305
offset c-src/emacs/src/lisp.h 2365
@@ -3580,15 +3565,21 @@ oinbody c-src/etags.c 2478
ok objc-src/PackInsp.m /^-ok:sender$/
ok_to_echo_at_next_pause c-src/emacs/src/keyboard.c 159
old_value c-src/emacs/src/lisp.h 2980
+oldpage tex-src/texinfo.tex /^ \\let\\oldpage = \\page$/
omethodcolon c-src/etags.c 2481
omethodparm c-src/etags.c 2482
omethodsign c-src/etags.c 2479
omethodtag c-src/etags.c 2480
+one tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+onepageout tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/
+onepageout tex-src/texinfo.tex /^\\def\\onepageout#1{\\hoffset=\\normaloffset$/
onone c-src/etags.c 2472
oparenseen c-src/etags.c 2476
open objc-src/PackInsp.m /^-open:sender$/
open-dribble-file c-src/emacs/src/keyboard.c /^DEFUN ("open-dribble-file", Fopen_dribble_file, So/
openInWorkspace objc-src/PackInsp.m /^static void openInWorkspace(const char *filename)$/
+opencontents tex-src/texinfo.tex /^\\def\\opencontents{\\openout \\contentsfile = \\jobnam/
+openindices tex-src/texinfo.tex /^\\def\\openindices{%$/
operationKeys objcpp-src/SimpleCalc.M /^- operationKeys:sender$/
operator y-src/cccp.y 438
operator ++ cp-src/functions.cpp /^Date & Date::operator ++ ( void ){$/
@@ -3610,11 +3601,20 @@ operator int cp-src/fail.C /^ operator int() const {return x;}$/
operator+ cp-src/c.C /^ A operator+(A& a) {};$/
operator+ cp-src/c.C /^const A& A::operator+(const A&) { }$/
operator+ cp-src/c.C /^void operator+(int, int) {}$/
-opparsebody\Edefop\defopx\defopheader\defoptype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+opheader\defoptype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+opnested tex-src/texinfo.tex /^\\gdef\\opnested{\\char`\\(\\global\\advance\\parencount /
+opnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} /
+opparsebody\Edefop tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+oprm tex-src/texinfo.tex /^\\gdef\\oprm#1 {{\\rm\\char`\\(}#1 \\bf \\let(=\\opnested /
oprotocol c-src/etags.c 2473
+optheader tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
option c-src/getopt.h 73
optional_argument c-src/getopt.h 91
-opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+optx\defoptheader tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+optype tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defoptype{} on #1}%$/
+optype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
+opvarparsebody\Edefcv tex-src/texinfo.tex /^\\defopvarparsebody\\Edefcv\\defcvx\\defcvarheader\\def/
+opx\defopheader tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/
ord_add_element prol-src/ordsets.prolog /^ord_add_element([], Element, [Element]).$/
ord_del_element prol-src/ordsets.prolog /^ord_del_element([], _, []).$/
ord_disjoint prol-src/ordsets.prolog /^ord_disjoint(Set1, Set2) :-$/
@@ -3660,8 +3660,20 @@ pMd c-src/emacs/src/lisp.h 155
pMu c-src/emacs/src/lisp.h 151
pMu c-src/emacs/src/lisp.h 156
p_next c-src/etags.c 258
+page tex-src/texinfo.tex /^ \\let\\page = \\oldpage$/
+page tex-src/texinfo.tex /^ \\def\\page{%$/
+page tex-src/texinfo.tex /^\\def\\page{\\par\\vfill\\supereject}$/
+pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chapoddpage$/
+pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chappager$/
+pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chappager}$/
+pagebody tex-src/texinfo.tex /^\\def\\pagebody#1{\\vbox to\\pageheight{\\boxmaxdepth=\\/
+pagecontents tex-src/texinfo.tex /^\\gdef\\pagecontents#1{\\ifvoid\\topins\\else\\unvbox\\to/
pagesize c-src/emacs/src/gmalloc.c 1703
+pagesofar tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/
pair merc-src/accumulator.m /^:- import_module pair.$/
+par tex-src/texinfo.tex /^\\let\\par=\\lisppar$/
+par tex-src/texinfo.tex /^{\\let\\par=\\endgraf \\smallbreak}%$/
+paragraphindent tex-src/texinfo.tex /^\\let\\paragraphindent=\\comment$/
parent c-src/emacs/src/keyboard.c 8745
parent c-src/emacs/src/lisp.h 1590
parse prol-src/natded.prolog /^parse(Ws,Cat):-$/
@@ -3680,8 +3692,20 @@ parse_return_error y-src/cccp.y 70
parse_solitary_modifier c-src/emacs/src/keyboard.c /^parse_solitary_modifier (Lisp_Object symbol)$/
parse_tool_bar_item c-src/emacs/src/keyboard.c /^parse_tool_bar_item (Lisp_Object key, Lisp_Object /
parse_tree merc-src/accumulator.m /^:- import_module parse_tree.$/
+parsearg tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/
+parseargdiscardspace tex-src/texinfo.tex /^\\gdef\\parseargdiscardspace {\\begingroup\\obeylines\\/
+parseargline tex-src/texinfo.tex /^\\def\\parseargline{\\begingroup \\obeylines \\parsearg/
+parsearglinex tex-src/texinfo.tex /^\\gdef\\parsearglinex #1^^M{\\endgroup \\next {#1}}}$/
+parseargx tex-src/texinfo.tex /^\\def\\parseargx{%$/
+parsebody\Edefmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/
+parsebody\Edefspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
+parsebody\Edeftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+parsebody\Edefun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
pat c-src/etags.c 262
pattern c-src/etags.c 260
+pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chapbreak$/
+pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chapoddpage$/
+pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chappager$/
pdlcount c-src/emacs/src/lisp.h 3046
pending-delete-mode el-src/TAGTEST.EL /^(defalias 'pending-delete-mode 'delete-selection-m/
pending_funcalls c-src/emacs/src/keyboard.c 4377
@@ -3689,16 +3713,19 @@ pending_signals c-src/emacs/src/keyboard.c 80
pfatal c-src/etags.c /^pfatal (const char *s1)$/
pfdset c-src/h.h 57
pfnote c-src/etags.c /^pfnote (char *name, bool is_func, char *linestart,/
+pindex tex-src/texinfo.tex /^\\def\\pindex {\\pgindex}$/
pinned c-src/emacs/src/lisp.h 679
plain_C_entries c-src/etags.c /^plain_C_entries (FILE *inf)$/
plain_C_suffixes c-src/etags.c 643
plainc c-src/etags.c 2934
+plainsecheading tex-src/texinfo.tex /^\\def\\plainsecheading #1{\\secheadingi {#1}}$/
plist c-src/emacs/src/lisp.h 2040
plist c-src/emacs/src/lisp.h 697
plus cp-src/functions.cpp /^void Date::plus ( int days , int month , int year /
plus go-src/test1.go 5
plusvalseq prol-src/natded.prolog /^plusvalseq([]) --> [].$/
point forth-src/test-forth.fth /^BEGIN-STRUCTURE point \\ create the named structure/
+point tex-src/texinfo.tex /^\\def\\point{$\\star$}$/
pointer c-src/emacs/src/lisp.h 2125
poll_for_input c-src/emacs/src/keyboard.c /^poll_for_input (struct atimer *timer)$/
poll_for_input_1 c-src/emacs/src/keyboard.c /^poll_for_input_1 (void)$/
@@ -3748,10 +3775,18 @@ prev c-src/emacs/src/gmalloc.c 165
prev c-src/emacs/src/gmalloc.c 189
prev c-src/emacs/src/lisp.h 2191
prev c.c 175
+primary tex-src/texinfo.tex /^\\def\\primary #1{\\line{#1\\hfil}}$/
+print tex-src/texinfo.tex /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/
+print tex-src/texinfo.tex /^\\def\\print{\\realbackslash print}$/
printClassification php-src/lce_functions.php /^ function printClassification()$/
print_help c-src/etags.c /^print_help (argument *argbuffer)$/
print_language_names c-src/etags.c /^print_language_names (void)$/
print_version c-src/etags.c /^print_version (void)$/
+printedmanual tex-src/texinfo.tex /^\\def\\printedmanual{\\ignorespaces #5}%$/
+printedmanual tex-src/texinfo.tex /^section ``\\printednodename'' in \\cite{\\printedmanu/
+printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #1}%$/
+printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #3}%$/
+printindex tex-src/texinfo.tex /^\\def\\printindex{\\parsearg\\doprintindex}$/
printmax_t c-src/emacs/src/lisp.h 148
printmax_t c-src/emacs/src/lisp.h 153
proc c-src/h.h 87
@@ -3766,6 +3801,21 @@ prolog_pr c-src/etags.c /^prolog_pr (char *s, char *last)$/
prolog_skip_comment c-src/etags.c /^prolog_skip_comment (linebuffer *plb, FILE *inf)$/
prop c-src/etags.c 209
protect_malloc_state c-src/emacs/src/gmalloc.c /^protect_malloc_state (int protect_p)$/
+ptexL tex-src/texinfo.tex /^\\let\\ptexL=\\L$/
+ptexb tex-src/texinfo.tex /^\\let\\ptexb=\\b$/
+ptexbullet tex-src/texinfo.tex /^\\let\\ptexbullet=\\bullet$/
+ptexc tex-src/texinfo.tex /^\\let\\ptexc=\\c$/
+ptexdot tex-src/texinfo.tex /^\\let\\ptexdot=\\.$/
+ptexdots tex-src/texinfo.tex /^\\let\\ptexdots=\\dots$/
+ptexend tex-src/texinfo.tex /^\\let\\ptexend=\\end$/
+ptexequiv tex-src/texinfo.tex /^\\let\\ptexequiv = \\equiv$/
+ptexfootnote tex-src/texinfo.tex /^\\let\\ptexfootnote=\\footnote$/
+ptexi tex-src/texinfo.tex /^\\let\\ptexi=\\i$/
+ptexl tex-src/texinfo.tex /^\\let\\ptexl=\\l$/
+ptexlbrace tex-src/texinfo.tex /^\\let\\ptexlbrace=\\{$/
+ptexrbrace tex-src/texinfo.tex /^\\let\\ptexrbrace=\\}$/
+ptexstar tex-src/texinfo.tex /^\\let\\ptexstar=\\*$/
+ptext tex-src/texinfo.tex /^\\let\\ptext=\\t$/
pthread_mutexattr_setprio_ceiling/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprio_ceiling$/
pthread_mutexattr_setprotocol/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprotocol$/
purpose c-src/emacs/src/lisp.h 1594
@@ -3773,14 +3823,20 @@ push_kboard c-src/emacs/src/keyboard.c /^push_kboard (struct kboard *k)$/
pushclass_above c-src/etags.c /^pushclass_above (int bracelev, char *str, int len)/
put_entries c-src/etags.c /^put_entries (register node *np)$/
pvec_type c-src/emacs/src/lisp.h 780
+pxref tex-src/texinfo.tex /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/
quantizing html-src/algrthms.html /^Quantizing the Received$/
questo ../c/c.web 34
quiettest make-src/Makefile /^quiettest:$/
quit_char c-src/emacs/src/keyboard.c 192
quit_throw_to_read_char c-src/emacs/src/keyboard.c /^quit_throw_to_read_char (bool from_signal)$/
+quotation tex-src/texinfo.tex /^\\def\\quotation{%$/
qux ruby-src/test1.ru /^ alias_method :qux, :tee, attr_accessor(:bogus)/
qux1 ruby-src/test1.ru /^ :qux1)$/
qux= ruby-src/test1.ru /^ def qux=(tee)$/
+r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}$/
+r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}%$/
+r tex-src/texinfo.tex /^\\def\\r#1{{\\rm #1}} % roman font$/
+r tex-src/texinfo.tex /^\\let\\r=\\indexdummyfont$/
r0 c-src/sysdep.h 54
r1 c-src/sysdep.h 55
r_alloc c-src/emacs/src/lisp.h /^extern void *r_alloc (void **, size_t) ATTRIBUTE_A/
@@ -3788,6 +3844,10 @@ range_exp y-src/parse.y 269
range_exp_list y-src/parse.y 273
raw_keybuf c-src/emacs/src/keyboard.c 116
raw_keybuf_count c-src/emacs/src/keyboard.c 117
+rawbackslash tex-src/texinfo.tex /^\\let\\rawbackslash=\\relax%$/
+rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/
+rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/
+rbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/
rbtp c.c 240
re_iswctype c-src/emacs/src/regex.h 602
re_nsub c-src/emacs/src/regex.h 364
@@ -3819,6 +3879,7 @@ read_key_sequence_vs c-src/emacs/src/keyboard.c /^read_key_sequence_vs (Lisp_Obj
read_menu_command c-src/emacs/src/keyboard.c /^read_menu_command (void)$/
read_toc perl-src/htlmify-cystic /^sub read_toc ()$/
readable_events c-src/emacs/src/keyboard.c /^readable_events (int flags)$/
+readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/
readline c-src/etags.c /^readline (linebuffer *lbp, FILE *stream)$/
readline_internal c-src/etags.c /^readline_internal (linebuffer *lbp, register FILE /
realloc c-src/emacs/src/gmalloc.c /^realloc (void *ptr, size_t size)$/
@@ -3843,7 +3904,10 @@ recursive_edit_unwind c-src/emacs/src/keyboard.c /^recursive_edit_unwind (Lisp_O
redirect c-src/emacs/src/lisp.h 663
reduce prol-src/natded.prolog /^reduce((X^M)@N,L):- % beta reduction$/
reduce_subterm prol-src/natded.prolog /^reduce_subterm(M,M2):-$/
+ref tex-src/texinfo.tex /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/
+refill tex-src/texinfo.tex /^\\let\\refill=\\relax$/
refreshPort pyt-src/server.py /^ def refreshPort(self):$/
+refx tex-src/texinfo.tex /^\\def\\refx#1#2{%$/
reg_errcode_t c-src/emacs/src/regex.h 323
reg_errcode_t c.c 279
reg_syntax_t c-src/emacs/src/regex.h 43
@@ -3874,8 +3938,12 @@ requeued_events_pending_p c-src/emacs/src/keyboard.c /^requeued_events_pending_p
require merc-src/accumulator.m /^:- import_module require.$/
required_argument c-src/getopt.h 90
reset-this-command-lengths c-src/emacs/src/keyboard.c /^DEFUN ("reset-this-command-lengths", Freset_this_c/
+resetmathfonts tex-src/texinfo.tex /^\\def\\resetmathfonts{%$/
+rest tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
restore_getcjmp c-src/emacs/src/keyboard.c /^restore_getcjmp (sys_jmp_buf temp)$/
restore_kboard_configuration c-src/emacs/src/keyboard.c /^restore_kboard_configuration (int was_locked)$/
+result tex-src/texinfo.tex /^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/
+result tex-src/texinfo.tex /^\\def\\result{\\realbackslash result}$/
return_to_command_loop c-src/emacs/src/keyboard.c 135
reverse prol-src/natded.prolog /^reverse([],Ws,Ws).$/
revert objc-src/PackInsp.m /^-revert:sender$/
@@ -3883,6 +3951,8 @@ right c-src/etags.c 216
right_shift y-src/cccp.y /^right_shift (a, b)$/
ring1 c.c 241
ring2 c.c 242
+rm tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/
+rm tex-src/texinfo.tex /^\\def\\rm{\\realbackslash rm }%$/
rm_eo c-src/emacs/src/regex.h 450
rm_so c-src/emacs/src/regex.h 449
rng_base cp-src/Range.h 79
@@ -3909,19 +3979,37 @@ safe_run_hook_funcall c-src/emacs/src/keyboard.c /^safe_run_hook_funcall (ptrdif
safe_run_hooks c-src/emacs/src/keyboard.c /^safe_run_hooks (Lisp_Object hook)$/
safe_run_hooks_1 c-src/emacs/src/keyboard.c /^safe_run_hooks_1 (ptrdiff_t nargs, Lisp_Object *ar/
safe_run_hooks_error c-src/emacs/src/keyboard.c /^safe_run_hooks_error (Lisp_Object error, ptrdiff_t/
+samp tex-src/texinfo.tex /^\\def\\samp #1{`\\tclose{#1}'\\null}$/
+samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}$/
+samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}%$/
+samp tex-src/texinfo.tex /^\\let\\samp=\\indexdummyfont$/
save pyt-src/server.py /^ def save(self):$/
save_getcjmp c-src/emacs/src/keyboard.c /^save_getcjmp (sys_jmp_buf temp)$/
save_type c-src/emacs/src/lisp.h /^save_type (struct Lisp_Save_Value *v, int n)$/
savenstr c-src/etags.c /^savenstr (const char *cp, int len)$/
savestr c-src/etags.c /^savestr (const char *cp)$/
say go-src/test.go /^func say(msg string) {$/
+sc tex-src/texinfo.tex /^\\def\\sc#1{{\\smallcaps#1}} % smallcaps font$/
+sc tex-src/texinfo.tex /^\\let\\sc=\\indexdummyfont$/
scan_separators c-src/etags.c /^scan_separators (char *name)$/
scolonseen c-src/etags.c 2447
scratch c-src/sysdep.h 56
scroll_bar_parts c-src/emacs/src/keyboard.c 5189
-sec=\relax tex-src/texinfo.tex /^\\let\\appendixsec=\\relax$/
+sec tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/
+seccheck tex-src/texinfo.tex /^\\def\\seccheck#1{\\if \\pageno<0 %$/
+secentry tex-src/texinfo.tex /^ \\def\\secentry ##1##2##3##4{}$/
+secentry tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
+secentryfonts tex-src/texinfo.tex /^\\def\\secentryfonts{\\textfonts}$/
+secfonts tex-src/texinfo.tex /^\\def\\secfonts{%$/
+secheading tex-src/texinfo.tex /^\\def\\secheading #1#2#3{\\secheadingi {#2.#3\\enspace/
+secheadingbreak tex-src/texinfo.tex /^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/
+secheadingi tex-src/texinfo.tex /^\\def\\secheadingi #1{{\\advance \\secheadingskip by \\/
+secondary tex-src/texinfo.tex /^\\def\\secondary #1#2{$/
section perl-src/htlmify-cystic 25
-section=\relax tex-src/texinfo.tex /^\\let\\appendixsection=\\relax$/
+section tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/
+section tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/
+section tex-src/texinfo.tex /^\\global\\let\\section = \\unnumberedsec$/
+section tex-src/texinfo.tex /^\\let\\section=\\relax$/
section_href perl-src/htlmify-cystic /^sub section_href ($)$/
section_name perl-src/htlmify-cystic /^sub section_name ($)$/
section_name perl-src/htlmify-cystic 12
@@ -3929,6 +4017,10 @@ section_toc perl-src/htlmify-cystic 15
section_url perl-src/htlmify-cystic /^sub section_url ()$/
section_url_base perl-src/htlmify-cystic /^sub section_url_base ()$/
section_url_name perl-src/htlmify-cystic /^sub section_url_name ()$/
+sectionzzz tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/
+sectionzzz tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/
+seczzz tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/
+seczzz tex-src/texinfo.tex /^\\def\\seczzz #1{\\seccheck{section}%$/
select prol-src/natded.prolog /^select(X,[X|Xs],Xs).$/
select-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table ()$/
select-tags-table-mode el-src/emacs/lisp/progmodes/etags.el /^(define-derived-mode select-tags-table-mode specia/
@@ -3939,9 +4031,11 @@ select_last prol-src/natded.prolog /^select_last([X],X,[]).$/
send objc-src/Subprocess.m /^- send:(const char *)string withNewline:(BOOL)want/
send objc-src/Subprocess.m /^- send:(const char *)string$/
separator_names c-src/emacs/src/keyboard.c 7372
+sepspaces tex-src/texinfo.tex /^\\gdef\\sepspaces{\\def {\\ }}}$/
serializeToVars php-src/lce_functions.php /^ function serializeToVars($prefix)$/
set cp-src/conway.hpp /^ void set(void) { alive = 1; }$/
set merc-src/accumulator.m /^:- import_module set.$/
+set tex-src/texinfo.tex /^\\def\\set{\\parsearg\\setxxx}$/
set-input-interrupt-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-interrupt-mode", Fset_input_inte/
set-input-meta-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-meta-mode", Fset_input_meta_mode/
set-input-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-mode", Fset_input_mode, Sset_inp/
@@ -3971,9 +4065,24 @@ set_symbol_next c-src/emacs/src/lisp.h /^set_symbol_next (Lisp_Object sym, struc
set_symbol_plist c-src/emacs/src/lisp.h /^set_symbol_plist (Lisp_Object sym, Lisp_Object pli/
set_upto merc-src/accumulator.m /^:- func set_upto(accu_case, int) = set(accu_goal_i/
set_waiting_for_input c-src/emacs/src/keyboard.c /^set_waiting_for_input (struct timespec *time_to_cl/
+setchapternewpage tex-src/texinfo.tex /^\\def\\setchapternewpage #1 {\\csname CHAPPAG#1\\endcs/
+setchapterstyle tex-src/texinfo.tex /^\\def\\setchapterstyle #1 {\\csname CHAPF#1\\endcsname/
+setdeffont tex-src/texinfo.tex /^\\def\\setdeffont #1 {\\csname DEF#1\\endcsname}$/
+setfilename tex-src/texinfo.tex /^ \\global\\let\\setfilename=\\comment % Ignore extra/
+setfilename tex-src/texinfo.tex /^\\def\\setfilename{%$/
+setref tex-src/texinfo.tex /^\\def\\setref#1{%$/
setref tex-src/texinfo.tex /^\\expandafter\\expandafter\\expandafter\\appendixsetre/
+settitle tex-src/texinfo.tex /^\\def\\settitle{\\parsearg\\settitlezzz}$/
+settitlezzz tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/
setup cp-src/c.C 5
+setxxx tex-src/texinfo.tex /^\\def\\setxxx #1{$/
+sf tex-src/texinfo.tex /^\\def\\sf{\\fam=\\sffam \\tensf}$/
+sf tex-src/texinfo.tex /^\\def\\sf{\\realbackslash sf}%$/
+sf tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/
shift cp-src/functions.cpp /^void Date::shift ( void ){\/\/Shift this date to pre/
+shortchapentry tex-src/texinfo.tex /^\\def\\shortchapentry#1#2#3{%$/
+shortcontents tex-src/texinfo.tex /^\\let\\shortcontents = \\summarycontents$/
+shortunnumberedentry tex-src/texinfo.tex /^\\def\\shortunnumberedentry#1#2{%$/
shouldLoad objc-src/PackInsp.m /^-(BOOL)shouldLoad$/
should_attempt_accu_transform merc-src/accumulator.m /^:- pred should_attempt_accu_transform(module_info:/
should_attempt_accu_transform_2 merc-src/accumulator.m /^:- pred should_attempt_accu_transform_2(module_inf/
@@ -3991,6 +4100,9 @@ signal_handler_t c-src/h.h 94
simulation html-src/software.html /^Software that I wrote for supporting my research a/
single_kboard c-src/emacs/src/keyboard.c 89
single_kboard_state c-src/emacs/src/keyboard.c /^single_kboard_state ()$/
+singlecodeindexer tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/
+singleindexer tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/
+singlespace tex-src/texinfo.tex /^\\def\\singlespace{%$/
site cp-src/conway.hpp /^ site(int xi, int yi): x(xi), y(yi), alive(0) {/
site cp-src/conway.hpp 5
size c-src/emacs/src/gmalloc.c 156
@@ -4004,20 +4116,45 @@ skeyseen c-src/etags.c 2445
skip_name c-src/etags.c /^skip_name (char *cp)$/
skip_non_spaces c-src/etags.c /^skip_non_spaces (char *cp)$/
skip_spaces c-src/etags.c /^skip_spaces (char *cp)$/
+sl tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/
+sl tex-src/texinfo.tex /^\\def\\sl{\\realbackslash sl }%$/
+smallbook tex-src/texinfo.tex /^\\def\\smallbook{$/
+smallbook tex-src/texinfo.tex /^\\let\\smallbook=\\relax$/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\indbf \\let\\tentt=\\indtt \\let\\smallca/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\secbf \\let\\tentt=\\sectt \\let\\smallca/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\ssecbf \\let\\tentt=\\ssectt \\let\\small/
+smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\textbf \\let\\tentt=\\texttt \\let\\small/
+smallexample tex-src/texinfo.tex /^\\global\\let\\smallexample=\\smalllispx$/
+smallexample tex-src/texinfo.tex /^\\let\\smallexample=\\lisp$/
+smalllisp tex-src/texinfo.tex /^\\global\\let\\smalllisp=\\smalllispx$/
+smalllispx tex-src/texinfo.tex /^\\def\\smalllispx{\\aboveenvbreak\\begingroup\\inENV$/
+smartitalic tex-src/texinfo.tex /^\\def\\smartitalic#1{{\\sl #1}\\futurelet\\next\\smartit/
+smartitalicx tex-src/texinfo.tex /^\\def\\smartitalicx{\\ifx\\next,\\else\\ifx\\next-\\else\\i/
snarf-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar snarf-tag-function nil$/
snone c-src/etags.c 2443
solutions merc-src/accumulator.m /^:- import_module solutions.$/
some_mouse_moved c-src/emacs/src/keyboard.c /^some_mouse_moved (void)$/
+sp tex-src/texinfo.tex /^\\def\\sp{\\parsearg\\spxxx}$/
space tex-src/texinfo.tex /^ {#2\\labelspace #1}\\dotfill\\doshortpageno{#3}}%/
space tex-src/texinfo.tex /^ \\dosubsubsecentry{#2.#3.#4.#5\\labelspace#1}{#6}}/
+space tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/
+space tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/
+space tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
spacer c-src/emacs/src/lisp.h 1975
spacer c-src/emacs/src/lisp.h 1982
spacer c-src/emacs/src/lisp.h 2036
spacer c-src/emacs/src/lisp.h 2205
+spacesplit tex-src/texinfo.tex /^\\gdef\\spacesplit#1#2^^M{\\endgroup\\spacesplitfoo{#1/
+spacesplitfoo tex-src/texinfo.tex /^\\long\\gdef\\spacesplitfoo#1#2 #3#4\\spacesplitfoo{%$/
specbind_tag c-src/emacs/src/lisp.h 2943
specbinding c-src/emacs/src/lisp.h 2955
+specheader tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
specialsymbol prol-src/natded.prolog /^specialsymbol(C1,C2,S):-$/
+specx\defspecheader tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/
splitexp prol-src/natded.prolog /^splitexp(E,E,('NIL','NIL')):-!.$/
+splitoff tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/
+spxxx tex-src/texinfo.tex /^\\def\\spxxx #1{\\par \\vskip #1\\baselineskip}$/
srclist make-src/Makefile /^srclist: Makefile$/
ss3 c.c 255
sss1 c.c 252
@@ -4049,6 +4186,8 @@ start php-src/lce_functions.php /^ function start($line, $class)$/
start y-src/cccp.y 143
start_polling c-src/emacs/src/keyboard.c /^start_polling (void)$/
start_up prol-src/natded.prolog /^start_up:-$/
+startcontents tex-src/texinfo.tex /^\\def\\startcontents#1{%$/
+startenumeration tex-src/texinfo.tex /^\\def\\startenumeration#1{%$/
state_protected_p c-src/emacs/src/gmalloc.c 400
statetable html-src/algrthms.html /^Next$/
staticetags make-src/Makefile /^staticetags:$/
@@ -4068,24 +4207,59 @@ stripLine php-src/lce_functions.php /^ function stripLine($line, $class)$/
stripname pas-src/common.pas /^function stripname; (* ($/
strncaseeq c-src/etags.c /^#define strncaseeq(s,t,n) (assert ((s)!=NULL && (t/
strneq c-src/etags.c /^#define strneq(s,t,n) (assert ((s)!=NULL || (t)!=N/
+strong tex-src/texinfo.tex /^\\let\\strong=\\b$/
+strong tex-src/texinfo.tex /^\\let\\strong=\\indexdummyfont$/
structdef c-src/etags.c 2448
stuff_buffered_input c-src/emacs/src/keyboard.c /^stuff_buffered_input (Lisp_Object stuffstring)$/
+subheading tex-src/texinfo.tex /^\\def\\subheading{\\parsearg\\subsecheadingi}$/
subprocess objc-src/PackInsp.m /^-subprocess:(Subprocess *)sender output:(char *)bu/
subprocessDone objc-src/PackInsp.m /^-subprocessDone:(Subprocess *)sender$/
-subsec=\relax tex-src/texinfo.tex /^\\let\\appendixsubsec=\\relax$/
+subsec tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/
+subsec tex-src/texinfo.tex /^\\let\\subsec=\\relax$/
+subsecentry tex-src/texinfo.tex /^ \\def\\subsecentry ##1##2##3##4##5{}$/
+subsecentry tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/
+subsecentryfonts tex-src/texinfo.tex /^\\let\\subsecentryfonts = \\textfonts$/
+subsecfonts tex-src/texinfo.tex /^\\def\\subsecfonts{%$/
+subsecheading tex-src/texinfo.tex /^\\def\\subsecheading #1#2#3#4{\\subsecheadingi {#2.#3/
+subsecheadingbreak tex-src/texinfo.tex /^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/
+subsecheadingi tex-src/texinfo.tex /^\\def\\subsecheadingi #1{{\\advance \\subsecheadingski/
subsection perl-src/htlmify-cystic 26
-subsection=\relax tex-src/texinfo.tex /^\\let\\appendixsubsection=\\relax$/
+subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/
+subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/
+subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\unnumberedsubsec$/
+subsection tex-src/texinfo.tex /^\\let\\subsection=\\relax$/
subsection_marker perl-src/htlmify-cystic 161
+subseczzz tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/
+subseczzz tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/
subst prol-src/natded.prolog /^subst(var(Y),var(X),M,N):-$/
substitute c-src/etags.c /^substitute (char *in, char *out, struct re_registe/
-subsubsec=\relax tex-src/texinfo.tex /^\\let\\appendixsubsubsec=\\relax$/
+subsubheading tex-src/texinfo.tex /^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/
+subsubsec tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/
+subsubsec tex-src/texinfo.tex /^\\let\\subsubsec=\\relax$/
+subsubsecentry tex-src/texinfo.tex /^ \\def\\subsubsecentry ##1##2##3##4##5##6{}$/
+subsubsecentry tex-src/texinfo.tex /^\\def\\subsubsecentry#1#2#3#4#5#6{%$/
+subsubsecentryfonts tex-src/texinfo.tex /^\\let\\subsubsecentryfonts = \\textfonts$/
+subsubsecfonts tex-src/texinfo.tex /^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/
+subsubsecheading tex-src/texinfo.tex /^\\def\\subsubsecheading #1#2#3#4#5{\\subsubsecheading/
+subsubsecheadingi tex-src/texinfo.tex /^\\def\\subsubsecheadingi #1{{\\advance \\subsecheading/
subsubsection perl-src/htlmify-cystic 27
-subsubsection=\relax tex-src/texinfo.tex /^\\let\\appendixsubsubsection=\\relax$/
+subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/
+subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/
+subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\unnumberedsubsubsec$/
+subsubsection tex-src/texinfo.tex /^\\let\\subsubsection=\\relax$/
+subsubseczzz tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/
+subsubseczzz tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/
+subtitle tex-src/texinfo.tex /^ \\def\\subtitle{\\parsearg\\subtitlezzz}%$/
+subtitlefont tex-src/texinfo.tex /^ \\def\\subtitlefont{\\subtitlerm \\normalbaselinesk/
+subtitlerm tex-src/texinfo.tex /^ \\let\\subtitlerm=\\tenrm$/
+subtitlezzz tex-src/texinfo.tex /^ \\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/
subtle ruby-src/test1.ru /^ :tee ; attr_reader :subtle$/
subtree prol-src/natded.prolog /^subtree(T,T).$/
suffix c-src/etags.c 186
suffixes c-src/etags.c 195
suggest_asking_for_help c-src/etags.c /^suggest_asking_for_help (void)$/
+summarycontents tex-src/texinfo.tex /^\\outer\\def\\summarycontents{%$/
+supereject tex-src/texinfo.tex /^\\def\\supereject{\\par\\penalty -20000\\footnoteno =0 /
suspend-emacs c-src/emacs/src/keyboard.c /^DEFUN ("suspend-emacs", Fsuspend_emacs, Ssuspend_e/
sval y-src/cccp.y 116
swallow_events c-src/emacs/src/keyboard.c /^swallow_events (bool do_display)$/
@@ -4100,6 +4274,8 @@ syms_of_abbrev c-src/abbrev.c /^syms_of_abbrev ()$/
syms_of_keyboard c-src/emacs/src/keyboard.c /^syms_of_keyboard (void)$/
synchronize_system_messages_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_messages_locale (vo/
synchronize_system_time_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_time_locale (void) /
+syncodeindex tex-src/texinfo.tex /^\\def\\syncodeindex #1 #2 {%$/
+synindex tex-src/texinfo.tex /^\\def\\synindex #1 #2 {%$/
syntax c-src/emacs/src/regex.h 350
sys_jmp_buf c-src/emacs/src/lisp.h 2906
sys_jmp_buf c-src/emacs/src/lisp.h 2910
@@ -4112,12 +4288,20 @@ sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) setjmp (j)$/
sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) sigsetjmp (j, 0)$/
syscall_error c-src/sysdep.h 34
t cp-src/c.C 52
+t tex-src/texinfo.tex /^\\def\\t##1{\\realbackslash r {##1}}%$/
+t tex-src/texinfo.tex /^\\def\\t#1{{\\tt \\exhyphenpenalty=10000\\rawbackslash /
+t tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/
+t tex-src/texinfo.tex /^\\let\\t=\\indexdummyfont$/
t1 cp-src/c.C 34
t2 cp-src/c.C 38
tab_count_words c-src/tab.c /^int tab_count_words(char **tab)$/
tab_delete_first c-src/tab.c /^int tab_delete_first(char **tab)$/
tab_fill c-src/tab.c /^char **tab_fill(char *str, char delim)$/
tab_free c-src/tab.c /^void tab_free(char **tab)$/
+table tex-src/texinfo.tex /^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspaces\\/
+tablex tex-src/texinfo.tex /^\\gdef\\tablex #1^^M{%$/
+tabley tex-src/texinfo.tex /^\\gdef\\tabley#1#2 #3 #4 #5 #6 #7\\endtabley{\\endgrou/
+tablez tex-src/texinfo.tex /^\\def\\tablez #1#2#3#4#5#6{%$/
tag-any-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-any-match-p (_tag)$/
tag-exact-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-file-name-match-p (tag)$/
tag-exact-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-match-p (tag)$/
@@ -4196,12 +4380,75 @@ tags-tag-face el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-tag-face 'd
tags-verify-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-verify-table (file)$/
tags-with-face el-src/emacs/lisp/progmodes/etags.el /^(defmacro tags-with-face (face &rest body)$/
target_multibyte c-src/emacs/src/regex.h 407
+tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}$/
+tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}%$/
+tclose tex-src/texinfo.tex /^\\def\\tclose#1{{\\rm \\tcloserm=\\fontdimen2\\font \\tt /
+tclose tex-src/texinfo.tex /^\\let\\tclose=\\indexdummyfont$/
tcpdump html-src/software.html /^tcpdump$/
teats cp-src/c.C 127
tee ruby-src/test1.ru /^ attr_accessor :tee$/
tee= ruby-src/test1.ru /^ attr_accessor :tee$/
+temp tex-src/texinfo.tex /^\\edef\\temp{%$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash chapentry $/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash chapentry {#1}{\\the\\cha/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash secentry %$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash subsecentry %$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash subsubsecentry %$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash subsubsecentry{#1}%$/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbchapentry {#1}{\\n/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbsecentry{#1}{\\noe/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbsubsecentry{#1}{\\/
+temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbsubsubsecentry{#1/
+temp tex-src/texinfo.tex /^\\else \\let\\temp=\\ifclearfail \\fi$/
+temp tex-src/texinfo.tex /^\\else \\let\\temp=\\relax \\fi$/
+temp tex-src/texinfo.tex /^\\expandafter\\ifx\\csname IF#1\\endcsname\\relax \\let\\/
+temp1 tex-src/texinfo.tex /^\\xdef\\temp1{#2 #3}%$/
+temp1 tex-src/texinfo.tex /^\\xdef\\temp1{#2}%$/
temporarily_switch_to_single_kboard c-src/emacs/src/keyboard.c /^temporarily_switch_to_single_kboard (struct frame /
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\indbf \\let\\tentt=\\indtt \\let\\smallca/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\secbf \\let\\tentt=\\sectt \\let\\smallca/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\ssecbf \\let\\tentt=\\ssectt \\let\\small/
+tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\textbf \\let\\tentt=\\texttt \\let\\small/
+tenbf tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
tend c-src/etags.c 2432
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\chapsf \\let\\teni=\\chapi \\let\\tensy=\\/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\indsf \\let\\teni=\\indi \\let\\tensy=\\in/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\secsf \\let\\teni=\\seci \\let\\tensy=\\se/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\ssecsf \\let\\teni=\\sseci \\let\\tensy=\\/
+teni tex-src/texinfo.tex /^ \\let\\tensf=\\textsf \\let\\teni=\\texti \\let\\tensy=\\/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\chaprm \\let\\tenit=\\chapit \\let\\tensl/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\indrm \\let\\tenit=\\indit \\let\\tensl=\\/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\secrm \\let\\tenit=\\secit \\let\\tensl=\\/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\ssecrm \\let\\tenit=\\ssecit \\let\\tensl/
+tenit tex-src/texinfo.tex /^ \\let\\tenrm=\\textrm \\let\\tenit=\\textit \\let\\tensl/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\chaprm \\let\\tenit=\\chapit \\let\\tensl/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\indrm \\let\\tenit=\\indit \\let\\tensl=\\/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\secrm \\let\\tenit=\\secit \\let\\tensl=\\/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\ssecrm \\let\\tenit=\\ssecit \\let\\tensl/
+tenrm tex-src/texinfo.tex /^ \\let\\tenrm=\\textrm \\let\\tenit=\\textit \\let\\tensl/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\chapsf \\let\\teni=\\chapi \\let\\tensy=\\/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\indsf \\let\\teni=\\indi \\let\\tensy=\\in/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\secsf \\let\\teni=\\seci \\let\\tensy=\\se/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\ssecsf \\let\\teni=\\sseci \\let\\tensy=\\/
+tensf tex-src/texinfo.tex /^ \\let\\tensf=\\textsf \\let\\teni=\\texti \\let\\tensy=\\/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\chaprm \\let\\tenit=\\chapit \\let\\tensl/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\indrm \\let\\tenit=\\indit \\let\\tensl=\\/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\secrm \\let\\tenit=\\secit \\let\\tensl=\\/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\ssecrm \\let\\tenit=\\ssecit \\let\\tensl/
+tensl tex-src/texinfo.tex /^ \\let\\tenrm=\\textrm \\let\\tenit=\\textit \\let\\tensl/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\chapsf \\let\\teni=\\chapi \\let\\tensy=\\/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\indsf \\let\\teni=\\indi \\let\\tensy=\\in/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\secsf \\let\\teni=\\seci \\let\\tensy=\\se/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\ssecsf \\let\\teni=\\sseci \\let\\tensy=\\/
+tensy tex-src/texinfo.tex /^ \\let\\tensf=\\textsf \\let\\teni=\\texti \\let\\tensy=\\/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\indbf \\let\\tentt=\\indtt \\let\\smallca/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\secbf \\let\\tentt=\\sectt \\let\\smallca/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\ssecbf \\let\\tentt=\\ssectt \\let\\small/
+tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\textbf \\let\\tentt=\\texttt \\let\\small/
+tentt tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+tentt tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/
term merc-src/accumulator.m /^:- import_module term.$/
terminate objc-src/Subprocess.m /^- terminate:sender$/
terminateInput objc-src/Subprocess.m /^- terminateInput$/
@@ -4216,7 +4463,12 @@ test.me22b lua-src/test.lua /^ local function test.me22b (one)$/
test.me_22a lua-src/test.lua /^ function test.me_22a(one, two)$/
test1 rs-src/test.rs /^fn test1() {$/
test_undefined c-src/emacs/src/keyboard.c /^test_undefined (Lisp_Object binding)$/
+tex tex-src/texinfo.tex /^\\def\\tex{\\begingroup$/
+texinfoversion tex-src/texinfo.tex /^\\def\\texinfoversion{2.73}$/
+textfonts tex-src/texinfo.tex /^\\def\\textfonts{%$/
texttreelist prol-src/natded.prolog /^texttreelist([]).$/
+thearg tex-src/texinfo.tex /^ \\def\\thearg{#1}%$/
+thearg tex-src/texinfo.tex /^ \\ifx\\thearg\\empty \\def\\thearg{1}\\fi$/
there-is-a-=-in-the-middle! scm-src/test.scm /^(define (there-is-a-=-in-the-middle!) #t)$/
this c-src/a/b/b.c 1
this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys", Fthis_command_keys, St/
@@ -4228,6 +4480,30 @@ this_command_key_count_reset c-src/emacs/src/keyboard.c 112
this_command_keys c-src/emacs/src/keyboard.c 107
this_file_toc perl-src/htlmify-cystic 29
this_single_command_key_start c-src/emacs/src/keyboard.c 125
+thischapter tex-src/texinfo.tex /^ \\unnumbchapmacro{#1}\\def\\thischapter{}%$/
+thischapter tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/
+thischapter tex-src/texinfo.tex /^\\gdef\\thischapter{#1}\\gdef\\thissection{#1}%$/
+thischapter tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix \\appendixletter: \\noexp/
+thischapter tex-src/texinfo.tex /^\\xdef\\thischapter{Chapter \\the\\chapno: \\noexpand\\t/
+thischaptername tex-src/texinfo.tex /^\\def\\thischaptername{No Chapter Title}$/
+thischaptername tex-src/texinfo.tex /^\\gdef\\thischaptername{#1}%$/
+thisfile tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/
+thisfile tex-src/texinfo.tex /^\\def\\thisfile{}$/
+thisfootno tex-src/texinfo.tex /^\\edef\\thisfootno{$^{\\the\\footnoteno}$}%$/
+thispage tex-src/texinfo.tex /^\\let\\thispage=\\folio$/
+thissection tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/
+thissection tex-src/texinfo.tex /^\\gdef\\thischapter{#1}\\gdef\\thissection{#1}%$/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}%$/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\global\\advance \\subsubsecno /
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\appendixlet/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\the\\chapno}/
+thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\subsubsecno=0 \\global\\advanc/
+thissection tex-src/texinfo.tex /^\\plainsecheading {#1}\\gdef\\thissection{#1}%$/
+thistitle tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/
+thistitle tex-src/texinfo.tex /^\\def\\thistitle{No Title}$/
+three tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+threex tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/
+tie tex-src/texinfo.tex /^\\def\\tie{\\penalty 10000\\ } % Save plain tex de/
tignore c-src/etags.c 2433
timer_check c-src/emacs/src/keyboard.c /^timer_check (void)$/
timer_check_2 c-src/emacs/src/keyboard.c /^timer_check_2 (Lisp_Object timers, Lisp_Object idl/
@@ -4238,9 +4514,16 @@ timer_start_idle c-src/emacs/src/keyboard.c /^timer_start_idle (void)$/
timer_stop_idle c-src/emacs/src/keyboard.c /^timer_stop_idle (void)$/
timers_run c-src/emacs/src/keyboard.c 320
tinbody c-src/etags.c 2431
+tindex tex-src/texinfo.tex /^\\def\\tindex {\\tpindex}$/
+title tex-src/texinfo.tex /^ \\def\\title{\\parsearg\\titlezzz}%$/
+titlefont tex-src/texinfo.tex /^\\def\\titlefont#1{{\\titlerm #1}}$/
+titlepage tex-src/texinfo.tex /^\\def\\titlepage{\\begingroup \\parindent=0pt \\textfon/
+titlepage tex-src/texinfo.tex /^\\let\\titlepage=\\relax$/
+titlezzz tex-src/texinfo.tex /^ \\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/
tkeyseen c-src/etags.c 2429
tnone c-src/etags.c 2428
toc_line perl-src/htlmify-cystic /^sub toc_line ($)$/
+today tex-src/texinfo.tex /^\\def\\today{\\number\\day\\space$/
toggleDescription objc-src/PackInsp.m /^-toggleDescription$/
tok c-src/etags.c 2491
token c-src/etags.c 2508
@@ -4253,6 +4536,8 @@ tool_bar_item_properties c-src/emacs/src/keyboard.c 7970
tool_bar_items c-src/emacs/src/keyboard.c /^tool_bar_items (Lisp_Object reuse, int *nitems)$/
tool_bar_items_vector c-src/emacs/src/keyboard.c 7965
toolkit_menubar_in_use c-src/emacs/src/keyboard.c /^toolkit_menubar_in_use (struct frame *f)$/
+top tex-src/texinfo.tex /^\\let\\top=\\relax$/
+top tex-src/texinfo.tex /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/
top-level c-src/emacs/src/keyboard.c /^DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, /
top_level merc-src/accumulator.m /^:- type top_level$/
top_level_1 c-src/emacs/src/keyboard.c /^top_level_1 (Lisp_Object ignore)$/
@@ -4261,17 +4546,26 @@ total_keys c-src/emacs/src/keyboard.c 97
total_size_of_entries c-src/etags.c /^total_size_of_entries (register node *np)$/
total_surrounding cp-src/conway.cpp /^int site::total_surrounding(void)$/
totally_unblock_input c-src/emacs/src/keyboard.c /^totally_unblock_input (void)$/
+tpargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\deftpargs{#3}\\endgrou/
tpcmd c-src/h.h 15
tpcmd c-src/h.h 8
+tpheader tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+tpx\deftpheader tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
track-mouse c-src/emacs/src/keyboard.c /^DEFUN ("internal--track-mouse", Ftrack_mouse, Stra/
tracking_off c-src/emacs/src/keyboard.c /^tracking_off (Lisp_Object old_value)$/
traffic_light cp-src/conway.cpp /^void traffic_light(int x, int y)$/
translate c-src/emacs/src/regex.h 361
treats cp-src/c.C 131
tt prol-src/natded.prolog /^tt:-$/
-tt=cmtt10 tex-src/texinfo.tex /^\\font\\deftt=cmtt10 scaled \\magstep1$/
+tt tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/
+tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}$/
+tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}%$/
+tt tex-src/texinfo.tex /^\\font\\deftt=cmtt10 scaled \\magstep1$/
+tt tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/
+ttfont tex-src/texinfo.tex /^\\let\\ttfont = \\t$/
tty_read_avail_input c-src/emacs/src/keyboard.c /^tty_read_avail_input (struct terminal *terminal,$/
ttypeseen c-src/etags.c 2430
+turnoffactive tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/
typdef c-src/etags.c 2434
type c-src/emacs/src/gmalloc.c 145
type c-src/emacs/src/lisp.h 1973
@@ -4286,10 +4580,21 @@ type c-src/emacs/src/lisp.h 2304
type c-src/emacs/src/lisp.h 2364
type c-src/emacs/src/lisp.h 3025
type c-src/etags.c 2271
+typefnheader tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
+typefnheaderx tex-src/texinfo.tex /^\\def\\deftypefnheader #1#2#3{\\deftypefnheaderx{#1}{/
+typefnx\deftypefnheader tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/
typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#3}\\endgroup %$/
typefunargs tex-src/texinfo.tex /^\\deftypefunargs {#4}\\endgroup %$/
+typefunheader tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
+typefunheaderx tex-src/texinfo.tex /^\\def\\deftypefunheader #1#2{\\deftypefunheaderx{#1}#/
+typefunx\deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/
typemargin tex-src/texinfo.tex /^\\newskip\\deftypemargin \\deftypemargin=12pt$/
typemargin tex-src/texinfo.tex /^\\rlap{\\rightline{{\\rm #2}\\hskip \\deftypemargin}}}%/
+typemargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip \\deflastargmargin{\\rm #2}\\hs/
+typevarheader tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+typevarx\deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+typevrheader tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+typevrx\deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
u c-src/emacs/src/lisp.h 2397
u_any c-src/emacs/src/lisp.h 2214
u_boolfwd c-src/emacs/src/lisp.h 2371
@@ -4302,13 +4607,44 @@ u_marker c-src/emacs/src/lisp.h 2216
u_objfwd c-src/emacs/src/lisp.h 2372
u_overlay c-src/emacs/src/lisp.h 2217
u_save_value c-src/emacs/src/lisp.h 2218
+unargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defunargs{#3}\\endgrou/
unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/
unargs tex-src/texinfo.tex /^\\defunargs {#3}\\endgroup %$/
unblock_input c-src/emacs/src/keyboard.c /^unblock_input (void)$/
unblock_input_to c-src/emacs/src/keyboard.c /^unblock_input_to (int level)$/
unchar c-src/h.h 99
unexpand-abbrev c-src/abbrev.c /^DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexp/
+unheader tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
univ merc-src/accumulator.m /^:- import_module univ.$/
+unnchfopen tex-src/texinfo.tex /^\\def\\unnchfopen #1{%$/
+unnchfplain tex-src/texinfo.tex /^\\def\\unnchfplain #1{%$/
+unnumbchapentry tex-src/texinfo.tex /^ \\let\\unnumbchapentry = \\shortunnumberedentry/
+unnumbchapentry tex-src/texinfo.tex /^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/
+unnumbchapmacro tex-src/texinfo.tex /^\\global\\let\\unnumbchapmacro=\\unnchfopen}$/
+unnumbchapmacro tex-src/texinfo.tex /^\\global\\let\\unnumbchapmacro=\\unnchfplain}$/
+unnumbered tex-src/texinfo.tex /^\\let\\unnumbered=\\relax$/
+unnumbered tex-src/texinfo.tex /^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/
+unnumberedsec tex-src/texinfo.tex /^\\let\\unnumberedsec=\\relax$/
+unnumberedsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/
+unnumberedsection tex-src/texinfo.tex /^\\let\\unnumberedsection=\\relax$/
+unnumberedseczzz tex-src/texinfo.tex /^\\def\\unnumberedseczzz #1{\\seccheck{unnumberedsec}%/
+unnumberedsubsec tex-src/texinfo.tex /^\\let\\unnumberedsubsec=\\relax$/
+unnumberedsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsec{\\parsearg\\unnumberedsu/
+unnumberedsubsection tex-src/texinfo.tex /^\\let\\unnumberedsubsection=\\relax$/
+unnumberedsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubseczzz #1{\\seccheck{unnumberedsu/
+unnumberedsubsubsec tex-src/texinfo.tex /^\\let\\unnumberedsubsubsec=\\relax$/
+unnumberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/
+unnumberedsubsubsection tex-src/texinfo.tex /^\\let\\unnumberedsubsubsection=\\relax$/
+unnumberedsubsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/
+unnumberedzzz tex-src/texinfo.tex /^\\def\\unnumberedzzz #1{\\seccheck{unnumbered}%$/
+unnumbnoderef tex-src/texinfo.tex /^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/
+unnumbsecentry tex-src/texinfo.tex /^ \\def\\unnumbsecentry ##1##2{}$/
+unnumbsecentry tex-src/texinfo.tex /^\\def\\unnumbsecentry#1#2{\\dosecentry{#1}{#2}}$/
+unnumbsetref tex-src/texinfo.tex /^\\def\\unnumbsetref#1{%$/
+unnumbsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsecentry ##1##2{}$/
+unnumbsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsecentry#1#2{\\dosubsecentry{#1}{#2}}/
+unnumbsubsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsubsecentry ##1##2{}$/
+unnumbsubsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/
unravel_univ merc-src/accumulator.m /^:- some [T] pred unravel_univ(univ::in, T::out) is/
unread_switch_frame c-src/emacs/src/keyboard.c 204
unsignedp y-src/cccp.y 112
@@ -4316,7 +4652,9 @@ unwind c-src/emacs/src/lisp.h 2962
unwind_int c-src/emacs/src/lisp.h 2972
unwind_ptr c-src/emacs/src/lisp.h 2967
unwind_void c-src/emacs/src/lisp.h 2976
+unx\defunheader tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/
update_accumulator_pred merc-src/accumulator.m /^:- pred update_accumulator_pred(pred_id::in, proc_/
+uppercaseenumerate tex-src/texinfo.tex /^\\def\\uppercaseenumerate{%$/
uprintmax_t c-src/emacs/src/lisp.h 149
uprintmax_t c-src/emacs/src/lisp.h 154
usage perl-src/yagrip.pl /^sub usage {$/
@@ -4343,20 +4681,45 @@ value c-src/emacs/src/lisp.h 687
value y-src/cccp.y 112
var c-src/emacs/src/keyboard.c 11023
var c-src/emacs/src/lisp.h 3137
+var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}$/
+var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}%$/
+var tex-src/texinfo.tex /^\\let\\var=\\indexdummyfont$/
+var tex-src/texinfo.tex /^\\let\\var=\\smartitalic$/
+varargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defvarargs{#3}\\endgro/
+varargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/
varargs tex-src/texinfo.tex /^\\defvarargs {#2}\\endgroup %$/
varargs tex-src/texinfo.tex /^\\defvarargs {#3}\\endgroup %$/
+varheader tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
+varparsebody\Edefopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/
+varparsebody\Edeftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/
+varparsebody\Edefvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
varset merc-src/accumulator.m /^:- import_module varset.$/
+varx\defvarheader tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/
vcopy c-src/emacs/src/lisp.h /^vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Objec/
vectorlike_header c-src/emacs/src/lisp.h 1343
verde cp-src/c.C 40
verify-tags-table-function el-src/emacs/lisp/progmodes/etags.el /^(defvar verify-tags-table-function nil$/
verify_ascii c-src/emacs/src/lisp.h /^# define verify_ascii(str) (str)$/
vignore c-src/etags.c 2417
+vindex tex-src/texinfo.tex /^\\def\\vindex {\\vrindex}$/
visit-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table (file &optional local)$/
visit-tags-table-buffer el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table-buffer (&optional cont)$/
void c-src/emacs/src/lisp.h /^INLINE void (check_cons_list) (void) { lisp_h_chec/
voidfuncptr c-src/emacs/src/lisp.h 2108
voidval y-src/cccp.y 115
+vrheader tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+vritemindex tex-src/texinfo.tex /^\\def\\vritemindex #1{\\doind {vr}{\\code{#1}}}%$/
+vrparsebody\Edefivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/
+vrparsebody\Edeftp tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/
+vrparsebody\Edeftypevr tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/
+vrparsebody\Edefvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+vrx\defvrheader tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/
+vtable tex-src/texinfo.tex /^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/
+vtablex tex-src/texinfo.tex /^\\gdef\\vtablex #1^^M{%$/
+w tex-src/texinfo.tex /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/
+w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w }%$/
+w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w}$/
+w tex-src/texinfo.tex /^\\let\\w=\\indexdummyfont$/
wait_status_ptr_t c.c 161
waiting_for_input c-src/emacs/src/keyboard.c 150
warning y-src/cccp.y /^warning (msg)$/
@@ -4409,13 +4772,25 @@ x-get-selection-internal c.c /^DEFUN ("x-get-selection-internal", Fx_get_selecti
xcar_addr c-src/emacs/src/lisp.h /^xcar_addr (Lisp_Object c)$/
xcdr_addr c-src/emacs/src/lisp.h /^xcdr_addr (Lisp_Object c)$/
xdiff make-src/Makefile /^xdiff: ETAGS EXTAGS ${infiles}$/
+xitem tex-src/texinfo.tex /^\\def\\xitem{\\errmessage{@xitem while not in a table/
+xitem tex-src/texinfo.tex /^\\let\\xitem = \\internalBxitem %$/
+xitemsubtopix tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/
+xitemsubtopix tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/
+xitemx tex-src/texinfo.tex /^\\def\\xitemx{\\errmessage{@xitemx while not in a tab/
+xitemx tex-src/texinfo.tex /^\\let\\xitemx = \\internalBxitemx %$/
+xitemzzz tex-src/texinfo.tex /^\\def\\xitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/
+xkey tex-src/texinfo.tex /^\\def\\xkey{\\key}$/
xmalloc c-src/etags.c /^xmalloc (size_t size)$/
xnew c-src/etags.c /^#define xnew(n, Type) ((Type *) xmalloc ((n) /
+xrdef tex-src/texinfo.tex /^\\def\\xrdef #1#2{$/
xrealloc c-src/etags.c /^xrealloc (void *ptr, size_t size)$/
+xref tex-src/texinfo.tex /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/
xref-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defclass xref-etags-location (xref-location)$/
xref-location-line el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-line ((l xref-etags-lo/
xref-location-marker el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-marker ((l xref-etags-/
xref-make-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defun xref-make-etags-location (tag-info file)$/
+xrefX tex-src/texinfo.tex /^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/
+xreftie tex-src/texinfo.tex /^\\gdef\\xreftie{'tie}$/
xrnew c-src/etags.c /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/
xx make-src/Makefile /^xx="this line is here because of a fontlock bug$/
xyz ruby-src/test1.ru /^ alias_method :xyz,$/
@@ -4475,8 +4850,22 @@ z c.c 144
z c.c 164
z cp-src/clheir.hpp 49
z cp-src/clheir.hpp 58
+zzz tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/
+zzz tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/
+zzz tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/
+zzz tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/
+{ tex-src/texinfo.tex /^\\let\\{=\\mylbrace$/
+{ tex-src/texinfo.tex /^\\let\\{=\\ptexlbrace$/
| tex-src/texinfo.tex /^\\def|{{\\tt \\char '174}}$/
+| tex-src/texinfo.tex /^\\let|=\\normalverticalbar$/
+} tex-src/texinfo.tex /^\\let\\}=\\myrbrace$/
+} tex-src/texinfo.tex /^\\let\\}=\\ptexrbrace$/
+~ tex-src/texinfo.tex /^\\catcode `\\^=7 \\catcode `\\_=8 \\catcode `\\~=13 \\let/
~ tex-src/texinfo.tex /^\\def~{{\\tt \\char '176}}$/
+~ tex-src/texinfo.tex /^\\let~=\\normaltilde$/
~A cp-src/c.C /^A::~A() {}$/
~B cp-src/c.C /^ ~B() {};$/
~MDiagArray2 cp-src/MDiagArray2.h /^ ~MDiagArray2 (void) { }$/
diff --git a/test/manual/etags/ETAGS.good_1 b/test/manual/etags/ETAGS.good_1
index 4baaff4c425..02641980455 100644
--- a/test/manual/etags/ETAGS.good_1
+++ b/test/manual/etags/ETAGS.good_1
@@ -3148,8 +3148,8 @@ scm-src/test.scm,260
(define (((((curry-test \x7f14,205
(define-syntax test-begin\x7f17,265
\f
-tex-src/testenv.tex,52
-\newcommand{\nm}\x7f\nm\x014,77
+tex-src/testenv.tex,51
+\newcommand{\nm}\x7fnm\x014,77
\section{blah}\x7fblah\x018,139
\f
tex-src/gzip.texi,303
@@ -3164,722 +3164,1142 @@ tex-src/gzip.texi,303
@node Problems,\x7f460,16769
@node Concept Index,\x7fConcept Index\x01473,17289
\f
-tex-src/texinfo.tex,30627
-\def\texinfoversion{\x7f\texinfoversion\x0126,1035
-\def\tie{\x7f\tie\x0149,1526
-\def\gloggingall{\x7f\gloggingall\x0172,2276
-\def\loggingall{\x7f\loggingall\x0173,2345
-\def\onepageout#1{\x7f\onepageout\x0199,3282
-\def\croppageout#1{\x7f\croppageout\x01115,4032
-\def\cropmarks{\x7f\cropmarks\x01142,5092
-\def\pagebody#1{\x7f\pagebody\x01144,5139
-\def\ewtop{\x7f\ewtop\x01157,5594
-\def\nstop{\x7f\nstop\x01158,5658
-\def\ewbot{\x7f\ewbot\x01160,5741
-\def\nsbot{\x7f\nsbot\x01161,5805
-\def\parsearg #1{\x7f\parsearg\x01170,6104
-\def\parseargx{\x7f\parseargx\x01172,6182
-\def\parseargline{\x7f\parseargline\x01182,6422
-\def\flushcr{\x7f\flushcr\x01186,6543
-\newif\ifENV \ENVfalse \def\inENV{\x7f\inENV\x01190,6742
-\def\ENVcheck{\x7f\ENVcheck\x01191,6806
-\outer\def\begin{\x7f\begin\x01198,7053
-\def\beginxxx #1{\x7f\beginxxx\x01200,7091
-\def\end{\x7f\end\x01208,7346
-\def\endxxx #1{\x7f\endxxx\x01210,7374
-\def\errorE#1{\x7f\errorE\x01216,7563
-\def\singlespace{\x7f\singlespace\x01222,7757
-\def\@{\x7f\@\x01232,7980
-\def\`{\x7f\`\x01236,8080
-\def\'{\x7f\'\x01237,8092
-\def\mylbrace {\x7f\mylbrace\x01241,8140
-\def\myrbrace {\x7f\myrbrace\x01242,8173
-\def\:{\x7f\:\x01247,8287
-\def\*{\x7f\*\x01250,8341
-\def\.{\x7f\.\x01253,8417
-\def\w#1{\x7f\w\x01258,8648
-\def\group{\x7f\group\x01268,9131
- \def\Egroup{\x7f\Egroup\x01273,9295
-\def\need{\x7f\need\x01289,9737
-\def\needx#1{\x7f\needx\x01300,10014
-\def\dots{\x7f\dots\x01339,11400
-\def\page{\x7f\page\x01343,11464
-\def\exdent{\x7f\exdent\x01353,11791
-\def\exdentyyy #1{\x7f\exdentyyy\x01354,11824
-\def\nofillexdent{\x7f\nofillexdent\x01357,11968
-\def\nofillexdentyyy #1{\x7f\nofillexdentyyy\x01358,12013
-\def\include{\x7f\include\x01365,12197
-\def\includezzz #1{\x7f\includezzz\x01366,12232
-\def\thisfile{\x7f\thisfile\x01369,12283
-\def\center{\x7f\center\x01373,12346
-\def\centerzzz #1{\x7f\centerzzz\x01374,12379
-\def\sp{\x7f\sp\x01380,12521
-\def\spxxx #1{\x7f\spxxx\x01381,12546
-\def\comment{\x7f\comment\x01387,12720
-\def\commentxxx #1{\x7f\commentxxx\x01390,12817
-\def\ignoresections{\x7f\ignoresections\x01396,12986
-\let\chapter=\relax\x7f=\relax\x01397,13008
-\let\section=\relax\x7f=\relax\x01406,13253
-\let\subsection=\relax\x7f=\relax\x01409,13314
-\let\subsubsection=\relax\x7f=\relax\x01410,13337
-\let\appendix=\relax\x7f=\relax\x01411,13363
-\let\appendixsec=\relax\x7fsec=\relax\x01412,13384
-\let\appendixsection=\relax\x7fsection=\relax\x01413,13408
-\let\appendixsubsec=\relax\x7fsubsec=\relax\x01414,13436
-\let\appendixsubsection=\relax\x7fsubsection=\relax\x01415,13463
-\let\appendixsubsubsec=\relax\x7fsubsubsec=\relax\x01416,13494
-\let\appendixsubsubsection=\relax\x7fsubsubsection=\relax\x01417,13524
-\def\ignore{\x7f\ignore\x01423,13626
-\long\def\ignorexxx #1\end ignore{\x7f\ignorexxx\x01427,13766
-\def\direntry{\x7f\direntry\x01429,13825
-\long\def\direntryxxx #1\end direntry{\x7f\direntryxxx\x01430,13864
-\def\ifset{\x7f\ifset\x01434,13974
-\def\ifsetxxx #1{\x7f\ifsetxxx\x01436,14032
-\def\Eifset{\x7f\Eifset\x01440,14159
-\def\ifsetfail{\x7f\ifsetfail\x01441,14173
-\long\def\ifsetfailxxx #1\end ifset{\x7f\ifsetfailxxx\x01442,14229
-\def\ifclear{\x7f\ifclear\x01444,14290
-\def\ifclearxxx #1{\x7f\ifclearxxx\x01446,14352
-\def\Eifclear{\x7f\Eifclear\x01450,14483
-\def\ifclearfail{\x7f\ifclearfail\x01451,14499
-\long\def\ifclearfailxxx #1\end ifclear{\x7f\ifclearfailxxx\x01452,14559
-\def\set{\x7f\set\x01456,14710
-\def\setxxx #1{\x7f\setxxx\x01457,14737
-\def\clear{\x7f\clear\x01460,14799
-\def\clearxxx #1{\x7f\clearxxx\x01461,14830
-\def\iftex{\x7f\iftex\x01466,14947
-\def\Eiftex{\x7f\Eiftex\x01467,14960
-\def\ifinfo{\x7f\ifinfo\x01468,14974
-\long\def\ifinfoxxx #1\end ifinfo{\x7f\ifinfoxxx\x01469,15024
-\long\def\menu #1\end menu{\x7f\menu\x01471,15083
-\def\asis#1{\x7f\asis\x01472,15112
-\def\math#1{\x7f\math\x01485,15655
-\def\node{\x7f\node\x01487,15699
-\def\nodezzz#1{\x7f\nodezzz\x01488,15737
-\def\nodexxx[#1,#2]{\x7f\nodexxx[\x01489,15768
-\def\donoderef{\x7f\donoderef\x01492,15830
-\def\unnumbnoderef{\x7f\unnumbnoderef\x01496,15951
-\def\appendixnoderef{\x7f\appendixnoderef\x01500,16082
+tex-src/texinfo.tex,55236
+\def\texinfoversion{\x7ftexinfoversion\x0126,1035
+\let\ptexlbrace=\{\x7fptexlbrace\x0135,1308
+\let\ptexrbrace=\}\x7fptexrbrace\x0136,1327
+\let\ptexdots=\dots\x7fptexdots\x0137,1346
+\let\ptexdot=\.\x7fptexdot\x0138,1366
+\let\ptexstar=\*\x7fptexstar\x0139,1382
+\let\ptexend=\end\x7fptexend\x0140,1399
+\let\ptexbullet=\bullet\x7fptexbullet\x0141,1417
+\let\ptexb=\b\x7fptexb\x0142,1441
+\let\ptexc=\c\x7fptexc\x0143,1455
+\let\ptexi=\i\x7fptexi\x0144,1469
+\let\ptext=\t\x7fptext\x0145,1483
+\let\ptexl=\l\x7fptexl\x0146,1497
+\let\ptexL=\L\x7fptexL\x0147,1511
+\def\tie{\x7ftie\x0149,1526
+\def\gloggingall{\x7fgloggingall\x0172,2276
+\def\loggingall{\x7floggingall\x0173,2345
+\def\onepageout#1{\x7fonepageout\x0199,3282
+\shipout\vbox{{\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01103,3489
+{\let\hsize=\pagewidth \makefootline}\x7fhsize\x01104,3556
+\def\croppageout#1{\x7fcroppageout\x01115,4032
+ {\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01126,4511
+ {\let\hsize=\pagewidth \makefootline}\x7fhsize\x01128,4569
+\def\cropmarks{\x7fcropmarks\x01142,5092
+\def\cropmarks{\let\onepageout=\croppageout }\x7fonepageout\x01142,5092
+\def\pagebody#1{\x7fpagebody\x01144,5139
+\gdef\pagecontents#1{\x7fpagecontents\x01146,5220
+\def\ewtop{\x7fewtop\x01157,5594
+\def\nstop{\x7fnstop\x01158,5658
+\def\ewbot{\x7fewbot\x01160,5741
+\def\nsbot{\x7fnsbot\x01161,5805
+\def\parsearg #1{\x7fparsearg\x01170,6104
+\def\parsearg #1{\let\next=#1\begingroup\obeylines\futurelet\temp\parseargx}\x7fnext\x01170,6104
+\def\parseargx{\x7fparseargx\x01172,6182
+\gdef\parseargdiscardspace {\x7fparseargdiscardspace\x01178,6321
+\gdef\obeyedspace{\x7fobeyedspace\x01180,6399
+\def\parseargline{\x7fparseargline\x01182,6422
+\gdef\parsearglinex #1^^M{\x7fparsearglinex\x01184,6493
+\def\flushcr{\x7fflushcr\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{\x7fnext\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}\x7fnext\x01186,6543
+\newif\ifENV \ENVfalse \def\inENV{\x7finENV\x01190,6742
+\def\ENVcheck{\x7fENVcheck\x01191,6806
+\outer\def\begin{\x7fbegin\x01198,7053
+\def\beginxxx #1{\x7fbeginxxx\x01200,7091
+\def\end{\x7fend\x01208,7346
+\def\endxxx #1{\x7fendxxx\x01210,7374
+\def\errorE#1{\x7ferrorE\x01216,7563
+\def\singlespace{\x7fsinglespace\x01222,7757
+\def\@{\x7f@\x01232,7980
+\def\`{\x7f`\x01236,8080
+\def\'{\x7f'\x01237,8092
+\def\mylbrace {\x7fmylbrace\x01241,8140
+\def\myrbrace {\x7fmyrbrace\x01242,8173
+\let\{=\mylbrace\x7f{\x01243,8206
+\let\}=\myrbrace\x7f}\x01244,8223
+\def\:{\x7f:\x01247,8287
+\def\*{\x7f*\x01250,8341
+\def\.{\x7f.\x01253,8417
+\def\w#1{\x7fw\x01258,8648
+\def\group{\x7fgroup\x01268,9131
+ \def\Egroup{\x7fEgroup\x01273,9295
+\def\need{\x7fneed\x01289,9737
+\def\needx#1{\x7fneedx\x01300,10014
+\let\br = \par\x7fbr\x01335,11355
+\def\dots{\x7fdots\x01339,11400
+\def\page{\x7fpage\x01343,11464
+\def\exdent{\x7fexdent\x01353,11791
+\def\exdentyyy #1{\x7fexdentyyy\x01354,11824
+\def\nofillexdent{\x7fnofillexdent\x01357,11968
+\def\nofillexdentyyy #1{\x7fnofillexdentyyy\x01358,12013
+\def\include{\x7finclude\x01365,12197
+\def\includezzz #1{\x7fincludezzz\x01366,12232
+\def\includezzz #1{{\def\thisfile{\x7fthisfile\x01366,12232
+\def\thisfile{\x7fthisfile\x01369,12283
+\def\center{\x7fcenter\x01373,12346
+\def\centerzzz #1{\x7fcenterzzz\x01374,12379
+\def\sp{\x7fsp\x01380,12521
+\def\spxxx #1{\x7fspxxx\x01381,12546
+\def\comment{\x7fcomment\x01387,12720
+\def\commentxxx #1{\x7fcommentxxx\x01390,12817
+\let\c=\comment\x7fc\x01392,12883
+\def\ignoresections{\x7fignoresections\x01396,12986
+\let\chapter=\relax\x7fchapter\x01397,13008
+\let\unnumbered=\relax\x7funnumbered\x01398,13028
+\let\top=\relax\x7ftop\x01399,13051
+\let\unnumberedsec=\relax\x7funnumberedsec\x01400,13067
+\let\unnumberedsection=\relax\x7funnumberedsection\x01401,13093
+\let\unnumberedsubsec=\relax\x7funnumberedsubsec\x01402,13123
+\let\unnumberedsubsection=\relax\x7funnumberedsubsection\x01403,13152
+\let\unnumberedsubsubsec=\relax\x7funnumberedsubsubsec\x01404,13185
+\let\unnumberedsubsubsection=\relax\x7funnumberedsubsubsection\x01405,13217
+\let\section=\relax\x7fsection\x01406,13253
+\let\subsec=\relax\x7fsubsec\x01407,13273
+\let\subsubsec=\relax\x7fsubsubsec\x01408,13292
+\let\subsection=\relax\x7fsubsection\x01409,13314
+\let\subsubsection=\relax\x7fsubsubsection\x01410,13337
+\let\appendix=\relax\x7fappendix\x01411,13363
+\let\appendixsec=\relax\x7fappendixsec\x01412,13384
+\let\appendixsection=\relax\x7fappendixsection\x01413,13408
+\let\appendixsubsec=\relax\x7fappendixsubsec\x01414,13436
+\let\appendixsubsection=\relax\x7fappendixsubsection\x01415,13463
+\let\appendixsubsubsec=\relax\x7fappendixsubsubsec\x01416,13494
+\let\appendixsubsubsection=\relax\x7fappendixsubsubsection\x01417,13524
+\let\contents=\relax\x7fcontents\x01418,13558
+\let\smallbook=\relax\x7fsmallbook\x01419,13579
+\let\titlepage=\relax\x7ftitlepage\x01420,13601
+\def\ignore{\x7fignore\x01423,13626
+\long\def\ignorexxx #1\end ignore{\x7fignorexxx\x01427,13766
+\def\direntry{\x7fdirentry\x01429,13825
+\long\def\direntryxxx #1\end direntry{\x7fdirentryxxx\x01430,13864
+\def\ifset{\x7fifset\x01434,13974
+\def\ifsetxxx #1{\x7fifsetxxx\x01436,14032
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\ifsetfail\x7ftemp\x01437,14059
+\else \let\temp=\relax \fi\x7ftemp\x01438,14125
+\def\Eifset{\x7fEifset\x01440,14159
+\def\ifsetfail{\x7fifsetfail\x01441,14173
+\long\def\ifsetfailxxx #1\end ifset{\x7fifsetfailxxx\x01442,14229
+\def\ifclear{\x7fifclear\x01444,14290
+\def\ifclearxxx #1{\x7fifclearxxx\x01446,14352
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\relax\x7ftemp\x01447,14381
+\else \let\temp=\ifclearfail \fi\x7ftemp\x01448,14443
+\def\Eifclear{\x7fEifclear\x01450,14483
+\def\ifclearfail{\x7fifclearfail\x01451,14499
+\long\def\ifclearfailxxx #1\end ifclear{\x7fifclearfailxxx\x01452,14559
+\def\set{\x7fset\x01456,14710
+\def\setxxx #1{\x7fsetxxx\x01457,14737
+\expandafter\let\csname IF#1\endcsname=\set}\x7fcsname\x01458,14753
+\def\clear{\x7fclear\x01460,14799
+\def\clearxxx #1{\x7fclearxxx\x01461,14830
+\expandafter\let\csname IF#1\endcsname=\relax}\x7fcsname\x01462,14848
+\def\iftex{\x7fiftex\x01466,14947
+\def\Eiftex{\x7fEiftex\x01467,14960
+\def\ifinfo{\x7fifinfo\x01468,14974
+\long\def\ifinfoxxx #1\end ifinfo{\x7fifinfoxxx\x01469,15024
+\long\def\menu #1\end menu{\x7fmenu\x01471,15083
+\def\asis#1{\x7fasis\x01472,15112
+\let\implicitmath = $\x7fimplicitmath\x01484,15633
+\def\math#1{\x7fmath\x01485,15655
+\def\node{\x7fnode\x01487,15699
+\def\nodezzz#1{\x7fnodezzz\x01488,15737
+\def\nodexxx[#1,#2]{\x7fnodexxx\x01489,15768
+\def\nodexxx[#1,#2]{\gdef\lastnode{\x7flastnode\x01489,15768
+\let\lastnode=\relax\x7flastnode\x01490,15808
+\def\donoderef{\x7fdonoderef\x01492,15830
+\let\lastnode=\relax}\x7flastnode\x01494,15928
+\def\unnumbnoderef{\x7funnumbnoderef\x01496,15951
+\let\lastnode=\relax}\x7flastnode\x01498,16059
+\def\appendixnoderef{\x7fappendixnoderef\x01500,16082
\expandafter\expandafter\expandafter\appendixsetref{\x7fsetref\x01501,16128
-\let\refill=\relax\x7fill=\relax\x01504,16217
-\def\setfilename{\x7f\setfilename\x01509,16431
-\outer\def\bye{\x7f\bye\x01518,16677
-\def\inforef #1{\x7f\inforef\x01520,16733
-\def\inforefzzz #1,#2,#3,#4**{\x7f\inforefzzz\x01521,16771
-\def\losespace #1{\x7f\losespace\x01523,16868
-\def\sf{\x7f\sf\x01532,17072
-\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf=cmbx10\x01558,17867
-\font\deftt=cmtt10 scaled \magstep1\x7ftt=cmtt10\x01559,17913
-\def\df{\x7f\df\x01560,17949
-\def\resetmathfonts{\x7f\resetmathfonts\x01635,20543
-\def\textfonts{\x7f\textfonts\x01648,21132
-\def\chapfonts{\x7f\chapfonts\x01653,21347
-\def\secfonts{\x7f\secfonts\x01658,21563
-\def\subsecfonts{\x7f\subsecfonts\x01663,21768
-\def\indexfonts{\x7f\indexfonts\x01668,21985
-\def\smartitalicx{\x7f\smartitalicx\x01691,22717
-\def\smartitalic#1{\x7f\smartitalic\x01692,22793
-\let\cite=\smartitalic\x7f=\smartitalic\x01698,22938
-\def\b#1{\x7f\b\x01700,22962
-\def\t#1{\x7f\t\x01703,22997
-\def\samp #1{\x7f\samp\x01706,23149
-\def\key #1{\x7f\key\x01707,23182
-\def\ctrl #1{\x7f\ctrl\x01708,23243
-\def\tclose#1{\x7f\tclose\x01716,23445
-\def\ {\x7f\\x01720,23611
-\def\xkey{\x7f\xkey\x01728,23880
-\def\kbdfoo#1#2#3\par{\x7f\kbdfoo\x01729,23896
-\def\dmn#1{\x7f\dmn\x01738,24197
-\def\kbd#1{\x7f\kbd\x01740,24224
-\def\l#1{\x7f\l\x01742,24281
-\def\r#1{\x7f\r\x01744,24310
-\def\sc#1{\x7f\sc\x01746,24378
-\def\ii#1{\x7f\ii\x01747,24421
-\def\titlefont#1{\x7f\titlefont\x01755,24654
-\def\titlepage{\x7f\titlepage\x01761,24757
- \def\subtitlefont{\x7f\subtitlefont\x01766,24984
- \def\authorfont{\x7f\authorfont\x01768,25068
- \def\title{\x7f\title\x01774,25278
- \def\titlezzz##1{\x7f\titlezzz\x01775,25313
- \def\subtitle{\x7f\subtitle\x01783,25628
- \def\subtitlezzz##1{\x7f\subtitlezzz\x01784,25669
- \def\author{\x7f\author\x01787,25787
- \def\authorzzz##1{\x7f\authorzzz\x01788,25824
- \def\page{\x7f\page\x01794,26115
-\def\Etitlepage{\x7f\Etitlepage\x01804,26284
-\def\finishtitlepage{\x7f\finishtitlepage\x01817,26672
-\def\evenheading{\x7f\evenheading\x01846,27680
-\def\oddheading{\x7f\oddheading\x01847,27723
-\def\everyheading{\x7f\everyheading\x01848,27764
-\def\evenfooting{\x7f\evenfooting\x01850,27810
-\def\oddfooting{\x7f\oddfooting\x01851,27853
-\def\everyfooting{\x7f\everyfooting\x01852,27894
-\def\headings #1 {\x7f\headings\x01893,29586
-\def\HEADINGSoff{\x7f\HEADINGSoff\x01895,29635
-\def\HEADINGSdouble{\x7f\HEADINGSdouble\x01904,30062
-\def\HEADINGSsingle{\x7f\HEADINGSsingle\x01914,30382
-\def\HEADINGSon{\x7f\HEADINGSon\x01922,30603
-\def\HEADINGSafter{\x7f\HEADINGSafter\x01924,30637
-\def\HEADINGSdoublex{\x7f\HEADINGSdoublex\x01926,30732
-\def\HEADINGSsingleafter{\x7f\HEADINGSsingleafter\x01933,30920
-\def\HEADINGSsinglex{\x7f\HEADINGSsinglex\x01934,30981
-\def\today{\x7f\today\x01943,31256
-\def\thistitle{\x7f\thistitle\x01958,31801
-\def\settitle{\x7f\settitle\x01959,31826
-\def\settitlezzz #1{\x7f\settitlezzz\x01960,31863
-\def\internalBitem{\x7f\internalBitem\x01992,32793
-\def\internalBitemx{\x7f\internalBitemx\x01993,32843
-\def\internalBxitem "#1"{\x7f\internalBxitem\x01995,32888
-\def\internalBxitemx "#1"{\x7f\internalBxitemx\x01996,32968
-\def\internalBkitem{\x7f\internalBkitem\x01998,33043
-\def\internalBkitemx{\x7f\internalBkitemx\x01999,33095
-\def\kitemzzz #1{\x7f\kitemzzz\x011001,33142
-\def\xitemzzz #1{\x7f\xitemzzz\x011004,33244
-\def\itemzzz #1{\x7f\itemzzz\x011007,33347
-\def\item{\x7f\item\x011037,34418
-\def\itemx{\x7f\itemx\x011038,34469
-\def\kitem{\x7f\kitem\x011039,34522
-\def\kitemx{\x7f\kitemx\x011040,34575
-\def\xitem{\x7f\xitem\x011041,34630
-\def\xitemx{\x7f\xitemx\x011042,34683
-\def\description{\x7f\description\x011045,34793
-\def\table{\x7f\table\x011047,34843
-\def\ftable{\x7f\ftable\x011052,34987
-\def\Eftable{\x7f\Eftable\x011056,35133
-\def\vtable{\x7f\vtable\x011059,35202
-\def\Evtable{\x7f\Evtable\x011063,35348
-\def\dontindex #1{\x7f\dontindex\x011066,35417
-\def\fnitemindex #1{\x7f\fnitemindex\x011067,35437
-\def\vritemindex #1{\x7f\vritemindex\x011068,35482
-\def\tablez #1#2#3#4#5#6{\x7f\tablez\x011074,35631
-\def\Edescription{\x7f\Edescription\x011077,35689
-\def\itemfont{\x7f\itemfont\x011082,35890
-\def\Etable{\x7f\Etable\x011090,36116
-\def\itemize{\x7f\itemize\x011103,36440
-\def\itemizezzz #1{\x7f\itemizezzz\x011105,36476
-\def\itemizey #1#2{\x7f\itemizey\x011110,36571
-\def#2{\x7f1119,36817
-\def\itemcontents{\x7f\itemcontents\x011120,36858
-\def\bullet{\x7f\bullet\x011123,36906
-\def\minus{\x7f\minus\x011124,36933
-\def\frenchspacing{\x7f\frenchspacing\x011128,37041
-\def\splitoff#1#2\endmark{\x7f\splitoff\x011134,37266
-\def\enumerate{\x7f\enumerate\x011140,37496
-\def\enumeratezzz #1{\x7f\enumeratezzz\x011141,37535
-\def\enumeratey #1 #2\endenumeratey{\x7f\enumeratey\x011142,37588
- \def\thearg{\x7f\thearg\x011146,37735
- \ifx\thearg\empty \def\thearg{\x7f\thearg\x011147,37754
-\def\numericenumerate{\x7f\numericenumerate\x011184,39088
-\def\lowercaseenumerate{\x7f\lowercaseenumerate\x011190,39218
-\def\uppercaseenumerate{\x7f\uppercaseenumerate\x011203,39565
-\def\startenumeration#1{\x7f\startenumeration\x011219,40055
-\def\alphaenumerate{\x7f\alphaenumerate\x011227,40237
-\def\capsenumerate{\x7f\capsenumerate\x011228,40272
-\def\Ealphaenumerate{\x7f\Ealphaenumerate\x011229,40306
-\def\Ecapsenumerate{\x7f\Ecapsenumerate\x011230,40340
-\def\itemizeitem{\x7f\itemizeitem\x011234,40420
-\def\newindex #1{\x7f\newindex\x011259,41277
-\def\defindex{\x7f\defindex\x011268,41566
-\def\newcodeindex #1{\x7f\newcodeindex\x011272,41674
-\def\defcodeindex{\x7f\defcodeindex\x011279,41934
-\def\synindex #1 #2 {\x7f\synindex\x011283,42114
-\def\syncodeindex #1 #2 {\x7f\syncodeindex\x011292,42454
-\def\doindex#1{\x7f\doindex\x011309,43133
-\def\singleindexer #1{\x7f\singleindexer\x011310,43192
-\def\docodeindex#1{\x7f\docodeindex\x011313,43304
-\def\singlecodeindexer #1{\x7f\singlecodeindexer\x011314,43371
-\def\indexdummies{\x7f\indexdummies\x011316,43429
-\def\_{\x7f\_\x011317,43449
-\def\w{\x7f\w\x011318,43477
-\def\bf{\x7f\bf\x011319,43504
-\def\rm{\x7f\rm\x011320,43533
-\def\sl{\x7f\sl\x011321,43562
-\def\sf{\x7f\sf\x011322,43591
-\def\tt{\x7f\tt\x011323,43619
-\def\gtr{\x7f\gtr\x011324,43647
-\def\less{\x7f\less\x011325,43677
-\def\hat{\x7f\hat\x011326,43709
-\def\char{\x7f\char\x011327,43739
-\def\TeX{\x7f\TeX\x011328,43771
-\def\dots{\x7f\dots\x011329,43801
-\def\copyright{\x7f\copyright\x011330,43834
-\def\tclose##1{\x7f\tclose\x011331,43877
-\def\code##1{\x7f\code\x011332,43922
-\def\samp##1{\x7f\samp\x011333,43963
-\def\t##1{\x7f\t\x011334,44004
-\def\r##1{\x7f\r\x011335,44039
-\def\i##1{\x7f\i\x011336,44074
-\def\b##1{\x7f\b\x011337,44109
-\def\cite##1{\x7f\cite\x011338,44144
-\def\key##1{\x7f\key\x011339,44185
-\def\file##1{\x7f\file\x011340,44224
-\def\var##1{\x7f\var\x011341,44265
-\def\kbd##1{\x7f\kbd\x011342,44304
-\def\indexdummyfont#1{\x7f\indexdummyfont\x011347,44460
-\def\indexdummytex{\x7f\indexdummytex\x011348,44486
-\def\indexdummydots{\x7f\indexdummydots\x011349,44510
-\def\indexnofonts{\x7f\indexnofonts\x011351,44536
+\let\lastnode=\relax}\x7flastnode\x01502,16194
+\let\refill=\relax\x7frefill\x01504,16217
+\def\setfilename{\x7fsetfilename\x01509,16431
+ \global\let\setfilename=\comment % Ignore extra @setfilename cmds.\x7fsetfilename\x01514,16562
+\outer\def\bye{\x7fbye\x01518,16677
+\def\inforef #1{\x7finforef\x01520,16733
+\def\inforefzzz #1,#2,#3,#4**{\x7finforefzzz\x01521,16771
+\def\losespace #1{\x7flosespace\x01523,16868
+\def\sf{\x7fsf\x01532,17072
+\let\li = \sf % Sometimes we call it \li, not \sf.\x7fli\x01533,17100
+\let\mainmagstep=\magstephalf\x7fmainmagstep\x01536,17201
+\let\mainmagstep=\magstep1\x7fmainmagstep\x01539,17250
+\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf\x01558,17867
+\font\deftt=cmtt10 scaled \magstep1\x7ftt\x01559,17913
+\def\df{\x7fdf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftentt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftenbf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7fbf\x01560,17949
+\let\indsl=\indit\x7findsl\x01570,18310
+\let\indtt=\ninett\x7findtt\x01571,18328
+\let\indsf=\indrm\x7findsf\x01572,18347
+\let\indbf=\indrm\x7findbf\x01573,18365
+\let\indsc=\indrm\x7findsc\x01574,18383
+\let\chapbf=\chaprm\x7fchapbf\x01584,18643
+\let\authorrm = \secrm\x7fauthorrm\x01627,20193
+\def\resetmathfonts{\x7fresetmathfonts\x01635,20543
+\def\textfonts{\x7ftextfonts\x01648,21132
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenrm\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenit\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftensl\x01649,21149
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftenbf\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftentt\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7fsmallcaps\x01650,21208
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensf\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7fteni\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensy\x01651,21271
+\def\chapfonts{\x7fchapfonts\x01653,21347
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenrm\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenit\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftensl\x01654,21364
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftenbf\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftentt\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7fsmallcaps\x01655,21424
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensf\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7fteni\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensy\x01656,21487
+\def\secfonts{\x7fsecfonts\x01658,21563
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenrm\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenit\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftensl\x01659,21579
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftenbf\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftentt\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7fsmallcaps\x01660,21635
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensf\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7fteni\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensy\x01661,21695
+\def\subsecfonts{\x7fsubsecfonts\x01663,21768
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenrm\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenit\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftensl\x01664,21787
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftenbf\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftentt\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7fsmallcaps\x01665,21846
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensf\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7fteni\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensy\x01666,21909
+\def\indexfonts{\x7findexfonts\x01668,21985
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenrm\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenit\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftensl\x01669,22003
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftenbf\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftentt\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7fsmallcaps\x01670,22059
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensf\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7fteni\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensy\x01671,22119
+\def\smartitalicx{\x7fsmartitalicx\x01691,22717
+\def\smartitalic#1{\x7fsmartitalic\x01692,22793
+\let\i=\smartitalic\x7fi\x01694,22851
+\let\var=\smartitalic\x7fvar\x01695,22871
+\let\dfn=\smartitalic\x7fdfn\x01696,22893
+\let\emph=\smartitalic\x7femph\x01697,22915
+\let\cite=\smartitalic\x7fcite\x01698,22938
+\def\b#1{\x7fb\x01700,22962
+\let\strong=\b\x7fstrong\x01701,22981
+\def\t#1{\x7ft\x01703,22997
+\let\ttfont = \t\x7fttfont\x01704,23072
+\def\samp #1{\x7fsamp\x01706,23149
+\def\key #1{\x7fkey\x01707,23182
+\def\ctrl #1{\x7fctrl\x01708,23243
+\let\file=\samp\x7ffile\x01710,23285
+\def\tclose#1{\x7ftclose\x01716,23445
+\let\code=\tclose\x7fcode\x01722,23722
+\def\xkey{\x7fxkey\x01728,23880
+\def\kbdfoo#1#2#3\par{\x7fkbdfoo\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{\x7fone\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{\x7fthree\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{\x7fthreex\x01729,23896
+\def\dmn#1{\x7fdmn\x01738,24197
+\def\kbd#1{\x7fkbd\x01740,24224
+\def\kbd#1{\def\look{\x7flook\x01740,24224
+\def\l#1{\x7fl\x01742,24281
+\def\r#1{\x7fr\x01744,24310
+\def\sc#1{\x7fsc\x01746,24378
+\def\ii#1{\x7fii\x01747,24421
+\def\titlefont#1{\x7ftitlefont\x01755,24654
+\def\titlepage{\x7ftitlepage\x01761,24757
+ \let\subtitlerm=\tenrm\x7fsubtitlerm\x01762,24810
+ \def\subtitlefont{\x7fsubtitlefont\x01766,24984
+ \def\authorfont{\x7fauthorfont\x01768,25068
+ \def\title{\x7ftitle\x01774,25278
+ \def\titlezzz##1{\x7ftitlezzz\x01775,25313
+ \def\subtitle{\x7fsubtitle\x01783,25628
+ \def\subtitlezzz##1{\x7fsubtitlezzz\x01784,25669
+ \def\author{\x7fauthor\x01787,25787
+ \def\authorzzz##1{\x7fauthorzzz\x01788,25824
+ \let\oldpage = \page\x7foldpage\x01793,26091
+ \def\page{\x7fpage\x01794,26115
+ \let\page = \oldpage\x7fpage\x01799,26206
+\def\Etitlepage{\x7fEtitlepage\x01804,26284
+\def\finishtitlepage{\x7ffinishtitlepage\x01817,26672
+\let\thispage=\folio\x7fthispage\x01825,26825
+\let\HEADINGShook=\relax\x7fHEADINGShook\x01837,27420
+\def\evenheading{\x7fevenheading\x01846,27680
+\def\oddheading{\x7foddheading\x01847,27723
+\def\everyheading{\x7feveryheading\x01848,27764
+\def\evenfooting{\x7fevenfooting\x01850,27810
+\def\oddfooting{\x7foddfooting\x01851,27853
+\def\everyfooting{\x7feveryfooting\x01852,27894
+\gdef\evenheadingxxx #1{\x7fevenheadingxxx\x01856,27958
+\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{\x7fevenheadingyyy\x01857,28017
+\gdef\oddheadingxxx #1{\x7foddheadingxxx\x01860,28126
+\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{\x7foddheadingyyy\x01861,28183
+\gdef\everyheadingxxx #1{\x7feveryheadingxxx\x01864,28290
+\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{\x7feveryheadingyyy\x01865,28351
+\gdef\evenfootingxxx #1{\x7fevenfootingxxx\x01869,28522
+\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{\x7fevenfootingyyy\x01870,28581
+\gdef\oddfootingxxx #1{\x7foddfootingxxx\x01873,28690
+\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{\x7foddfootingyyy\x01874,28747
+\gdef\everyfootingxxx #1{\x7feveryfootingxxx\x01877,28854
+\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{\x7feveryfootingyyy\x01878,28915
+\def\headings #1 {\x7fheadings\x01893,29586
+\def\HEADINGSoff{\x7fHEADINGSoff\x01895,29635
+\def\HEADINGSdouble{\x7fHEADINGSdouble\x01904,30062
+\def\HEADINGSsingle{\x7fHEADINGSsingle\x01914,30382
+\def\HEADINGSon{\x7fHEADINGSon\x01922,30603
+\def\HEADINGSafter{\x7fHEADINGSafter\x01924,30637
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}\x7fHEADINGShook\x01924,30637
+\let\HEADINGSdoubleafter=\HEADINGSafter\x7fHEADINGSdoubleafter\x01925,30692
+\def\HEADINGSdoublex{\x7fHEADINGSdoublex\x01926,30732
+\def\HEADINGSsingleafter{\x7fHEADINGSsingleafter\x01933,30920
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}\x7fHEADINGShook\x01933,30920
+\def\HEADINGSsinglex{\x7fHEADINGSsinglex\x01934,30981
+\def\today{\x7ftoday\x01943,31256
+\def\thistitle{\x7fthistitle\x01958,31801
+\def\settitle{\x7fsettitle\x01959,31826
+\def\settitlezzz #1{\x7fsettitlezzz\x01960,31863
+\def\settitlezzz #1{\gdef\thistitle{\x7fthistitle\x01960,31863
+\def\internalBitem{\x7finternalBitem\x01992,32793
+\def\internalBitemx{\x7finternalBitemx\x01993,32843
+\def\internalBxitem "#1"{\x7finternalBxitem\x01995,32888
+\def\internalBxitem "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01995,32888
+\def\internalBxitemx "#1"{\x7finternalBxitemx\x01996,32968
+\def\internalBxitemx "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01996,32968
+\def\internalBkitem{\x7finternalBkitem\x01998,33043
+\def\internalBkitemx{\x7finternalBkitemx\x01999,33095
+\def\kitemzzz #1{\x7fkitemzzz\x011001,33142
+\def\xitemzzz #1{\x7fxitemzzz\x011004,33244
+\def\itemzzz #1{\x7fitemzzz\x011007,33347
+\def\item{\x7fitem\x011037,34418
+\def\itemx{\x7fitemx\x011038,34469
+\def\kitem{\x7fkitem\x011039,34522
+\def\kitemx{\x7fkitemx\x011040,34575
+\def\xitem{\x7fxitem\x011041,34630
+\def\xitemx{\x7fxitemx\x011042,34683
+\def\description{\x7fdescription\x011045,34793
+\def\table{\x7ftable\x011047,34843
+\gdef\tablex #1^^M{\x7ftablex\x011049,34925
+\def\ftable{\x7fftable\x011052,34987
+\gdef\ftablex #1^^M{\x7fftablex\x011054,35071
+\def\Eftable{\x7fEftable\x011056,35133
+\let\Etable=\relax}\x7fEtable\x011057,35180
+\def\vtable{\x7fvtable\x011059,35202
+\gdef\vtablex #1^^M{\x7fvtablex\x011061,35286
+\def\Evtable{\x7fEvtable\x011063,35348
+\let\Etable=\relax}\x7fEtable\x011064,35395
+\def\dontindex #1{\x7fdontindex\x011066,35417
+\def\fnitemindex #1{\x7ffnitemindex\x011067,35437
+\def\vritemindex #1{\x7fvritemindex\x011068,35482
+\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\x7ftabley\x011071,35543
+\def\tablez #1#2#3#4#5#6{\x7ftablez\x011074,35631
+\def\Edescription{\x7fEdescription\x011077,35689
+\let\itemindex=#1%\x7fitemindex\x011078,35735
+\def\itemfont{\x7fitemfont\x011082,35890
+\def\Etable{\x7fEtable\x011090,36116
+\let\item = \internalBitem %\x7fitem\x011091,36162
+\let\itemx = \internalBitemx %\x7fitemx\x011092,36191
+\let\kitem = \internalBkitem %\x7fkitem\x011093,36222
+\let\kitemx = \internalBkitemx %\x7fkitemx\x011094,36253
+\let\xitem = \internalBxitem %\x7fxitem\x011095,36286
+\let\xitemx = \internalBxitemx %\x7fxitemx\x011096,36317
+\def\itemize{\x7fitemize\x011103,36440
+\def\itemizezzz #1{\x7fitemizezzz\x011105,36476
+\def\itemizey #1#2{\x7fitemizey\x011110,36571
+\def\itemcontents{\x7fitemcontents\x011120,36858
+\let\item=\itemizeitem}\x7fitem\x011121,36881
+\def\bullet{\x7fbullet\x011123,36906
+\def\minus{\x7fminus\x011124,36933
+\def\frenchspacing{\x7ffrenchspacing\x011128,37041
+\def\splitoff#1#2\endmark{\x7fsplitoff\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{\x7ffirst\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{\x7frest\x011134,37266
+\def\enumerate{\x7fenumerate\x011140,37496
+\def\enumeratezzz #1{\x7fenumeratezzz\x011141,37535
+\def\enumeratey #1 #2\endenumeratey{\x7fenumeratey\x011142,37588
+ \def\thearg{\x7fthearg\x011146,37735
+ \ifx\thearg\empty \def\thearg{\x7fthearg\x011147,37754
+\def\numericenumerate{\x7fnumericenumerate\x011184,39088
+\def\lowercaseenumerate{\x7flowercaseenumerate\x011190,39218
+\def\uppercaseenumerate{\x7fuppercaseenumerate\x011203,39565
+\def\startenumeration#1{\x7fstartenumeration\x011219,40055
+\def\alphaenumerate{\x7falphaenumerate\x011227,40237
+\def\capsenumerate{\x7fcapsenumerate\x011228,40272
+\def\Ealphaenumerate{\x7fEalphaenumerate\x011229,40306
+\def\Ecapsenumerate{\x7fEcapsenumerate\x011230,40340
+\def\itemizeitem{\x7fitemizeitem\x011234,40420
+{\let\par=\endgraf \smallbreak}\x7fpar\x011236,40460
+\gdef\newwrite{\x7fnewwrite\x011249,40841
+\def\newindex #1{\x7fnewindex\x011259,41277
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011262,41439
+\def\defindex{\x7fdefindex\x011268,41566
+\def\newcodeindex #1{\x7fnewcodeindex\x011272,41674
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011275,41840
+\def\defcodeindex{\x7fdefcodeindex\x011279,41934
+\def\synindex #1 #2 {\x7fsynindex\x011283,42114
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011284,42137
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011285,42217
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011286,42273
+\def\syncodeindex #1 #2 {\x7fsyncodeindex\x011292,42454
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011293,42481
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011294,42561
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011295,42617
+\def\doindex#1{\x7fdoindex\x011309,43133
+\def\doindex#1{\edef\indexname{\x7findexname\x011309,43133
+\def\singleindexer #1{\x7fsingleindexer\x011310,43192
+\def\singleindexer #1{\doind{\indexname}\x7fname\x011310,43192
+\def\docodeindex#1{\x7fdocodeindex\x011313,43304
+\def\docodeindex#1{\edef\indexname{\x7findexname\x011313,43304
+\def\singlecodeindexer #1{\x7fsinglecodeindexer\x011314,43371
+\def\singlecodeindexer #1{\doind{\indexname}\x7fname\x011314,43371
+\def\indexdummies{\x7findexdummies\x011316,43429
+\def\_{\x7f_\x011317,43449
+\def\w{\x7fw\x011318,43477
+\def\bf{\x7fbf\x011319,43504
+\def\rm{\x7frm\x011320,43533
+\def\sl{\x7fsl\x011321,43562
+\def\sf{\x7fsf\x011322,43591
+\def\tt{\x7ftt\x011323,43619
+\def\gtr{\x7fgtr\x011324,43647
+\def\less{\x7fless\x011325,43677
+\def\hat{\x7fhat\x011326,43709
+\def\char{\x7fchar\x011327,43739
+\def\TeX{\x7fTeX\x011328,43771
+\def\dots{\x7fdots\x011329,43801
+\def\copyright{\x7fcopyright\x011330,43834
+\def\tclose##1{\x7ftclose\x011331,43877
+\def\code##1{\x7fcode\x011332,43922
+\def\samp##1{\x7fsamp\x011333,43963
+\def\t##1{\x7ft\x011334,44004
+\def\r##1{\x7fr\x011335,44039
+\def\i##1{\x7fi\x011336,44074
+\def\b##1{\x7fb\x011337,44109
+\def\cite##1{\x7fcite\x011338,44144
+\def\key##1{\x7fkey\x011339,44185
+\def\file##1{\x7ffile\x011340,44224
+\def\var##1{\x7fvar\x011341,44265
+\def\kbd##1{\x7fkbd\x011342,44304
+\def\indexdummyfont#1{\x7findexdummyfont\x011347,44460
+\def\indexdummytex{\x7findexdummytex\x011348,44486
+\def\indexdummydots{\x7findexdummydots\x011349,44510
+\def\indexnofonts{\x7findexnofonts\x011351,44536
+\let\w=\indexdummyfont\x7fw\x011352,44556
\let\w=\indexdummyfont\x7fdummyfont\x011352,44556
+\let\t=\indexdummyfont\x7ft\x011353,44579
\let\t=\indexdummyfont\x7fdummyfont\x011353,44579
+\let\r=\indexdummyfont\x7fr\x011354,44602
\let\r=\indexdummyfont\x7fdummyfont\x011354,44602
+\let\i=\indexdummyfont\x7fi\x011355,44625
\let\i=\indexdummyfont\x7fdummyfont\x011355,44625
+\let\b=\indexdummyfont\x7fb\x011356,44648
\let\b=\indexdummyfont\x7fdummyfont\x011356,44648
+\let\emph=\indexdummyfont\x7femph\x011357,44671
\let\emph=\indexdummyfont\x7fdummyfont\x011357,44671
+\let\strong=\indexdummyfont\x7fstrong\x011358,44697
\let\strong=\indexdummyfont\x7fdummyfont\x011358,44697
-\let\cite=\indexdummyfont\x7f=\indexdummyfont\x011359,44725
+\let\cite=\indexdummyfont\x7fcite\x011359,44725
+\let\cite=\indexdummyfont\x7fdummyfont\x011359,44725
+\let\sc=\indexdummyfont\x7fsc\x011360,44751
\let\sc=\indexdummyfont\x7fdummyfont\x011360,44751
+\let\tclose=\indexdummyfont\x7ftclose\x011364,44923
\let\tclose=\indexdummyfont\x7fdummyfont\x011364,44923
+\let\code=\indexdummyfont\x7fcode\x011365,44951
\let\code=\indexdummyfont\x7fdummyfont\x011365,44951
+\let\file=\indexdummyfont\x7ffile\x011366,44977
\let\file=\indexdummyfont\x7fdummyfont\x011366,44977
+\let\samp=\indexdummyfont\x7fsamp\x011367,45003
\let\samp=\indexdummyfont\x7fdummyfont\x011367,45003
+\let\kbd=\indexdummyfont\x7fkbd\x011368,45029
\let\kbd=\indexdummyfont\x7fdummyfont\x011368,45029
+\let\key=\indexdummyfont\x7fkey\x011369,45054
\let\key=\indexdummyfont\x7fdummyfont\x011369,45054
+\let\var=\indexdummyfont\x7fvar\x011370,45079
\let\var=\indexdummyfont\x7fdummyfont\x011370,45079
+\let\TeX=\indexdummytex\x7fTeX\x011371,45104
\let\TeX=\indexdummytex\x7fdummytex\x011371,45104
+\let\dots=\indexdummydots\x7fdots\x011372,45128
\let\dots=\indexdummydots\x7fdummydots\x011372,45128
-\let\indexbackslash=0 %overridden during \printindex.\x7fbackslash=0\x011382,45380
-\def\doind #1#2{\x7f\doind\x011384,45436
+\let\indexbackslash=0 %overridden during \printindex.\x7findexbackslash\x011382,45380
+\def\doind #1#2{\x7fdoind\x011384,45436
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011386,45479
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011389,45619
+{\let\folio=0% Expand all macros now EXCEPT \folio\x7ffolio\x011388,45568
+\def\rawbackslashxx{\x7frawbackslashxx\x011389,45619
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011389,45619
{\indexnofonts\x7fnofonts\x011394,45881
-\def\dosubind #1#2#3{\x7f\dosubind\x011405,46192
+\xdef\temp1{\x7ftemp1\x011395,45896
+\edef\temp{\x7ftemp\x011399,46068
+\def\dosubind #1#2#3{\x7fdosubind\x011405,46192
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011407,46240
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011410,46344
+{\let\folio=0%\x7ffolio\x011409,46329
+\def\rawbackslashxx{\x7frawbackslashxx\x011410,46344
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011410,46344
{\indexnofonts\x7fnofonts\x011414,46498
-\def\findex {\x7f\findex\x011443,47429
-\def\kindex {\x7f\kindex\x011444,47452
-\def\cindex {\x7f\cindex\x011445,47475
-\def\vindex {\x7f\vindex\x011446,47498
-\def\tindex {\x7f\tindex\x011447,47521
-\def\pindex {\x7f\pindex\x011448,47544
-\def\cindexsub {\x7f\cindexsub\x011450,47568
-\def\printindex{\x7f\printindex\x011462,47895
-\def\doprintindex#1{\x7f\doprintindex\x011464,47936
- \def\indexbackslash{\x7f\indexbackslash\x011481,48421
+\xdef\temp1{\x7ftemp1\x011415,46513
+\edef\temp{\x7ftemp\x011419,46688
+\def\findex {\x7ffindex\x011443,47429
+\def\kindex {\x7fkindex\x011444,47452
+\def\cindex {\x7fcindex\x011445,47475
+\def\vindex {\x7fvindex\x011446,47498
+\def\tindex {\x7ftindex\x011447,47521
+\def\pindex {\x7fpindex\x011448,47544
+\def\cindexsub {\x7fcindexsub\x011450,47568
+\gdef\cindexsub "#1" #2^^M{\x7fcindexsub\x011452,47631
+\def\printindex{\x7fprintindex\x011462,47895
+\def\doprintindex#1{\x7fdoprintindex\x011464,47936
+ \def\indexbackslash{\x7findexbackslash\x011481,48421
\indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt\x7ffonts\rm\x011482,48460
-\def\initial #1{\x7f\initial\x011517,49532
-\def\entry #1#2{\x7f\entry\x011523,49739
+\def\initial #1{\x7finitial\x011517,49532
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftentt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7fsf\x011518,49550
+\def\entry #1#2{\x7fentry\x011523,49739
\null\nobreak\indexdotfill % Have leaders before the page number.\x7fdotfill\x011540,50386
-\def\indexdotfill{\x7f\indexdotfill\x011549,50714
-\def\primary #1{\x7f\primary\x011552,50820
-\def\secondary #1#2{\x7f\secondary\x011556,50902
+\def\indexdotfill{\x7findexdotfill\x011549,50714
+\def\primary #1{\x7fprimary\x011552,50820
+\def\secondary #1#2{\x7fsecondary\x011556,50902
\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par\x7fdotfill\x011559,50984
\newbox\partialpage\x7fialpage\x011566,51157
-\def\begindoublecolumns{\x7f\begindoublecolumns\x011572,51315
- \output={\global\setbox\partialpage=\x7fialpage=\x011573,51351
-\def\enddoublecolumns{\x7f\enddoublecolumns\x011577,51539
-\def\doublecolumnout{\x7f\doublecolumnout\x011580,51624
+\def\begindoublecolumns{\x7fbegindoublecolumns\x011572,51315
+ \output={\global\setbox\partialpage=\x7fialpage\x011573,51351
+\def\enddoublecolumns{\x7fenddoublecolumns\x011577,51539
+\def\doublecolumnout{\x7fdoublecolumnout\x011580,51624
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011581,51693
-\def\pagesofar{\x7f\pagesofar\x011584,51871
-\def\balancecolumns{\x7f\balancecolumns\x011588,52108
+\def\pagesofar{\x7fpagesofar\x011584,51871
+\def\pagesofar{\unvbox\partialpage %\x7fialpage\x011584,51871
+\def\balancecolumns{\x7fbalancecolumns\x011588,52108
\availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpage\x7fialpage\x011594,52279
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011600,52540
\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
-\def\appendixletter{\x7f\appendixletter\x011628,53486
-\def\opencontents{\x7f\opencontents\x011632,53589
-\def\thischapter{\x7f\thischapter\x011637,53770
-\def\seccheck#1{\x7f\seccheck\x011638,53808
-\def\chapternofonts{\x7f\chapternofonts\x011643,53912
-\def\result{\x7f\result\x011646,53987
-\def\equiv{\x7f\equiv\x011647,54022
-\def\expansion{\x7f\expansion\x011648,54055
-\def\print{\x7f\print\x011649,54096
-\def\TeX{\x7f\TeX\x011650,54129
-\def\dots{\x7f\dots\x011651,54158
-\def\copyright{\x7f\copyright\x011652,54189
-\def\tt{\x7f\tt\x011653,54230
-\def\bf{\x7f\bf\x011654,54257
-\def\w{\x7f\w\x011655,54285
-\def\less{\x7f\less\x011656,54310
-\def\gtr{\x7f\gtr\x011657,54341
-\def\hat{\x7f\hat\x011658,54370
-\def\char{\x7f\char\x011659,54399
-\def\tclose##1{\x7f\tclose\x011660,54430
-\def\code##1{\x7f\code\x011661,54474
-\def\samp##1{\x7f\samp\x011662,54514
-\def\r##1{\x7f\r\x011663,54554
-\def\b##1{\x7f\b\x011664,54588
-\def\key##1{\x7f\key\x011665,54622
-\def\file##1{\x7f\file\x011666,54660
-\def\kbd##1{\x7f\kbd\x011667,54700
-\def\i##1{\x7f\i\x011669,54808
-\def\cite##1{\x7f\cite\x011670,54842
-\def\var##1{\x7f\var\x011671,54882
-\def\emph##1{\x7f\emph\x011672,54920
-\def\dfn##1{\x7f\dfn\x011673,54960
-\def\thischaptername{\x7f\thischaptername\x011676,55001
-\outer\def\chapter{\x7f\chapter\x011677,55040
-\def\chapterzzz #1{\x7f\chapterzzz\x011678,55081
-{\chapternofonts%\x7fnofonts%\x011687,55477
-\global\let\section = \numberedsec\x7f=\x011692,55630
-\global\let\subsection = \numberedsubsec\x7f=\x011693,55665
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011694,55706
-\outer\def\appendix{\x7f\appendix\x011697,55757
-\def\appendixzzz #1{\x7f\appendixzzz\x011698,55800
+\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
+\def\appendixletter{\x7fappendixletter\x011628,53486
+\def\appendixletter{\char\the\appendixno}\x7fno\x011628,53486
+\def\opencontents{\x7fopencontents\x011632,53589
+\def\thischapter{\x7fthischapter\x011637,53770
+\def\thischapter{} \def\thissection{\x7fthissection\x011637,53770
+\def\seccheck#1{\x7fseccheck\x011638,53808
+\def\chapternofonts{\x7fchapternofonts\x011643,53912
+\let\rawbackslash=\relax%\x7frawbackslash\x011644,53934
+\let\frenchspacing=\relax%\x7ffrenchspacing\x011645,53960
+\def\result{\x7fresult\x011646,53987
+\def\equiv{\x7fequiv\x011647,54022
+\def\expansion{\x7fexpansion\x011648,54055
+\def\print{\x7fprint\x011649,54096
+\def\TeX{\x7fTeX\x011650,54129
+\def\dots{\x7fdots\x011651,54158
+\def\copyright{\x7fcopyright\x011652,54189
+\def\tt{\x7ftt\x011653,54230
+\def\bf{\x7fbf\x011654,54257
+\def\w{\x7fw\x011655,54285
+\def\less{\x7fless\x011656,54310
+\def\gtr{\x7fgtr\x011657,54341
+\def\hat{\x7fhat\x011658,54370
+\def\char{\x7fchar\x011659,54399
+\def\tclose##1{\x7ftclose\x011660,54430
+\def\code##1{\x7fcode\x011661,54474
+\def\samp##1{\x7fsamp\x011662,54514
+\def\r##1{\x7fr\x011663,54554
+\def\b##1{\x7fb\x011664,54588
+\def\key##1{\x7fkey\x011665,54622
+\def\file##1{\x7ffile\x011666,54660
+\def\kbd##1{\x7fkbd\x011667,54700
+\def\i##1{\x7fi\x011669,54808
+\def\cite##1{\x7fcite\x011670,54842
+\def\var##1{\x7fvar\x011671,54882
+\def\emph##1{\x7femph\x011672,54920
+\def\dfn##1{\x7fdfn\x011673,54960
+\def\thischaptername{\x7fthischaptername\x011676,55001
+\outer\def\chapter{\x7fchapter\x011677,55040
+\outer\def\chapter{\parsearg\chapterzzz}\x7fzzz\x011677,55040
+\def\chapterzzz #1{\x7fchapterzzz\x011678,55081
+\gdef\thissection{\x7fthissection\x011682,55246
+\gdef\thischaptername{\x7fthischaptername\x011683,55269
+\xdef\thischapter{\x7fthischapter\x011686,55410
+{\chapternofonts%\x7fnofonts\x011687,55477
+\edef\temp{\x7ftemp\x011688,55495
+\global\let\section = \numberedsec\x7fsection\x011692,55630
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011693,55665
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011694,55706
+\outer\def\appendix{\x7fappendix\x011697,55757
+\outer\def\appendix{\parsearg\appendixzzz}\x7fzzz\x011697,55757
+\def\appendixzzz #1{\x7fappendixzzz\x011698,55800
\global\advance \appendixno by 1 \message{\x7fno\x011700,55877
+\global\advance \appendixno by 1 \message{Appendix \appendixletter}\x7fletter\x011700,55877
\chapmacro {#1}{Appendix \appendixletter}\x7fletter\x011701,55946
+\gdef\thissection{\x7fthissection\x011702,55989
+\gdef\thischaptername{\x7fthischaptername\x011703,56012
+\xdef\thischapter{\x7fthischapter\x011704,56039
\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}\x7fletter:\x011704,56039
-{\chapternofonts%\x7fnofonts%\x011705,56111
+{\chapternofonts%\x7fnofonts\x011705,56111
+\edef\temp{\x7ftemp\x011706,56129
{#1}{Appendix \appendixletter}\x7fletter\x011707,56167
\appendixnoderef %\x7fnoderef\x011710,56267
-\global\let\section = \appendixsec\x7f=\x011711,56286
-\global\let\subsection = \appendixsubsec\x7f=\x011712,56321
-\global\let\subsubsection = \appendixsubsubsec\x7f=\x011713,56362
-\outer\def\top{\x7f\top\x011716,56413
-\outer\def\unnumbered{\x7f\unnumbered\x011717,56453
-\def\unnumberedzzz #1{\x7f\unnumberedzzz\x011718,56500
-{\chapternofonts%\x7fnofonts%\x011722,56663
-\global\let\section = \unnumberedsec\x7f=\x011727,56813
-\global\let\subsection = \unnumberedsubsec\x7f=\x011728,56850
-\global\let\subsubsection = \unnumberedsubsubsec\x7f=\x011729,56893
-\outer\def\numberedsec{\x7f\numberedsec\x011732,56946
-\def\seczzz #1{\x7f\seczzz\x011733,56987
-{\chapternofonts%\x7fnofonts%\x011736,57143
-\outer\def\appendixsection{\x7f\appendixsection\x011745,57329
-\outer\def\appendixsec{\x7f\appendixsec\x011746,57386
-\def\appendixsectionzzz #1{\x7f\appendixsectionzzz\x011747,57439
+\global\let\section = \appendixsec\x7fsection\x011711,56286
+\global\let\section = \appendixsec\x7fsec\x011711,56286
+\global\let\subsection = \appendixsubsec\x7fsubsection\x011712,56321
+\global\let\subsection = \appendixsubsec\x7fsubsec\x011712,56321
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsection\x011713,56362
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsec\x011713,56362
+\outer\def\top{\x7ftop\x011716,56413
+\outer\def\unnumbered{\x7funnumbered\x011717,56453
+\def\unnumberedzzz #1{\x7funnumberedzzz\x011718,56500
+\gdef\thischapter{\x7fthischapter\x011721,56619
+\gdef\thischapter{#1}\gdef\thissection{\x7fthissection\x011721,56619
+{\chapternofonts%\x7fnofonts\x011722,56663
+\edef\temp{\x7ftemp\x011723,56681
+\global\let\section = \unnumberedsec\x7fsection\x011727,56813
+\global\let\subsection = \unnumberedsubsec\x7fsubsection\x011728,56850
+\global\let\subsubsection = \unnumberedsubsubsec\x7fsubsubsection\x011729,56893
+\outer\def\numberedsec{\x7fnumberedsec\x011732,56946
+\def\seczzz #1{\x7fseczzz\x011733,56987
+\gdef\thissection{\x7fthissection\x011735,57079
+{\chapternofonts%\x7fnofonts\x011736,57143
+\edef\temp{\x7ftemp\x011737,57161
+\outer\def\appendixsection{\x7fappendixsection\x011745,57329
+\outer\def\appendixsection{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011745,57329
+\outer\def\appendixsec{\x7fappendixsec\x011746,57386
+\outer\def\appendixsec{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011746,57386
+\def\appendixsectionzzz #1{\x7fappendixsectionzzz\x011747,57439
+\gdef\thissection{\x7fthissection\x011749,57551
\gdef\thissection{#1}\secheading {#1}{\appendixletter}\x7fletter\x011749,57551
-{\chapternofonts%\x7fnofonts%\x011750,57619
+{\chapternofonts%\x7fnofonts\x011750,57619
+\edef\temp{\x7ftemp\x011751,57637
{#1}{\appendixletter}\x7fletter\x011752,57675
\appendixnoderef %\x7fnoderef\x011755,57775
-\outer\def\unnumberedsec{\x7f\unnumberedsec\x011759,57815
-\def\unnumberedseczzz #1{\x7f\unnumberedseczzz\x011760,57868
-{\chapternofonts%\x7fnofonts%\x011762,57963
-\outer\def\numberedsubsec{\x7f\numberedsubsec\x011770,58131
-\def\numberedsubseczzz #1{\x7f\numberedsubseczzz\x011771,58186
-{\chapternofonts%\x7fnofonts%\x011774,58365
-\outer\def\appendixsubsec{\x7f\appendixsubsec\x011783,58569
-\def\appendixsubseczzz #1{\x7f\appendixsubseczzz\x011784,58624
+\outer\def\unnumberedsec{\x7funnumberedsec\x011759,57815
+\def\unnumberedseczzz #1{\x7funnumberedseczzz\x011760,57868
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011761,57919
+{\chapternofonts%\x7fnofonts\x011762,57963
+\edef\temp{\x7ftemp\x011763,57981
+\outer\def\numberedsubsec{\x7fnumberedsubsec\x011770,58131
+\def\numberedsubseczzz #1{\x7fnumberedsubseczzz\x011771,58186
+\gdef\thissection{\x7fthissection\x011772,58235
+{\chapternofonts%\x7fnofonts\x011774,58365
+\edef\temp{\x7ftemp\x011775,58383
+\outer\def\appendixsubsec{\x7fappendixsubsec\x011783,58569
+\outer\def\appendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011783,58569
+\def\appendixsubseczzz #1{\x7fappendixsubseczzz\x011784,58624
+\gdef\thissection{\x7fthissection\x011785,58677
\subsecheading {#1}{\appendixletter}\x7fletter\x011786,58746
-{\chapternofonts%\x7fnofonts%\x011787,58811
+{\chapternofonts%\x7fnofonts\x011787,58811
+\edef\temp{\x7ftemp\x011788,58829
{#1}{\appendixletter}\x7fletter\x011789,58870
\appendixnoderef %\x7fnoderef\x011792,58985
-\outer\def\unnumberedsubsec{\x7f\unnumberedsubsec\x011796,59025
-\def\unnumberedsubseczzz #1{\x7f\unnumberedsubseczzz\x011797,59084
-{\chapternofonts%\x7fnofonts%\x011799,59185
-\outer\def\numberedsubsubsec{\x7f\numberedsubsubsec\x011807,59356
-\def\numberedsubsubseczzz #1{\x7f\numberedsubsubseczzz\x011808,59417
-{\chapternofonts%\x7fnofonts%\x011812,59614
-\outer\def\appendixsubsubsec{\x7f\appendixsubsubsec\x011823,59847
-\def\appendixsubsubseczzz #1{\x7f\appendixsubsubseczzz\x011824,59908
+\outer\def\unnumberedsubsec{\x7funnumberedsubsec\x011796,59025
+\def\unnumberedsubseczzz #1{\x7funnumberedsubseczzz\x011797,59084
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011798,59141
+{\chapternofonts%\x7fnofonts\x011799,59185
+\edef\temp{\x7ftemp\x011800,59203
+\outer\def\numberedsubsubsec{\x7fnumberedsubsubsec\x011807,59356
+\def\numberedsubsubseczzz #1{\x7fnumberedsubsubseczzz\x011808,59417
+\gdef\thissection{\x7fthissection\x011809,59472
+{\chapternofonts%\x7fnofonts\x011812,59614
+\edef\temp{\x7ftemp\x011813,59632
+\outer\def\appendixsubsubsec{\x7fappendixsubsubsec\x011823,59847
+\outer\def\appendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011823,59847
+\def\appendixsubsubseczzz #1{\x7fappendixsubsubseczzz\x011824,59908
+\gdef\thissection{\x7fthissection\x011825,59967
{\appendixletter}\x7fletter\x011827,60047
-{\chapternofonts%\x7fnofonts%\x011828,60113
+{\chapternofonts%\x7fnofonts\x011828,60113
+\edef\temp{\x7ftemp\x011829,60131
{\appendixletter}\x7fletter\x011830,60178
\appendixnoderef %\x7fnoderef\x011834,60312
-\outer\def\unnumberedsubsubsec{\x7f\unnumberedsubsubsec\x011838,60352
-\def\unnumberedsubsubseczzz #1{\x7f\unnumberedsubsubseczzz\x011839,60417
-{\chapternofonts%\x7fnofonts%\x011841,60524
-\def\infotop{\x7f\infotop\x011851,60853
-\def\infounnumbered{\x7f\infounnumbered\x011852,60891
-\def\infounnumberedsec{\x7f\infounnumberedsec\x011853,60936
-\def\infounnumberedsubsec{\x7f\infounnumberedsubsec\x011854,60987
-\def\infounnumberedsubsubsec{\x7f\infounnumberedsubsubsec\x011855,61044
-\def\infoappendix{\x7f\infoappendix\x011857,61108
-\def\infoappendixsec{\x7f\infoappendixsec\x011858,61149
-\def\infoappendixsubsec{\x7f\infoappendixsubsec\x011859,61196
-\def\infoappendixsubsubsec{\x7f\infoappendixsubsubsec\x011860,61249
-\def\infochapter{\x7f\infochapter\x011862,61309
-\def\infosection{\x7f\infosection\x011863,61348
-\def\infosubsection{\x7f\infosubsection\x011864,61387
-\def\infosubsubsection{\x7f\infosubsubsection\x011865,61432
-\global\let\section = \numberedsec\x7f=\x011870,61669
-\global\let\subsection = \numberedsubsec\x7f=\x011871,61704
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011872,61745
-\def\majorheading{\x7f\majorheading\x011886,62252
-\def\majorheadingzzz #1{\x7f\majorheadingzzz\x011887,62297
-\def\chapheading{\x7f\chapheading\x011893,62530
-\def\chapheadingzzz #1{\x7f\chapheadingzzz\x011894,62573
-\def\heading{\x7f\heading\x011899,62768
-\def\subheading{\x7f\subheading\x011901,62805
-\def\subsubheading{\x7f\subsubheading\x011903,62848
-\def\dobreak#1#2{\x7f\dobreak\x011910,63125
-\def\setchapterstyle #1 {\x7f\setchapterstyle\x011912,63203
-\def\chapbreak{\x7f\chapbreak\x011919,63458
-\def\chappager{\x7f\chappager\x011920,63508
-\def\chapoddpage{\x7f\chapoddpage\x011921,63546
-\def\setchapternewpage #1 {\x7f\setchapternewpage\x011923,63625
-\def\CHAPPAGoff{\x7f\CHAPPAGoff\x011925,63682
-\def\CHAPPAGon{\x7f\CHAPPAGon\x011929,63776
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011932,63867
-\def\CHAPPAGodd{\x7f\CHAPPAGodd\x011934,63909
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011937,64005
-\def\CHAPFplain{\x7f\CHAPFplain\x011941,64059
-\def\chfplain #1#2{\x7f\chfplain\x011945,64151
-\def\unnchfplain #1{\x7f\unnchfplain\x011956,64374
-\def\unnchfopen #1{\x7f\unnchfopen\x011964,64603
-\def\chfopen #1#2{\x7f\chfopen\x011970,64811
-\def\CHAPFopen{\x7f\CHAPFopen\x011975,64955
-\def\subsecheadingbreak{\x7f\subsecheadingbreak\x011982,65173
-\def\secheadingbreak{\x7f\secheadingbreak\x011985,65302
-\def\secheading #1#2#3{\x7f\secheading\x011993,65584
-\def\plainsecheading #1{\x7f\plainsecheading\x011994,65640
-\def\secheadingi #1{\x7f\secheadingi\x011995,65683
-\def\subsecheading #1#2#3#4{\x7f\subsecheading\x012006,66051
-\def\subsecheadingi #1{\x7f\subsecheadingi\x012007,66118
-\def\subsubsecfonts{\x7f\subsubsecfonts\x012014,66415
-\def\subsubsecheading #1#2#3#4#5{\x7f\subsubsecheading\x012017,66538
-\def\subsubsecheadingi #1{\x7f\subsubsecheadingi\x012018,66616
-\def\startcontents#1{\x7f\startcontents\x012032,67088
- \unnumbchapmacro{#1}\def\thischapter{\x7f\thischapter\x012040,67361
-\outer\def\contents{\x7f\contents\x012049,67720
-\outer\def\summarycontents{\x7f\summarycontents\x012057,67864
- \def\secentry ##1##2##3##4{\x7f\secentry\x012067,68235
- \def\unnumbsecentry ##1##2{\x7f\unnumbsecentry\x012068,68270
- \def\subsecentry ##1##2##3##4##5{\x7f\subsecentry\x012069,68305
- \def\unnumbsubsecentry ##1##2{\x7f\unnumbsubsecentry\x012070,68346
- \def\subsubsecentry ##1##2##3##4##5##6{\x7f\subsubsecentry\x012071,68384
- \def\unnumbsubsubsecentry ##1##2{\x7f\unnumbsubsubsecentry\x012072,68431
-\def\chapentry#1#2#3{\x7f\chapentry\x012085,68865
-\def\shortchapentry#1#2#3{\x7f\shortchapentry\x012088,68982
+\outer\def\unnumberedsubsubsec{\x7funnumberedsubsubsec\x011838,60352
+\def\unnumberedsubsubseczzz #1{\x7funnumberedsubsubseczzz\x011839,60417
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011840,60480
+{\chapternofonts%\x7fnofonts\x011841,60524
+\edef\temp{\x7ftemp\x011842,60542
+\def\infotop{\x7finfotop\x011851,60853
+\def\infounnumbered{\x7finfounnumbered\x011852,60891
+\def\infounnumberedsec{\x7finfounnumberedsec\x011853,60936
+\def\infounnumberedsubsec{\x7finfounnumberedsubsec\x011854,60987
+\def\infounnumberedsubsubsec{\x7finfounnumberedsubsubsec\x011855,61044
+\def\infoappendix{\x7finfoappendix\x011857,61108
+\def\infoappendix{\parsearg\appendixzzz}\x7fzzz\x011857,61108
+\def\infoappendixsec{\x7finfoappendixsec\x011858,61149
+\def\infoappendixsec{\parsearg\appendixseczzz}\x7fseczzz\x011858,61149
+\def\infoappendixsubsec{\x7finfoappendixsubsec\x011859,61196
+\def\infoappendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011859,61196
+\def\infoappendixsubsubsec{\x7finfoappendixsubsubsec\x011860,61249
+\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011860,61249
+\def\infochapter{\x7finfochapter\x011862,61309
+\def\infochapter{\parsearg\chapterzzz}\x7fzzz\x011862,61309
+\def\infosection{\x7finfosection\x011863,61348
+\def\infosection{\parsearg\sectionzzz}\x7fzzz\x011863,61348
+\def\infosubsection{\x7finfosubsection\x011864,61387
+\def\infosubsection{\parsearg\subsectionzzz}\x7fzzz\x011864,61387
+\def\infosubsubsection{\x7finfosubsubsection\x011865,61432
+\def\infosubsubsection{\parsearg\subsubsectionzzz}\x7fzzz\x011865,61432
+\global\let\section = \numberedsec\x7fsection\x011870,61669
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011871,61704
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011872,61745
+\def\majorheading{\x7fmajorheading\x011886,62252
+\def\majorheadingzzz #1{\x7fmajorheadingzzz\x011887,62297
+\def\chapheading{\x7fchapheading\x011893,62530
+\def\chapheadingzzz #1{\x7fchapheadingzzz\x011894,62573
+\def\heading{\x7fheading\x011899,62768
+\def\subheading{\x7fsubheading\x011901,62805
+\def\subsubheading{\x7fsubsubheading\x011903,62848
+\def\dobreak#1#2{\x7fdobreak\x011910,63125
+\def\setchapterstyle #1 {\x7fsetchapterstyle\x011912,63203
+\def\chapbreak{\x7fchapbreak\x011919,63458
+\def\chappager{\x7fchappager\x011920,63508
+\def\chapoddpage{\x7fchapoddpage\x011921,63546
+\def\setchapternewpage #1 {\x7fsetchapternewpage\x011923,63625
+\def\CHAPPAGoff{\x7fCHAPPAGoff\x011925,63682
+\global\let\pchapsepmacro=\chapbreak\x7fpchapsepmacro\x011926,63699
+\global\let\pagealignmacro=\chappager}\x7fpagealignmacro\x011927,63736
+\def\CHAPPAGon{\x7fCHAPPAGon\x011929,63776
+\global\let\pchapsepmacro=\chappager\x7fpchapsepmacro\x011930,63792
+\global\let\pagealignmacro=\chappager\x7fpagealignmacro\x011931,63829
+\global\def\HEADINGSon{\x7fHEADINGSon\x011932,63867
+\def\CHAPPAGodd{\x7fCHAPPAGodd\x011934,63909
+\global\let\pchapsepmacro=\chapoddpage\x7fpchapsepmacro\x011935,63926
+\global\let\pagealignmacro=\chapoddpage\x7fpagealignmacro\x011936,63965
+\global\def\HEADINGSon{\x7fHEADINGSon\x011937,64005
+\def\CHAPFplain{\x7fCHAPFplain\x011941,64059
+\global\let\chapmacro=\chfplain\x7fchapmacro\x011942,64076
+\global\let\unnumbchapmacro=\unnchfplain}\x7funnumbchapmacro\x011943,64108
+\def\chfplain #1#2{\x7fchfplain\x011945,64151
+\def\unnchfplain #1{\x7funnchfplain\x011956,64374
+\def\unnchfopen #1{\x7funnchfopen\x011964,64603
+\def\chfopen #1#2{\x7fchfopen\x011970,64811
+\def\CHAPFopen{\x7fCHAPFopen\x011975,64955
+\global\let\chapmacro=\chfopen\x7fchapmacro\x011976,64971
+\global\let\unnumbchapmacro=\unnchfopen}\x7funnumbchapmacro\x011977,65002
+\def\subsecheadingbreak{\x7fsubsecheadingbreak\x011982,65173
+\def\secheadingbreak{\x7fsecheadingbreak\x011985,65302
+\let\paragraphindent=\comment\x7fparagraphindent\x011988,65428
+\def\secheading #1#2#3{\x7fsecheading\x011993,65584
+\def\plainsecheading #1{\x7fplainsecheading\x011994,65640
+\def\secheadingi #1{\x7fsecheadingi\x011995,65683
+\def\subsecheading #1#2#3#4{\x7fsubsecheading\x012006,66051
+\def\subsecheadingi #1{\x7fsubsecheadingi\x012007,66118
+\def\subsubsecfonts{\x7fsubsubsecfonts\x012014,66415
+\def\subsubsecheading #1#2#3#4#5{\x7fsubsubsecheading\x012017,66538
+\def\subsubsecheadingi #1{\x7fsubsubsecheadingi\x012018,66616
+\def\startcontents#1{\x7fstartcontents\x012032,67088
+ \unnumbchapmacro{#1}\def\thischapter{\x7fthischapter\x012040,67361
+\outer\def\contents{\x7fcontents\x012049,67720
+\outer\def\summarycontents{\x7fsummarycontents\x012057,67864
+ \let\chapentry = \shortchapentry\x7fchapentry\x012060,67936
+ \let\unnumbchapentry = \shortunnumberedentry\x7funnumbchapentry\x012061,67975
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7frm\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fbf\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fsl\x012064,68098
+ \def\secentry ##1##2##3##4{\x7fsecentry\x012067,68235
+ \def\unnumbsecentry ##1##2{\x7funnumbsecentry\x012068,68270
+ \def\subsecentry ##1##2##3##4##5{\x7fsubsecentry\x012069,68305
+ \def\unnumbsubsecentry ##1##2{\x7funnumbsubsecentry\x012070,68346
+ \def\subsubsecentry ##1##2##3##4##5##6{\x7fsubsubsecentry\x012071,68384
+ \def\unnumbsubsubsecentry ##1##2{\x7funnumbsubsubsecentry\x012072,68431
+\let\shortcontents = \summarycontents\x7fshortcontents\x012077,68530
+\def\chapentry#1#2#3{\x7fchapentry\x012085,68865
+\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}\x7fspace\x012085,68865
+\def\shortchapentry#1#2#3{\x7fshortchapentry\x012088,68982
{#2\labelspace #1}\x7fspace\x012091,69092
-\def\unnumbchapentry#1#2{\x7f\unnumbchapentry\x012094,69146
-\def\shortunnumberedentry#1#2{\x7f\shortunnumberedentry\x012095,69193
-\def\secentry#1#2#3#4{\x7f\secentry\x012102,69357
-\def\unnumbsecentry#1#2{\x7f\unnumbsecentry\x012103,69416
-\def\subsecentry#1#2#3#4#5{\x7f\subsecentry\x012106,69477
-\def\unnumbsubsecentry#1#2{\x7f\unnumbsubsecentry\x012107,69547
-\def\subsubsecentry#1#2#3#4#5#6{\x7f\subsubsecentry\x012110,69621
+\def\unnumbchapentry#1#2{\x7funnumbchapentry\x012094,69146
+\def\shortunnumberedentry#1#2{\x7fshortunnumberedentry\x012095,69193
+\def\secentry#1#2#3#4{\x7fsecentry\x012102,69357
+\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}\x7fspace\x012102,69357
+\def\unnumbsecentry#1#2{\x7funnumbsecentry\x012103,69416
+\def\subsecentry#1#2#3#4#5{\x7fsubsecentry\x012106,69477
+\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}\x7fspace\x012106,69477
+\def\unnumbsubsecentry#1#2{\x7funnumbsubsecentry\x012107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\x7fsubsubsecentry\x012110,69621
\dosubsubsecentry{#2.#3.#4.#5\labelspace#1}\x7fspace\x012111,69655
-\def\unnumbsubsubsecentry#1#2{\x7f\unnumbsubsubsecentry\x012112,69706
-\def\dochapentry#1#2{\x7f\dochapentry\x012123,70080
-\def\dosecentry#1#2{\x7f\dosecentry\x012138,70685
-\def\dosubsecentry#1#2{\x7f\dosubsecentry\x012145,70863
-\def\dosubsubsecentry#1#2{\x7f\dosubsubsecentry\x012152,71048
-\def\labelspace{\x7f\labelspace\x012160,71299
-\def\dopageno#1{\x7f\dopageno\x012162,71334
-\def\doshortpageno#1{\x7f\doshortpageno\x012163,71360
-\def\chapentryfonts{\x7f\chapentryfonts\x012165,71392
-\def\secentryfonts{\x7f\secentryfonts\x012166,71427
-\def\point{\x7f\point\x012192,72386
-\def\result{\x7f\result\x012194,72407
-\def\expansion{\x7f\expansion\x012195,72480
-\def\print{\x7f\print\x012196,72551
-\def\equiv{\x7f\equiv\x012198,72618
-\def\error{\x7f\error\x012218,73391
-\def\tex{\x7f\tex\x012224,73620
-\def\@{\x7f\@\x012242,74003
-\gdef\sepspaces{\def {\ }}}\x7f\\x012265,74735
-\def\aboveenvbreak{\x7f\aboveenvbreak\x012268,74817
-\def\afterenvbreak{\x7f\afterenvbreak\x012272,74983
-\def\ctl{\x7f\ctl\x012286,75494
-\def\ctr{\x7f\ctr\x012287,75566
-\def\cbl{\x7f\cbl\x012288,75605
-\def\cbr{\x7f\cbr\x012289,75645
-\def\carttop{\x7f\carttop\x012290,75684
-\def\cartbot{\x7f\cartbot\x012293,75792
-\long\def\cartouche{\x7f\cartouche\x012299,75932
-\def\Ecartouche{\x7f\Ecartouche\x012326,76720
-\def\lisp{\x7f\lisp\x012338,76855
-\def\Elisp{\x7f\Elisp\x012348,77202
-\def\next##1{\x7f\next\x012360,77528
-\def\Eexample{\x7f\Eexample\x012364,77570
-\def\Esmallexample{\x7f\Esmallexample\x012367,77617
-\def\smalllispx{\x7f\smalllispx\x012373,77795
-\def\Esmalllisp{\x7f\Esmalllisp\x012383,78149
+\def\unnumbsubsubsecentry#1#2{\x7funnumbsubsubsecentry\x012112,69706
+\def\dochapentry#1#2{\x7fdochapentry\x012123,70080
+\def\dosecentry#1#2{\x7fdosecentry\x012138,70685
+\def\dosubsecentry#1#2{\x7fdosubsecentry\x012145,70863
+\def\dosubsubsecentry#1#2{\x7fdosubsubsecentry\x012152,71048
+\def\labelspace{\x7flabelspace\x012160,71299
+\def\dopageno#1{\x7fdopageno\x012162,71334
+\def\doshortpageno#1{\x7fdoshortpageno\x012163,71360
+\def\chapentryfonts{\x7fchapentryfonts\x012165,71392
+\def\secentryfonts{\x7fsecentryfonts\x012166,71427
+\let\subsecentryfonts = \textfonts\x7fsubsecentryfonts\x012167,71458
+\let\subsubsecentryfonts = \textfonts\x7fsubsubsecentryfonts\x012168,71493
+\let\ptexequiv = \equiv\x7fptexequiv\x012180,71896
+\def\point{\x7fpoint\x012192,72386
+\def\result{\x7fresult\x012194,72407
+\def\expansion{\x7fexpansion\x012195,72480
+\def\print{\x7fprint\x012196,72551
+\def\equiv{\x7fequiv\x012198,72618
+\def\error{\x7ferror\x012218,73391
+\def\tex{\x7ftex\x012224,73620
+\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie\x7f~\x012227,73731
+\let\{=\ptexlbrace\x7f{\x012237,73912
+\let\}=\ptexrbrace\x7f}\x012238,73931
+\let\.=\ptexdot\x7f.\x012239,73950
+\let\*=\ptexstar\x7f*\x012240,73966
+\let\dots=\ptexdots\x7fdots\x012241,73983
+\def\@{\x7f@\x012242,74003
+\let\bullet=\ptexbullet\x7fbullet\x012243,74014
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fb\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fc\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fi\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7ft\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fl\x012244,74038
+\let\L=\ptexL\x7fL\x012245,74108
+\let\Etex=\endgroup}\x7fEtex\x012247,74124
+\gdef\lisppar{\x7flisppar\x012259,74517
+\gdef\sepspaces{\x7fsepspaces\x012265,74735
+\def\aboveenvbreak{\x7faboveenvbreak\x012268,74817
+\def\afterenvbreak{\x7fafterenvbreak\x012272,74983
+\let\nonarrowing=\relax\x7fnonarrowing\x012276,75176
+\def\ctl{\x7fctl\x012286,75494
+\def\ctr{\x7fctr\x012287,75566
+\def\cbl{\x7fcbl\x012288,75605
+\def\cbr{\x7fcbr\x012289,75645
+\def\carttop{\x7fcarttop\x012290,75684
+\def\cartbot{\x7fcartbot\x012293,75792
+\long\def\cartouche{\x7fcartouche\x012299,75932
+ \let\nonarrowing=\comment\x7fnonarrowing\x012311,76404
+\def\Ecartouche{\x7fEcartouche\x012326,76720
+\def\lisp{\x7flisp\x012338,76855
+\let\par=\lisppar\x7fpar\x012347,77184
+\def\Elisp{\x7fElisp\x012348,77202
+\let\exdent=\nofillexdent\x7fexdent\x012355,77418
+\let\nonarrowing=\relax\x7fnonarrowing\x012356,77444
+\def\next##1{\x7fnext\x012360,77528
+\let\example=\lisp\x7fexample\x012363,77551
+\def\Eexample{\x7fEexample\x012364,77570
+\let\smallexample=\lisp\x7fsmallexample\x012366,77593
+\def\Esmallexample{\x7fEsmallexample\x012367,77617
+\def\smalllispx{\x7fsmalllispx\x012373,77795
+\let\par=\lisppar\x7fpar\x012382,78131
+\def\Esmalllisp{\x7fEsmalllisp\x012383,78149
+\let\exdent=\nofillexdent\x7fexdent\x012392,78436
+\let\nonarrowing=\relax\x7fnonarrowing\x012393,78462
\obeyspaces \obeylines \ninett \indexfonts \rawbackslash\x7ffonts\x012396,78505
-\def\next##1{\x7f\next\x012397,78562
-\def\display{\x7f\display\x012401,78642
-\def\Edisplay{\x7f\Edisplay\x012410,78961
-\def\next##1{\x7f\next\x012422,79272
-\def\format{\x7f\format\x012426,79375
-\def\Eformat{\x7f\Eformat\x012434,79671
-\def\next##1{\x7f\next\x012437,79760
-\def\flushleft{\x7f\flushleft\x012441,79812
-\def\Eflushleft{\x7f\Eflushleft\x012451,80183
-\def\next##1{\x7f\next\x012454,80276
-\def\flushright{\x7f\flushright\x012456,80298
-\def\Eflushright{\x7f\Eflushright\x012466,80670
-\def\next##1{\x7f\next\x012470,80801
-\def\quotation{\x7f\quotation\x012474,80859
-\def\Equotation{\x7f\Equotation\x012480,81051
-\def\setdeffont #1 {\x7f\setdeffont\x012493,81449
+\def\next##1{\x7fnext\x012397,78562
+\def\display{\x7fdisplay\x012401,78642
+\let\par=\lisppar\x7fpar\x012409,78943
+\def\Edisplay{\x7fEdisplay\x012410,78961
+\let\exdent=\nofillexdent\x7fexdent\x012417,79180
+\let\nonarrowing=\relax\x7fnonarrowing\x012418,79206
+\def\next##1{\x7fnext\x012422,79272
+\def\format{\x7fformat\x012426,79375
+\let\par=\lisppar\x7fpar\x012433,79653
+\def\Eformat{\x7fEformat\x012434,79671
+\def\next##1{\x7fnext\x012437,79760
+\def\flushleft{\x7fflushleft\x012441,79812
+\let\par=\lisppar\x7fpar\x012450,80165
+\def\Eflushleft{\x7fEflushleft\x012451,80183
+\def\next##1{\x7fnext\x012454,80276
+\def\flushright{\x7fflushright\x012456,80298
+\let\par=\lisppar\x7fpar\x012465,80652
+\def\Eflushright{\x7fEflushright\x012466,80670
+\def\next##1{\x7fnext\x012470,80801
+\def\quotation{\x7fquotation\x012474,80859
+\def\Equotation{\x7fEquotation\x012480,81051
+\let\nonarrowing=\relax\x7fnonarrowing\x012487,81301
+\def\setdeffont #1 {\x7fsetdeffont\x012493,81449
+\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
+\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
-\def\activeparens{\x7f\activeparens\x012503,81822
-\def\opnr{\x7f\opnr\x012529,83034
-\def\lbrb{\x7f\lbrb\x012530,83099
-\def\defname #1#2{\x7f\defname\x012536,83300
+\def\activeparens{\x7factiveparens\x012503,81822
+\gdef\functionparens{\x7ffunctionparens\x012507,82016
+\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }\x7f&\x012507,82016
+\gdef\boldbrax{\x7fboldbrax\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f(\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f)\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f[\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f]\x012508,82074
+\gdef\oprm#1 {\x7foprm\x012512,82250
+\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %\x7f(\x012512,82250
+\gdef\opnested{\x7fopnested\x012516,82407
+\gdef\clrm{\x7fclrm\x012518,82466
+\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi\x7f(\x012520,82602
+\gdef\amprm#1 {\x7famprm\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f(\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f)\x012523,82769
+\gdef\normalparens{\x7fnormalparens\x012525,82822
+\gdef\normalparens{\boldbrax\let&=\ampnr}\x7f&\x012525,82822
+\def\opnr{\x7fopnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{\x7fclnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\x7fampnr\x012529,83034
+\def\lbrb{\x7flbrb\x012530,83099
+\def\lbrb{{\bf\char`\[}} \def\rbrb{\x7frbrb\x012530,83099
+\def\defname #1#2{\x7fdefname\x012536,83300
\advance\dimen2 by -\defbodyindent\x7fbodyindent\x012540,83418
\advance\dimen3 by -\defbodyindent\x7fbodyindent\x012542,83472
\setbox0=\hbox{\hskip \deflastargmargin{\x7flastargmargin\x012544,83526
+\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012544,83526
\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations\x7fargsindent\x012546,83668
\parshape 2 0in \dimen0 \defargsindent \dimen1 %\x7fargsindent\x012547,83743
\rlap{\rightline{{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012554,84112
\advance\leftskip by -\defbodyindent\x7fbodyindent\x012557,84246
\exdentamount=\defbodyindent\x7fbodyindent\x012558,84283
-\def\defparsebody #1#2#3{\x7f\defparsebody\x012568,84642
-\def#1{\x7f2572,84826
-\def#2{\x7f2573,84862
+\def\defparsebody #1#2#3{\x7fdefparsebody\x012568,84642
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\exdentamount=\defbodyindent\x7fbodyindent\x012576,85008
-\def\defmethparsebody #1#2#3#4 {\x7f\defmethparsebody\x012581,85112
-\def#1{\x7f2585,85273
-\def#2##1 {\x7f2586,85309
+\def\defmethparsebody #1#2#3#4 {\x7fdefmethparsebody\x012581,85112
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\exdentamount=\defbodyindent\x7fbodyindent\x012589,85466
-\def\defopparsebody #1#2#3#4#5 {\x7f\defopparsebody\x012592,85551
-\def#1{\x7f2596,85712
-\def#2##1 ##2 {\x7f2597,85748
+\def\defopparsebody #1#2#3#4#5 {\x7fdefopparsebody\x012592,85551
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\exdentamount=\defbodyindent\x7fbodyindent\x012601,85922
-\def\defvarparsebody #1#2#3{\x7f\defvarparsebody\x012608,86193
-\def#1{\x7f2612,86380
-\def#2{\x7f2613,86416
+\def\defvarparsebody #1#2#3{\x7fdefvarparsebody\x012608,86193
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\exdentamount=\defbodyindent\x7fbodyindent\x012616,86549
-\def\defvrparsebody #1#2#3#4 {\x7f\defvrparsebody\x012621,86640
-\def#1{\x7f2625,86799
-\def#2##1 {\x7f2626,86835
+\def\defvrparsebody #1#2#3#4 {\x7fdefvrparsebody\x012621,86640
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\exdentamount=\defbodyindent\x7fbodyindent\x012629,86979
-\def\defopvarparsebody #1#2#3#4#5 {\x7f\defopvarparsebody\x012632,87051
-\def#1{\x7f2636,87215
-\def#2##1 ##2 {\x7f2637,87251
+\def\defopvarparsebody #1#2#3#4#5 {\x7fdefopvarparsebody\x012632,87051
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\exdentamount=\defbodyindent\x7fbodyindent\x012641,87412
-\def\defunargs #1{\x7f\defunargs\x012664,88172
-\def\deftypefunargs #1{\x7f\deftypefunargs\x012676,88554
-\def\deffn{\x7f\deffn\x012690,88936
-\def\deffnheader #1#2#3{\x7f\deffnheader\x012692,88993
+\gdef\spacesplit#1#2^^M{\x7fspacesplit\x012652,87775
+\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{\x7fspacesplitfoo\x012653,87852
+\def\defunargs #1{\x7fdefunargs\x012664,88172
+\def\deftypefunargs #1{\x7fdeftypefunargs\x012676,88554
+\def\deffn{\x7fdeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7fmethparsebody\Edeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnx\deffnheader\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnheader\x012690,88936
+\def\deffnheader #1#2#3{\x7fdeffnheader\x012692,88993
\begingroup\defname {\x7fname\x012693,89041
-\def\defun{\x7f\defun\x012699,89186
-\def\defunheader #1#2{\x7f\defunheader\x012701,89239
+\begingroup\defname {#2}{#1}\defunargs{\x7funargs\x012693,89041
+\def\defun{\x7fdefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7fparsebody\Edefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funx\defunheader\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funheader\x012699,89186
+\def\defunheader #1#2{\x7fdefunheader\x012701,89239
\begingroup\defname {\x7fname\x012702,89314
\defunargs {\x7funargs\x012703,89350
-\def\deftypefun{\x7f\deftypefun\x012709,89498
-\def\deftypefunheader #1#2{\x7f\deftypefunheader\x012712,89620
-\def\deftypefunheaderx #1#2 #3\relax{\x7f\deftypefunheaderx\x012714,89729
+\def\deftypefun{\x7fdeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7fparsebody\Edeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunx\deftypefunheader\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunheader\x012709,89498
+\def\deftypefunheader #1#2{\x7fdeftypefunheader\x012712,89620
+\def\deftypefunheader #1#2{\deftypefunheaderx{\x7ftypefunheaderx\x012712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\x7fdeftypefunheaderx\x012714,89729
\begingroup\defname {\x7fname\x012716,89821
\deftypefunargs {\x7ftypefunargs\x012717,89867
-\def\deftypefn{\x7f\deftypefn\x012723,90038
-\def\deftypefnheader #1#2#3{\x7f\deftypefnheader\x012726,90187
-\def\deftypefnheaderx #1#2#3 #4\relax{\x7f\deftypefnheaderx\x012728,90323
+\def\deftypefn{\x7fdeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7fmethparsebody\Edeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnx\deftypefnheader\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnheader\x012723,90038
+\def\deftypefnheader #1#2#3{\x7fdeftypefnheader\x012726,90187
+\def\deftypefnheader #1#2#3{\deftypefnheaderx{\x7ftypefnheaderx\x012726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\x7fdeftypefnheaderx\x012728,90323
\begingroup\defname {\x7fname\x012730,90416
\deftypefunargs {\x7ftypefunargs\x012731,90456
-\def\defmac{\x7f\defmac\x012737,90577
-\def\defmacheader #1#2{\x7f\defmacheader\x012739,90634
+\def\defmac{\x7fdefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fparsebody\Edefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacx\defmacheader\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacheader\x012737,90577
+\def\defmacheader #1#2{\x7fdefmacheader\x012739,90634
\begingroup\defname {\x7fname\x012740,90710
\defunargs {\x7funargs\x012741,90743
-\def\defspec{\x7f\defspec\x012747,90867
-\def\defspecheader #1#2{\x7f\defspecheader\x012749,90928
+\def\defspec{\x7fdefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fparsebody\Edefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecx\defspecheader\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecheader\x012747,90867
+\def\defspecheader #1#2{\x7fdefspecheader\x012749,90928
\begingroup\defname {\x7fname\x012750,91005
\defunargs {\x7funargs\x012751,91045
-\def\deffnx #1 {\x7f\deffnx\x012758,91240
-\def\defunx #1 {\x7f\defunx\x012759,91297
-\def\defmacx #1 {\x7f\defmacx\x012760,91354
-\def\defspecx #1 {\x7f\defspecx\x012761,91413
-\def\deftypefnx #1 {\x7f\deftypefnx\x012762,91474
-\def\deftypeunx #1 {\x7f\deftypeunx\x012763,91539
-\def\defop #1 {\x7f\defop\x012769,91685
-\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\defopx\defopheader\defoptype\x012770,91720
-\def\defopheader #1#2#3{\x7f\defopheader\x012772,91774
+\def\deffnx #1 {\x7fdeffnx\x012758,91240
+\def\defunx #1 {\x7fdefunx\x012759,91297
+\def\defmacx #1 {\x7fdefmacx\x012760,91354
+\def\defspecx #1 {\x7fdefspecx\x012761,91413
+\def\deftypefnx #1 {\x7fdeftypefnx\x012762,91474
+\def\deftypeunx #1 {\x7fdeftypeunx\x012763,91539
+\def\defop #1 {\x7fdefop\x012769,91685
+\def\defop #1 {\def\defoptype{\x7fdefoptype\x012769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopx\defopheader\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopheader\defoptype\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7foptype\x012770,91720
+\def\defopheader #1#2#3{\x7fdefopheader\x012772,91774
\begingroup\defname {\x7fname\x012774,91863
+\begingroup\defname {#2}{\defoptype{\x7foptype\x012774,91863
\defunargs {\x7funargs\x012775,91909
-\def\defmethod{\x7f\defmethod\x012780,91970
-\def\defmethodheader #1#2#3{\x7f\defmethodheader\x012782,92043
+\def\defmethod{\x7fdefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethparsebody\Edefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodx\defmethodheader\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodheader\x012780,91970
+\def\defmethodheader #1#2#3{\x7fdefmethodheader\x012782,92043
\begingroup\defname {\x7fname\x012784,92131
\defunargs {\x7funargs\x012785,92171
-\def\defcv #1 {\x7f\defcv\x012790,92245
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype\x012791,92280
-\def\defcvarheader #1#2#3{\x7f\defcvarheader\x012793,92339
+\def\defcv #1 {\x7fdefcv\x012790,92245
+\def\defcv #1 {\def\defcvtype{\x7fdefcvtype\x012790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvx\defcvarheader\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvarheader\defcvtype\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvtype\x012791,92280
+\def\defcvarheader #1#2#3{\x7fdefcvarheader\x012793,92339
\begingroup\defname {\x7fname\x012795,92425
+\begingroup\defname {#2}{\defcvtype{\x7fcvtype\x012795,92425
\defvarargs {\x7fvarargs\x012796,92471
-\def\defivar{\x7f\defivar\x012801,92544
-\def\defivarheader #1#2#3{\x7f\defivarheader\x012803,92607
+\def\defivar{\x7fdefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fvrparsebody\Edefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarx\defivarheader\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarheader\x012801,92544
+\def\defivarheader #1#2#3{\x7fdefivarheader\x012803,92607
\begingroup\defname {\x7fname\x012805,92693
\defvarargs {\x7fvarargs\x012806,92744
-\def\defopx #1 {\x7f\defopx\x012812,92893
-\def\defmethodx #1 {\x7f\defmethodx\x012813,92950
-\def\defcvx #1 {\x7f\defcvx\x012814,93015
-\def\defivarx #1 {\x7f\defivarx\x012815,93072
-\def\defvarargs #1{\x7f\defvarargs\x012822,93343
-\def\defvr{\x7f\defvr\x012828,93487
-\def\defvrheader #1#2#3{\x7f\defvrheader\x012830,93542
+\def\defopx #1 {\x7fdefopx\x012812,92893
+\def\defmethodx #1 {\x7fdefmethodx\x012813,92950
+\def\defcvx #1 {\x7fdefcvx\x012814,93015
+\def\defivarx #1 {\x7fdefivarx\x012815,93072
+\def\defvarargs #1{\x7fdefvarargs\x012822,93343
+\def\defvr{\x7fdefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrparsebody\Edefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrx\defvrheader\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrheader\x012828,93487
+\def\defvrheader #1#2#3{\x7fdefvrheader\x012830,93542
\begingroup\defname {\x7fname\x012831,93590
-\def\defvar{\x7f\defvar\x012835,93675
-\def\defvarheader #1#2{\x7f\defvarheader\x012837,93735
+\begingroup\defname {#2}{#1}\defvarargs{\x7fvarargs\x012831,93590
+\def\defvar{\x7fdefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarparsebody\Edefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarx\defvarheader\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarheader\x012835,93675
+\def\defvarheader #1#2{\x7fdefvarheader\x012837,93735
\begingroup\defname {\x7fname\x012838,93806
\defvarargs {\x7fvarargs\x012839,93842
-\def\defopt{\x7f\defopt\x012844,93908
-\def\defoptheader #1#2{\x7f\defoptheader\x012846,93968
+\def\defopt{\x7fdefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7fvarparsebody\Edefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptx\defoptheader\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptheader\x012844,93908
+\def\defoptheader #1#2{\x7fdefoptheader\x012846,93968
\begingroup\defname {\x7fname\x012847,94039
\defvarargs {\x7fvarargs\x012848,94078
-\def\deftypevar{\x7f\deftypevar\x012853,94135
-\def\deftypevarheader #1#2{\x7f\deftypevarheader\x012856,94251
+\def\deftypevar{\x7fdeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7fvarparsebody\Edeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarx\deftypevarheader\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarheader\x012853,94135
+\def\deftypevarheader #1#2{\x7fdeftypevarheader\x012856,94251
\begingroup\defname {\x7fname\x012858,94334
-\def\deftypevr{\x7f\deftypevr\x012865,94508
-\def\deftypevrheader #1#2#3{\x7f\deftypevrheader\x012867,94579
+\def\deftypevr{\x7fdeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7fvrparsebody\Edeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrx\deftypevrheader\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrheader\x012865,94508
+\def\deftypevrheader #1#2#3{\x7fdeftypevrheader\x012867,94579
\begingroup\defname {\x7fname\x012868,94631
-\def\defvrx #1 {\x7f\defvrx\x012876,94868
-\def\defvarx #1 {\x7f\defvarx\x012877,94925
-\def\defoptx #1 {\x7f\defoptx\x012878,94984
-\def\deftypevarx #1 {\x7f\deftypevarx\x012879,95043
-\def\deftypevrx #1 {\x7f\deftypevrx\x012880,95110
-\def\deftpargs #1{\x7f\deftpargs\x012885,95259
-\def\deftp{\x7f\deftp\x012889,95339
-\def\deftpheader #1#2#3{\x7f\deftpheader\x012891,95394
+\def\defvrx #1 {\x7fdefvrx\x012876,94868
+\def\defvarx #1 {\x7fdefvarx\x012877,94925
+\def\defoptx #1 {\x7fdefoptx\x012878,94984
+\def\deftypevarx #1 {\x7fdeftypevarx\x012879,95043
+\def\deftypevrx #1 {\x7fdeftypevrx\x012880,95110
+\def\deftpargs #1{\x7fdeftpargs\x012885,95259
+\def\deftpargs #1{\bf \defvarargs{\x7fvarargs\x012885,95259
+\def\deftp{\x7fdeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7fvrparsebody\Edeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpx\deftpheader\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpheader\x012889,95339
+\def\deftpheader #1#2#3{\x7fdeftpheader\x012891,95394
\begingroup\defname {\x7fname\x012892,95442
-\def\deftpx #1 {\x7f\deftpx\x012897,95601
-\def\setref#1{\x7f\setref\x012908,95922
-\def\unnumbsetref#1{\x7f\unnumbsetref\x012913,96036
-\def\appendixsetref#1{\x7f\appendixsetref\x012918,96143
-\def\pxref#1{\x7f\pxref\x012929,96554
-\def\xref#1{\x7f\xref\x012930,96590
-\def\ref#1{\x7f\ref\x012931,96625
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7f\xrefX[\x012932,96655
-\def\printedmanual{\x7f\printedmanual\x012933,96698
-\def\printednodename{\x7f\printednodename\x012934,96736
-\def\printednodename{\x7f\printednodename\x012939,96861
-section ``\printednodename'' in \cite{\printedmanual}\x7f\printedmanual\x012954,97493
+\begingroup\defname {#2}{#1}\deftpargs{\x7ftpargs\x012892,95442
+\def\deftpx #1 {\x7fdeftpx\x012897,95601
+\def\setref#1{\x7fsetref\x012908,95922
+\def\unnumbsetref#1{\x7funnumbsetref\x012913,96036
+\def\appendixsetref#1{\x7fappendixsetref\x012918,96143
+\def\pxref#1{\x7fpxref\x012929,96554
+\def\xref#1{\x7fxref\x012930,96590
+\def\ref#1{\x7fref\x012931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7fxrefX\x012932,96655
+\def\printedmanual{\x7fprintedmanual\x012933,96698
+\def\printednodename{\x7fprintednodename\x012934,96736
+\def\printednodename{\x7fprintednodename\x012939,96861
+section ``\printednodename'' in \cite{\printedmanual}\x7fprintedmanual\x012954,97493
\refx{\x7fx\x012957,97571
-\def\dosetq #1#2{\x7f\dosetq\x012965,97791
-\def\internalsetq #1#2{\x7f\internalsetq\x012973,98049
-\def\Ypagenumber{\x7f\Ypagenumber\x012977,98150
-\def\Ytitle{\x7f\Ytitle\x012979,98176
-\def\Ynothing{\x7f\Ynothing\x012981,98203
-\def\Ysectionnumberandtype{\x7f\Ysectionnumberandtype\x012983,98220
-\def\Yappendixletterandtype{\x7f\Yappendixletterandtype\x012992,98536
+\refx{#1-snt}{} [\printednodename], page\tie\refx{\x7fx\x012957,97571
+\def\dosetq #1#2{\x7fdosetq\x012965,97791
+\def\dosetq #1#2{{\let\folio=0 \turnoffactive%\x7ffolio\x012965,97791
+\edef\next{\x7fnext\x012966,97838
+\def\internalsetq #1#2{\x7finternalsetq\x012973,98049
+\def\Ypagenumber{\x7fYpagenumber\x012977,98150
+\def\Ytitle{\x7fYtitle\x012979,98176
+\def\Ynothing{\x7fYnothing\x012981,98203
+\def\Ysectionnumberandtype{\x7fYsectionnumberandtype\x012983,98220
+\def\Yappendixletterandtype{\x7fYappendixletterandtype\x012992,98536
\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{\x7fno\x012993,98566
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\secno\x012994,98621
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\secno.\the\subsecno\x012996,98725
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\secno.\the\subsecno.\the\subsubsecno\x012998,98796
- \def\linenumber{\x7f\linenumber\x013009,99135
-\def\refx#1#2{\x7f\refx\x013015,99319
-\def\xrdef #1#2{\x7f\xrdef\x013037,99945
-\def\readauxfile{\x7f\readauxfile\x013040,100030
-\def\supereject{\x7f\supereject\x013110,101811
-\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\textindent\x013131,102496
-\def\openindices{\x7f\openindices\x013139,102682
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\x012994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\x012996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\x012998,98796
+\gdef\xreftie{\x7fxreftie\x013001,98891
+ \let\linenumber = \empty % Non-3.0.\x7flinenumber\x013007,99091
+ \def\linenumber{\x7flinenumber\x013009,99135
+\def\refx#1#2{\x7frefx\x013015,99319
+\def\xrdef #1#2{\x7fxrdef\x013037,99945
+{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {\x7fcsname\x013038,99962
+\def\readauxfile{\x7freadauxfile\x013040,100030
+\def\supereject{\x7fsupereject\x013110,101811
+\let\footnotestyle=\comment\x7ffootnotestyle\x013113,101918
+\let\ptexfootnote=\footnote\x7fptexfootnote\x013115,101947
+\long\gdef\footnote #1{\x7ffootnote\x013118,101993
+\edef\thisfootno{\x7fthisfootno\x013120,102060
+\let\@sf\empty\x7f@sf\x013121,102100
+\ifhmode\edef\@sf{\x7f@sf\x013122,102115
+\long\gdef\footnotezzz #1{\x7ffootnotezzz\x013126,102228
+\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\x013131,102496
+\def\openindices{\x7fopenindices\x013139,102682
+\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\parindent = \defaultparindent\x7faultparindent\x013152,102959
-\def\smallbook{\x7f\smallbook\x013175,103683
-\global\def\Esmallexample{\x7f\Esmallexample\x013192,104110
-\def\afourpaper{\x7f\afourpaper\x013196,104201
-\def\finalout{\x7f\finalout\x013224,105009
-\def\normaldoublequote{\x7f\normaldoublequote\x013235,105270
-\def\normaltilde{\x7f\normaltilde\x013236,105296
-\def\normalcaret{\x7f\normalcaret\x013237,105316
-\def\normalunderscore{\x7f\normalunderscore\x013238,105336
-\def\normalverticalbar{\x7f\normalverticalbar\x013239,105361
-\def\normalless{\x7f\normalless\x013240,105387
-\def\normalgreater{\x7f\normalgreater\x013241,105406
-\def\normalplus{\x7f\normalplus\x013242,105428
-\def\ifusingtt#1#2{\x7f\ifusingtt\x013253,105920
-\def\activedoublequote{\x7f\activedoublequote\x013261,106248
+\def\smallbook{\x7fsmallbook\x013175,103683
+\global\let\smalllisp=\smalllispx\x7fsmalllisp\x013190,104039
+\global\let\smallexample=\smalllispx\x7fsmallexample\x013191,104073
+\global\def\Esmallexample{\x7fEsmallexample\x013192,104110
+\def\afourpaper{\x7fafourpaper\x013196,104201
+\def\finalout{\x7ffinalout\x013224,105009
+\def\normaldoublequote{\x7fnormaldoublequote\x013235,105270
+\def\normaltilde{\x7fnormaltilde\x013236,105296
+\def\normalcaret{\x7fnormalcaret\x013237,105316
+\def\normalunderscore{\x7fnormalunderscore\x013238,105336
+\def\normalverticalbar{\x7fnormalverticalbar\x013239,105361
+\def\normalless{\x7fnormalless\x013240,105387
+\def\normalgreater{\x7fnormalgreater\x013241,105406
+\def\normalplus{\x7fnormalplus\x013242,105428
+\def\ifusingtt#1#2{\x7fifusingtt\x013253,105920
+\def\activedoublequote{\x7factivedoublequote\x013261,106248
+\let"=\activedoublequote\x7f"\x013262,106289
\def~{\x7f~\x013264,106334
\def^{\x7f^\x013267,106395
\def_{\x7f_\x013270,106434
-\def\_{\x7f\_\x013272,106508
-\def\lvvmode{\x7f\lvvmode\x013279,106845
+\def\_{\x7f_\x013272,106508
+\def\lvvmode{\x7flvvmode\x013279,106845
\def|{\x7f|\x013282,106895
\def<{\x7f<\x013285,106958
\def>{\x7f>\x013288,107015
\def+{\x7f+\x013290,107053
-\def\turnoffactive{\x7f\turnoffactive\x013296,107214
+\def\turnoffactive{\x7fturnoffactive\x013296,107214
+\def\turnoffactive{\let"=\normaldoublequote\x7f"\x013296,107214
+\let~=\normaltilde\x7f~\x013297,107258
+\let^=\normalcaret\x7f^\x013298,107277
+\let_=\normalunderscore\x7f_\x013299,107296
+\let|=\normalverticalbar\x7f|\x013300,107320
+\let<=\normalless\x7f<\x013301,107345
+\let>=\normalgreater\x7f>\x013302,107363
+\let+=\normalplus}\x7f+\x013303,107384
\global\def={\x7f=\x013307,107500
-\def\normalbackslash{\x7f\normalbackslash\x013321,107882
+\def\normalbackslash{\x7fnormalbackslash\x013321,107882
\f
merc-src/accumulator.m,3228
:- interface\x7f146,5371
diff --git a/test/manual/etags/ETAGS.good_2 b/test/manual/etags/ETAGS.good_2
index 6e90f1e8e05..3b4d04f9a3f 100644
--- a/test/manual/etags/ETAGS.good_2
+++ b/test/manual/etags/ETAGS.good_2
@@ -3721,8 +3721,8 @@ scm-src/test.scm,260
(define (((((curry-test \x7f14,205
(define-syntax test-begin\x7f17,265
\f
-tex-src/testenv.tex,52
-\newcommand{\nm}\x7f\nm\x014,77
+tex-src/testenv.tex,51
+\newcommand{\nm}\x7fnm\x014,77
\section{blah}\x7fblah\x018,139
\f
tex-src/gzip.texi,303
@@ -3737,722 +3737,1142 @@ tex-src/gzip.texi,303
@node Problems,\x7f460,16769
@node Concept Index,\x7fConcept Index\x01473,17289
\f
-tex-src/texinfo.tex,30627
-\def\texinfoversion{\x7f\texinfoversion\x0126,1035
-\def\tie{\x7f\tie\x0149,1526
-\def\gloggingall{\x7f\gloggingall\x0172,2276
-\def\loggingall{\x7f\loggingall\x0173,2345
-\def\onepageout#1{\x7f\onepageout\x0199,3282
-\def\croppageout#1{\x7f\croppageout\x01115,4032
-\def\cropmarks{\x7f\cropmarks\x01142,5092
-\def\pagebody#1{\x7f\pagebody\x01144,5139
-\def\ewtop{\x7f\ewtop\x01157,5594
-\def\nstop{\x7f\nstop\x01158,5658
-\def\ewbot{\x7f\ewbot\x01160,5741
-\def\nsbot{\x7f\nsbot\x01161,5805
-\def\parsearg #1{\x7f\parsearg\x01170,6104
-\def\parseargx{\x7f\parseargx\x01172,6182
-\def\parseargline{\x7f\parseargline\x01182,6422
-\def\flushcr{\x7f\flushcr\x01186,6543
-\newif\ifENV \ENVfalse \def\inENV{\x7f\inENV\x01190,6742
-\def\ENVcheck{\x7f\ENVcheck\x01191,6806
-\outer\def\begin{\x7f\begin\x01198,7053
-\def\beginxxx #1{\x7f\beginxxx\x01200,7091
-\def\end{\x7f\end\x01208,7346
-\def\endxxx #1{\x7f\endxxx\x01210,7374
-\def\errorE#1{\x7f\errorE\x01216,7563
-\def\singlespace{\x7f\singlespace\x01222,7757
-\def\@{\x7f\@\x01232,7980
-\def\`{\x7f\`\x01236,8080
-\def\'{\x7f\'\x01237,8092
-\def\mylbrace {\x7f\mylbrace\x01241,8140
-\def\myrbrace {\x7f\myrbrace\x01242,8173
-\def\:{\x7f\:\x01247,8287
-\def\*{\x7f\*\x01250,8341
-\def\.{\x7f\.\x01253,8417
-\def\w#1{\x7f\w\x01258,8648
-\def\group{\x7f\group\x01268,9131
- \def\Egroup{\x7f\Egroup\x01273,9295
-\def\need{\x7f\need\x01289,9737
-\def\needx#1{\x7f\needx\x01300,10014
-\def\dots{\x7f\dots\x01339,11400
-\def\page{\x7f\page\x01343,11464
-\def\exdent{\x7f\exdent\x01353,11791
-\def\exdentyyy #1{\x7f\exdentyyy\x01354,11824
-\def\nofillexdent{\x7f\nofillexdent\x01357,11968
-\def\nofillexdentyyy #1{\x7f\nofillexdentyyy\x01358,12013
-\def\include{\x7f\include\x01365,12197
-\def\includezzz #1{\x7f\includezzz\x01366,12232
-\def\thisfile{\x7f\thisfile\x01369,12283
-\def\center{\x7f\center\x01373,12346
-\def\centerzzz #1{\x7f\centerzzz\x01374,12379
-\def\sp{\x7f\sp\x01380,12521
-\def\spxxx #1{\x7f\spxxx\x01381,12546
-\def\comment{\x7f\comment\x01387,12720
-\def\commentxxx #1{\x7f\commentxxx\x01390,12817
-\def\ignoresections{\x7f\ignoresections\x01396,12986
-\let\chapter=\relax\x7f=\relax\x01397,13008
-\let\section=\relax\x7f=\relax\x01406,13253
-\let\subsection=\relax\x7f=\relax\x01409,13314
-\let\subsubsection=\relax\x7f=\relax\x01410,13337
-\let\appendix=\relax\x7f=\relax\x01411,13363
-\let\appendixsec=\relax\x7fsec=\relax\x01412,13384
-\let\appendixsection=\relax\x7fsection=\relax\x01413,13408
-\let\appendixsubsec=\relax\x7fsubsec=\relax\x01414,13436
-\let\appendixsubsection=\relax\x7fsubsection=\relax\x01415,13463
-\let\appendixsubsubsec=\relax\x7fsubsubsec=\relax\x01416,13494
-\let\appendixsubsubsection=\relax\x7fsubsubsection=\relax\x01417,13524
-\def\ignore{\x7f\ignore\x01423,13626
-\long\def\ignorexxx #1\end ignore{\x7f\ignorexxx\x01427,13766
-\def\direntry{\x7f\direntry\x01429,13825
-\long\def\direntryxxx #1\end direntry{\x7f\direntryxxx\x01430,13864
-\def\ifset{\x7f\ifset\x01434,13974
-\def\ifsetxxx #1{\x7f\ifsetxxx\x01436,14032
-\def\Eifset{\x7f\Eifset\x01440,14159
-\def\ifsetfail{\x7f\ifsetfail\x01441,14173
-\long\def\ifsetfailxxx #1\end ifset{\x7f\ifsetfailxxx\x01442,14229
-\def\ifclear{\x7f\ifclear\x01444,14290
-\def\ifclearxxx #1{\x7f\ifclearxxx\x01446,14352
-\def\Eifclear{\x7f\Eifclear\x01450,14483
-\def\ifclearfail{\x7f\ifclearfail\x01451,14499
-\long\def\ifclearfailxxx #1\end ifclear{\x7f\ifclearfailxxx\x01452,14559
-\def\set{\x7f\set\x01456,14710
-\def\setxxx #1{\x7f\setxxx\x01457,14737
-\def\clear{\x7f\clear\x01460,14799
-\def\clearxxx #1{\x7f\clearxxx\x01461,14830
-\def\iftex{\x7f\iftex\x01466,14947
-\def\Eiftex{\x7f\Eiftex\x01467,14960
-\def\ifinfo{\x7f\ifinfo\x01468,14974
-\long\def\ifinfoxxx #1\end ifinfo{\x7f\ifinfoxxx\x01469,15024
-\long\def\menu #1\end menu{\x7f\menu\x01471,15083
-\def\asis#1{\x7f\asis\x01472,15112
-\def\math#1{\x7f\math\x01485,15655
-\def\node{\x7f\node\x01487,15699
-\def\nodezzz#1{\x7f\nodezzz\x01488,15737
-\def\nodexxx[#1,#2]{\x7f\nodexxx[\x01489,15768
-\def\donoderef{\x7f\donoderef\x01492,15830
-\def\unnumbnoderef{\x7f\unnumbnoderef\x01496,15951
-\def\appendixnoderef{\x7f\appendixnoderef\x01500,16082
+tex-src/texinfo.tex,55236
+\def\texinfoversion{\x7ftexinfoversion\x0126,1035
+\let\ptexlbrace=\{\x7fptexlbrace\x0135,1308
+\let\ptexrbrace=\}\x7fptexrbrace\x0136,1327
+\let\ptexdots=\dots\x7fptexdots\x0137,1346
+\let\ptexdot=\.\x7fptexdot\x0138,1366
+\let\ptexstar=\*\x7fptexstar\x0139,1382
+\let\ptexend=\end\x7fptexend\x0140,1399
+\let\ptexbullet=\bullet\x7fptexbullet\x0141,1417
+\let\ptexb=\b\x7fptexb\x0142,1441
+\let\ptexc=\c\x7fptexc\x0143,1455
+\let\ptexi=\i\x7fptexi\x0144,1469
+\let\ptext=\t\x7fptext\x0145,1483
+\let\ptexl=\l\x7fptexl\x0146,1497
+\let\ptexL=\L\x7fptexL\x0147,1511
+\def\tie{\x7ftie\x0149,1526
+\def\gloggingall{\x7fgloggingall\x0172,2276
+\def\loggingall{\x7floggingall\x0173,2345
+\def\onepageout#1{\x7fonepageout\x0199,3282
+\shipout\vbox{{\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01103,3489
+{\let\hsize=\pagewidth \makefootline}\x7fhsize\x01104,3556
+\def\croppageout#1{\x7fcroppageout\x01115,4032
+ {\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01126,4511
+ {\let\hsize=\pagewidth \makefootline}\x7fhsize\x01128,4569
+\def\cropmarks{\x7fcropmarks\x01142,5092
+\def\cropmarks{\let\onepageout=\croppageout }\x7fonepageout\x01142,5092
+\def\pagebody#1{\x7fpagebody\x01144,5139
+\gdef\pagecontents#1{\x7fpagecontents\x01146,5220
+\def\ewtop{\x7fewtop\x01157,5594
+\def\nstop{\x7fnstop\x01158,5658
+\def\ewbot{\x7fewbot\x01160,5741
+\def\nsbot{\x7fnsbot\x01161,5805
+\def\parsearg #1{\x7fparsearg\x01170,6104
+\def\parsearg #1{\let\next=#1\begingroup\obeylines\futurelet\temp\parseargx}\x7fnext\x01170,6104
+\def\parseargx{\x7fparseargx\x01172,6182
+\gdef\parseargdiscardspace {\x7fparseargdiscardspace\x01178,6321
+\gdef\obeyedspace{\x7fobeyedspace\x01180,6399
+\def\parseargline{\x7fparseargline\x01182,6422
+\gdef\parsearglinex #1^^M{\x7fparsearglinex\x01184,6493
+\def\flushcr{\x7fflushcr\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{\x7fnext\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}\x7fnext\x01186,6543
+\newif\ifENV \ENVfalse \def\inENV{\x7finENV\x01190,6742
+\def\ENVcheck{\x7fENVcheck\x01191,6806
+\outer\def\begin{\x7fbegin\x01198,7053
+\def\beginxxx #1{\x7fbeginxxx\x01200,7091
+\def\end{\x7fend\x01208,7346
+\def\endxxx #1{\x7fendxxx\x01210,7374
+\def\errorE#1{\x7ferrorE\x01216,7563
+\def\singlespace{\x7fsinglespace\x01222,7757
+\def\@{\x7f@\x01232,7980
+\def\`{\x7f`\x01236,8080
+\def\'{\x7f'\x01237,8092
+\def\mylbrace {\x7fmylbrace\x01241,8140
+\def\myrbrace {\x7fmyrbrace\x01242,8173
+\let\{=\mylbrace\x7f{\x01243,8206
+\let\}=\myrbrace\x7f}\x01244,8223
+\def\:{\x7f:\x01247,8287
+\def\*{\x7f*\x01250,8341
+\def\.{\x7f.\x01253,8417
+\def\w#1{\x7fw\x01258,8648
+\def\group{\x7fgroup\x01268,9131
+ \def\Egroup{\x7fEgroup\x01273,9295
+\def\need{\x7fneed\x01289,9737
+\def\needx#1{\x7fneedx\x01300,10014
+\let\br = \par\x7fbr\x01335,11355
+\def\dots{\x7fdots\x01339,11400
+\def\page{\x7fpage\x01343,11464
+\def\exdent{\x7fexdent\x01353,11791
+\def\exdentyyy #1{\x7fexdentyyy\x01354,11824
+\def\nofillexdent{\x7fnofillexdent\x01357,11968
+\def\nofillexdentyyy #1{\x7fnofillexdentyyy\x01358,12013
+\def\include{\x7finclude\x01365,12197
+\def\includezzz #1{\x7fincludezzz\x01366,12232
+\def\includezzz #1{{\def\thisfile{\x7fthisfile\x01366,12232
+\def\thisfile{\x7fthisfile\x01369,12283
+\def\center{\x7fcenter\x01373,12346
+\def\centerzzz #1{\x7fcenterzzz\x01374,12379
+\def\sp{\x7fsp\x01380,12521
+\def\spxxx #1{\x7fspxxx\x01381,12546
+\def\comment{\x7fcomment\x01387,12720
+\def\commentxxx #1{\x7fcommentxxx\x01390,12817
+\let\c=\comment\x7fc\x01392,12883
+\def\ignoresections{\x7fignoresections\x01396,12986
+\let\chapter=\relax\x7fchapter\x01397,13008
+\let\unnumbered=\relax\x7funnumbered\x01398,13028
+\let\top=\relax\x7ftop\x01399,13051
+\let\unnumberedsec=\relax\x7funnumberedsec\x01400,13067
+\let\unnumberedsection=\relax\x7funnumberedsection\x01401,13093
+\let\unnumberedsubsec=\relax\x7funnumberedsubsec\x01402,13123
+\let\unnumberedsubsection=\relax\x7funnumberedsubsection\x01403,13152
+\let\unnumberedsubsubsec=\relax\x7funnumberedsubsubsec\x01404,13185
+\let\unnumberedsubsubsection=\relax\x7funnumberedsubsubsection\x01405,13217
+\let\section=\relax\x7fsection\x01406,13253
+\let\subsec=\relax\x7fsubsec\x01407,13273
+\let\subsubsec=\relax\x7fsubsubsec\x01408,13292
+\let\subsection=\relax\x7fsubsection\x01409,13314
+\let\subsubsection=\relax\x7fsubsubsection\x01410,13337
+\let\appendix=\relax\x7fappendix\x01411,13363
+\let\appendixsec=\relax\x7fappendixsec\x01412,13384
+\let\appendixsection=\relax\x7fappendixsection\x01413,13408
+\let\appendixsubsec=\relax\x7fappendixsubsec\x01414,13436
+\let\appendixsubsection=\relax\x7fappendixsubsection\x01415,13463
+\let\appendixsubsubsec=\relax\x7fappendixsubsubsec\x01416,13494
+\let\appendixsubsubsection=\relax\x7fappendixsubsubsection\x01417,13524
+\let\contents=\relax\x7fcontents\x01418,13558
+\let\smallbook=\relax\x7fsmallbook\x01419,13579
+\let\titlepage=\relax\x7ftitlepage\x01420,13601
+\def\ignore{\x7fignore\x01423,13626
+\long\def\ignorexxx #1\end ignore{\x7fignorexxx\x01427,13766
+\def\direntry{\x7fdirentry\x01429,13825
+\long\def\direntryxxx #1\end direntry{\x7fdirentryxxx\x01430,13864
+\def\ifset{\x7fifset\x01434,13974
+\def\ifsetxxx #1{\x7fifsetxxx\x01436,14032
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\ifsetfail\x7ftemp\x01437,14059
+\else \let\temp=\relax \fi\x7ftemp\x01438,14125
+\def\Eifset{\x7fEifset\x01440,14159
+\def\ifsetfail{\x7fifsetfail\x01441,14173
+\long\def\ifsetfailxxx #1\end ifset{\x7fifsetfailxxx\x01442,14229
+\def\ifclear{\x7fifclear\x01444,14290
+\def\ifclearxxx #1{\x7fifclearxxx\x01446,14352
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\relax\x7ftemp\x01447,14381
+\else \let\temp=\ifclearfail \fi\x7ftemp\x01448,14443
+\def\Eifclear{\x7fEifclear\x01450,14483
+\def\ifclearfail{\x7fifclearfail\x01451,14499
+\long\def\ifclearfailxxx #1\end ifclear{\x7fifclearfailxxx\x01452,14559
+\def\set{\x7fset\x01456,14710
+\def\setxxx #1{\x7fsetxxx\x01457,14737
+\expandafter\let\csname IF#1\endcsname=\set}\x7fcsname\x01458,14753
+\def\clear{\x7fclear\x01460,14799
+\def\clearxxx #1{\x7fclearxxx\x01461,14830
+\expandafter\let\csname IF#1\endcsname=\relax}\x7fcsname\x01462,14848
+\def\iftex{\x7fiftex\x01466,14947
+\def\Eiftex{\x7fEiftex\x01467,14960
+\def\ifinfo{\x7fifinfo\x01468,14974
+\long\def\ifinfoxxx #1\end ifinfo{\x7fifinfoxxx\x01469,15024
+\long\def\menu #1\end menu{\x7fmenu\x01471,15083
+\def\asis#1{\x7fasis\x01472,15112
+\let\implicitmath = $\x7fimplicitmath\x01484,15633
+\def\math#1{\x7fmath\x01485,15655
+\def\node{\x7fnode\x01487,15699
+\def\nodezzz#1{\x7fnodezzz\x01488,15737
+\def\nodexxx[#1,#2]{\x7fnodexxx\x01489,15768
+\def\nodexxx[#1,#2]{\gdef\lastnode{\x7flastnode\x01489,15768
+\let\lastnode=\relax\x7flastnode\x01490,15808
+\def\donoderef{\x7fdonoderef\x01492,15830
+\let\lastnode=\relax}\x7flastnode\x01494,15928
+\def\unnumbnoderef{\x7funnumbnoderef\x01496,15951
+\let\lastnode=\relax}\x7flastnode\x01498,16059
+\def\appendixnoderef{\x7fappendixnoderef\x01500,16082
\expandafter\expandafter\expandafter\appendixsetref{\x7fsetref\x01501,16128
-\let\refill=\relax\x7fill=\relax\x01504,16217
-\def\setfilename{\x7f\setfilename\x01509,16431
-\outer\def\bye{\x7f\bye\x01518,16677
-\def\inforef #1{\x7f\inforef\x01520,16733
-\def\inforefzzz #1,#2,#3,#4**{\x7f\inforefzzz\x01521,16771
-\def\losespace #1{\x7f\losespace\x01523,16868
-\def\sf{\x7f\sf\x01532,17072
-\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf=cmbx10\x01558,17867
-\font\deftt=cmtt10 scaled \magstep1\x7ftt=cmtt10\x01559,17913
-\def\df{\x7f\df\x01560,17949
-\def\resetmathfonts{\x7f\resetmathfonts\x01635,20543
-\def\textfonts{\x7f\textfonts\x01648,21132
-\def\chapfonts{\x7f\chapfonts\x01653,21347
-\def\secfonts{\x7f\secfonts\x01658,21563
-\def\subsecfonts{\x7f\subsecfonts\x01663,21768
-\def\indexfonts{\x7f\indexfonts\x01668,21985
-\def\smartitalicx{\x7f\smartitalicx\x01691,22717
-\def\smartitalic#1{\x7f\smartitalic\x01692,22793
-\let\cite=\smartitalic\x7f=\smartitalic\x01698,22938
-\def\b#1{\x7f\b\x01700,22962
-\def\t#1{\x7f\t\x01703,22997
-\def\samp #1{\x7f\samp\x01706,23149
-\def\key #1{\x7f\key\x01707,23182
-\def\ctrl #1{\x7f\ctrl\x01708,23243
-\def\tclose#1{\x7f\tclose\x01716,23445
-\def\ {\x7f\\x01720,23611
-\def\xkey{\x7f\xkey\x01728,23880
-\def\kbdfoo#1#2#3\par{\x7f\kbdfoo\x01729,23896
-\def\dmn#1{\x7f\dmn\x01738,24197
-\def\kbd#1{\x7f\kbd\x01740,24224
-\def\l#1{\x7f\l\x01742,24281
-\def\r#1{\x7f\r\x01744,24310
-\def\sc#1{\x7f\sc\x01746,24378
-\def\ii#1{\x7f\ii\x01747,24421
-\def\titlefont#1{\x7f\titlefont\x01755,24654
-\def\titlepage{\x7f\titlepage\x01761,24757
- \def\subtitlefont{\x7f\subtitlefont\x01766,24984
- \def\authorfont{\x7f\authorfont\x01768,25068
- \def\title{\x7f\title\x01774,25278
- \def\titlezzz##1{\x7f\titlezzz\x01775,25313
- \def\subtitle{\x7f\subtitle\x01783,25628
- \def\subtitlezzz##1{\x7f\subtitlezzz\x01784,25669
- \def\author{\x7f\author\x01787,25787
- \def\authorzzz##1{\x7f\authorzzz\x01788,25824
- \def\page{\x7f\page\x01794,26115
-\def\Etitlepage{\x7f\Etitlepage\x01804,26284
-\def\finishtitlepage{\x7f\finishtitlepage\x01817,26672
-\def\evenheading{\x7f\evenheading\x01846,27680
-\def\oddheading{\x7f\oddheading\x01847,27723
-\def\everyheading{\x7f\everyheading\x01848,27764
-\def\evenfooting{\x7f\evenfooting\x01850,27810
-\def\oddfooting{\x7f\oddfooting\x01851,27853
-\def\everyfooting{\x7f\everyfooting\x01852,27894
-\def\headings #1 {\x7f\headings\x01893,29586
-\def\HEADINGSoff{\x7f\HEADINGSoff\x01895,29635
-\def\HEADINGSdouble{\x7f\HEADINGSdouble\x01904,30062
-\def\HEADINGSsingle{\x7f\HEADINGSsingle\x01914,30382
-\def\HEADINGSon{\x7f\HEADINGSon\x01922,30603
-\def\HEADINGSafter{\x7f\HEADINGSafter\x01924,30637
-\def\HEADINGSdoublex{\x7f\HEADINGSdoublex\x01926,30732
-\def\HEADINGSsingleafter{\x7f\HEADINGSsingleafter\x01933,30920
-\def\HEADINGSsinglex{\x7f\HEADINGSsinglex\x01934,30981
-\def\today{\x7f\today\x01943,31256
-\def\thistitle{\x7f\thistitle\x01958,31801
-\def\settitle{\x7f\settitle\x01959,31826
-\def\settitlezzz #1{\x7f\settitlezzz\x01960,31863
-\def\internalBitem{\x7f\internalBitem\x01992,32793
-\def\internalBitemx{\x7f\internalBitemx\x01993,32843
-\def\internalBxitem "#1"{\x7f\internalBxitem\x01995,32888
-\def\internalBxitemx "#1"{\x7f\internalBxitemx\x01996,32968
-\def\internalBkitem{\x7f\internalBkitem\x01998,33043
-\def\internalBkitemx{\x7f\internalBkitemx\x01999,33095
-\def\kitemzzz #1{\x7f\kitemzzz\x011001,33142
-\def\xitemzzz #1{\x7f\xitemzzz\x011004,33244
-\def\itemzzz #1{\x7f\itemzzz\x011007,33347
-\def\item{\x7f\item\x011037,34418
-\def\itemx{\x7f\itemx\x011038,34469
-\def\kitem{\x7f\kitem\x011039,34522
-\def\kitemx{\x7f\kitemx\x011040,34575
-\def\xitem{\x7f\xitem\x011041,34630
-\def\xitemx{\x7f\xitemx\x011042,34683
-\def\description{\x7f\description\x011045,34793
-\def\table{\x7f\table\x011047,34843
-\def\ftable{\x7f\ftable\x011052,34987
-\def\Eftable{\x7f\Eftable\x011056,35133
-\def\vtable{\x7f\vtable\x011059,35202
-\def\Evtable{\x7f\Evtable\x011063,35348
-\def\dontindex #1{\x7f\dontindex\x011066,35417
-\def\fnitemindex #1{\x7f\fnitemindex\x011067,35437
-\def\vritemindex #1{\x7f\vritemindex\x011068,35482
-\def\tablez #1#2#3#4#5#6{\x7f\tablez\x011074,35631
-\def\Edescription{\x7f\Edescription\x011077,35689
-\def\itemfont{\x7f\itemfont\x011082,35890
-\def\Etable{\x7f\Etable\x011090,36116
-\def\itemize{\x7f\itemize\x011103,36440
-\def\itemizezzz #1{\x7f\itemizezzz\x011105,36476
-\def\itemizey #1#2{\x7f\itemizey\x011110,36571
-\def#2{\x7f1119,36817
-\def\itemcontents{\x7f\itemcontents\x011120,36858
-\def\bullet{\x7f\bullet\x011123,36906
-\def\minus{\x7f\minus\x011124,36933
-\def\frenchspacing{\x7f\frenchspacing\x011128,37041
-\def\splitoff#1#2\endmark{\x7f\splitoff\x011134,37266
-\def\enumerate{\x7f\enumerate\x011140,37496
-\def\enumeratezzz #1{\x7f\enumeratezzz\x011141,37535
-\def\enumeratey #1 #2\endenumeratey{\x7f\enumeratey\x011142,37588
- \def\thearg{\x7f\thearg\x011146,37735
- \ifx\thearg\empty \def\thearg{\x7f\thearg\x011147,37754
-\def\numericenumerate{\x7f\numericenumerate\x011184,39088
-\def\lowercaseenumerate{\x7f\lowercaseenumerate\x011190,39218
-\def\uppercaseenumerate{\x7f\uppercaseenumerate\x011203,39565
-\def\startenumeration#1{\x7f\startenumeration\x011219,40055
-\def\alphaenumerate{\x7f\alphaenumerate\x011227,40237
-\def\capsenumerate{\x7f\capsenumerate\x011228,40272
-\def\Ealphaenumerate{\x7f\Ealphaenumerate\x011229,40306
-\def\Ecapsenumerate{\x7f\Ecapsenumerate\x011230,40340
-\def\itemizeitem{\x7f\itemizeitem\x011234,40420
-\def\newindex #1{\x7f\newindex\x011259,41277
-\def\defindex{\x7f\defindex\x011268,41566
-\def\newcodeindex #1{\x7f\newcodeindex\x011272,41674
-\def\defcodeindex{\x7f\defcodeindex\x011279,41934
-\def\synindex #1 #2 {\x7f\synindex\x011283,42114
-\def\syncodeindex #1 #2 {\x7f\syncodeindex\x011292,42454
-\def\doindex#1{\x7f\doindex\x011309,43133
-\def\singleindexer #1{\x7f\singleindexer\x011310,43192
-\def\docodeindex#1{\x7f\docodeindex\x011313,43304
-\def\singlecodeindexer #1{\x7f\singlecodeindexer\x011314,43371
-\def\indexdummies{\x7f\indexdummies\x011316,43429
-\def\_{\x7f\_\x011317,43449
-\def\w{\x7f\w\x011318,43477
-\def\bf{\x7f\bf\x011319,43504
-\def\rm{\x7f\rm\x011320,43533
-\def\sl{\x7f\sl\x011321,43562
-\def\sf{\x7f\sf\x011322,43591
-\def\tt{\x7f\tt\x011323,43619
-\def\gtr{\x7f\gtr\x011324,43647
-\def\less{\x7f\less\x011325,43677
-\def\hat{\x7f\hat\x011326,43709
-\def\char{\x7f\char\x011327,43739
-\def\TeX{\x7f\TeX\x011328,43771
-\def\dots{\x7f\dots\x011329,43801
-\def\copyright{\x7f\copyright\x011330,43834
-\def\tclose##1{\x7f\tclose\x011331,43877
-\def\code##1{\x7f\code\x011332,43922
-\def\samp##1{\x7f\samp\x011333,43963
-\def\t##1{\x7f\t\x011334,44004
-\def\r##1{\x7f\r\x011335,44039
-\def\i##1{\x7f\i\x011336,44074
-\def\b##1{\x7f\b\x011337,44109
-\def\cite##1{\x7f\cite\x011338,44144
-\def\key##1{\x7f\key\x011339,44185
-\def\file##1{\x7f\file\x011340,44224
-\def\var##1{\x7f\var\x011341,44265
-\def\kbd##1{\x7f\kbd\x011342,44304
-\def\indexdummyfont#1{\x7f\indexdummyfont\x011347,44460
-\def\indexdummytex{\x7f\indexdummytex\x011348,44486
-\def\indexdummydots{\x7f\indexdummydots\x011349,44510
-\def\indexnofonts{\x7f\indexnofonts\x011351,44536
+\let\lastnode=\relax}\x7flastnode\x01502,16194
+\let\refill=\relax\x7frefill\x01504,16217
+\def\setfilename{\x7fsetfilename\x01509,16431
+ \global\let\setfilename=\comment % Ignore extra @setfilename cmds.\x7fsetfilename\x01514,16562
+\outer\def\bye{\x7fbye\x01518,16677
+\def\inforef #1{\x7finforef\x01520,16733
+\def\inforefzzz #1,#2,#3,#4**{\x7finforefzzz\x01521,16771
+\def\losespace #1{\x7flosespace\x01523,16868
+\def\sf{\x7fsf\x01532,17072
+\let\li = \sf % Sometimes we call it \li, not \sf.\x7fli\x01533,17100
+\let\mainmagstep=\magstephalf\x7fmainmagstep\x01536,17201
+\let\mainmagstep=\magstep1\x7fmainmagstep\x01539,17250
+\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf\x01558,17867
+\font\deftt=cmtt10 scaled \magstep1\x7ftt\x01559,17913
+\def\df{\x7fdf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftentt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftenbf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7fbf\x01560,17949
+\let\indsl=\indit\x7findsl\x01570,18310
+\let\indtt=\ninett\x7findtt\x01571,18328
+\let\indsf=\indrm\x7findsf\x01572,18347
+\let\indbf=\indrm\x7findbf\x01573,18365
+\let\indsc=\indrm\x7findsc\x01574,18383
+\let\chapbf=\chaprm\x7fchapbf\x01584,18643
+\let\authorrm = \secrm\x7fauthorrm\x01627,20193
+\def\resetmathfonts{\x7fresetmathfonts\x01635,20543
+\def\textfonts{\x7ftextfonts\x01648,21132
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenrm\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenit\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftensl\x01649,21149
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftenbf\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftentt\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7fsmallcaps\x01650,21208
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensf\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7fteni\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensy\x01651,21271
+\def\chapfonts{\x7fchapfonts\x01653,21347
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenrm\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenit\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftensl\x01654,21364
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftenbf\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftentt\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7fsmallcaps\x01655,21424
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensf\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7fteni\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensy\x01656,21487
+\def\secfonts{\x7fsecfonts\x01658,21563
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenrm\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenit\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftensl\x01659,21579
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftenbf\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftentt\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7fsmallcaps\x01660,21635
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensf\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7fteni\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensy\x01661,21695
+\def\subsecfonts{\x7fsubsecfonts\x01663,21768
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenrm\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenit\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftensl\x01664,21787
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftenbf\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftentt\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7fsmallcaps\x01665,21846
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensf\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7fteni\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensy\x01666,21909
+\def\indexfonts{\x7findexfonts\x01668,21985
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenrm\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenit\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftensl\x01669,22003
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftenbf\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftentt\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7fsmallcaps\x01670,22059
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensf\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7fteni\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensy\x01671,22119
+\def\smartitalicx{\x7fsmartitalicx\x01691,22717
+\def\smartitalic#1{\x7fsmartitalic\x01692,22793
+\let\i=\smartitalic\x7fi\x01694,22851
+\let\var=\smartitalic\x7fvar\x01695,22871
+\let\dfn=\smartitalic\x7fdfn\x01696,22893
+\let\emph=\smartitalic\x7femph\x01697,22915
+\let\cite=\smartitalic\x7fcite\x01698,22938
+\def\b#1{\x7fb\x01700,22962
+\let\strong=\b\x7fstrong\x01701,22981
+\def\t#1{\x7ft\x01703,22997
+\let\ttfont = \t\x7fttfont\x01704,23072
+\def\samp #1{\x7fsamp\x01706,23149
+\def\key #1{\x7fkey\x01707,23182
+\def\ctrl #1{\x7fctrl\x01708,23243
+\let\file=\samp\x7ffile\x01710,23285
+\def\tclose#1{\x7ftclose\x01716,23445
+\let\code=\tclose\x7fcode\x01722,23722
+\def\xkey{\x7fxkey\x01728,23880
+\def\kbdfoo#1#2#3\par{\x7fkbdfoo\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{\x7fone\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{\x7fthree\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{\x7fthreex\x01729,23896
+\def\dmn#1{\x7fdmn\x01738,24197
+\def\kbd#1{\x7fkbd\x01740,24224
+\def\kbd#1{\def\look{\x7flook\x01740,24224
+\def\l#1{\x7fl\x01742,24281
+\def\r#1{\x7fr\x01744,24310
+\def\sc#1{\x7fsc\x01746,24378
+\def\ii#1{\x7fii\x01747,24421
+\def\titlefont#1{\x7ftitlefont\x01755,24654
+\def\titlepage{\x7ftitlepage\x01761,24757
+ \let\subtitlerm=\tenrm\x7fsubtitlerm\x01762,24810
+ \def\subtitlefont{\x7fsubtitlefont\x01766,24984
+ \def\authorfont{\x7fauthorfont\x01768,25068
+ \def\title{\x7ftitle\x01774,25278
+ \def\titlezzz##1{\x7ftitlezzz\x01775,25313
+ \def\subtitle{\x7fsubtitle\x01783,25628
+ \def\subtitlezzz##1{\x7fsubtitlezzz\x01784,25669
+ \def\author{\x7fauthor\x01787,25787
+ \def\authorzzz##1{\x7fauthorzzz\x01788,25824
+ \let\oldpage = \page\x7foldpage\x01793,26091
+ \def\page{\x7fpage\x01794,26115
+ \let\page = \oldpage\x7fpage\x01799,26206
+\def\Etitlepage{\x7fEtitlepage\x01804,26284
+\def\finishtitlepage{\x7ffinishtitlepage\x01817,26672
+\let\thispage=\folio\x7fthispage\x01825,26825
+\let\HEADINGShook=\relax\x7fHEADINGShook\x01837,27420
+\def\evenheading{\x7fevenheading\x01846,27680
+\def\oddheading{\x7foddheading\x01847,27723
+\def\everyheading{\x7feveryheading\x01848,27764
+\def\evenfooting{\x7fevenfooting\x01850,27810
+\def\oddfooting{\x7foddfooting\x01851,27853
+\def\everyfooting{\x7feveryfooting\x01852,27894
+\gdef\evenheadingxxx #1{\x7fevenheadingxxx\x01856,27958
+\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{\x7fevenheadingyyy\x01857,28017
+\gdef\oddheadingxxx #1{\x7foddheadingxxx\x01860,28126
+\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{\x7foddheadingyyy\x01861,28183
+\gdef\everyheadingxxx #1{\x7feveryheadingxxx\x01864,28290
+\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{\x7feveryheadingyyy\x01865,28351
+\gdef\evenfootingxxx #1{\x7fevenfootingxxx\x01869,28522
+\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{\x7fevenfootingyyy\x01870,28581
+\gdef\oddfootingxxx #1{\x7foddfootingxxx\x01873,28690
+\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{\x7foddfootingyyy\x01874,28747
+\gdef\everyfootingxxx #1{\x7feveryfootingxxx\x01877,28854
+\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{\x7feveryfootingyyy\x01878,28915
+\def\headings #1 {\x7fheadings\x01893,29586
+\def\HEADINGSoff{\x7fHEADINGSoff\x01895,29635
+\def\HEADINGSdouble{\x7fHEADINGSdouble\x01904,30062
+\def\HEADINGSsingle{\x7fHEADINGSsingle\x01914,30382
+\def\HEADINGSon{\x7fHEADINGSon\x01922,30603
+\def\HEADINGSafter{\x7fHEADINGSafter\x01924,30637
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}\x7fHEADINGShook\x01924,30637
+\let\HEADINGSdoubleafter=\HEADINGSafter\x7fHEADINGSdoubleafter\x01925,30692
+\def\HEADINGSdoublex{\x7fHEADINGSdoublex\x01926,30732
+\def\HEADINGSsingleafter{\x7fHEADINGSsingleafter\x01933,30920
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}\x7fHEADINGShook\x01933,30920
+\def\HEADINGSsinglex{\x7fHEADINGSsinglex\x01934,30981
+\def\today{\x7ftoday\x01943,31256
+\def\thistitle{\x7fthistitle\x01958,31801
+\def\settitle{\x7fsettitle\x01959,31826
+\def\settitlezzz #1{\x7fsettitlezzz\x01960,31863
+\def\settitlezzz #1{\gdef\thistitle{\x7fthistitle\x01960,31863
+\def\internalBitem{\x7finternalBitem\x01992,32793
+\def\internalBitemx{\x7finternalBitemx\x01993,32843
+\def\internalBxitem "#1"{\x7finternalBxitem\x01995,32888
+\def\internalBxitem "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01995,32888
+\def\internalBxitemx "#1"{\x7finternalBxitemx\x01996,32968
+\def\internalBxitemx "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01996,32968
+\def\internalBkitem{\x7finternalBkitem\x01998,33043
+\def\internalBkitemx{\x7finternalBkitemx\x01999,33095
+\def\kitemzzz #1{\x7fkitemzzz\x011001,33142
+\def\xitemzzz #1{\x7fxitemzzz\x011004,33244
+\def\itemzzz #1{\x7fitemzzz\x011007,33347
+\def\item{\x7fitem\x011037,34418
+\def\itemx{\x7fitemx\x011038,34469
+\def\kitem{\x7fkitem\x011039,34522
+\def\kitemx{\x7fkitemx\x011040,34575
+\def\xitem{\x7fxitem\x011041,34630
+\def\xitemx{\x7fxitemx\x011042,34683
+\def\description{\x7fdescription\x011045,34793
+\def\table{\x7ftable\x011047,34843
+\gdef\tablex #1^^M{\x7ftablex\x011049,34925
+\def\ftable{\x7fftable\x011052,34987
+\gdef\ftablex #1^^M{\x7fftablex\x011054,35071
+\def\Eftable{\x7fEftable\x011056,35133
+\let\Etable=\relax}\x7fEtable\x011057,35180
+\def\vtable{\x7fvtable\x011059,35202
+\gdef\vtablex #1^^M{\x7fvtablex\x011061,35286
+\def\Evtable{\x7fEvtable\x011063,35348
+\let\Etable=\relax}\x7fEtable\x011064,35395
+\def\dontindex #1{\x7fdontindex\x011066,35417
+\def\fnitemindex #1{\x7ffnitemindex\x011067,35437
+\def\vritemindex #1{\x7fvritemindex\x011068,35482
+\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\x7ftabley\x011071,35543
+\def\tablez #1#2#3#4#5#6{\x7ftablez\x011074,35631
+\def\Edescription{\x7fEdescription\x011077,35689
+\let\itemindex=#1%\x7fitemindex\x011078,35735
+\def\itemfont{\x7fitemfont\x011082,35890
+\def\Etable{\x7fEtable\x011090,36116
+\let\item = \internalBitem %\x7fitem\x011091,36162
+\let\itemx = \internalBitemx %\x7fitemx\x011092,36191
+\let\kitem = \internalBkitem %\x7fkitem\x011093,36222
+\let\kitemx = \internalBkitemx %\x7fkitemx\x011094,36253
+\let\xitem = \internalBxitem %\x7fxitem\x011095,36286
+\let\xitemx = \internalBxitemx %\x7fxitemx\x011096,36317
+\def\itemize{\x7fitemize\x011103,36440
+\def\itemizezzz #1{\x7fitemizezzz\x011105,36476
+\def\itemizey #1#2{\x7fitemizey\x011110,36571
+\def\itemcontents{\x7fitemcontents\x011120,36858
+\let\item=\itemizeitem}\x7fitem\x011121,36881
+\def\bullet{\x7fbullet\x011123,36906
+\def\minus{\x7fminus\x011124,36933
+\def\frenchspacing{\x7ffrenchspacing\x011128,37041
+\def\splitoff#1#2\endmark{\x7fsplitoff\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{\x7ffirst\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{\x7frest\x011134,37266
+\def\enumerate{\x7fenumerate\x011140,37496
+\def\enumeratezzz #1{\x7fenumeratezzz\x011141,37535
+\def\enumeratey #1 #2\endenumeratey{\x7fenumeratey\x011142,37588
+ \def\thearg{\x7fthearg\x011146,37735
+ \ifx\thearg\empty \def\thearg{\x7fthearg\x011147,37754
+\def\numericenumerate{\x7fnumericenumerate\x011184,39088
+\def\lowercaseenumerate{\x7flowercaseenumerate\x011190,39218
+\def\uppercaseenumerate{\x7fuppercaseenumerate\x011203,39565
+\def\startenumeration#1{\x7fstartenumeration\x011219,40055
+\def\alphaenumerate{\x7falphaenumerate\x011227,40237
+\def\capsenumerate{\x7fcapsenumerate\x011228,40272
+\def\Ealphaenumerate{\x7fEalphaenumerate\x011229,40306
+\def\Ecapsenumerate{\x7fEcapsenumerate\x011230,40340
+\def\itemizeitem{\x7fitemizeitem\x011234,40420
+{\let\par=\endgraf \smallbreak}\x7fpar\x011236,40460
+\gdef\newwrite{\x7fnewwrite\x011249,40841
+\def\newindex #1{\x7fnewindex\x011259,41277
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011262,41439
+\def\defindex{\x7fdefindex\x011268,41566
+\def\newcodeindex #1{\x7fnewcodeindex\x011272,41674
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011275,41840
+\def\defcodeindex{\x7fdefcodeindex\x011279,41934
+\def\synindex #1 #2 {\x7fsynindex\x011283,42114
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011284,42137
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011285,42217
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011286,42273
+\def\syncodeindex #1 #2 {\x7fsyncodeindex\x011292,42454
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011293,42481
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011294,42561
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011295,42617
+\def\doindex#1{\x7fdoindex\x011309,43133
+\def\doindex#1{\edef\indexname{\x7findexname\x011309,43133
+\def\singleindexer #1{\x7fsingleindexer\x011310,43192
+\def\singleindexer #1{\doind{\indexname}\x7fname\x011310,43192
+\def\docodeindex#1{\x7fdocodeindex\x011313,43304
+\def\docodeindex#1{\edef\indexname{\x7findexname\x011313,43304
+\def\singlecodeindexer #1{\x7fsinglecodeindexer\x011314,43371
+\def\singlecodeindexer #1{\doind{\indexname}\x7fname\x011314,43371
+\def\indexdummies{\x7findexdummies\x011316,43429
+\def\_{\x7f_\x011317,43449
+\def\w{\x7fw\x011318,43477
+\def\bf{\x7fbf\x011319,43504
+\def\rm{\x7frm\x011320,43533
+\def\sl{\x7fsl\x011321,43562
+\def\sf{\x7fsf\x011322,43591
+\def\tt{\x7ftt\x011323,43619
+\def\gtr{\x7fgtr\x011324,43647
+\def\less{\x7fless\x011325,43677
+\def\hat{\x7fhat\x011326,43709
+\def\char{\x7fchar\x011327,43739
+\def\TeX{\x7fTeX\x011328,43771
+\def\dots{\x7fdots\x011329,43801
+\def\copyright{\x7fcopyright\x011330,43834
+\def\tclose##1{\x7ftclose\x011331,43877
+\def\code##1{\x7fcode\x011332,43922
+\def\samp##1{\x7fsamp\x011333,43963
+\def\t##1{\x7ft\x011334,44004
+\def\r##1{\x7fr\x011335,44039
+\def\i##1{\x7fi\x011336,44074
+\def\b##1{\x7fb\x011337,44109
+\def\cite##1{\x7fcite\x011338,44144
+\def\key##1{\x7fkey\x011339,44185
+\def\file##1{\x7ffile\x011340,44224
+\def\var##1{\x7fvar\x011341,44265
+\def\kbd##1{\x7fkbd\x011342,44304
+\def\indexdummyfont#1{\x7findexdummyfont\x011347,44460
+\def\indexdummytex{\x7findexdummytex\x011348,44486
+\def\indexdummydots{\x7findexdummydots\x011349,44510
+\def\indexnofonts{\x7findexnofonts\x011351,44536
+\let\w=\indexdummyfont\x7fw\x011352,44556
\let\w=\indexdummyfont\x7fdummyfont\x011352,44556
+\let\t=\indexdummyfont\x7ft\x011353,44579
\let\t=\indexdummyfont\x7fdummyfont\x011353,44579
+\let\r=\indexdummyfont\x7fr\x011354,44602
\let\r=\indexdummyfont\x7fdummyfont\x011354,44602
+\let\i=\indexdummyfont\x7fi\x011355,44625
\let\i=\indexdummyfont\x7fdummyfont\x011355,44625
+\let\b=\indexdummyfont\x7fb\x011356,44648
\let\b=\indexdummyfont\x7fdummyfont\x011356,44648
+\let\emph=\indexdummyfont\x7femph\x011357,44671
\let\emph=\indexdummyfont\x7fdummyfont\x011357,44671
+\let\strong=\indexdummyfont\x7fstrong\x011358,44697
\let\strong=\indexdummyfont\x7fdummyfont\x011358,44697
-\let\cite=\indexdummyfont\x7f=\indexdummyfont\x011359,44725
+\let\cite=\indexdummyfont\x7fcite\x011359,44725
+\let\cite=\indexdummyfont\x7fdummyfont\x011359,44725
+\let\sc=\indexdummyfont\x7fsc\x011360,44751
\let\sc=\indexdummyfont\x7fdummyfont\x011360,44751
+\let\tclose=\indexdummyfont\x7ftclose\x011364,44923
\let\tclose=\indexdummyfont\x7fdummyfont\x011364,44923
+\let\code=\indexdummyfont\x7fcode\x011365,44951
\let\code=\indexdummyfont\x7fdummyfont\x011365,44951
+\let\file=\indexdummyfont\x7ffile\x011366,44977
\let\file=\indexdummyfont\x7fdummyfont\x011366,44977
+\let\samp=\indexdummyfont\x7fsamp\x011367,45003
\let\samp=\indexdummyfont\x7fdummyfont\x011367,45003
+\let\kbd=\indexdummyfont\x7fkbd\x011368,45029
\let\kbd=\indexdummyfont\x7fdummyfont\x011368,45029
+\let\key=\indexdummyfont\x7fkey\x011369,45054
\let\key=\indexdummyfont\x7fdummyfont\x011369,45054
+\let\var=\indexdummyfont\x7fvar\x011370,45079
\let\var=\indexdummyfont\x7fdummyfont\x011370,45079
+\let\TeX=\indexdummytex\x7fTeX\x011371,45104
\let\TeX=\indexdummytex\x7fdummytex\x011371,45104
+\let\dots=\indexdummydots\x7fdots\x011372,45128
\let\dots=\indexdummydots\x7fdummydots\x011372,45128
-\let\indexbackslash=0 %overridden during \printindex.\x7fbackslash=0\x011382,45380
-\def\doind #1#2{\x7f\doind\x011384,45436
+\let\indexbackslash=0 %overridden during \printindex.\x7findexbackslash\x011382,45380
+\def\doind #1#2{\x7fdoind\x011384,45436
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011386,45479
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011389,45619
+{\let\folio=0% Expand all macros now EXCEPT \folio\x7ffolio\x011388,45568
+\def\rawbackslashxx{\x7frawbackslashxx\x011389,45619
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011389,45619
{\indexnofonts\x7fnofonts\x011394,45881
-\def\dosubind #1#2#3{\x7f\dosubind\x011405,46192
+\xdef\temp1{\x7ftemp1\x011395,45896
+\edef\temp{\x7ftemp\x011399,46068
+\def\dosubind #1#2#3{\x7fdosubind\x011405,46192
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011407,46240
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011410,46344
+{\let\folio=0%\x7ffolio\x011409,46329
+\def\rawbackslashxx{\x7frawbackslashxx\x011410,46344
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011410,46344
{\indexnofonts\x7fnofonts\x011414,46498
-\def\findex {\x7f\findex\x011443,47429
-\def\kindex {\x7f\kindex\x011444,47452
-\def\cindex {\x7f\cindex\x011445,47475
-\def\vindex {\x7f\vindex\x011446,47498
-\def\tindex {\x7f\tindex\x011447,47521
-\def\pindex {\x7f\pindex\x011448,47544
-\def\cindexsub {\x7f\cindexsub\x011450,47568
-\def\printindex{\x7f\printindex\x011462,47895
-\def\doprintindex#1{\x7f\doprintindex\x011464,47936
- \def\indexbackslash{\x7f\indexbackslash\x011481,48421
+\xdef\temp1{\x7ftemp1\x011415,46513
+\edef\temp{\x7ftemp\x011419,46688
+\def\findex {\x7ffindex\x011443,47429
+\def\kindex {\x7fkindex\x011444,47452
+\def\cindex {\x7fcindex\x011445,47475
+\def\vindex {\x7fvindex\x011446,47498
+\def\tindex {\x7ftindex\x011447,47521
+\def\pindex {\x7fpindex\x011448,47544
+\def\cindexsub {\x7fcindexsub\x011450,47568
+\gdef\cindexsub "#1" #2^^M{\x7fcindexsub\x011452,47631
+\def\printindex{\x7fprintindex\x011462,47895
+\def\doprintindex#1{\x7fdoprintindex\x011464,47936
+ \def\indexbackslash{\x7findexbackslash\x011481,48421
\indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt\x7ffonts\rm\x011482,48460
-\def\initial #1{\x7f\initial\x011517,49532
-\def\entry #1#2{\x7f\entry\x011523,49739
+\def\initial #1{\x7finitial\x011517,49532
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftentt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7fsf\x011518,49550
+\def\entry #1#2{\x7fentry\x011523,49739
\null\nobreak\indexdotfill % Have leaders before the page number.\x7fdotfill\x011540,50386
-\def\indexdotfill{\x7f\indexdotfill\x011549,50714
-\def\primary #1{\x7f\primary\x011552,50820
-\def\secondary #1#2{\x7f\secondary\x011556,50902
+\def\indexdotfill{\x7findexdotfill\x011549,50714
+\def\primary #1{\x7fprimary\x011552,50820
+\def\secondary #1#2{\x7fsecondary\x011556,50902
\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par\x7fdotfill\x011559,50984
\newbox\partialpage\x7fialpage\x011566,51157
-\def\begindoublecolumns{\x7f\begindoublecolumns\x011572,51315
- \output={\global\setbox\partialpage=\x7fialpage=\x011573,51351
-\def\enddoublecolumns{\x7f\enddoublecolumns\x011577,51539
-\def\doublecolumnout{\x7f\doublecolumnout\x011580,51624
+\def\begindoublecolumns{\x7fbegindoublecolumns\x011572,51315
+ \output={\global\setbox\partialpage=\x7fialpage\x011573,51351
+\def\enddoublecolumns{\x7fenddoublecolumns\x011577,51539
+\def\doublecolumnout{\x7fdoublecolumnout\x011580,51624
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011581,51693
-\def\pagesofar{\x7f\pagesofar\x011584,51871
-\def\balancecolumns{\x7f\balancecolumns\x011588,52108
+\def\pagesofar{\x7fpagesofar\x011584,51871
+\def\pagesofar{\unvbox\partialpage %\x7fialpage\x011584,51871
+\def\balancecolumns{\x7fbalancecolumns\x011588,52108
\availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpage\x7fialpage\x011594,52279
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011600,52540
\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
-\def\appendixletter{\x7f\appendixletter\x011628,53486
-\def\opencontents{\x7f\opencontents\x011632,53589
-\def\thischapter{\x7f\thischapter\x011637,53770
-\def\seccheck#1{\x7f\seccheck\x011638,53808
-\def\chapternofonts{\x7f\chapternofonts\x011643,53912
-\def\result{\x7f\result\x011646,53987
-\def\equiv{\x7f\equiv\x011647,54022
-\def\expansion{\x7f\expansion\x011648,54055
-\def\print{\x7f\print\x011649,54096
-\def\TeX{\x7f\TeX\x011650,54129
-\def\dots{\x7f\dots\x011651,54158
-\def\copyright{\x7f\copyright\x011652,54189
-\def\tt{\x7f\tt\x011653,54230
-\def\bf{\x7f\bf\x011654,54257
-\def\w{\x7f\w\x011655,54285
-\def\less{\x7f\less\x011656,54310
-\def\gtr{\x7f\gtr\x011657,54341
-\def\hat{\x7f\hat\x011658,54370
-\def\char{\x7f\char\x011659,54399
-\def\tclose##1{\x7f\tclose\x011660,54430
-\def\code##1{\x7f\code\x011661,54474
-\def\samp##1{\x7f\samp\x011662,54514
-\def\r##1{\x7f\r\x011663,54554
-\def\b##1{\x7f\b\x011664,54588
-\def\key##1{\x7f\key\x011665,54622
-\def\file##1{\x7f\file\x011666,54660
-\def\kbd##1{\x7f\kbd\x011667,54700
-\def\i##1{\x7f\i\x011669,54808
-\def\cite##1{\x7f\cite\x011670,54842
-\def\var##1{\x7f\var\x011671,54882
-\def\emph##1{\x7f\emph\x011672,54920
-\def\dfn##1{\x7f\dfn\x011673,54960
-\def\thischaptername{\x7f\thischaptername\x011676,55001
-\outer\def\chapter{\x7f\chapter\x011677,55040
-\def\chapterzzz #1{\x7f\chapterzzz\x011678,55081
-{\chapternofonts%\x7fnofonts%\x011687,55477
-\global\let\section = \numberedsec\x7f=\x011692,55630
-\global\let\subsection = \numberedsubsec\x7f=\x011693,55665
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011694,55706
-\outer\def\appendix{\x7f\appendix\x011697,55757
-\def\appendixzzz #1{\x7f\appendixzzz\x011698,55800
+\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
+\def\appendixletter{\x7fappendixletter\x011628,53486
+\def\appendixletter{\char\the\appendixno}\x7fno\x011628,53486
+\def\opencontents{\x7fopencontents\x011632,53589
+\def\thischapter{\x7fthischapter\x011637,53770
+\def\thischapter{} \def\thissection{\x7fthissection\x011637,53770
+\def\seccheck#1{\x7fseccheck\x011638,53808
+\def\chapternofonts{\x7fchapternofonts\x011643,53912
+\let\rawbackslash=\relax%\x7frawbackslash\x011644,53934
+\let\frenchspacing=\relax%\x7ffrenchspacing\x011645,53960
+\def\result{\x7fresult\x011646,53987
+\def\equiv{\x7fequiv\x011647,54022
+\def\expansion{\x7fexpansion\x011648,54055
+\def\print{\x7fprint\x011649,54096
+\def\TeX{\x7fTeX\x011650,54129
+\def\dots{\x7fdots\x011651,54158
+\def\copyright{\x7fcopyright\x011652,54189
+\def\tt{\x7ftt\x011653,54230
+\def\bf{\x7fbf\x011654,54257
+\def\w{\x7fw\x011655,54285
+\def\less{\x7fless\x011656,54310
+\def\gtr{\x7fgtr\x011657,54341
+\def\hat{\x7fhat\x011658,54370
+\def\char{\x7fchar\x011659,54399
+\def\tclose##1{\x7ftclose\x011660,54430
+\def\code##1{\x7fcode\x011661,54474
+\def\samp##1{\x7fsamp\x011662,54514
+\def\r##1{\x7fr\x011663,54554
+\def\b##1{\x7fb\x011664,54588
+\def\key##1{\x7fkey\x011665,54622
+\def\file##1{\x7ffile\x011666,54660
+\def\kbd##1{\x7fkbd\x011667,54700
+\def\i##1{\x7fi\x011669,54808
+\def\cite##1{\x7fcite\x011670,54842
+\def\var##1{\x7fvar\x011671,54882
+\def\emph##1{\x7femph\x011672,54920
+\def\dfn##1{\x7fdfn\x011673,54960
+\def\thischaptername{\x7fthischaptername\x011676,55001
+\outer\def\chapter{\x7fchapter\x011677,55040
+\outer\def\chapter{\parsearg\chapterzzz}\x7fzzz\x011677,55040
+\def\chapterzzz #1{\x7fchapterzzz\x011678,55081
+\gdef\thissection{\x7fthissection\x011682,55246
+\gdef\thischaptername{\x7fthischaptername\x011683,55269
+\xdef\thischapter{\x7fthischapter\x011686,55410
+{\chapternofonts%\x7fnofonts\x011687,55477
+\edef\temp{\x7ftemp\x011688,55495
+\global\let\section = \numberedsec\x7fsection\x011692,55630
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011693,55665
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011694,55706
+\outer\def\appendix{\x7fappendix\x011697,55757
+\outer\def\appendix{\parsearg\appendixzzz}\x7fzzz\x011697,55757
+\def\appendixzzz #1{\x7fappendixzzz\x011698,55800
\global\advance \appendixno by 1 \message{\x7fno\x011700,55877
+\global\advance \appendixno by 1 \message{Appendix \appendixletter}\x7fletter\x011700,55877
\chapmacro {#1}{Appendix \appendixletter}\x7fletter\x011701,55946
+\gdef\thissection{\x7fthissection\x011702,55989
+\gdef\thischaptername{\x7fthischaptername\x011703,56012
+\xdef\thischapter{\x7fthischapter\x011704,56039
\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}\x7fletter:\x011704,56039
-{\chapternofonts%\x7fnofonts%\x011705,56111
+{\chapternofonts%\x7fnofonts\x011705,56111
+\edef\temp{\x7ftemp\x011706,56129
{#1}{Appendix \appendixletter}\x7fletter\x011707,56167
\appendixnoderef %\x7fnoderef\x011710,56267
-\global\let\section = \appendixsec\x7f=\x011711,56286
-\global\let\subsection = \appendixsubsec\x7f=\x011712,56321
-\global\let\subsubsection = \appendixsubsubsec\x7f=\x011713,56362
-\outer\def\top{\x7f\top\x011716,56413
-\outer\def\unnumbered{\x7f\unnumbered\x011717,56453
-\def\unnumberedzzz #1{\x7f\unnumberedzzz\x011718,56500
-{\chapternofonts%\x7fnofonts%\x011722,56663
-\global\let\section = \unnumberedsec\x7f=\x011727,56813
-\global\let\subsection = \unnumberedsubsec\x7f=\x011728,56850
-\global\let\subsubsection = \unnumberedsubsubsec\x7f=\x011729,56893
-\outer\def\numberedsec{\x7f\numberedsec\x011732,56946
-\def\seczzz #1{\x7f\seczzz\x011733,56987
-{\chapternofonts%\x7fnofonts%\x011736,57143
-\outer\def\appendixsection{\x7f\appendixsection\x011745,57329
-\outer\def\appendixsec{\x7f\appendixsec\x011746,57386
-\def\appendixsectionzzz #1{\x7f\appendixsectionzzz\x011747,57439
+\global\let\section = \appendixsec\x7fsection\x011711,56286
+\global\let\section = \appendixsec\x7fsec\x011711,56286
+\global\let\subsection = \appendixsubsec\x7fsubsection\x011712,56321
+\global\let\subsection = \appendixsubsec\x7fsubsec\x011712,56321
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsection\x011713,56362
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsec\x011713,56362
+\outer\def\top{\x7ftop\x011716,56413
+\outer\def\unnumbered{\x7funnumbered\x011717,56453
+\def\unnumberedzzz #1{\x7funnumberedzzz\x011718,56500
+\gdef\thischapter{\x7fthischapter\x011721,56619
+\gdef\thischapter{#1}\gdef\thissection{\x7fthissection\x011721,56619
+{\chapternofonts%\x7fnofonts\x011722,56663
+\edef\temp{\x7ftemp\x011723,56681
+\global\let\section = \unnumberedsec\x7fsection\x011727,56813
+\global\let\subsection = \unnumberedsubsec\x7fsubsection\x011728,56850
+\global\let\subsubsection = \unnumberedsubsubsec\x7fsubsubsection\x011729,56893
+\outer\def\numberedsec{\x7fnumberedsec\x011732,56946
+\def\seczzz #1{\x7fseczzz\x011733,56987
+\gdef\thissection{\x7fthissection\x011735,57079
+{\chapternofonts%\x7fnofonts\x011736,57143
+\edef\temp{\x7ftemp\x011737,57161
+\outer\def\appendixsection{\x7fappendixsection\x011745,57329
+\outer\def\appendixsection{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011745,57329
+\outer\def\appendixsec{\x7fappendixsec\x011746,57386
+\outer\def\appendixsec{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011746,57386
+\def\appendixsectionzzz #1{\x7fappendixsectionzzz\x011747,57439
+\gdef\thissection{\x7fthissection\x011749,57551
\gdef\thissection{#1}\secheading {#1}{\appendixletter}\x7fletter\x011749,57551
-{\chapternofonts%\x7fnofonts%\x011750,57619
+{\chapternofonts%\x7fnofonts\x011750,57619
+\edef\temp{\x7ftemp\x011751,57637
{#1}{\appendixletter}\x7fletter\x011752,57675
\appendixnoderef %\x7fnoderef\x011755,57775
-\outer\def\unnumberedsec{\x7f\unnumberedsec\x011759,57815
-\def\unnumberedseczzz #1{\x7f\unnumberedseczzz\x011760,57868
-{\chapternofonts%\x7fnofonts%\x011762,57963
-\outer\def\numberedsubsec{\x7f\numberedsubsec\x011770,58131
-\def\numberedsubseczzz #1{\x7f\numberedsubseczzz\x011771,58186
-{\chapternofonts%\x7fnofonts%\x011774,58365
-\outer\def\appendixsubsec{\x7f\appendixsubsec\x011783,58569
-\def\appendixsubseczzz #1{\x7f\appendixsubseczzz\x011784,58624
+\outer\def\unnumberedsec{\x7funnumberedsec\x011759,57815
+\def\unnumberedseczzz #1{\x7funnumberedseczzz\x011760,57868
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011761,57919
+{\chapternofonts%\x7fnofonts\x011762,57963
+\edef\temp{\x7ftemp\x011763,57981
+\outer\def\numberedsubsec{\x7fnumberedsubsec\x011770,58131
+\def\numberedsubseczzz #1{\x7fnumberedsubseczzz\x011771,58186
+\gdef\thissection{\x7fthissection\x011772,58235
+{\chapternofonts%\x7fnofonts\x011774,58365
+\edef\temp{\x7ftemp\x011775,58383
+\outer\def\appendixsubsec{\x7fappendixsubsec\x011783,58569
+\outer\def\appendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011783,58569
+\def\appendixsubseczzz #1{\x7fappendixsubseczzz\x011784,58624
+\gdef\thissection{\x7fthissection\x011785,58677
\subsecheading {#1}{\appendixletter}\x7fletter\x011786,58746
-{\chapternofonts%\x7fnofonts%\x011787,58811
+{\chapternofonts%\x7fnofonts\x011787,58811
+\edef\temp{\x7ftemp\x011788,58829
{#1}{\appendixletter}\x7fletter\x011789,58870
\appendixnoderef %\x7fnoderef\x011792,58985
-\outer\def\unnumberedsubsec{\x7f\unnumberedsubsec\x011796,59025
-\def\unnumberedsubseczzz #1{\x7f\unnumberedsubseczzz\x011797,59084
-{\chapternofonts%\x7fnofonts%\x011799,59185
-\outer\def\numberedsubsubsec{\x7f\numberedsubsubsec\x011807,59356
-\def\numberedsubsubseczzz #1{\x7f\numberedsubsubseczzz\x011808,59417
-{\chapternofonts%\x7fnofonts%\x011812,59614
-\outer\def\appendixsubsubsec{\x7f\appendixsubsubsec\x011823,59847
-\def\appendixsubsubseczzz #1{\x7f\appendixsubsubseczzz\x011824,59908
+\outer\def\unnumberedsubsec{\x7funnumberedsubsec\x011796,59025
+\def\unnumberedsubseczzz #1{\x7funnumberedsubseczzz\x011797,59084
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011798,59141
+{\chapternofonts%\x7fnofonts\x011799,59185
+\edef\temp{\x7ftemp\x011800,59203
+\outer\def\numberedsubsubsec{\x7fnumberedsubsubsec\x011807,59356
+\def\numberedsubsubseczzz #1{\x7fnumberedsubsubseczzz\x011808,59417
+\gdef\thissection{\x7fthissection\x011809,59472
+{\chapternofonts%\x7fnofonts\x011812,59614
+\edef\temp{\x7ftemp\x011813,59632
+\outer\def\appendixsubsubsec{\x7fappendixsubsubsec\x011823,59847
+\outer\def\appendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011823,59847
+\def\appendixsubsubseczzz #1{\x7fappendixsubsubseczzz\x011824,59908
+\gdef\thissection{\x7fthissection\x011825,59967
{\appendixletter}\x7fletter\x011827,60047
-{\chapternofonts%\x7fnofonts%\x011828,60113
+{\chapternofonts%\x7fnofonts\x011828,60113
+\edef\temp{\x7ftemp\x011829,60131
{\appendixletter}\x7fletter\x011830,60178
\appendixnoderef %\x7fnoderef\x011834,60312
-\outer\def\unnumberedsubsubsec{\x7f\unnumberedsubsubsec\x011838,60352
-\def\unnumberedsubsubseczzz #1{\x7f\unnumberedsubsubseczzz\x011839,60417
-{\chapternofonts%\x7fnofonts%\x011841,60524
-\def\infotop{\x7f\infotop\x011851,60853
-\def\infounnumbered{\x7f\infounnumbered\x011852,60891
-\def\infounnumberedsec{\x7f\infounnumberedsec\x011853,60936
-\def\infounnumberedsubsec{\x7f\infounnumberedsubsec\x011854,60987
-\def\infounnumberedsubsubsec{\x7f\infounnumberedsubsubsec\x011855,61044
-\def\infoappendix{\x7f\infoappendix\x011857,61108
-\def\infoappendixsec{\x7f\infoappendixsec\x011858,61149
-\def\infoappendixsubsec{\x7f\infoappendixsubsec\x011859,61196
-\def\infoappendixsubsubsec{\x7f\infoappendixsubsubsec\x011860,61249
-\def\infochapter{\x7f\infochapter\x011862,61309
-\def\infosection{\x7f\infosection\x011863,61348
-\def\infosubsection{\x7f\infosubsection\x011864,61387
-\def\infosubsubsection{\x7f\infosubsubsection\x011865,61432
-\global\let\section = \numberedsec\x7f=\x011870,61669
-\global\let\subsection = \numberedsubsec\x7f=\x011871,61704
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011872,61745
-\def\majorheading{\x7f\majorheading\x011886,62252
-\def\majorheadingzzz #1{\x7f\majorheadingzzz\x011887,62297
-\def\chapheading{\x7f\chapheading\x011893,62530
-\def\chapheadingzzz #1{\x7f\chapheadingzzz\x011894,62573
-\def\heading{\x7f\heading\x011899,62768
-\def\subheading{\x7f\subheading\x011901,62805
-\def\subsubheading{\x7f\subsubheading\x011903,62848
-\def\dobreak#1#2{\x7f\dobreak\x011910,63125
-\def\setchapterstyle #1 {\x7f\setchapterstyle\x011912,63203
-\def\chapbreak{\x7f\chapbreak\x011919,63458
-\def\chappager{\x7f\chappager\x011920,63508
-\def\chapoddpage{\x7f\chapoddpage\x011921,63546
-\def\setchapternewpage #1 {\x7f\setchapternewpage\x011923,63625
-\def\CHAPPAGoff{\x7f\CHAPPAGoff\x011925,63682
-\def\CHAPPAGon{\x7f\CHAPPAGon\x011929,63776
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011932,63867
-\def\CHAPPAGodd{\x7f\CHAPPAGodd\x011934,63909
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011937,64005
-\def\CHAPFplain{\x7f\CHAPFplain\x011941,64059
-\def\chfplain #1#2{\x7f\chfplain\x011945,64151
-\def\unnchfplain #1{\x7f\unnchfplain\x011956,64374
-\def\unnchfopen #1{\x7f\unnchfopen\x011964,64603
-\def\chfopen #1#2{\x7f\chfopen\x011970,64811
-\def\CHAPFopen{\x7f\CHAPFopen\x011975,64955
-\def\subsecheadingbreak{\x7f\subsecheadingbreak\x011982,65173
-\def\secheadingbreak{\x7f\secheadingbreak\x011985,65302
-\def\secheading #1#2#3{\x7f\secheading\x011993,65584
-\def\plainsecheading #1{\x7f\plainsecheading\x011994,65640
-\def\secheadingi #1{\x7f\secheadingi\x011995,65683
-\def\subsecheading #1#2#3#4{\x7f\subsecheading\x012006,66051
-\def\subsecheadingi #1{\x7f\subsecheadingi\x012007,66118
-\def\subsubsecfonts{\x7f\subsubsecfonts\x012014,66415
-\def\subsubsecheading #1#2#3#4#5{\x7f\subsubsecheading\x012017,66538
-\def\subsubsecheadingi #1{\x7f\subsubsecheadingi\x012018,66616
-\def\startcontents#1{\x7f\startcontents\x012032,67088
- \unnumbchapmacro{#1}\def\thischapter{\x7f\thischapter\x012040,67361
-\outer\def\contents{\x7f\contents\x012049,67720
-\outer\def\summarycontents{\x7f\summarycontents\x012057,67864
- \def\secentry ##1##2##3##4{\x7f\secentry\x012067,68235
- \def\unnumbsecentry ##1##2{\x7f\unnumbsecentry\x012068,68270
- \def\subsecentry ##1##2##3##4##5{\x7f\subsecentry\x012069,68305
- \def\unnumbsubsecentry ##1##2{\x7f\unnumbsubsecentry\x012070,68346
- \def\subsubsecentry ##1##2##3##4##5##6{\x7f\subsubsecentry\x012071,68384
- \def\unnumbsubsubsecentry ##1##2{\x7f\unnumbsubsubsecentry\x012072,68431
-\def\chapentry#1#2#3{\x7f\chapentry\x012085,68865
-\def\shortchapentry#1#2#3{\x7f\shortchapentry\x012088,68982
+\outer\def\unnumberedsubsubsec{\x7funnumberedsubsubsec\x011838,60352
+\def\unnumberedsubsubseczzz #1{\x7funnumberedsubsubseczzz\x011839,60417
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011840,60480
+{\chapternofonts%\x7fnofonts\x011841,60524
+\edef\temp{\x7ftemp\x011842,60542
+\def\infotop{\x7finfotop\x011851,60853
+\def\infounnumbered{\x7finfounnumbered\x011852,60891
+\def\infounnumberedsec{\x7finfounnumberedsec\x011853,60936
+\def\infounnumberedsubsec{\x7finfounnumberedsubsec\x011854,60987
+\def\infounnumberedsubsubsec{\x7finfounnumberedsubsubsec\x011855,61044
+\def\infoappendix{\x7finfoappendix\x011857,61108
+\def\infoappendix{\parsearg\appendixzzz}\x7fzzz\x011857,61108
+\def\infoappendixsec{\x7finfoappendixsec\x011858,61149
+\def\infoappendixsec{\parsearg\appendixseczzz}\x7fseczzz\x011858,61149
+\def\infoappendixsubsec{\x7finfoappendixsubsec\x011859,61196
+\def\infoappendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011859,61196
+\def\infoappendixsubsubsec{\x7finfoappendixsubsubsec\x011860,61249
+\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011860,61249
+\def\infochapter{\x7finfochapter\x011862,61309
+\def\infochapter{\parsearg\chapterzzz}\x7fzzz\x011862,61309
+\def\infosection{\x7finfosection\x011863,61348
+\def\infosection{\parsearg\sectionzzz}\x7fzzz\x011863,61348
+\def\infosubsection{\x7finfosubsection\x011864,61387
+\def\infosubsection{\parsearg\subsectionzzz}\x7fzzz\x011864,61387
+\def\infosubsubsection{\x7finfosubsubsection\x011865,61432
+\def\infosubsubsection{\parsearg\subsubsectionzzz}\x7fzzz\x011865,61432
+\global\let\section = \numberedsec\x7fsection\x011870,61669
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011871,61704
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011872,61745
+\def\majorheading{\x7fmajorheading\x011886,62252
+\def\majorheadingzzz #1{\x7fmajorheadingzzz\x011887,62297
+\def\chapheading{\x7fchapheading\x011893,62530
+\def\chapheadingzzz #1{\x7fchapheadingzzz\x011894,62573
+\def\heading{\x7fheading\x011899,62768
+\def\subheading{\x7fsubheading\x011901,62805
+\def\subsubheading{\x7fsubsubheading\x011903,62848
+\def\dobreak#1#2{\x7fdobreak\x011910,63125
+\def\setchapterstyle #1 {\x7fsetchapterstyle\x011912,63203
+\def\chapbreak{\x7fchapbreak\x011919,63458
+\def\chappager{\x7fchappager\x011920,63508
+\def\chapoddpage{\x7fchapoddpage\x011921,63546
+\def\setchapternewpage #1 {\x7fsetchapternewpage\x011923,63625
+\def\CHAPPAGoff{\x7fCHAPPAGoff\x011925,63682
+\global\let\pchapsepmacro=\chapbreak\x7fpchapsepmacro\x011926,63699
+\global\let\pagealignmacro=\chappager}\x7fpagealignmacro\x011927,63736
+\def\CHAPPAGon{\x7fCHAPPAGon\x011929,63776
+\global\let\pchapsepmacro=\chappager\x7fpchapsepmacro\x011930,63792
+\global\let\pagealignmacro=\chappager\x7fpagealignmacro\x011931,63829
+\global\def\HEADINGSon{\x7fHEADINGSon\x011932,63867
+\def\CHAPPAGodd{\x7fCHAPPAGodd\x011934,63909
+\global\let\pchapsepmacro=\chapoddpage\x7fpchapsepmacro\x011935,63926
+\global\let\pagealignmacro=\chapoddpage\x7fpagealignmacro\x011936,63965
+\global\def\HEADINGSon{\x7fHEADINGSon\x011937,64005
+\def\CHAPFplain{\x7fCHAPFplain\x011941,64059
+\global\let\chapmacro=\chfplain\x7fchapmacro\x011942,64076
+\global\let\unnumbchapmacro=\unnchfplain}\x7funnumbchapmacro\x011943,64108
+\def\chfplain #1#2{\x7fchfplain\x011945,64151
+\def\unnchfplain #1{\x7funnchfplain\x011956,64374
+\def\unnchfopen #1{\x7funnchfopen\x011964,64603
+\def\chfopen #1#2{\x7fchfopen\x011970,64811
+\def\CHAPFopen{\x7fCHAPFopen\x011975,64955
+\global\let\chapmacro=\chfopen\x7fchapmacro\x011976,64971
+\global\let\unnumbchapmacro=\unnchfopen}\x7funnumbchapmacro\x011977,65002
+\def\subsecheadingbreak{\x7fsubsecheadingbreak\x011982,65173
+\def\secheadingbreak{\x7fsecheadingbreak\x011985,65302
+\let\paragraphindent=\comment\x7fparagraphindent\x011988,65428
+\def\secheading #1#2#3{\x7fsecheading\x011993,65584
+\def\plainsecheading #1{\x7fplainsecheading\x011994,65640
+\def\secheadingi #1{\x7fsecheadingi\x011995,65683
+\def\subsecheading #1#2#3#4{\x7fsubsecheading\x012006,66051
+\def\subsecheadingi #1{\x7fsubsecheadingi\x012007,66118
+\def\subsubsecfonts{\x7fsubsubsecfonts\x012014,66415
+\def\subsubsecheading #1#2#3#4#5{\x7fsubsubsecheading\x012017,66538
+\def\subsubsecheadingi #1{\x7fsubsubsecheadingi\x012018,66616
+\def\startcontents#1{\x7fstartcontents\x012032,67088
+ \unnumbchapmacro{#1}\def\thischapter{\x7fthischapter\x012040,67361
+\outer\def\contents{\x7fcontents\x012049,67720
+\outer\def\summarycontents{\x7fsummarycontents\x012057,67864
+ \let\chapentry = \shortchapentry\x7fchapentry\x012060,67936
+ \let\unnumbchapentry = \shortunnumberedentry\x7funnumbchapentry\x012061,67975
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7frm\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fbf\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fsl\x012064,68098
+ \def\secentry ##1##2##3##4{\x7fsecentry\x012067,68235
+ \def\unnumbsecentry ##1##2{\x7funnumbsecentry\x012068,68270
+ \def\subsecentry ##1##2##3##4##5{\x7fsubsecentry\x012069,68305
+ \def\unnumbsubsecentry ##1##2{\x7funnumbsubsecentry\x012070,68346
+ \def\subsubsecentry ##1##2##3##4##5##6{\x7fsubsubsecentry\x012071,68384
+ \def\unnumbsubsubsecentry ##1##2{\x7funnumbsubsubsecentry\x012072,68431
+\let\shortcontents = \summarycontents\x7fshortcontents\x012077,68530
+\def\chapentry#1#2#3{\x7fchapentry\x012085,68865
+\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}\x7fspace\x012085,68865
+\def\shortchapentry#1#2#3{\x7fshortchapentry\x012088,68982
{#2\labelspace #1}\x7fspace\x012091,69092
-\def\unnumbchapentry#1#2{\x7f\unnumbchapentry\x012094,69146
-\def\shortunnumberedentry#1#2{\x7f\shortunnumberedentry\x012095,69193
-\def\secentry#1#2#3#4{\x7f\secentry\x012102,69357
-\def\unnumbsecentry#1#2{\x7f\unnumbsecentry\x012103,69416
-\def\subsecentry#1#2#3#4#5{\x7f\subsecentry\x012106,69477
-\def\unnumbsubsecentry#1#2{\x7f\unnumbsubsecentry\x012107,69547
-\def\subsubsecentry#1#2#3#4#5#6{\x7f\subsubsecentry\x012110,69621
+\def\unnumbchapentry#1#2{\x7funnumbchapentry\x012094,69146
+\def\shortunnumberedentry#1#2{\x7fshortunnumberedentry\x012095,69193
+\def\secentry#1#2#3#4{\x7fsecentry\x012102,69357
+\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}\x7fspace\x012102,69357
+\def\unnumbsecentry#1#2{\x7funnumbsecentry\x012103,69416
+\def\subsecentry#1#2#3#4#5{\x7fsubsecentry\x012106,69477
+\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}\x7fspace\x012106,69477
+\def\unnumbsubsecentry#1#2{\x7funnumbsubsecentry\x012107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\x7fsubsubsecentry\x012110,69621
\dosubsubsecentry{#2.#3.#4.#5\labelspace#1}\x7fspace\x012111,69655
-\def\unnumbsubsubsecentry#1#2{\x7f\unnumbsubsubsecentry\x012112,69706
-\def\dochapentry#1#2{\x7f\dochapentry\x012123,70080
-\def\dosecentry#1#2{\x7f\dosecentry\x012138,70685
-\def\dosubsecentry#1#2{\x7f\dosubsecentry\x012145,70863
-\def\dosubsubsecentry#1#2{\x7f\dosubsubsecentry\x012152,71048
-\def\labelspace{\x7f\labelspace\x012160,71299
-\def\dopageno#1{\x7f\dopageno\x012162,71334
-\def\doshortpageno#1{\x7f\doshortpageno\x012163,71360
-\def\chapentryfonts{\x7f\chapentryfonts\x012165,71392
-\def\secentryfonts{\x7f\secentryfonts\x012166,71427
-\def\point{\x7f\point\x012192,72386
-\def\result{\x7f\result\x012194,72407
-\def\expansion{\x7f\expansion\x012195,72480
-\def\print{\x7f\print\x012196,72551
-\def\equiv{\x7f\equiv\x012198,72618
-\def\error{\x7f\error\x012218,73391
-\def\tex{\x7f\tex\x012224,73620
-\def\@{\x7f\@\x012242,74003
-\gdef\sepspaces{\def {\ }}}\x7f\\x012265,74735
-\def\aboveenvbreak{\x7f\aboveenvbreak\x012268,74817
-\def\afterenvbreak{\x7f\afterenvbreak\x012272,74983
-\def\ctl{\x7f\ctl\x012286,75494
-\def\ctr{\x7f\ctr\x012287,75566
-\def\cbl{\x7f\cbl\x012288,75605
-\def\cbr{\x7f\cbr\x012289,75645
-\def\carttop{\x7f\carttop\x012290,75684
-\def\cartbot{\x7f\cartbot\x012293,75792
-\long\def\cartouche{\x7f\cartouche\x012299,75932
-\def\Ecartouche{\x7f\Ecartouche\x012326,76720
-\def\lisp{\x7f\lisp\x012338,76855
-\def\Elisp{\x7f\Elisp\x012348,77202
-\def\next##1{\x7f\next\x012360,77528
-\def\Eexample{\x7f\Eexample\x012364,77570
-\def\Esmallexample{\x7f\Esmallexample\x012367,77617
-\def\smalllispx{\x7f\smalllispx\x012373,77795
-\def\Esmalllisp{\x7f\Esmalllisp\x012383,78149
+\def\unnumbsubsubsecentry#1#2{\x7funnumbsubsubsecentry\x012112,69706
+\def\dochapentry#1#2{\x7fdochapentry\x012123,70080
+\def\dosecentry#1#2{\x7fdosecentry\x012138,70685
+\def\dosubsecentry#1#2{\x7fdosubsecentry\x012145,70863
+\def\dosubsubsecentry#1#2{\x7fdosubsubsecentry\x012152,71048
+\def\labelspace{\x7flabelspace\x012160,71299
+\def\dopageno#1{\x7fdopageno\x012162,71334
+\def\doshortpageno#1{\x7fdoshortpageno\x012163,71360
+\def\chapentryfonts{\x7fchapentryfonts\x012165,71392
+\def\secentryfonts{\x7fsecentryfonts\x012166,71427
+\let\subsecentryfonts = \textfonts\x7fsubsecentryfonts\x012167,71458
+\let\subsubsecentryfonts = \textfonts\x7fsubsubsecentryfonts\x012168,71493
+\let\ptexequiv = \equiv\x7fptexequiv\x012180,71896
+\def\point{\x7fpoint\x012192,72386
+\def\result{\x7fresult\x012194,72407
+\def\expansion{\x7fexpansion\x012195,72480
+\def\print{\x7fprint\x012196,72551
+\def\equiv{\x7fequiv\x012198,72618
+\def\error{\x7ferror\x012218,73391
+\def\tex{\x7ftex\x012224,73620
+\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie\x7f~\x012227,73731
+\let\{=\ptexlbrace\x7f{\x012237,73912
+\let\}=\ptexrbrace\x7f}\x012238,73931
+\let\.=\ptexdot\x7f.\x012239,73950
+\let\*=\ptexstar\x7f*\x012240,73966
+\let\dots=\ptexdots\x7fdots\x012241,73983
+\def\@{\x7f@\x012242,74003
+\let\bullet=\ptexbullet\x7fbullet\x012243,74014
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fb\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fc\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fi\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7ft\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fl\x012244,74038
+\let\L=\ptexL\x7fL\x012245,74108
+\let\Etex=\endgroup}\x7fEtex\x012247,74124
+\gdef\lisppar{\x7flisppar\x012259,74517
+\gdef\sepspaces{\x7fsepspaces\x012265,74735
+\def\aboveenvbreak{\x7faboveenvbreak\x012268,74817
+\def\afterenvbreak{\x7fafterenvbreak\x012272,74983
+\let\nonarrowing=\relax\x7fnonarrowing\x012276,75176
+\def\ctl{\x7fctl\x012286,75494
+\def\ctr{\x7fctr\x012287,75566
+\def\cbl{\x7fcbl\x012288,75605
+\def\cbr{\x7fcbr\x012289,75645
+\def\carttop{\x7fcarttop\x012290,75684
+\def\cartbot{\x7fcartbot\x012293,75792
+\long\def\cartouche{\x7fcartouche\x012299,75932
+ \let\nonarrowing=\comment\x7fnonarrowing\x012311,76404
+\def\Ecartouche{\x7fEcartouche\x012326,76720
+\def\lisp{\x7flisp\x012338,76855
+\let\par=\lisppar\x7fpar\x012347,77184
+\def\Elisp{\x7fElisp\x012348,77202
+\let\exdent=\nofillexdent\x7fexdent\x012355,77418
+\let\nonarrowing=\relax\x7fnonarrowing\x012356,77444
+\def\next##1{\x7fnext\x012360,77528
+\let\example=\lisp\x7fexample\x012363,77551
+\def\Eexample{\x7fEexample\x012364,77570
+\let\smallexample=\lisp\x7fsmallexample\x012366,77593
+\def\Esmallexample{\x7fEsmallexample\x012367,77617
+\def\smalllispx{\x7fsmalllispx\x012373,77795
+\let\par=\lisppar\x7fpar\x012382,78131
+\def\Esmalllisp{\x7fEsmalllisp\x012383,78149
+\let\exdent=\nofillexdent\x7fexdent\x012392,78436
+\let\nonarrowing=\relax\x7fnonarrowing\x012393,78462
\obeyspaces \obeylines \ninett \indexfonts \rawbackslash\x7ffonts\x012396,78505
-\def\next##1{\x7f\next\x012397,78562
-\def\display{\x7f\display\x012401,78642
-\def\Edisplay{\x7f\Edisplay\x012410,78961
-\def\next##1{\x7f\next\x012422,79272
-\def\format{\x7f\format\x012426,79375
-\def\Eformat{\x7f\Eformat\x012434,79671
-\def\next##1{\x7f\next\x012437,79760
-\def\flushleft{\x7f\flushleft\x012441,79812
-\def\Eflushleft{\x7f\Eflushleft\x012451,80183
-\def\next##1{\x7f\next\x012454,80276
-\def\flushright{\x7f\flushright\x012456,80298
-\def\Eflushright{\x7f\Eflushright\x012466,80670
-\def\next##1{\x7f\next\x012470,80801
-\def\quotation{\x7f\quotation\x012474,80859
-\def\Equotation{\x7f\Equotation\x012480,81051
-\def\setdeffont #1 {\x7f\setdeffont\x012493,81449
+\def\next##1{\x7fnext\x012397,78562
+\def\display{\x7fdisplay\x012401,78642
+\let\par=\lisppar\x7fpar\x012409,78943
+\def\Edisplay{\x7fEdisplay\x012410,78961
+\let\exdent=\nofillexdent\x7fexdent\x012417,79180
+\let\nonarrowing=\relax\x7fnonarrowing\x012418,79206
+\def\next##1{\x7fnext\x012422,79272
+\def\format{\x7fformat\x012426,79375
+\let\par=\lisppar\x7fpar\x012433,79653
+\def\Eformat{\x7fEformat\x012434,79671
+\def\next##1{\x7fnext\x012437,79760
+\def\flushleft{\x7fflushleft\x012441,79812
+\let\par=\lisppar\x7fpar\x012450,80165
+\def\Eflushleft{\x7fEflushleft\x012451,80183
+\def\next##1{\x7fnext\x012454,80276
+\def\flushright{\x7fflushright\x012456,80298
+\let\par=\lisppar\x7fpar\x012465,80652
+\def\Eflushright{\x7fEflushright\x012466,80670
+\def\next##1{\x7fnext\x012470,80801
+\def\quotation{\x7fquotation\x012474,80859
+\def\Equotation{\x7fEquotation\x012480,81051
+\let\nonarrowing=\relax\x7fnonarrowing\x012487,81301
+\def\setdeffont #1 {\x7fsetdeffont\x012493,81449
+\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
+\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
-\def\activeparens{\x7f\activeparens\x012503,81822
-\def\opnr{\x7f\opnr\x012529,83034
-\def\lbrb{\x7f\lbrb\x012530,83099
-\def\defname #1#2{\x7f\defname\x012536,83300
+\def\activeparens{\x7factiveparens\x012503,81822
+\gdef\functionparens{\x7ffunctionparens\x012507,82016
+\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }\x7f&\x012507,82016
+\gdef\boldbrax{\x7fboldbrax\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f(\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f)\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f[\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f]\x012508,82074
+\gdef\oprm#1 {\x7foprm\x012512,82250
+\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %\x7f(\x012512,82250
+\gdef\opnested{\x7fopnested\x012516,82407
+\gdef\clrm{\x7fclrm\x012518,82466
+\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi\x7f(\x012520,82602
+\gdef\amprm#1 {\x7famprm\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f(\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f)\x012523,82769
+\gdef\normalparens{\x7fnormalparens\x012525,82822
+\gdef\normalparens{\boldbrax\let&=\ampnr}\x7f&\x012525,82822
+\def\opnr{\x7fopnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{\x7fclnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\x7fampnr\x012529,83034
+\def\lbrb{\x7flbrb\x012530,83099
+\def\lbrb{{\bf\char`\[}} \def\rbrb{\x7frbrb\x012530,83099
+\def\defname #1#2{\x7fdefname\x012536,83300
\advance\dimen2 by -\defbodyindent\x7fbodyindent\x012540,83418
\advance\dimen3 by -\defbodyindent\x7fbodyindent\x012542,83472
\setbox0=\hbox{\hskip \deflastargmargin{\x7flastargmargin\x012544,83526
+\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012544,83526
\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations\x7fargsindent\x012546,83668
\parshape 2 0in \dimen0 \defargsindent \dimen1 %\x7fargsindent\x012547,83743
\rlap{\rightline{{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012554,84112
\advance\leftskip by -\defbodyindent\x7fbodyindent\x012557,84246
\exdentamount=\defbodyindent\x7fbodyindent\x012558,84283
-\def\defparsebody #1#2#3{\x7f\defparsebody\x012568,84642
-\def#1{\x7f2572,84826
-\def#2{\x7f2573,84862
+\def\defparsebody #1#2#3{\x7fdefparsebody\x012568,84642
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\exdentamount=\defbodyindent\x7fbodyindent\x012576,85008
-\def\defmethparsebody #1#2#3#4 {\x7f\defmethparsebody\x012581,85112
-\def#1{\x7f2585,85273
-\def#2##1 {\x7f2586,85309
+\def\defmethparsebody #1#2#3#4 {\x7fdefmethparsebody\x012581,85112
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\exdentamount=\defbodyindent\x7fbodyindent\x012589,85466
-\def\defopparsebody #1#2#3#4#5 {\x7f\defopparsebody\x012592,85551
-\def#1{\x7f2596,85712
-\def#2##1 ##2 {\x7f2597,85748
+\def\defopparsebody #1#2#3#4#5 {\x7fdefopparsebody\x012592,85551
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\exdentamount=\defbodyindent\x7fbodyindent\x012601,85922
-\def\defvarparsebody #1#2#3{\x7f\defvarparsebody\x012608,86193
-\def#1{\x7f2612,86380
-\def#2{\x7f2613,86416
+\def\defvarparsebody #1#2#3{\x7fdefvarparsebody\x012608,86193
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\exdentamount=\defbodyindent\x7fbodyindent\x012616,86549
-\def\defvrparsebody #1#2#3#4 {\x7f\defvrparsebody\x012621,86640
-\def#1{\x7f2625,86799
-\def#2##1 {\x7f2626,86835
+\def\defvrparsebody #1#2#3#4 {\x7fdefvrparsebody\x012621,86640
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\exdentamount=\defbodyindent\x7fbodyindent\x012629,86979
-\def\defopvarparsebody #1#2#3#4#5 {\x7f\defopvarparsebody\x012632,87051
-\def#1{\x7f2636,87215
-\def#2##1 ##2 {\x7f2637,87251
+\def\defopvarparsebody #1#2#3#4#5 {\x7fdefopvarparsebody\x012632,87051
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\exdentamount=\defbodyindent\x7fbodyindent\x012641,87412
-\def\defunargs #1{\x7f\defunargs\x012664,88172
-\def\deftypefunargs #1{\x7f\deftypefunargs\x012676,88554
-\def\deffn{\x7f\deffn\x012690,88936
-\def\deffnheader #1#2#3{\x7f\deffnheader\x012692,88993
+\gdef\spacesplit#1#2^^M{\x7fspacesplit\x012652,87775
+\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{\x7fspacesplitfoo\x012653,87852
+\def\defunargs #1{\x7fdefunargs\x012664,88172
+\def\deftypefunargs #1{\x7fdeftypefunargs\x012676,88554
+\def\deffn{\x7fdeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7fmethparsebody\Edeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnx\deffnheader\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnheader\x012690,88936
+\def\deffnheader #1#2#3{\x7fdeffnheader\x012692,88993
\begingroup\defname {\x7fname\x012693,89041
-\def\defun{\x7f\defun\x012699,89186
-\def\defunheader #1#2{\x7f\defunheader\x012701,89239
+\begingroup\defname {#2}{#1}\defunargs{\x7funargs\x012693,89041
+\def\defun{\x7fdefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7fparsebody\Edefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funx\defunheader\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funheader\x012699,89186
+\def\defunheader #1#2{\x7fdefunheader\x012701,89239
\begingroup\defname {\x7fname\x012702,89314
\defunargs {\x7funargs\x012703,89350
-\def\deftypefun{\x7f\deftypefun\x012709,89498
-\def\deftypefunheader #1#2{\x7f\deftypefunheader\x012712,89620
-\def\deftypefunheaderx #1#2 #3\relax{\x7f\deftypefunheaderx\x012714,89729
+\def\deftypefun{\x7fdeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7fparsebody\Edeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunx\deftypefunheader\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunheader\x012709,89498
+\def\deftypefunheader #1#2{\x7fdeftypefunheader\x012712,89620
+\def\deftypefunheader #1#2{\deftypefunheaderx{\x7ftypefunheaderx\x012712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\x7fdeftypefunheaderx\x012714,89729
\begingroup\defname {\x7fname\x012716,89821
\deftypefunargs {\x7ftypefunargs\x012717,89867
-\def\deftypefn{\x7f\deftypefn\x012723,90038
-\def\deftypefnheader #1#2#3{\x7f\deftypefnheader\x012726,90187
-\def\deftypefnheaderx #1#2#3 #4\relax{\x7f\deftypefnheaderx\x012728,90323
+\def\deftypefn{\x7fdeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7fmethparsebody\Edeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnx\deftypefnheader\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnheader\x012723,90038
+\def\deftypefnheader #1#2#3{\x7fdeftypefnheader\x012726,90187
+\def\deftypefnheader #1#2#3{\deftypefnheaderx{\x7ftypefnheaderx\x012726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\x7fdeftypefnheaderx\x012728,90323
\begingroup\defname {\x7fname\x012730,90416
\deftypefunargs {\x7ftypefunargs\x012731,90456
-\def\defmac{\x7f\defmac\x012737,90577
-\def\defmacheader #1#2{\x7f\defmacheader\x012739,90634
+\def\defmac{\x7fdefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fparsebody\Edefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacx\defmacheader\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacheader\x012737,90577
+\def\defmacheader #1#2{\x7fdefmacheader\x012739,90634
\begingroup\defname {\x7fname\x012740,90710
\defunargs {\x7funargs\x012741,90743
-\def\defspec{\x7f\defspec\x012747,90867
-\def\defspecheader #1#2{\x7f\defspecheader\x012749,90928
+\def\defspec{\x7fdefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fparsebody\Edefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecx\defspecheader\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecheader\x012747,90867
+\def\defspecheader #1#2{\x7fdefspecheader\x012749,90928
\begingroup\defname {\x7fname\x012750,91005
\defunargs {\x7funargs\x012751,91045
-\def\deffnx #1 {\x7f\deffnx\x012758,91240
-\def\defunx #1 {\x7f\defunx\x012759,91297
-\def\defmacx #1 {\x7f\defmacx\x012760,91354
-\def\defspecx #1 {\x7f\defspecx\x012761,91413
-\def\deftypefnx #1 {\x7f\deftypefnx\x012762,91474
-\def\deftypeunx #1 {\x7f\deftypeunx\x012763,91539
-\def\defop #1 {\x7f\defop\x012769,91685
-\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\defopx\defopheader\defoptype\x012770,91720
-\def\defopheader #1#2#3{\x7f\defopheader\x012772,91774
+\def\deffnx #1 {\x7fdeffnx\x012758,91240
+\def\defunx #1 {\x7fdefunx\x012759,91297
+\def\defmacx #1 {\x7fdefmacx\x012760,91354
+\def\defspecx #1 {\x7fdefspecx\x012761,91413
+\def\deftypefnx #1 {\x7fdeftypefnx\x012762,91474
+\def\deftypeunx #1 {\x7fdeftypeunx\x012763,91539
+\def\defop #1 {\x7fdefop\x012769,91685
+\def\defop #1 {\def\defoptype{\x7fdefoptype\x012769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopx\defopheader\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopheader\defoptype\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7foptype\x012770,91720
+\def\defopheader #1#2#3{\x7fdefopheader\x012772,91774
\begingroup\defname {\x7fname\x012774,91863
+\begingroup\defname {#2}{\defoptype{\x7foptype\x012774,91863
\defunargs {\x7funargs\x012775,91909
-\def\defmethod{\x7f\defmethod\x012780,91970
-\def\defmethodheader #1#2#3{\x7f\defmethodheader\x012782,92043
+\def\defmethod{\x7fdefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethparsebody\Edefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodx\defmethodheader\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodheader\x012780,91970
+\def\defmethodheader #1#2#3{\x7fdefmethodheader\x012782,92043
\begingroup\defname {\x7fname\x012784,92131
\defunargs {\x7funargs\x012785,92171
-\def\defcv #1 {\x7f\defcv\x012790,92245
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype\x012791,92280
-\def\defcvarheader #1#2#3{\x7f\defcvarheader\x012793,92339
+\def\defcv #1 {\x7fdefcv\x012790,92245
+\def\defcv #1 {\def\defcvtype{\x7fdefcvtype\x012790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvx\defcvarheader\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvarheader\defcvtype\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvtype\x012791,92280
+\def\defcvarheader #1#2#3{\x7fdefcvarheader\x012793,92339
\begingroup\defname {\x7fname\x012795,92425
+\begingroup\defname {#2}{\defcvtype{\x7fcvtype\x012795,92425
\defvarargs {\x7fvarargs\x012796,92471
-\def\defivar{\x7f\defivar\x012801,92544
-\def\defivarheader #1#2#3{\x7f\defivarheader\x012803,92607
+\def\defivar{\x7fdefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fvrparsebody\Edefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarx\defivarheader\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarheader\x012801,92544
+\def\defivarheader #1#2#3{\x7fdefivarheader\x012803,92607
\begingroup\defname {\x7fname\x012805,92693
\defvarargs {\x7fvarargs\x012806,92744
-\def\defopx #1 {\x7f\defopx\x012812,92893
-\def\defmethodx #1 {\x7f\defmethodx\x012813,92950
-\def\defcvx #1 {\x7f\defcvx\x012814,93015
-\def\defivarx #1 {\x7f\defivarx\x012815,93072
-\def\defvarargs #1{\x7f\defvarargs\x012822,93343
-\def\defvr{\x7f\defvr\x012828,93487
-\def\defvrheader #1#2#3{\x7f\defvrheader\x012830,93542
+\def\defopx #1 {\x7fdefopx\x012812,92893
+\def\defmethodx #1 {\x7fdefmethodx\x012813,92950
+\def\defcvx #1 {\x7fdefcvx\x012814,93015
+\def\defivarx #1 {\x7fdefivarx\x012815,93072
+\def\defvarargs #1{\x7fdefvarargs\x012822,93343
+\def\defvr{\x7fdefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrparsebody\Edefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrx\defvrheader\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrheader\x012828,93487
+\def\defvrheader #1#2#3{\x7fdefvrheader\x012830,93542
\begingroup\defname {\x7fname\x012831,93590
-\def\defvar{\x7f\defvar\x012835,93675
-\def\defvarheader #1#2{\x7f\defvarheader\x012837,93735
+\begingroup\defname {#2}{#1}\defvarargs{\x7fvarargs\x012831,93590
+\def\defvar{\x7fdefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarparsebody\Edefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarx\defvarheader\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarheader\x012835,93675
+\def\defvarheader #1#2{\x7fdefvarheader\x012837,93735
\begingroup\defname {\x7fname\x012838,93806
\defvarargs {\x7fvarargs\x012839,93842
-\def\defopt{\x7f\defopt\x012844,93908
-\def\defoptheader #1#2{\x7f\defoptheader\x012846,93968
+\def\defopt{\x7fdefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7fvarparsebody\Edefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptx\defoptheader\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptheader\x012844,93908
+\def\defoptheader #1#2{\x7fdefoptheader\x012846,93968
\begingroup\defname {\x7fname\x012847,94039
\defvarargs {\x7fvarargs\x012848,94078
-\def\deftypevar{\x7f\deftypevar\x012853,94135
-\def\deftypevarheader #1#2{\x7f\deftypevarheader\x012856,94251
+\def\deftypevar{\x7fdeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7fvarparsebody\Edeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarx\deftypevarheader\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarheader\x012853,94135
+\def\deftypevarheader #1#2{\x7fdeftypevarheader\x012856,94251
\begingroup\defname {\x7fname\x012858,94334
-\def\deftypevr{\x7f\deftypevr\x012865,94508
-\def\deftypevrheader #1#2#3{\x7f\deftypevrheader\x012867,94579
+\def\deftypevr{\x7fdeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7fvrparsebody\Edeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrx\deftypevrheader\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrheader\x012865,94508
+\def\deftypevrheader #1#2#3{\x7fdeftypevrheader\x012867,94579
\begingroup\defname {\x7fname\x012868,94631
-\def\defvrx #1 {\x7f\defvrx\x012876,94868
-\def\defvarx #1 {\x7f\defvarx\x012877,94925
-\def\defoptx #1 {\x7f\defoptx\x012878,94984
-\def\deftypevarx #1 {\x7f\deftypevarx\x012879,95043
-\def\deftypevrx #1 {\x7f\deftypevrx\x012880,95110
-\def\deftpargs #1{\x7f\deftpargs\x012885,95259
-\def\deftp{\x7f\deftp\x012889,95339
-\def\deftpheader #1#2#3{\x7f\deftpheader\x012891,95394
+\def\defvrx #1 {\x7fdefvrx\x012876,94868
+\def\defvarx #1 {\x7fdefvarx\x012877,94925
+\def\defoptx #1 {\x7fdefoptx\x012878,94984
+\def\deftypevarx #1 {\x7fdeftypevarx\x012879,95043
+\def\deftypevrx #1 {\x7fdeftypevrx\x012880,95110
+\def\deftpargs #1{\x7fdeftpargs\x012885,95259
+\def\deftpargs #1{\bf \defvarargs{\x7fvarargs\x012885,95259
+\def\deftp{\x7fdeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7fvrparsebody\Edeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpx\deftpheader\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpheader\x012889,95339
+\def\deftpheader #1#2#3{\x7fdeftpheader\x012891,95394
\begingroup\defname {\x7fname\x012892,95442
-\def\deftpx #1 {\x7f\deftpx\x012897,95601
-\def\setref#1{\x7f\setref\x012908,95922
-\def\unnumbsetref#1{\x7f\unnumbsetref\x012913,96036
-\def\appendixsetref#1{\x7f\appendixsetref\x012918,96143
-\def\pxref#1{\x7f\pxref\x012929,96554
-\def\xref#1{\x7f\xref\x012930,96590
-\def\ref#1{\x7f\ref\x012931,96625
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7f\xrefX[\x012932,96655
-\def\printedmanual{\x7f\printedmanual\x012933,96698
-\def\printednodename{\x7f\printednodename\x012934,96736
-\def\printednodename{\x7f\printednodename\x012939,96861
-section ``\printednodename'' in \cite{\printedmanual}\x7f\printedmanual\x012954,97493
+\begingroup\defname {#2}{#1}\deftpargs{\x7ftpargs\x012892,95442
+\def\deftpx #1 {\x7fdeftpx\x012897,95601
+\def\setref#1{\x7fsetref\x012908,95922
+\def\unnumbsetref#1{\x7funnumbsetref\x012913,96036
+\def\appendixsetref#1{\x7fappendixsetref\x012918,96143
+\def\pxref#1{\x7fpxref\x012929,96554
+\def\xref#1{\x7fxref\x012930,96590
+\def\ref#1{\x7fref\x012931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7fxrefX\x012932,96655
+\def\printedmanual{\x7fprintedmanual\x012933,96698
+\def\printednodename{\x7fprintednodename\x012934,96736
+\def\printednodename{\x7fprintednodename\x012939,96861
+section ``\printednodename'' in \cite{\printedmanual}\x7fprintedmanual\x012954,97493
\refx{\x7fx\x012957,97571
-\def\dosetq #1#2{\x7f\dosetq\x012965,97791
-\def\internalsetq #1#2{\x7f\internalsetq\x012973,98049
-\def\Ypagenumber{\x7f\Ypagenumber\x012977,98150
-\def\Ytitle{\x7f\Ytitle\x012979,98176
-\def\Ynothing{\x7f\Ynothing\x012981,98203
-\def\Ysectionnumberandtype{\x7f\Ysectionnumberandtype\x012983,98220
-\def\Yappendixletterandtype{\x7f\Yappendixletterandtype\x012992,98536
+\refx{#1-snt}{} [\printednodename], page\tie\refx{\x7fx\x012957,97571
+\def\dosetq #1#2{\x7fdosetq\x012965,97791
+\def\dosetq #1#2{{\let\folio=0 \turnoffactive%\x7ffolio\x012965,97791
+\edef\next{\x7fnext\x012966,97838
+\def\internalsetq #1#2{\x7finternalsetq\x012973,98049
+\def\Ypagenumber{\x7fYpagenumber\x012977,98150
+\def\Ytitle{\x7fYtitle\x012979,98176
+\def\Ynothing{\x7fYnothing\x012981,98203
+\def\Ysectionnumberandtype{\x7fYsectionnumberandtype\x012983,98220
+\def\Yappendixletterandtype{\x7fYappendixletterandtype\x012992,98536
\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{\x7fno\x012993,98566
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\secno\x012994,98621
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\secno.\the\subsecno\x012996,98725
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\secno.\the\subsecno.\the\subsubsecno\x012998,98796
- \def\linenumber{\x7f\linenumber\x013009,99135
-\def\refx#1#2{\x7f\refx\x013015,99319
-\def\xrdef #1#2{\x7f\xrdef\x013037,99945
-\def\readauxfile{\x7f\readauxfile\x013040,100030
-\def\supereject{\x7f\supereject\x013110,101811
-\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\textindent\x013131,102496
-\def\openindices{\x7f\openindices\x013139,102682
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\x012994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\x012996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\x012998,98796
+\gdef\xreftie{\x7fxreftie\x013001,98891
+ \let\linenumber = \empty % Non-3.0.\x7flinenumber\x013007,99091
+ \def\linenumber{\x7flinenumber\x013009,99135
+\def\refx#1#2{\x7frefx\x013015,99319
+\def\xrdef #1#2{\x7fxrdef\x013037,99945
+{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {\x7fcsname\x013038,99962
+\def\readauxfile{\x7freadauxfile\x013040,100030
+\def\supereject{\x7fsupereject\x013110,101811
+\let\footnotestyle=\comment\x7ffootnotestyle\x013113,101918
+\let\ptexfootnote=\footnote\x7fptexfootnote\x013115,101947
+\long\gdef\footnote #1{\x7ffootnote\x013118,101993
+\edef\thisfootno{\x7fthisfootno\x013120,102060
+\let\@sf\empty\x7f@sf\x013121,102100
+\ifhmode\edef\@sf{\x7f@sf\x013122,102115
+\long\gdef\footnotezzz #1{\x7ffootnotezzz\x013126,102228
+\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\x013131,102496
+\def\openindices{\x7fopenindices\x013139,102682
+\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\parindent = \defaultparindent\x7faultparindent\x013152,102959
-\def\smallbook{\x7f\smallbook\x013175,103683
-\global\def\Esmallexample{\x7f\Esmallexample\x013192,104110
-\def\afourpaper{\x7f\afourpaper\x013196,104201
-\def\finalout{\x7f\finalout\x013224,105009
-\def\normaldoublequote{\x7f\normaldoublequote\x013235,105270
-\def\normaltilde{\x7f\normaltilde\x013236,105296
-\def\normalcaret{\x7f\normalcaret\x013237,105316
-\def\normalunderscore{\x7f\normalunderscore\x013238,105336
-\def\normalverticalbar{\x7f\normalverticalbar\x013239,105361
-\def\normalless{\x7f\normalless\x013240,105387
-\def\normalgreater{\x7f\normalgreater\x013241,105406
-\def\normalplus{\x7f\normalplus\x013242,105428
-\def\ifusingtt#1#2{\x7f\ifusingtt\x013253,105920
-\def\activedoublequote{\x7f\activedoublequote\x013261,106248
+\def\smallbook{\x7fsmallbook\x013175,103683
+\global\let\smalllisp=\smalllispx\x7fsmalllisp\x013190,104039
+\global\let\smallexample=\smalllispx\x7fsmallexample\x013191,104073
+\global\def\Esmallexample{\x7fEsmallexample\x013192,104110
+\def\afourpaper{\x7fafourpaper\x013196,104201
+\def\finalout{\x7ffinalout\x013224,105009
+\def\normaldoublequote{\x7fnormaldoublequote\x013235,105270
+\def\normaltilde{\x7fnormaltilde\x013236,105296
+\def\normalcaret{\x7fnormalcaret\x013237,105316
+\def\normalunderscore{\x7fnormalunderscore\x013238,105336
+\def\normalverticalbar{\x7fnormalverticalbar\x013239,105361
+\def\normalless{\x7fnormalless\x013240,105387
+\def\normalgreater{\x7fnormalgreater\x013241,105406
+\def\normalplus{\x7fnormalplus\x013242,105428
+\def\ifusingtt#1#2{\x7fifusingtt\x013253,105920
+\def\activedoublequote{\x7factivedoublequote\x013261,106248
+\let"=\activedoublequote\x7f"\x013262,106289
\def~{\x7f~\x013264,106334
\def^{\x7f^\x013267,106395
\def_{\x7f_\x013270,106434
-\def\_{\x7f\_\x013272,106508
-\def\lvvmode{\x7f\lvvmode\x013279,106845
+\def\_{\x7f_\x013272,106508
+\def\lvvmode{\x7flvvmode\x013279,106845
\def|{\x7f|\x013282,106895
\def<{\x7f<\x013285,106958
\def>{\x7f>\x013288,107015
\def+{\x7f+\x013290,107053
-\def\turnoffactive{\x7f\turnoffactive\x013296,107214
+\def\turnoffactive{\x7fturnoffactive\x013296,107214
+\def\turnoffactive{\let"=\normaldoublequote\x7f"\x013296,107214
+\let~=\normaltilde\x7f~\x013297,107258
+\let^=\normalcaret\x7f^\x013298,107277
+\let_=\normalunderscore\x7f_\x013299,107296
+\let|=\normalverticalbar\x7f|\x013300,107320
+\let<=\normalless\x7f<\x013301,107345
+\let>=\normalgreater\x7f>\x013302,107363
+\let+=\normalplus}\x7f+\x013303,107384
\global\def={\x7f=\x013307,107500
-\def\normalbackslash{\x7f\normalbackslash\x013321,107882
+\def\normalbackslash{\x7fnormalbackslash\x013321,107882
\f
merc-src/accumulator.m,4915
:- interface\x7f146,5371
diff --git a/test/manual/etags/ETAGS.good_3 b/test/manual/etags/ETAGS.good_3
index 15ed7855b30..79ee70fd1d0 100644
--- a/test/manual/etags/ETAGS.good_3
+++ b/test/manual/etags/ETAGS.good_3
@@ -3555,8 +3555,8 @@ scm-src/test.scm,260
(define (((((curry-test \x7f14,205
(define-syntax test-begin\x7f17,265
\f
-tex-src/testenv.tex,52
-\newcommand{\nm}\x7f\nm\x014,77
+tex-src/testenv.tex,51
+\newcommand{\nm}\x7fnm\x014,77
\section{blah}\x7fblah\x018,139
\f
tex-src/gzip.texi,303
@@ -3571,722 +3571,1142 @@ tex-src/gzip.texi,303
@node Problems,\x7f460,16769
@node Concept Index,\x7fConcept Index\x01473,17289
\f
-tex-src/texinfo.tex,30627
-\def\texinfoversion{\x7f\texinfoversion\x0126,1035
-\def\tie{\x7f\tie\x0149,1526
-\def\gloggingall{\x7f\gloggingall\x0172,2276
-\def\loggingall{\x7f\loggingall\x0173,2345
-\def\onepageout#1{\x7f\onepageout\x0199,3282
-\def\croppageout#1{\x7f\croppageout\x01115,4032
-\def\cropmarks{\x7f\cropmarks\x01142,5092
-\def\pagebody#1{\x7f\pagebody\x01144,5139
-\def\ewtop{\x7f\ewtop\x01157,5594
-\def\nstop{\x7f\nstop\x01158,5658
-\def\ewbot{\x7f\ewbot\x01160,5741
-\def\nsbot{\x7f\nsbot\x01161,5805
-\def\parsearg #1{\x7f\parsearg\x01170,6104
-\def\parseargx{\x7f\parseargx\x01172,6182
-\def\parseargline{\x7f\parseargline\x01182,6422
-\def\flushcr{\x7f\flushcr\x01186,6543
-\newif\ifENV \ENVfalse \def\inENV{\x7f\inENV\x01190,6742
-\def\ENVcheck{\x7f\ENVcheck\x01191,6806
-\outer\def\begin{\x7f\begin\x01198,7053
-\def\beginxxx #1{\x7f\beginxxx\x01200,7091
-\def\end{\x7f\end\x01208,7346
-\def\endxxx #1{\x7f\endxxx\x01210,7374
-\def\errorE#1{\x7f\errorE\x01216,7563
-\def\singlespace{\x7f\singlespace\x01222,7757
-\def\@{\x7f\@\x01232,7980
-\def\`{\x7f\`\x01236,8080
-\def\'{\x7f\'\x01237,8092
-\def\mylbrace {\x7f\mylbrace\x01241,8140
-\def\myrbrace {\x7f\myrbrace\x01242,8173
-\def\:{\x7f\:\x01247,8287
-\def\*{\x7f\*\x01250,8341
-\def\.{\x7f\.\x01253,8417
-\def\w#1{\x7f\w\x01258,8648
-\def\group{\x7f\group\x01268,9131
- \def\Egroup{\x7f\Egroup\x01273,9295
-\def\need{\x7f\need\x01289,9737
-\def\needx#1{\x7f\needx\x01300,10014
-\def\dots{\x7f\dots\x01339,11400
-\def\page{\x7f\page\x01343,11464
-\def\exdent{\x7f\exdent\x01353,11791
-\def\exdentyyy #1{\x7f\exdentyyy\x01354,11824
-\def\nofillexdent{\x7f\nofillexdent\x01357,11968
-\def\nofillexdentyyy #1{\x7f\nofillexdentyyy\x01358,12013
-\def\include{\x7f\include\x01365,12197
-\def\includezzz #1{\x7f\includezzz\x01366,12232
-\def\thisfile{\x7f\thisfile\x01369,12283
-\def\center{\x7f\center\x01373,12346
-\def\centerzzz #1{\x7f\centerzzz\x01374,12379
-\def\sp{\x7f\sp\x01380,12521
-\def\spxxx #1{\x7f\spxxx\x01381,12546
-\def\comment{\x7f\comment\x01387,12720
-\def\commentxxx #1{\x7f\commentxxx\x01390,12817
-\def\ignoresections{\x7f\ignoresections\x01396,12986
-\let\chapter=\relax\x7f=\relax\x01397,13008
-\let\section=\relax\x7f=\relax\x01406,13253
-\let\subsection=\relax\x7f=\relax\x01409,13314
-\let\subsubsection=\relax\x7f=\relax\x01410,13337
-\let\appendix=\relax\x7f=\relax\x01411,13363
-\let\appendixsec=\relax\x7fsec=\relax\x01412,13384
-\let\appendixsection=\relax\x7fsection=\relax\x01413,13408
-\let\appendixsubsec=\relax\x7fsubsec=\relax\x01414,13436
-\let\appendixsubsection=\relax\x7fsubsection=\relax\x01415,13463
-\let\appendixsubsubsec=\relax\x7fsubsubsec=\relax\x01416,13494
-\let\appendixsubsubsection=\relax\x7fsubsubsection=\relax\x01417,13524
-\def\ignore{\x7f\ignore\x01423,13626
-\long\def\ignorexxx #1\end ignore{\x7f\ignorexxx\x01427,13766
-\def\direntry{\x7f\direntry\x01429,13825
-\long\def\direntryxxx #1\end direntry{\x7f\direntryxxx\x01430,13864
-\def\ifset{\x7f\ifset\x01434,13974
-\def\ifsetxxx #1{\x7f\ifsetxxx\x01436,14032
-\def\Eifset{\x7f\Eifset\x01440,14159
-\def\ifsetfail{\x7f\ifsetfail\x01441,14173
-\long\def\ifsetfailxxx #1\end ifset{\x7f\ifsetfailxxx\x01442,14229
-\def\ifclear{\x7f\ifclear\x01444,14290
-\def\ifclearxxx #1{\x7f\ifclearxxx\x01446,14352
-\def\Eifclear{\x7f\Eifclear\x01450,14483
-\def\ifclearfail{\x7f\ifclearfail\x01451,14499
-\long\def\ifclearfailxxx #1\end ifclear{\x7f\ifclearfailxxx\x01452,14559
-\def\set{\x7f\set\x01456,14710
-\def\setxxx #1{\x7f\setxxx\x01457,14737
-\def\clear{\x7f\clear\x01460,14799
-\def\clearxxx #1{\x7f\clearxxx\x01461,14830
-\def\iftex{\x7f\iftex\x01466,14947
-\def\Eiftex{\x7f\Eiftex\x01467,14960
-\def\ifinfo{\x7f\ifinfo\x01468,14974
-\long\def\ifinfoxxx #1\end ifinfo{\x7f\ifinfoxxx\x01469,15024
-\long\def\menu #1\end menu{\x7f\menu\x01471,15083
-\def\asis#1{\x7f\asis\x01472,15112
-\def\math#1{\x7f\math\x01485,15655
-\def\node{\x7f\node\x01487,15699
-\def\nodezzz#1{\x7f\nodezzz\x01488,15737
-\def\nodexxx[#1,#2]{\x7f\nodexxx[\x01489,15768
-\def\donoderef{\x7f\donoderef\x01492,15830
-\def\unnumbnoderef{\x7f\unnumbnoderef\x01496,15951
-\def\appendixnoderef{\x7f\appendixnoderef\x01500,16082
+tex-src/texinfo.tex,55236
+\def\texinfoversion{\x7ftexinfoversion\x0126,1035
+\let\ptexlbrace=\{\x7fptexlbrace\x0135,1308
+\let\ptexrbrace=\}\x7fptexrbrace\x0136,1327
+\let\ptexdots=\dots\x7fptexdots\x0137,1346
+\let\ptexdot=\.\x7fptexdot\x0138,1366
+\let\ptexstar=\*\x7fptexstar\x0139,1382
+\let\ptexend=\end\x7fptexend\x0140,1399
+\let\ptexbullet=\bullet\x7fptexbullet\x0141,1417
+\let\ptexb=\b\x7fptexb\x0142,1441
+\let\ptexc=\c\x7fptexc\x0143,1455
+\let\ptexi=\i\x7fptexi\x0144,1469
+\let\ptext=\t\x7fptext\x0145,1483
+\let\ptexl=\l\x7fptexl\x0146,1497
+\let\ptexL=\L\x7fptexL\x0147,1511
+\def\tie{\x7ftie\x0149,1526
+\def\gloggingall{\x7fgloggingall\x0172,2276
+\def\loggingall{\x7floggingall\x0173,2345
+\def\onepageout#1{\x7fonepageout\x0199,3282
+\shipout\vbox{{\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01103,3489
+{\let\hsize=\pagewidth \makefootline}\x7fhsize\x01104,3556
+\def\croppageout#1{\x7fcroppageout\x01115,4032
+ {\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01126,4511
+ {\let\hsize=\pagewidth \makefootline}\x7fhsize\x01128,4569
+\def\cropmarks{\x7fcropmarks\x01142,5092
+\def\cropmarks{\let\onepageout=\croppageout }\x7fonepageout\x01142,5092
+\def\pagebody#1{\x7fpagebody\x01144,5139
+\gdef\pagecontents#1{\x7fpagecontents\x01146,5220
+\def\ewtop{\x7fewtop\x01157,5594
+\def\nstop{\x7fnstop\x01158,5658
+\def\ewbot{\x7fewbot\x01160,5741
+\def\nsbot{\x7fnsbot\x01161,5805
+\def\parsearg #1{\x7fparsearg\x01170,6104
+\def\parsearg #1{\let\next=#1\begingroup\obeylines\futurelet\temp\parseargx}\x7fnext\x01170,6104
+\def\parseargx{\x7fparseargx\x01172,6182
+\gdef\parseargdiscardspace {\x7fparseargdiscardspace\x01178,6321
+\gdef\obeyedspace{\x7fobeyedspace\x01180,6399
+\def\parseargline{\x7fparseargline\x01182,6422
+\gdef\parsearglinex #1^^M{\x7fparsearglinex\x01184,6493
+\def\flushcr{\x7fflushcr\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{\x7fnext\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}\x7fnext\x01186,6543
+\newif\ifENV \ENVfalse \def\inENV{\x7finENV\x01190,6742
+\def\ENVcheck{\x7fENVcheck\x01191,6806
+\outer\def\begin{\x7fbegin\x01198,7053
+\def\beginxxx #1{\x7fbeginxxx\x01200,7091
+\def\end{\x7fend\x01208,7346
+\def\endxxx #1{\x7fendxxx\x01210,7374
+\def\errorE#1{\x7ferrorE\x01216,7563
+\def\singlespace{\x7fsinglespace\x01222,7757
+\def\@{\x7f@\x01232,7980
+\def\`{\x7f`\x01236,8080
+\def\'{\x7f'\x01237,8092
+\def\mylbrace {\x7fmylbrace\x01241,8140
+\def\myrbrace {\x7fmyrbrace\x01242,8173
+\let\{=\mylbrace\x7f{\x01243,8206
+\let\}=\myrbrace\x7f}\x01244,8223
+\def\:{\x7f:\x01247,8287
+\def\*{\x7f*\x01250,8341
+\def\.{\x7f.\x01253,8417
+\def\w#1{\x7fw\x01258,8648
+\def\group{\x7fgroup\x01268,9131
+ \def\Egroup{\x7fEgroup\x01273,9295
+\def\need{\x7fneed\x01289,9737
+\def\needx#1{\x7fneedx\x01300,10014
+\let\br = \par\x7fbr\x01335,11355
+\def\dots{\x7fdots\x01339,11400
+\def\page{\x7fpage\x01343,11464
+\def\exdent{\x7fexdent\x01353,11791
+\def\exdentyyy #1{\x7fexdentyyy\x01354,11824
+\def\nofillexdent{\x7fnofillexdent\x01357,11968
+\def\nofillexdentyyy #1{\x7fnofillexdentyyy\x01358,12013
+\def\include{\x7finclude\x01365,12197
+\def\includezzz #1{\x7fincludezzz\x01366,12232
+\def\includezzz #1{{\def\thisfile{\x7fthisfile\x01366,12232
+\def\thisfile{\x7fthisfile\x01369,12283
+\def\center{\x7fcenter\x01373,12346
+\def\centerzzz #1{\x7fcenterzzz\x01374,12379
+\def\sp{\x7fsp\x01380,12521
+\def\spxxx #1{\x7fspxxx\x01381,12546
+\def\comment{\x7fcomment\x01387,12720
+\def\commentxxx #1{\x7fcommentxxx\x01390,12817
+\let\c=\comment\x7fc\x01392,12883
+\def\ignoresections{\x7fignoresections\x01396,12986
+\let\chapter=\relax\x7fchapter\x01397,13008
+\let\unnumbered=\relax\x7funnumbered\x01398,13028
+\let\top=\relax\x7ftop\x01399,13051
+\let\unnumberedsec=\relax\x7funnumberedsec\x01400,13067
+\let\unnumberedsection=\relax\x7funnumberedsection\x01401,13093
+\let\unnumberedsubsec=\relax\x7funnumberedsubsec\x01402,13123
+\let\unnumberedsubsection=\relax\x7funnumberedsubsection\x01403,13152
+\let\unnumberedsubsubsec=\relax\x7funnumberedsubsubsec\x01404,13185
+\let\unnumberedsubsubsection=\relax\x7funnumberedsubsubsection\x01405,13217
+\let\section=\relax\x7fsection\x01406,13253
+\let\subsec=\relax\x7fsubsec\x01407,13273
+\let\subsubsec=\relax\x7fsubsubsec\x01408,13292
+\let\subsection=\relax\x7fsubsection\x01409,13314
+\let\subsubsection=\relax\x7fsubsubsection\x01410,13337
+\let\appendix=\relax\x7fappendix\x01411,13363
+\let\appendixsec=\relax\x7fappendixsec\x01412,13384
+\let\appendixsection=\relax\x7fappendixsection\x01413,13408
+\let\appendixsubsec=\relax\x7fappendixsubsec\x01414,13436
+\let\appendixsubsection=\relax\x7fappendixsubsection\x01415,13463
+\let\appendixsubsubsec=\relax\x7fappendixsubsubsec\x01416,13494
+\let\appendixsubsubsection=\relax\x7fappendixsubsubsection\x01417,13524
+\let\contents=\relax\x7fcontents\x01418,13558
+\let\smallbook=\relax\x7fsmallbook\x01419,13579
+\let\titlepage=\relax\x7ftitlepage\x01420,13601
+\def\ignore{\x7fignore\x01423,13626
+\long\def\ignorexxx #1\end ignore{\x7fignorexxx\x01427,13766
+\def\direntry{\x7fdirentry\x01429,13825
+\long\def\direntryxxx #1\end direntry{\x7fdirentryxxx\x01430,13864
+\def\ifset{\x7fifset\x01434,13974
+\def\ifsetxxx #1{\x7fifsetxxx\x01436,14032
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\ifsetfail\x7ftemp\x01437,14059
+\else \let\temp=\relax \fi\x7ftemp\x01438,14125
+\def\Eifset{\x7fEifset\x01440,14159
+\def\ifsetfail{\x7fifsetfail\x01441,14173
+\long\def\ifsetfailxxx #1\end ifset{\x7fifsetfailxxx\x01442,14229
+\def\ifclear{\x7fifclear\x01444,14290
+\def\ifclearxxx #1{\x7fifclearxxx\x01446,14352
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\relax\x7ftemp\x01447,14381
+\else \let\temp=\ifclearfail \fi\x7ftemp\x01448,14443
+\def\Eifclear{\x7fEifclear\x01450,14483
+\def\ifclearfail{\x7fifclearfail\x01451,14499
+\long\def\ifclearfailxxx #1\end ifclear{\x7fifclearfailxxx\x01452,14559
+\def\set{\x7fset\x01456,14710
+\def\setxxx #1{\x7fsetxxx\x01457,14737
+\expandafter\let\csname IF#1\endcsname=\set}\x7fcsname\x01458,14753
+\def\clear{\x7fclear\x01460,14799
+\def\clearxxx #1{\x7fclearxxx\x01461,14830
+\expandafter\let\csname IF#1\endcsname=\relax}\x7fcsname\x01462,14848
+\def\iftex{\x7fiftex\x01466,14947
+\def\Eiftex{\x7fEiftex\x01467,14960
+\def\ifinfo{\x7fifinfo\x01468,14974
+\long\def\ifinfoxxx #1\end ifinfo{\x7fifinfoxxx\x01469,15024
+\long\def\menu #1\end menu{\x7fmenu\x01471,15083
+\def\asis#1{\x7fasis\x01472,15112
+\let\implicitmath = $\x7fimplicitmath\x01484,15633
+\def\math#1{\x7fmath\x01485,15655
+\def\node{\x7fnode\x01487,15699
+\def\nodezzz#1{\x7fnodezzz\x01488,15737
+\def\nodexxx[#1,#2]{\x7fnodexxx\x01489,15768
+\def\nodexxx[#1,#2]{\gdef\lastnode{\x7flastnode\x01489,15768
+\let\lastnode=\relax\x7flastnode\x01490,15808
+\def\donoderef{\x7fdonoderef\x01492,15830
+\let\lastnode=\relax}\x7flastnode\x01494,15928
+\def\unnumbnoderef{\x7funnumbnoderef\x01496,15951
+\let\lastnode=\relax}\x7flastnode\x01498,16059
+\def\appendixnoderef{\x7fappendixnoderef\x01500,16082
\expandafter\expandafter\expandafter\appendixsetref{\x7fsetref\x01501,16128
-\let\refill=\relax\x7fill=\relax\x01504,16217
-\def\setfilename{\x7f\setfilename\x01509,16431
-\outer\def\bye{\x7f\bye\x01518,16677
-\def\inforef #1{\x7f\inforef\x01520,16733
-\def\inforefzzz #1,#2,#3,#4**{\x7f\inforefzzz\x01521,16771
-\def\losespace #1{\x7f\losespace\x01523,16868
-\def\sf{\x7f\sf\x01532,17072
-\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf=cmbx10\x01558,17867
-\font\deftt=cmtt10 scaled \magstep1\x7ftt=cmtt10\x01559,17913
-\def\df{\x7f\df\x01560,17949
-\def\resetmathfonts{\x7f\resetmathfonts\x01635,20543
-\def\textfonts{\x7f\textfonts\x01648,21132
-\def\chapfonts{\x7f\chapfonts\x01653,21347
-\def\secfonts{\x7f\secfonts\x01658,21563
-\def\subsecfonts{\x7f\subsecfonts\x01663,21768
-\def\indexfonts{\x7f\indexfonts\x01668,21985
-\def\smartitalicx{\x7f\smartitalicx\x01691,22717
-\def\smartitalic#1{\x7f\smartitalic\x01692,22793
-\let\cite=\smartitalic\x7f=\smartitalic\x01698,22938
-\def\b#1{\x7f\b\x01700,22962
-\def\t#1{\x7f\t\x01703,22997
-\def\samp #1{\x7f\samp\x01706,23149
-\def\key #1{\x7f\key\x01707,23182
-\def\ctrl #1{\x7f\ctrl\x01708,23243
-\def\tclose#1{\x7f\tclose\x01716,23445
-\def\ {\x7f\\x01720,23611
-\def\xkey{\x7f\xkey\x01728,23880
-\def\kbdfoo#1#2#3\par{\x7f\kbdfoo\x01729,23896
-\def\dmn#1{\x7f\dmn\x01738,24197
-\def\kbd#1{\x7f\kbd\x01740,24224
-\def\l#1{\x7f\l\x01742,24281
-\def\r#1{\x7f\r\x01744,24310
-\def\sc#1{\x7f\sc\x01746,24378
-\def\ii#1{\x7f\ii\x01747,24421
-\def\titlefont#1{\x7f\titlefont\x01755,24654
-\def\titlepage{\x7f\titlepage\x01761,24757
- \def\subtitlefont{\x7f\subtitlefont\x01766,24984
- \def\authorfont{\x7f\authorfont\x01768,25068
- \def\title{\x7f\title\x01774,25278
- \def\titlezzz##1{\x7f\titlezzz\x01775,25313
- \def\subtitle{\x7f\subtitle\x01783,25628
- \def\subtitlezzz##1{\x7f\subtitlezzz\x01784,25669
- \def\author{\x7f\author\x01787,25787
- \def\authorzzz##1{\x7f\authorzzz\x01788,25824
- \def\page{\x7f\page\x01794,26115
-\def\Etitlepage{\x7f\Etitlepage\x01804,26284
-\def\finishtitlepage{\x7f\finishtitlepage\x01817,26672
-\def\evenheading{\x7f\evenheading\x01846,27680
-\def\oddheading{\x7f\oddheading\x01847,27723
-\def\everyheading{\x7f\everyheading\x01848,27764
-\def\evenfooting{\x7f\evenfooting\x01850,27810
-\def\oddfooting{\x7f\oddfooting\x01851,27853
-\def\everyfooting{\x7f\everyfooting\x01852,27894
-\def\headings #1 {\x7f\headings\x01893,29586
-\def\HEADINGSoff{\x7f\HEADINGSoff\x01895,29635
-\def\HEADINGSdouble{\x7f\HEADINGSdouble\x01904,30062
-\def\HEADINGSsingle{\x7f\HEADINGSsingle\x01914,30382
-\def\HEADINGSon{\x7f\HEADINGSon\x01922,30603
-\def\HEADINGSafter{\x7f\HEADINGSafter\x01924,30637
-\def\HEADINGSdoublex{\x7f\HEADINGSdoublex\x01926,30732
-\def\HEADINGSsingleafter{\x7f\HEADINGSsingleafter\x01933,30920
-\def\HEADINGSsinglex{\x7f\HEADINGSsinglex\x01934,30981
-\def\today{\x7f\today\x01943,31256
-\def\thistitle{\x7f\thistitle\x01958,31801
-\def\settitle{\x7f\settitle\x01959,31826
-\def\settitlezzz #1{\x7f\settitlezzz\x01960,31863
-\def\internalBitem{\x7f\internalBitem\x01992,32793
-\def\internalBitemx{\x7f\internalBitemx\x01993,32843
-\def\internalBxitem "#1"{\x7f\internalBxitem\x01995,32888
-\def\internalBxitemx "#1"{\x7f\internalBxitemx\x01996,32968
-\def\internalBkitem{\x7f\internalBkitem\x01998,33043
-\def\internalBkitemx{\x7f\internalBkitemx\x01999,33095
-\def\kitemzzz #1{\x7f\kitemzzz\x011001,33142
-\def\xitemzzz #1{\x7f\xitemzzz\x011004,33244
-\def\itemzzz #1{\x7f\itemzzz\x011007,33347
-\def\item{\x7f\item\x011037,34418
-\def\itemx{\x7f\itemx\x011038,34469
-\def\kitem{\x7f\kitem\x011039,34522
-\def\kitemx{\x7f\kitemx\x011040,34575
-\def\xitem{\x7f\xitem\x011041,34630
-\def\xitemx{\x7f\xitemx\x011042,34683
-\def\description{\x7f\description\x011045,34793
-\def\table{\x7f\table\x011047,34843
-\def\ftable{\x7f\ftable\x011052,34987
-\def\Eftable{\x7f\Eftable\x011056,35133
-\def\vtable{\x7f\vtable\x011059,35202
-\def\Evtable{\x7f\Evtable\x011063,35348
-\def\dontindex #1{\x7f\dontindex\x011066,35417
-\def\fnitemindex #1{\x7f\fnitemindex\x011067,35437
-\def\vritemindex #1{\x7f\vritemindex\x011068,35482
-\def\tablez #1#2#3#4#5#6{\x7f\tablez\x011074,35631
-\def\Edescription{\x7f\Edescription\x011077,35689
-\def\itemfont{\x7f\itemfont\x011082,35890
-\def\Etable{\x7f\Etable\x011090,36116
-\def\itemize{\x7f\itemize\x011103,36440
-\def\itemizezzz #1{\x7f\itemizezzz\x011105,36476
-\def\itemizey #1#2{\x7f\itemizey\x011110,36571
-\def#2{\x7f1119,36817
-\def\itemcontents{\x7f\itemcontents\x011120,36858
-\def\bullet{\x7f\bullet\x011123,36906
-\def\minus{\x7f\minus\x011124,36933
-\def\frenchspacing{\x7f\frenchspacing\x011128,37041
-\def\splitoff#1#2\endmark{\x7f\splitoff\x011134,37266
-\def\enumerate{\x7f\enumerate\x011140,37496
-\def\enumeratezzz #1{\x7f\enumeratezzz\x011141,37535
-\def\enumeratey #1 #2\endenumeratey{\x7f\enumeratey\x011142,37588
- \def\thearg{\x7f\thearg\x011146,37735
- \ifx\thearg\empty \def\thearg{\x7f\thearg\x011147,37754
-\def\numericenumerate{\x7f\numericenumerate\x011184,39088
-\def\lowercaseenumerate{\x7f\lowercaseenumerate\x011190,39218
-\def\uppercaseenumerate{\x7f\uppercaseenumerate\x011203,39565
-\def\startenumeration#1{\x7f\startenumeration\x011219,40055
-\def\alphaenumerate{\x7f\alphaenumerate\x011227,40237
-\def\capsenumerate{\x7f\capsenumerate\x011228,40272
-\def\Ealphaenumerate{\x7f\Ealphaenumerate\x011229,40306
-\def\Ecapsenumerate{\x7f\Ecapsenumerate\x011230,40340
-\def\itemizeitem{\x7f\itemizeitem\x011234,40420
-\def\newindex #1{\x7f\newindex\x011259,41277
-\def\defindex{\x7f\defindex\x011268,41566
-\def\newcodeindex #1{\x7f\newcodeindex\x011272,41674
-\def\defcodeindex{\x7f\defcodeindex\x011279,41934
-\def\synindex #1 #2 {\x7f\synindex\x011283,42114
-\def\syncodeindex #1 #2 {\x7f\syncodeindex\x011292,42454
-\def\doindex#1{\x7f\doindex\x011309,43133
-\def\singleindexer #1{\x7f\singleindexer\x011310,43192
-\def\docodeindex#1{\x7f\docodeindex\x011313,43304
-\def\singlecodeindexer #1{\x7f\singlecodeindexer\x011314,43371
-\def\indexdummies{\x7f\indexdummies\x011316,43429
-\def\_{\x7f\_\x011317,43449
-\def\w{\x7f\w\x011318,43477
-\def\bf{\x7f\bf\x011319,43504
-\def\rm{\x7f\rm\x011320,43533
-\def\sl{\x7f\sl\x011321,43562
-\def\sf{\x7f\sf\x011322,43591
-\def\tt{\x7f\tt\x011323,43619
-\def\gtr{\x7f\gtr\x011324,43647
-\def\less{\x7f\less\x011325,43677
-\def\hat{\x7f\hat\x011326,43709
-\def\char{\x7f\char\x011327,43739
-\def\TeX{\x7f\TeX\x011328,43771
-\def\dots{\x7f\dots\x011329,43801
-\def\copyright{\x7f\copyright\x011330,43834
-\def\tclose##1{\x7f\tclose\x011331,43877
-\def\code##1{\x7f\code\x011332,43922
-\def\samp##1{\x7f\samp\x011333,43963
-\def\t##1{\x7f\t\x011334,44004
-\def\r##1{\x7f\r\x011335,44039
-\def\i##1{\x7f\i\x011336,44074
-\def\b##1{\x7f\b\x011337,44109
-\def\cite##1{\x7f\cite\x011338,44144
-\def\key##1{\x7f\key\x011339,44185
-\def\file##1{\x7f\file\x011340,44224
-\def\var##1{\x7f\var\x011341,44265
-\def\kbd##1{\x7f\kbd\x011342,44304
-\def\indexdummyfont#1{\x7f\indexdummyfont\x011347,44460
-\def\indexdummytex{\x7f\indexdummytex\x011348,44486
-\def\indexdummydots{\x7f\indexdummydots\x011349,44510
-\def\indexnofonts{\x7f\indexnofonts\x011351,44536
+\let\lastnode=\relax}\x7flastnode\x01502,16194
+\let\refill=\relax\x7frefill\x01504,16217
+\def\setfilename{\x7fsetfilename\x01509,16431
+ \global\let\setfilename=\comment % Ignore extra @setfilename cmds.\x7fsetfilename\x01514,16562
+\outer\def\bye{\x7fbye\x01518,16677
+\def\inforef #1{\x7finforef\x01520,16733
+\def\inforefzzz #1,#2,#3,#4**{\x7finforefzzz\x01521,16771
+\def\losespace #1{\x7flosespace\x01523,16868
+\def\sf{\x7fsf\x01532,17072
+\let\li = \sf % Sometimes we call it \li, not \sf.\x7fli\x01533,17100
+\let\mainmagstep=\magstephalf\x7fmainmagstep\x01536,17201
+\let\mainmagstep=\magstep1\x7fmainmagstep\x01539,17250
+\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf\x01558,17867
+\font\deftt=cmtt10 scaled \magstep1\x7ftt\x01559,17913
+\def\df{\x7fdf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftentt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftenbf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7fbf\x01560,17949
+\let\indsl=\indit\x7findsl\x01570,18310
+\let\indtt=\ninett\x7findtt\x01571,18328
+\let\indsf=\indrm\x7findsf\x01572,18347
+\let\indbf=\indrm\x7findbf\x01573,18365
+\let\indsc=\indrm\x7findsc\x01574,18383
+\let\chapbf=\chaprm\x7fchapbf\x01584,18643
+\let\authorrm = \secrm\x7fauthorrm\x01627,20193
+\def\resetmathfonts{\x7fresetmathfonts\x01635,20543
+\def\textfonts{\x7ftextfonts\x01648,21132
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenrm\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenit\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftensl\x01649,21149
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftenbf\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftentt\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7fsmallcaps\x01650,21208
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensf\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7fteni\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensy\x01651,21271
+\def\chapfonts{\x7fchapfonts\x01653,21347
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenrm\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenit\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftensl\x01654,21364
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftenbf\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftentt\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7fsmallcaps\x01655,21424
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensf\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7fteni\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensy\x01656,21487
+\def\secfonts{\x7fsecfonts\x01658,21563
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenrm\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenit\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftensl\x01659,21579
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftenbf\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftentt\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7fsmallcaps\x01660,21635
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensf\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7fteni\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensy\x01661,21695
+\def\subsecfonts{\x7fsubsecfonts\x01663,21768
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenrm\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenit\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftensl\x01664,21787
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftenbf\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftentt\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7fsmallcaps\x01665,21846
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensf\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7fteni\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensy\x01666,21909
+\def\indexfonts{\x7findexfonts\x01668,21985
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenrm\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenit\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftensl\x01669,22003
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftenbf\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftentt\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7fsmallcaps\x01670,22059
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensf\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7fteni\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensy\x01671,22119
+\def\smartitalicx{\x7fsmartitalicx\x01691,22717
+\def\smartitalic#1{\x7fsmartitalic\x01692,22793
+\let\i=\smartitalic\x7fi\x01694,22851
+\let\var=\smartitalic\x7fvar\x01695,22871
+\let\dfn=\smartitalic\x7fdfn\x01696,22893
+\let\emph=\smartitalic\x7femph\x01697,22915
+\let\cite=\smartitalic\x7fcite\x01698,22938
+\def\b#1{\x7fb\x01700,22962
+\let\strong=\b\x7fstrong\x01701,22981
+\def\t#1{\x7ft\x01703,22997
+\let\ttfont = \t\x7fttfont\x01704,23072
+\def\samp #1{\x7fsamp\x01706,23149
+\def\key #1{\x7fkey\x01707,23182
+\def\ctrl #1{\x7fctrl\x01708,23243
+\let\file=\samp\x7ffile\x01710,23285
+\def\tclose#1{\x7ftclose\x01716,23445
+\let\code=\tclose\x7fcode\x01722,23722
+\def\xkey{\x7fxkey\x01728,23880
+\def\kbdfoo#1#2#3\par{\x7fkbdfoo\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{\x7fone\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{\x7fthree\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{\x7fthreex\x01729,23896
+\def\dmn#1{\x7fdmn\x01738,24197
+\def\kbd#1{\x7fkbd\x01740,24224
+\def\kbd#1{\def\look{\x7flook\x01740,24224
+\def\l#1{\x7fl\x01742,24281
+\def\r#1{\x7fr\x01744,24310
+\def\sc#1{\x7fsc\x01746,24378
+\def\ii#1{\x7fii\x01747,24421
+\def\titlefont#1{\x7ftitlefont\x01755,24654
+\def\titlepage{\x7ftitlepage\x01761,24757
+ \let\subtitlerm=\tenrm\x7fsubtitlerm\x01762,24810
+ \def\subtitlefont{\x7fsubtitlefont\x01766,24984
+ \def\authorfont{\x7fauthorfont\x01768,25068
+ \def\title{\x7ftitle\x01774,25278
+ \def\titlezzz##1{\x7ftitlezzz\x01775,25313
+ \def\subtitle{\x7fsubtitle\x01783,25628
+ \def\subtitlezzz##1{\x7fsubtitlezzz\x01784,25669
+ \def\author{\x7fauthor\x01787,25787
+ \def\authorzzz##1{\x7fauthorzzz\x01788,25824
+ \let\oldpage = \page\x7foldpage\x01793,26091
+ \def\page{\x7fpage\x01794,26115
+ \let\page = \oldpage\x7fpage\x01799,26206
+\def\Etitlepage{\x7fEtitlepage\x01804,26284
+\def\finishtitlepage{\x7ffinishtitlepage\x01817,26672
+\let\thispage=\folio\x7fthispage\x01825,26825
+\let\HEADINGShook=\relax\x7fHEADINGShook\x01837,27420
+\def\evenheading{\x7fevenheading\x01846,27680
+\def\oddheading{\x7foddheading\x01847,27723
+\def\everyheading{\x7feveryheading\x01848,27764
+\def\evenfooting{\x7fevenfooting\x01850,27810
+\def\oddfooting{\x7foddfooting\x01851,27853
+\def\everyfooting{\x7feveryfooting\x01852,27894
+\gdef\evenheadingxxx #1{\x7fevenheadingxxx\x01856,27958
+\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{\x7fevenheadingyyy\x01857,28017
+\gdef\oddheadingxxx #1{\x7foddheadingxxx\x01860,28126
+\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{\x7foddheadingyyy\x01861,28183
+\gdef\everyheadingxxx #1{\x7feveryheadingxxx\x01864,28290
+\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{\x7feveryheadingyyy\x01865,28351
+\gdef\evenfootingxxx #1{\x7fevenfootingxxx\x01869,28522
+\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{\x7fevenfootingyyy\x01870,28581
+\gdef\oddfootingxxx #1{\x7foddfootingxxx\x01873,28690
+\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{\x7foddfootingyyy\x01874,28747
+\gdef\everyfootingxxx #1{\x7feveryfootingxxx\x01877,28854
+\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{\x7feveryfootingyyy\x01878,28915
+\def\headings #1 {\x7fheadings\x01893,29586
+\def\HEADINGSoff{\x7fHEADINGSoff\x01895,29635
+\def\HEADINGSdouble{\x7fHEADINGSdouble\x01904,30062
+\def\HEADINGSsingle{\x7fHEADINGSsingle\x01914,30382
+\def\HEADINGSon{\x7fHEADINGSon\x01922,30603
+\def\HEADINGSafter{\x7fHEADINGSafter\x01924,30637
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}\x7fHEADINGShook\x01924,30637
+\let\HEADINGSdoubleafter=\HEADINGSafter\x7fHEADINGSdoubleafter\x01925,30692
+\def\HEADINGSdoublex{\x7fHEADINGSdoublex\x01926,30732
+\def\HEADINGSsingleafter{\x7fHEADINGSsingleafter\x01933,30920
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}\x7fHEADINGShook\x01933,30920
+\def\HEADINGSsinglex{\x7fHEADINGSsinglex\x01934,30981
+\def\today{\x7ftoday\x01943,31256
+\def\thistitle{\x7fthistitle\x01958,31801
+\def\settitle{\x7fsettitle\x01959,31826
+\def\settitlezzz #1{\x7fsettitlezzz\x01960,31863
+\def\settitlezzz #1{\gdef\thistitle{\x7fthistitle\x01960,31863
+\def\internalBitem{\x7finternalBitem\x01992,32793
+\def\internalBitemx{\x7finternalBitemx\x01993,32843
+\def\internalBxitem "#1"{\x7finternalBxitem\x01995,32888
+\def\internalBxitem "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01995,32888
+\def\internalBxitemx "#1"{\x7finternalBxitemx\x01996,32968
+\def\internalBxitemx "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01996,32968
+\def\internalBkitem{\x7finternalBkitem\x01998,33043
+\def\internalBkitemx{\x7finternalBkitemx\x01999,33095
+\def\kitemzzz #1{\x7fkitemzzz\x011001,33142
+\def\xitemzzz #1{\x7fxitemzzz\x011004,33244
+\def\itemzzz #1{\x7fitemzzz\x011007,33347
+\def\item{\x7fitem\x011037,34418
+\def\itemx{\x7fitemx\x011038,34469
+\def\kitem{\x7fkitem\x011039,34522
+\def\kitemx{\x7fkitemx\x011040,34575
+\def\xitem{\x7fxitem\x011041,34630
+\def\xitemx{\x7fxitemx\x011042,34683
+\def\description{\x7fdescription\x011045,34793
+\def\table{\x7ftable\x011047,34843
+\gdef\tablex #1^^M{\x7ftablex\x011049,34925
+\def\ftable{\x7fftable\x011052,34987
+\gdef\ftablex #1^^M{\x7fftablex\x011054,35071
+\def\Eftable{\x7fEftable\x011056,35133
+\let\Etable=\relax}\x7fEtable\x011057,35180
+\def\vtable{\x7fvtable\x011059,35202
+\gdef\vtablex #1^^M{\x7fvtablex\x011061,35286
+\def\Evtable{\x7fEvtable\x011063,35348
+\let\Etable=\relax}\x7fEtable\x011064,35395
+\def\dontindex #1{\x7fdontindex\x011066,35417
+\def\fnitemindex #1{\x7ffnitemindex\x011067,35437
+\def\vritemindex #1{\x7fvritemindex\x011068,35482
+\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\x7ftabley\x011071,35543
+\def\tablez #1#2#3#4#5#6{\x7ftablez\x011074,35631
+\def\Edescription{\x7fEdescription\x011077,35689
+\let\itemindex=#1%\x7fitemindex\x011078,35735
+\def\itemfont{\x7fitemfont\x011082,35890
+\def\Etable{\x7fEtable\x011090,36116
+\let\item = \internalBitem %\x7fitem\x011091,36162
+\let\itemx = \internalBitemx %\x7fitemx\x011092,36191
+\let\kitem = \internalBkitem %\x7fkitem\x011093,36222
+\let\kitemx = \internalBkitemx %\x7fkitemx\x011094,36253
+\let\xitem = \internalBxitem %\x7fxitem\x011095,36286
+\let\xitemx = \internalBxitemx %\x7fxitemx\x011096,36317
+\def\itemize{\x7fitemize\x011103,36440
+\def\itemizezzz #1{\x7fitemizezzz\x011105,36476
+\def\itemizey #1#2{\x7fitemizey\x011110,36571
+\def\itemcontents{\x7fitemcontents\x011120,36858
+\let\item=\itemizeitem}\x7fitem\x011121,36881
+\def\bullet{\x7fbullet\x011123,36906
+\def\minus{\x7fminus\x011124,36933
+\def\frenchspacing{\x7ffrenchspacing\x011128,37041
+\def\splitoff#1#2\endmark{\x7fsplitoff\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{\x7ffirst\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{\x7frest\x011134,37266
+\def\enumerate{\x7fenumerate\x011140,37496
+\def\enumeratezzz #1{\x7fenumeratezzz\x011141,37535
+\def\enumeratey #1 #2\endenumeratey{\x7fenumeratey\x011142,37588
+ \def\thearg{\x7fthearg\x011146,37735
+ \ifx\thearg\empty \def\thearg{\x7fthearg\x011147,37754
+\def\numericenumerate{\x7fnumericenumerate\x011184,39088
+\def\lowercaseenumerate{\x7flowercaseenumerate\x011190,39218
+\def\uppercaseenumerate{\x7fuppercaseenumerate\x011203,39565
+\def\startenumeration#1{\x7fstartenumeration\x011219,40055
+\def\alphaenumerate{\x7falphaenumerate\x011227,40237
+\def\capsenumerate{\x7fcapsenumerate\x011228,40272
+\def\Ealphaenumerate{\x7fEalphaenumerate\x011229,40306
+\def\Ecapsenumerate{\x7fEcapsenumerate\x011230,40340
+\def\itemizeitem{\x7fitemizeitem\x011234,40420
+{\let\par=\endgraf \smallbreak}\x7fpar\x011236,40460
+\gdef\newwrite{\x7fnewwrite\x011249,40841
+\def\newindex #1{\x7fnewindex\x011259,41277
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011262,41439
+\def\defindex{\x7fdefindex\x011268,41566
+\def\newcodeindex #1{\x7fnewcodeindex\x011272,41674
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011275,41840
+\def\defcodeindex{\x7fdefcodeindex\x011279,41934
+\def\synindex #1 #2 {\x7fsynindex\x011283,42114
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011284,42137
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011285,42217
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011286,42273
+\def\syncodeindex #1 #2 {\x7fsyncodeindex\x011292,42454
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011293,42481
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011294,42561
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011295,42617
+\def\doindex#1{\x7fdoindex\x011309,43133
+\def\doindex#1{\edef\indexname{\x7findexname\x011309,43133
+\def\singleindexer #1{\x7fsingleindexer\x011310,43192
+\def\singleindexer #1{\doind{\indexname}\x7fname\x011310,43192
+\def\docodeindex#1{\x7fdocodeindex\x011313,43304
+\def\docodeindex#1{\edef\indexname{\x7findexname\x011313,43304
+\def\singlecodeindexer #1{\x7fsinglecodeindexer\x011314,43371
+\def\singlecodeindexer #1{\doind{\indexname}\x7fname\x011314,43371
+\def\indexdummies{\x7findexdummies\x011316,43429
+\def\_{\x7f_\x011317,43449
+\def\w{\x7fw\x011318,43477
+\def\bf{\x7fbf\x011319,43504
+\def\rm{\x7frm\x011320,43533
+\def\sl{\x7fsl\x011321,43562
+\def\sf{\x7fsf\x011322,43591
+\def\tt{\x7ftt\x011323,43619
+\def\gtr{\x7fgtr\x011324,43647
+\def\less{\x7fless\x011325,43677
+\def\hat{\x7fhat\x011326,43709
+\def\char{\x7fchar\x011327,43739
+\def\TeX{\x7fTeX\x011328,43771
+\def\dots{\x7fdots\x011329,43801
+\def\copyright{\x7fcopyright\x011330,43834
+\def\tclose##1{\x7ftclose\x011331,43877
+\def\code##1{\x7fcode\x011332,43922
+\def\samp##1{\x7fsamp\x011333,43963
+\def\t##1{\x7ft\x011334,44004
+\def\r##1{\x7fr\x011335,44039
+\def\i##1{\x7fi\x011336,44074
+\def\b##1{\x7fb\x011337,44109
+\def\cite##1{\x7fcite\x011338,44144
+\def\key##1{\x7fkey\x011339,44185
+\def\file##1{\x7ffile\x011340,44224
+\def\var##1{\x7fvar\x011341,44265
+\def\kbd##1{\x7fkbd\x011342,44304
+\def\indexdummyfont#1{\x7findexdummyfont\x011347,44460
+\def\indexdummytex{\x7findexdummytex\x011348,44486
+\def\indexdummydots{\x7findexdummydots\x011349,44510
+\def\indexnofonts{\x7findexnofonts\x011351,44536
+\let\w=\indexdummyfont\x7fw\x011352,44556
\let\w=\indexdummyfont\x7fdummyfont\x011352,44556
+\let\t=\indexdummyfont\x7ft\x011353,44579
\let\t=\indexdummyfont\x7fdummyfont\x011353,44579
+\let\r=\indexdummyfont\x7fr\x011354,44602
\let\r=\indexdummyfont\x7fdummyfont\x011354,44602
+\let\i=\indexdummyfont\x7fi\x011355,44625
\let\i=\indexdummyfont\x7fdummyfont\x011355,44625
+\let\b=\indexdummyfont\x7fb\x011356,44648
\let\b=\indexdummyfont\x7fdummyfont\x011356,44648
+\let\emph=\indexdummyfont\x7femph\x011357,44671
\let\emph=\indexdummyfont\x7fdummyfont\x011357,44671
+\let\strong=\indexdummyfont\x7fstrong\x011358,44697
\let\strong=\indexdummyfont\x7fdummyfont\x011358,44697
-\let\cite=\indexdummyfont\x7f=\indexdummyfont\x011359,44725
+\let\cite=\indexdummyfont\x7fcite\x011359,44725
+\let\cite=\indexdummyfont\x7fdummyfont\x011359,44725
+\let\sc=\indexdummyfont\x7fsc\x011360,44751
\let\sc=\indexdummyfont\x7fdummyfont\x011360,44751
+\let\tclose=\indexdummyfont\x7ftclose\x011364,44923
\let\tclose=\indexdummyfont\x7fdummyfont\x011364,44923
+\let\code=\indexdummyfont\x7fcode\x011365,44951
\let\code=\indexdummyfont\x7fdummyfont\x011365,44951
+\let\file=\indexdummyfont\x7ffile\x011366,44977
\let\file=\indexdummyfont\x7fdummyfont\x011366,44977
+\let\samp=\indexdummyfont\x7fsamp\x011367,45003
\let\samp=\indexdummyfont\x7fdummyfont\x011367,45003
+\let\kbd=\indexdummyfont\x7fkbd\x011368,45029
\let\kbd=\indexdummyfont\x7fdummyfont\x011368,45029
+\let\key=\indexdummyfont\x7fkey\x011369,45054
\let\key=\indexdummyfont\x7fdummyfont\x011369,45054
+\let\var=\indexdummyfont\x7fvar\x011370,45079
\let\var=\indexdummyfont\x7fdummyfont\x011370,45079
+\let\TeX=\indexdummytex\x7fTeX\x011371,45104
\let\TeX=\indexdummytex\x7fdummytex\x011371,45104
+\let\dots=\indexdummydots\x7fdots\x011372,45128
\let\dots=\indexdummydots\x7fdummydots\x011372,45128
-\let\indexbackslash=0 %overridden during \printindex.\x7fbackslash=0\x011382,45380
-\def\doind #1#2{\x7f\doind\x011384,45436
+\let\indexbackslash=0 %overridden during \printindex.\x7findexbackslash\x011382,45380
+\def\doind #1#2{\x7fdoind\x011384,45436
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011386,45479
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011389,45619
+{\let\folio=0% Expand all macros now EXCEPT \folio\x7ffolio\x011388,45568
+\def\rawbackslashxx{\x7frawbackslashxx\x011389,45619
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011389,45619
{\indexnofonts\x7fnofonts\x011394,45881
-\def\dosubind #1#2#3{\x7f\dosubind\x011405,46192
+\xdef\temp1{\x7ftemp1\x011395,45896
+\edef\temp{\x7ftemp\x011399,46068
+\def\dosubind #1#2#3{\x7fdosubind\x011405,46192
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011407,46240
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011410,46344
+{\let\folio=0%\x7ffolio\x011409,46329
+\def\rawbackslashxx{\x7frawbackslashxx\x011410,46344
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011410,46344
{\indexnofonts\x7fnofonts\x011414,46498
-\def\findex {\x7f\findex\x011443,47429
-\def\kindex {\x7f\kindex\x011444,47452
-\def\cindex {\x7f\cindex\x011445,47475
-\def\vindex {\x7f\vindex\x011446,47498
-\def\tindex {\x7f\tindex\x011447,47521
-\def\pindex {\x7f\pindex\x011448,47544
-\def\cindexsub {\x7f\cindexsub\x011450,47568
-\def\printindex{\x7f\printindex\x011462,47895
-\def\doprintindex#1{\x7f\doprintindex\x011464,47936
- \def\indexbackslash{\x7f\indexbackslash\x011481,48421
+\xdef\temp1{\x7ftemp1\x011415,46513
+\edef\temp{\x7ftemp\x011419,46688
+\def\findex {\x7ffindex\x011443,47429
+\def\kindex {\x7fkindex\x011444,47452
+\def\cindex {\x7fcindex\x011445,47475
+\def\vindex {\x7fvindex\x011446,47498
+\def\tindex {\x7ftindex\x011447,47521
+\def\pindex {\x7fpindex\x011448,47544
+\def\cindexsub {\x7fcindexsub\x011450,47568
+\gdef\cindexsub "#1" #2^^M{\x7fcindexsub\x011452,47631
+\def\printindex{\x7fprintindex\x011462,47895
+\def\doprintindex#1{\x7fdoprintindex\x011464,47936
+ \def\indexbackslash{\x7findexbackslash\x011481,48421
\indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt\x7ffonts\rm\x011482,48460
-\def\initial #1{\x7f\initial\x011517,49532
-\def\entry #1#2{\x7f\entry\x011523,49739
+\def\initial #1{\x7finitial\x011517,49532
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftentt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7fsf\x011518,49550
+\def\entry #1#2{\x7fentry\x011523,49739
\null\nobreak\indexdotfill % Have leaders before the page number.\x7fdotfill\x011540,50386
-\def\indexdotfill{\x7f\indexdotfill\x011549,50714
-\def\primary #1{\x7f\primary\x011552,50820
-\def\secondary #1#2{\x7f\secondary\x011556,50902
+\def\indexdotfill{\x7findexdotfill\x011549,50714
+\def\primary #1{\x7fprimary\x011552,50820
+\def\secondary #1#2{\x7fsecondary\x011556,50902
\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par\x7fdotfill\x011559,50984
\newbox\partialpage\x7fialpage\x011566,51157
-\def\begindoublecolumns{\x7f\begindoublecolumns\x011572,51315
- \output={\global\setbox\partialpage=\x7fialpage=\x011573,51351
-\def\enddoublecolumns{\x7f\enddoublecolumns\x011577,51539
-\def\doublecolumnout{\x7f\doublecolumnout\x011580,51624
+\def\begindoublecolumns{\x7fbegindoublecolumns\x011572,51315
+ \output={\global\setbox\partialpage=\x7fialpage\x011573,51351
+\def\enddoublecolumns{\x7fenddoublecolumns\x011577,51539
+\def\doublecolumnout{\x7fdoublecolumnout\x011580,51624
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011581,51693
-\def\pagesofar{\x7f\pagesofar\x011584,51871
-\def\balancecolumns{\x7f\balancecolumns\x011588,52108
+\def\pagesofar{\x7fpagesofar\x011584,51871
+\def\pagesofar{\unvbox\partialpage %\x7fialpage\x011584,51871
+\def\balancecolumns{\x7fbalancecolumns\x011588,52108
\availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpage\x7fialpage\x011594,52279
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011600,52540
\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
-\def\appendixletter{\x7f\appendixletter\x011628,53486
-\def\opencontents{\x7f\opencontents\x011632,53589
-\def\thischapter{\x7f\thischapter\x011637,53770
-\def\seccheck#1{\x7f\seccheck\x011638,53808
-\def\chapternofonts{\x7f\chapternofonts\x011643,53912
-\def\result{\x7f\result\x011646,53987
-\def\equiv{\x7f\equiv\x011647,54022
-\def\expansion{\x7f\expansion\x011648,54055
-\def\print{\x7f\print\x011649,54096
-\def\TeX{\x7f\TeX\x011650,54129
-\def\dots{\x7f\dots\x011651,54158
-\def\copyright{\x7f\copyright\x011652,54189
-\def\tt{\x7f\tt\x011653,54230
-\def\bf{\x7f\bf\x011654,54257
-\def\w{\x7f\w\x011655,54285
-\def\less{\x7f\less\x011656,54310
-\def\gtr{\x7f\gtr\x011657,54341
-\def\hat{\x7f\hat\x011658,54370
-\def\char{\x7f\char\x011659,54399
-\def\tclose##1{\x7f\tclose\x011660,54430
-\def\code##1{\x7f\code\x011661,54474
-\def\samp##1{\x7f\samp\x011662,54514
-\def\r##1{\x7f\r\x011663,54554
-\def\b##1{\x7f\b\x011664,54588
-\def\key##1{\x7f\key\x011665,54622
-\def\file##1{\x7f\file\x011666,54660
-\def\kbd##1{\x7f\kbd\x011667,54700
-\def\i##1{\x7f\i\x011669,54808
-\def\cite##1{\x7f\cite\x011670,54842
-\def\var##1{\x7f\var\x011671,54882
-\def\emph##1{\x7f\emph\x011672,54920
-\def\dfn##1{\x7f\dfn\x011673,54960
-\def\thischaptername{\x7f\thischaptername\x011676,55001
-\outer\def\chapter{\x7f\chapter\x011677,55040
-\def\chapterzzz #1{\x7f\chapterzzz\x011678,55081
-{\chapternofonts%\x7fnofonts%\x011687,55477
-\global\let\section = \numberedsec\x7f=\x011692,55630
-\global\let\subsection = \numberedsubsec\x7f=\x011693,55665
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011694,55706
-\outer\def\appendix{\x7f\appendix\x011697,55757
-\def\appendixzzz #1{\x7f\appendixzzz\x011698,55800
+\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
+\def\appendixletter{\x7fappendixletter\x011628,53486
+\def\appendixletter{\char\the\appendixno}\x7fno\x011628,53486
+\def\opencontents{\x7fopencontents\x011632,53589
+\def\thischapter{\x7fthischapter\x011637,53770
+\def\thischapter{} \def\thissection{\x7fthissection\x011637,53770
+\def\seccheck#1{\x7fseccheck\x011638,53808
+\def\chapternofonts{\x7fchapternofonts\x011643,53912
+\let\rawbackslash=\relax%\x7frawbackslash\x011644,53934
+\let\frenchspacing=\relax%\x7ffrenchspacing\x011645,53960
+\def\result{\x7fresult\x011646,53987
+\def\equiv{\x7fequiv\x011647,54022
+\def\expansion{\x7fexpansion\x011648,54055
+\def\print{\x7fprint\x011649,54096
+\def\TeX{\x7fTeX\x011650,54129
+\def\dots{\x7fdots\x011651,54158
+\def\copyright{\x7fcopyright\x011652,54189
+\def\tt{\x7ftt\x011653,54230
+\def\bf{\x7fbf\x011654,54257
+\def\w{\x7fw\x011655,54285
+\def\less{\x7fless\x011656,54310
+\def\gtr{\x7fgtr\x011657,54341
+\def\hat{\x7fhat\x011658,54370
+\def\char{\x7fchar\x011659,54399
+\def\tclose##1{\x7ftclose\x011660,54430
+\def\code##1{\x7fcode\x011661,54474
+\def\samp##1{\x7fsamp\x011662,54514
+\def\r##1{\x7fr\x011663,54554
+\def\b##1{\x7fb\x011664,54588
+\def\key##1{\x7fkey\x011665,54622
+\def\file##1{\x7ffile\x011666,54660
+\def\kbd##1{\x7fkbd\x011667,54700
+\def\i##1{\x7fi\x011669,54808
+\def\cite##1{\x7fcite\x011670,54842
+\def\var##1{\x7fvar\x011671,54882
+\def\emph##1{\x7femph\x011672,54920
+\def\dfn##1{\x7fdfn\x011673,54960
+\def\thischaptername{\x7fthischaptername\x011676,55001
+\outer\def\chapter{\x7fchapter\x011677,55040
+\outer\def\chapter{\parsearg\chapterzzz}\x7fzzz\x011677,55040
+\def\chapterzzz #1{\x7fchapterzzz\x011678,55081
+\gdef\thissection{\x7fthissection\x011682,55246
+\gdef\thischaptername{\x7fthischaptername\x011683,55269
+\xdef\thischapter{\x7fthischapter\x011686,55410
+{\chapternofonts%\x7fnofonts\x011687,55477
+\edef\temp{\x7ftemp\x011688,55495
+\global\let\section = \numberedsec\x7fsection\x011692,55630
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011693,55665
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011694,55706
+\outer\def\appendix{\x7fappendix\x011697,55757
+\outer\def\appendix{\parsearg\appendixzzz}\x7fzzz\x011697,55757
+\def\appendixzzz #1{\x7fappendixzzz\x011698,55800
\global\advance \appendixno by 1 \message{\x7fno\x011700,55877
+\global\advance \appendixno by 1 \message{Appendix \appendixletter}\x7fletter\x011700,55877
\chapmacro {#1}{Appendix \appendixletter}\x7fletter\x011701,55946
+\gdef\thissection{\x7fthissection\x011702,55989
+\gdef\thischaptername{\x7fthischaptername\x011703,56012
+\xdef\thischapter{\x7fthischapter\x011704,56039
\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}\x7fletter:\x011704,56039
-{\chapternofonts%\x7fnofonts%\x011705,56111
+{\chapternofonts%\x7fnofonts\x011705,56111
+\edef\temp{\x7ftemp\x011706,56129
{#1}{Appendix \appendixletter}\x7fletter\x011707,56167
\appendixnoderef %\x7fnoderef\x011710,56267
-\global\let\section = \appendixsec\x7f=\x011711,56286
-\global\let\subsection = \appendixsubsec\x7f=\x011712,56321
-\global\let\subsubsection = \appendixsubsubsec\x7f=\x011713,56362
-\outer\def\top{\x7f\top\x011716,56413
-\outer\def\unnumbered{\x7f\unnumbered\x011717,56453
-\def\unnumberedzzz #1{\x7f\unnumberedzzz\x011718,56500
-{\chapternofonts%\x7fnofonts%\x011722,56663
-\global\let\section = \unnumberedsec\x7f=\x011727,56813
-\global\let\subsection = \unnumberedsubsec\x7f=\x011728,56850
-\global\let\subsubsection = \unnumberedsubsubsec\x7f=\x011729,56893
-\outer\def\numberedsec{\x7f\numberedsec\x011732,56946
-\def\seczzz #1{\x7f\seczzz\x011733,56987
-{\chapternofonts%\x7fnofonts%\x011736,57143
-\outer\def\appendixsection{\x7f\appendixsection\x011745,57329
-\outer\def\appendixsec{\x7f\appendixsec\x011746,57386
-\def\appendixsectionzzz #1{\x7f\appendixsectionzzz\x011747,57439
+\global\let\section = \appendixsec\x7fsection\x011711,56286
+\global\let\section = \appendixsec\x7fsec\x011711,56286
+\global\let\subsection = \appendixsubsec\x7fsubsection\x011712,56321
+\global\let\subsection = \appendixsubsec\x7fsubsec\x011712,56321
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsection\x011713,56362
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsec\x011713,56362
+\outer\def\top{\x7ftop\x011716,56413
+\outer\def\unnumbered{\x7funnumbered\x011717,56453
+\def\unnumberedzzz #1{\x7funnumberedzzz\x011718,56500
+\gdef\thischapter{\x7fthischapter\x011721,56619
+\gdef\thischapter{#1}\gdef\thissection{\x7fthissection\x011721,56619
+{\chapternofonts%\x7fnofonts\x011722,56663
+\edef\temp{\x7ftemp\x011723,56681
+\global\let\section = \unnumberedsec\x7fsection\x011727,56813
+\global\let\subsection = \unnumberedsubsec\x7fsubsection\x011728,56850
+\global\let\subsubsection = \unnumberedsubsubsec\x7fsubsubsection\x011729,56893
+\outer\def\numberedsec{\x7fnumberedsec\x011732,56946
+\def\seczzz #1{\x7fseczzz\x011733,56987
+\gdef\thissection{\x7fthissection\x011735,57079
+{\chapternofonts%\x7fnofonts\x011736,57143
+\edef\temp{\x7ftemp\x011737,57161
+\outer\def\appendixsection{\x7fappendixsection\x011745,57329
+\outer\def\appendixsection{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011745,57329
+\outer\def\appendixsec{\x7fappendixsec\x011746,57386
+\outer\def\appendixsec{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011746,57386
+\def\appendixsectionzzz #1{\x7fappendixsectionzzz\x011747,57439
+\gdef\thissection{\x7fthissection\x011749,57551
\gdef\thissection{#1}\secheading {#1}{\appendixletter}\x7fletter\x011749,57551
-{\chapternofonts%\x7fnofonts%\x011750,57619
+{\chapternofonts%\x7fnofonts\x011750,57619
+\edef\temp{\x7ftemp\x011751,57637
{#1}{\appendixletter}\x7fletter\x011752,57675
\appendixnoderef %\x7fnoderef\x011755,57775
-\outer\def\unnumberedsec{\x7f\unnumberedsec\x011759,57815
-\def\unnumberedseczzz #1{\x7f\unnumberedseczzz\x011760,57868
-{\chapternofonts%\x7fnofonts%\x011762,57963
-\outer\def\numberedsubsec{\x7f\numberedsubsec\x011770,58131
-\def\numberedsubseczzz #1{\x7f\numberedsubseczzz\x011771,58186
-{\chapternofonts%\x7fnofonts%\x011774,58365
-\outer\def\appendixsubsec{\x7f\appendixsubsec\x011783,58569
-\def\appendixsubseczzz #1{\x7f\appendixsubseczzz\x011784,58624
+\outer\def\unnumberedsec{\x7funnumberedsec\x011759,57815
+\def\unnumberedseczzz #1{\x7funnumberedseczzz\x011760,57868
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011761,57919
+{\chapternofonts%\x7fnofonts\x011762,57963
+\edef\temp{\x7ftemp\x011763,57981
+\outer\def\numberedsubsec{\x7fnumberedsubsec\x011770,58131
+\def\numberedsubseczzz #1{\x7fnumberedsubseczzz\x011771,58186
+\gdef\thissection{\x7fthissection\x011772,58235
+{\chapternofonts%\x7fnofonts\x011774,58365
+\edef\temp{\x7ftemp\x011775,58383
+\outer\def\appendixsubsec{\x7fappendixsubsec\x011783,58569
+\outer\def\appendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011783,58569
+\def\appendixsubseczzz #1{\x7fappendixsubseczzz\x011784,58624
+\gdef\thissection{\x7fthissection\x011785,58677
\subsecheading {#1}{\appendixletter}\x7fletter\x011786,58746
-{\chapternofonts%\x7fnofonts%\x011787,58811
+{\chapternofonts%\x7fnofonts\x011787,58811
+\edef\temp{\x7ftemp\x011788,58829
{#1}{\appendixletter}\x7fletter\x011789,58870
\appendixnoderef %\x7fnoderef\x011792,58985
-\outer\def\unnumberedsubsec{\x7f\unnumberedsubsec\x011796,59025
-\def\unnumberedsubseczzz #1{\x7f\unnumberedsubseczzz\x011797,59084
-{\chapternofonts%\x7fnofonts%\x011799,59185
-\outer\def\numberedsubsubsec{\x7f\numberedsubsubsec\x011807,59356
-\def\numberedsubsubseczzz #1{\x7f\numberedsubsubseczzz\x011808,59417
-{\chapternofonts%\x7fnofonts%\x011812,59614
-\outer\def\appendixsubsubsec{\x7f\appendixsubsubsec\x011823,59847
-\def\appendixsubsubseczzz #1{\x7f\appendixsubsubseczzz\x011824,59908
+\outer\def\unnumberedsubsec{\x7funnumberedsubsec\x011796,59025
+\def\unnumberedsubseczzz #1{\x7funnumberedsubseczzz\x011797,59084
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011798,59141
+{\chapternofonts%\x7fnofonts\x011799,59185
+\edef\temp{\x7ftemp\x011800,59203
+\outer\def\numberedsubsubsec{\x7fnumberedsubsubsec\x011807,59356
+\def\numberedsubsubseczzz #1{\x7fnumberedsubsubseczzz\x011808,59417
+\gdef\thissection{\x7fthissection\x011809,59472
+{\chapternofonts%\x7fnofonts\x011812,59614
+\edef\temp{\x7ftemp\x011813,59632
+\outer\def\appendixsubsubsec{\x7fappendixsubsubsec\x011823,59847
+\outer\def\appendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011823,59847
+\def\appendixsubsubseczzz #1{\x7fappendixsubsubseczzz\x011824,59908
+\gdef\thissection{\x7fthissection\x011825,59967
{\appendixletter}\x7fletter\x011827,60047
-{\chapternofonts%\x7fnofonts%\x011828,60113
+{\chapternofonts%\x7fnofonts\x011828,60113
+\edef\temp{\x7ftemp\x011829,60131
{\appendixletter}\x7fletter\x011830,60178
\appendixnoderef %\x7fnoderef\x011834,60312
-\outer\def\unnumberedsubsubsec{\x7f\unnumberedsubsubsec\x011838,60352
-\def\unnumberedsubsubseczzz #1{\x7f\unnumberedsubsubseczzz\x011839,60417
-{\chapternofonts%\x7fnofonts%\x011841,60524
-\def\infotop{\x7f\infotop\x011851,60853
-\def\infounnumbered{\x7f\infounnumbered\x011852,60891
-\def\infounnumberedsec{\x7f\infounnumberedsec\x011853,60936
-\def\infounnumberedsubsec{\x7f\infounnumberedsubsec\x011854,60987
-\def\infounnumberedsubsubsec{\x7f\infounnumberedsubsubsec\x011855,61044
-\def\infoappendix{\x7f\infoappendix\x011857,61108
-\def\infoappendixsec{\x7f\infoappendixsec\x011858,61149
-\def\infoappendixsubsec{\x7f\infoappendixsubsec\x011859,61196
-\def\infoappendixsubsubsec{\x7f\infoappendixsubsubsec\x011860,61249
-\def\infochapter{\x7f\infochapter\x011862,61309
-\def\infosection{\x7f\infosection\x011863,61348
-\def\infosubsection{\x7f\infosubsection\x011864,61387
-\def\infosubsubsection{\x7f\infosubsubsection\x011865,61432
-\global\let\section = \numberedsec\x7f=\x011870,61669
-\global\let\subsection = \numberedsubsec\x7f=\x011871,61704
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011872,61745
-\def\majorheading{\x7f\majorheading\x011886,62252
-\def\majorheadingzzz #1{\x7f\majorheadingzzz\x011887,62297
-\def\chapheading{\x7f\chapheading\x011893,62530
-\def\chapheadingzzz #1{\x7f\chapheadingzzz\x011894,62573
-\def\heading{\x7f\heading\x011899,62768
-\def\subheading{\x7f\subheading\x011901,62805
-\def\subsubheading{\x7f\subsubheading\x011903,62848
-\def\dobreak#1#2{\x7f\dobreak\x011910,63125
-\def\setchapterstyle #1 {\x7f\setchapterstyle\x011912,63203
-\def\chapbreak{\x7f\chapbreak\x011919,63458
-\def\chappager{\x7f\chappager\x011920,63508
-\def\chapoddpage{\x7f\chapoddpage\x011921,63546
-\def\setchapternewpage #1 {\x7f\setchapternewpage\x011923,63625
-\def\CHAPPAGoff{\x7f\CHAPPAGoff\x011925,63682
-\def\CHAPPAGon{\x7f\CHAPPAGon\x011929,63776
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011932,63867
-\def\CHAPPAGodd{\x7f\CHAPPAGodd\x011934,63909
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011937,64005
-\def\CHAPFplain{\x7f\CHAPFplain\x011941,64059
-\def\chfplain #1#2{\x7f\chfplain\x011945,64151
-\def\unnchfplain #1{\x7f\unnchfplain\x011956,64374
-\def\unnchfopen #1{\x7f\unnchfopen\x011964,64603
-\def\chfopen #1#2{\x7f\chfopen\x011970,64811
-\def\CHAPFopen{\x7f\CHAPFopen\x011975,64955
-\def\subsecheadingbreak{\x7f\subsecheadingbreak\x011982,65173
-\def\secheadingbreak{\x7f\secheadingbreak\x011985,65302
-\def\secheading #1#2#3{\x7f\secheading\x011993,65584
-\def\plainsecheading #1{\x7f\plainsecheading\x011994,65640
-\def\secheadingi #1{\x7f\secheadingi\x011995,65683
-\def\subsecheading #1#2#3#4{\x7f\subsecheading\x012006,66051
-\def\subsecheadingi #1{\x7f\subsecheadingi\x012007,66118
-\def\subsubsecfonts{\x7f\subsubsecfonts\x012014,66415
-\def\subsubsecheading #1#2#3#4#5{\x7f\subsubsecheading\x012017,66538
-\def\subsubsecheadingi #1{\x7f\subsubsecheadingi\x012018,66616
-\def\startcontents#1{\x7f\startcontents\x012032,67088
- \unnumbchapmacro{#1}\def\thischapter{\x7f\thischapter\x012040,67361
-\outer\def\contents{\x7f\contents\x012049,67720
-\outer\def\summarycontents{\x7f\summarycontents\x012057,67864
- \def\secentry ##1##2##3##4{\x7f\secentry\x012067,68235
- \def\unnumbsecentry ##1##2{\x7f\unnumbsecentry\x012068,68270
- \def\subsecentry ##1##2##3##4##5{\x7f\subsecentry\x012069,68305
- \def\unnumbsubsecentry ##1##2{\x7f\unnumbsubsecentry\x012070,68346
- \def\subsubsecentry ##1##2##3##4##5##6{\x7f\subsubsecentry\x012071,68384
- \def\unnumbsubsubsecentry ##1##2{\x7f\unnumbsubsubsecentry\x012072,68431
-\def\chapentry#1#2#3{\x7f\chapentry\x012085,68865
-\def\shortchapentry#1#2#3{\x7f\shortchapentry\x012088,68982
+\outer\def\unnumberedsubsubsec{\x7funnumberedsubsubsec\x011838,60352
+\def\unnumberedsubsubseczzz #1{\x7funnumberedsubsubseczzz\x011839,60417
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011840,60480
+{\chapternofonts%\x7fnofonts\x011841,60524
+\edef\temp{\x7ftemp\x011842,60542
+\def\infotop{\x7finfotop\x011851,60853
+\def\infounnumbered{\x7finfounnumbered\x011852,60891
+\def\infounnumberedsec{\x7finfounnumberedsec\x011853,60936
+\def\infounnumberedsubsec{\x7finfounnumberedsubsec\x011854,60987
+\def\infounnumberedsubsubsec{\x7finfounnumberedsubsubsec\x011855,61044
+\def\infoappendix{\x7finfoappendix\x011857,61108
+\def\infoappendix{\parsearg\appendixzzz}\x7fzzz\x011857,61108
+\def\infoappendixsec{\x7finfoappendixsec\x011858,61149
+\def\infoappendixsec{\parsearg\appendixseczzz}\x7fseczzz\x011858,61149
+\def\infoappendixsubsec{\x7finfoappendixsubsec\x011859,61196
+\def\infoappendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011859,61196
+\def\infoappendixsubsubsec{\x7finfoappendixsubsubsec\x011860,61249
+\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011860,61249
+\def\infochapter{\x7finfochapter\x011862,61309
+\def\infochapter{\parsearg\chapterzzz}\x7fzzz\x011862,61309
+\def\infosection{\x7finfosection\x011863,61348
+\def\infosection{\parsearg\sectionzzz}\x7fzzz\x011863,61348
+\def\infosubsection{\x7finfosubsection\x011864,61387
+\def\infosubsection{\parsearg\subsectionzzz}\x7fzzz\x011864,61387
+\def\infosubsubsection{\x7finfosubsubsection\x011865,61432
+\def\infosubsubsection{\parsearg\subsubsectionzzz}\x7fzzz\x011865,61432
+\global\let\section = \numberedsec\x7fsection\x011870,61669
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011871,61704
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011872,61745
+\def\majorheading{\x7fmajorheading\x011886,62252
+\def\majorheadingzzz #1{\x7fmajorheadingzzz\x011887,62297
+\def\chapheading{\x7fchapheading\x011893,62530
+\def\chapheadingzzz #1{\x7fchapheadingzzz\x011894,62573
+\def\heading{\x7fheading\x011899,62768
+\def\subheading{\x7fsubheading\x011901,62805
+\def\subsubheading{\x7fsubsubheading\x011903,62848
+\def\dobreak#1#2{\x7fdobreak\x011910,63125
+\def\setchapterstyle #1 {\x7fsetchapterstyle\x011912,63203
+\def\chapbreak{\x7fchapbreak\x011919,63458
+\def\chappager{\x7fchappager\x011920,63508
+\def\chapoddpage{\x7fchapoddpage\x011921,63546
+\def\setchapternewpage #1 {\x7fsetchapternewpage\x011923,63625
+\def\CHAPPAGoff{\x7fCHAPPAGoff\x011925,63682
+\global\let\pchapsepmacro=\chapbreak\x7fpchapsepmacro\x011926,63699
+\global\let\pagealignmacro=\chappager}\x7fpagealignmacro\x011927,63736
+\def\CHAPPAGon{\x7fCHAPPAGon\x011929,63776
+\global\let\pchapsepmacro=\chappager\x7fpchapsepmacro\x011930,63792
+\global\let\pagealignmacro=\chappager\x7fpagealignmacro\x011931,63829
+\global\def\HEADINGSon{\x7fHEADINGSon\x011932,63867
+\def\CHAPPAGodd{\x7fCHAPPAGodd\x011934,63909
+\global\let\pchapsepmacro=\chapoddpage\x7fpchapsepmacro\x011935,63926
+\global\let\pagealignmacro=\chapoddpage\x7fpagealignmacro\x011936,63965
+\global\def\HEADINGSon{\x7fHEADINGSon\x011937,64005
+\def\CHAPFplain{\x7fCHAPFplain\x011941,64059
+\global\let\chapmacro=\chfplain\x7fchapmacro\x011942,64076
+\global\let\unnumbchapmacro=\unnchfplain}\x7funnumbchapmacro\x011943,64108
+\def\chfplain #1#2{\x7fchfplain\x011945,64151
+\def\unnchfplain #1{\x7funnchfplain\x011956,64374
+\def\unnchfopen #1{\x7funnchfopen\x011964,64603
+\def\chfopen #1#2{\x7fchfopen\x011970,64811
+\def\CHAPFopen{\x7fCHAPFopen\x011975,64955
+\global\let\chapmacro=\chfopen\x7fchapmacro\x011976,64971
+\global\let\unnumbchapmacro=\unnchfopen}\x7funnumbchapmacro\x011977,65002
+\def\subsecheadingbreak{\x7fsubsecheadingbreak\x011982,65173
+\def\secheadingbreak{\x7fsecheadingbreak\x011985,65302
+\let\paragraphindent=\comment\x7fparagraphindent\x011988,65428
+\def\secheading #1#2#3{\x7fsecheading\x011993,65584
+\def\plainsecheading #1{\x7fplainsecheading\x011994,65640
+\def\secheadingi #1{\x7fsecheadingi\x011995,65683
+\def\subsecheading #1#2#3#4{\x7fsubsecheading\x012006,66051
+\def\subsecheadingi #1{\x7fsubsecheadingi\x012007,66118
+\def\subsubsecfonts{\x7fsubsubsecfonts\x012014,66415
+\def\subsubsecheading #1#2#3#4#5{\x7fsubsubsecheading\x012017,66538
+\def\subsubsecheadingi #1{\x7fsubsubsecheadingi\x012018,66616
+\def\startcontents#1{\x7fstartcontents\x012032,67088
+ \unnumbchapmacro{#1}\def\thischapter{\x7fthischapter\x012040,67361
+\outer\def\contents{\x7fcontents\x012049,67720
+\outer\def\summarycontents{\x7fsummarycontents\x012057,67864
+ \let\chapentry = \shortchapentry\x7fchapentry\x012060,67936
+ \let\unnumbchapentry = \shortunnumberedentry\x7funnumbchapentry\x012061,67975
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7frm\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fbf\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fsl\x012064,68098
+ \def\secentry ##1##2##3##4{\x7fsecentry\x012067,68235
+ \def\unnumbsecentry ##1##2{\x7funnumbsecentry\x012068,68270
+ \def\subsecentry ##1##2##3##4##5{\x7fsubsecentry\x012069,68305
+ \def\unnumbsubsecentry ##1##2{\x7funnumbsubsecentry\x012070,68346
+ \def\subsubsecentry ##1##2##3##4##5##6{\x7fsubsubsecentry\x012071,68384
+ \def\unnumbsubsubsecentry ##1##2{\x7funnumbsubsubsecentry\x012072,68431
+\let\shortcontents = \summarycontents\x7fshortcontents\x012077,68530
+\def\chapentry#1#2#3{\x7fchapentry\x012085,68865
+\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}\x7fspace\x012085,68865
+\def\shortchapentry#1#2#3{\x7fshortchapentry\x012088,68982
{#2\labelspace #1}\x7fspace\x012091,69092
-\def\unnumbchapentry#1#2{\x7f\unnumbchapentry\x012094,69146
-\def\shortunnumberedentry#1#2{\x7f\shortunnumberedentry\x012095,69193
-\def\secentry#1#2#3#4{\x7f\secentry\x012102,69357
-\def\unnumbsecentry#1#2{\x7f\unnumbsecentry\x012103,69416
-\def\subsecentry#1#2#3#4#5{\x7f\subsecentry\x012106,69477
-\def\unnumbsubsecentry#1#2{\x7f\unnumbsubsecentry\x012107,69547
-\def\subsubsecentry#1#2#3#4#5#6{\x7f\subsubsecentry\x012110,69621
+\def\unnumbchapentry#1#2{\x7funnumbchapentry\x012094,69146
+\def\shortunnumberedentry#1#2{\x7fshortunnumberedentry\x012095,69193
+\def\secentry#1#2#3#4{\x7fsecentry\x012102,69357
+\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}\x7fspace\x012102,69357
+\def\unnumbsecentry#1#2{\x7funnumbsecentry\x012103,69416
+\def\subsecentry#1#2#3#4#5{\x7fsubsecentry\x012106,69477
+\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}\x7fspace\x012106,69477
+\def\unnumbsubsecentry#1#2{\x7funnumbsubsecentry\x012107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\x7fsubsubsecentry\x012110,69621
\dosubsubsecentry{#2.#3.#4.#5\labelspace#1}\x7fspace\x012111,69655
-\def\unnumbsubsubsecentry#1#2{\x7f\unnumbsubsubsecentry\x012112,69706
-\def\dochapentry#1#2{\x7f\dochapentry\x012123,70080
-\def\dosecentry#1#2{\x7f\dosecentry\x012138,70685
-\def\dosubsecentry#1#2{\x7f\dosubsecentry\x012145,70863
-\def\dosubsubsecentry#1#2{\x7f\dosubsubsecentry\x012152,71048
-\def\labelspace{\x7f\labelspace\x012160,71299
-\def\dopageno#1{\x7f\dopageno\x012162,71334
-\def\doshortpageno#1{\x7f\doshortpageno\x012163,71360
-\def\chapentryfonts{\x7f\chapentryfonts\x012165,71392
-\def\secentryfonts{\x7f\secentryfonts\x012166,71427
-\def\point{\x7f\point\x012192,72386
-\def\result{\x7f\result\x012194,72407
-\def\expansion{\x7f\expansion\x012195,72480
-\def\print{\x7f\print\x012196,72551
-\def\equiv{\x7f\equiv\x012198,72618
-\def\error{\x7f\error\x012218,73391
-\def\tex{\x7f\tex\x012224,73620
-\def\@{\x7f\@\x012242,74003
-\gdef\sepspaces{\def {\ }}}\x7f\\x012265,74735
-\def\aboveenvbreak{\x7f\aboveenvbreak\x012268,74817
-\def\afterenvbreak{\x7f\afterenvbreak\x012272,74983
-\def\ctl{\x7f\ctl\x012286,75494
-\def\ctr{\x7f\ctr\x012287,75566
-\def\cbl{\x7f\cbl\x012288,75605
-\def\cbr{\x7f\cbr\x012289,75645
-\def\carttop{\x7f\carttop\x012290,75684
-\def\cartbot{\x7f\cartbot\x012293,75792
-\long\def\cartouche{\x7f\cartouche\x012299,75932
-\def\Ecartouche{\x7f\Ecartouche\x012326,76720
-\def\lisp{\x7f\lisp\x012338,76855
-\def\Elisp{\x7f\Elisp\x012348,77202
-\def\next##1{\x7f\next\x012360,77528
-\def\Eexample{\x7f\Eexample\x012364,77570
-\def\Esmallexample{\x7f\Esmallexample\x012367,77617
-\def\smalllispx{\x7f\smalllispx\x012373,77795
-\def\Esmalllisp{\x7f\Esmalllisp\x012383,78149
+\def\unnumbsubsubsecentry#1#2{\x7funnumbsubsubsecentry\x012112,69706
+\def\dochapentry#1#2{\x7fdochapentry\x012123,70080
+\def\dosecentry#1#2{\x7fdosecentry\x012138,70685
+\def\dosubsecentry#1#2{\x7fdosubsecentry\x012145,70863
+\def\dosubsubsecentry#1#2{\x7fdosubsubsecentry\x012152,71048
+\def\labelspace{\x7flabelspace\x012160,71299
+\def\dopageno#1{\x7fdopageno\x012162,71334
+\def\doshortpageno#1{\x7fdoshortpageno\x012163,71360
+\def\chapentryfonts{\x7fchapentryfonts\x012165,71392
+\def\secentryfonts{\x7fsecentryfonts\x012166,71427
+\let\subsecentryfonts = \textfonts\x7fsubsecentryfonts\x012167,71458
+\let\subsubsecentryfonts = \textfonts\x7fsubsubsecentryfonts\x012168,71493
+\let\ptexequiv = \equiv\x7fptexequiv\x012180,71896
+\def\point{\x7fpoint\x012192,72386
+\def\result{\x7fresult\x012194,72407
+\def\expansion{\x7fexpansion\x012195,72480
+\def\print{\x7fprint\x012196,72551
+\def\equiv{\x7fequiv\x012198,72618
+\def\error{\x7ferror\x012218,73391
+\def\tex{\x7ftex\x012224,73620
+\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie\x7f~\x012227,73731
+\let\{=\ptexlbrace\x7f{\x012237,73912
+\let\}=\ptexrbrace\x7f}\x012238,73931
+\let\.=\ptexdot\x7f.\x012239,73950
+\let\*=\ptexstar\x7f*\x012240,73966
+\let\dots=\ptexdots\x7fdots\x012241,73983
+\def\@{\x7f@\x012242,74003
+\let\bullet=\ptexbullet\x7fbullet\x012243,74014
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fb\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fc\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fi\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7ft\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fl\x012244,74038
+\let\L=\ptexL\x7fL\x012245,74108
+\let\Etex=\endgroup}\x7fEtex\x012247,74124
+\gdef\lisppar{\x7flisppar\x012259,74517
+\gdef\sepspaces{\x7fsepspaces\x012265,74735
+\def\aboveenvbreak{\x7faboveenvbreak\x012268,74817
+\def\afterenvbreak{\x7fafterenvbreak\x012272,74983
+\let\nonarrowing=\relax\x7fnonarrowing\x012276,75176
+\def\ctl{\x7fctl\x012286,75494
+\def\ctr{\x7fctr\x012287,75566
+\def\cbl{\x7fcbl\x012288,75605
+\def\cbr{\x7fcbr\x012289,75645
+\def\carttop{\x7fcarttop\x012290,75684
+\def\cartbot{\x7fcartbot\x012293,75792
+\long\def\cartouche{\x7fcartouche\x012299,75932
+ \let\nonarrowing=\comment\x7fnonarrowing\x012311,76404
+\def\Ecartouche{\x7fEcartouche\x012326,76720
+\def\lisp{\x7flisp\x012338,76855
+\let\par=\lisppar\x7fpar\x012347,77184
+\def\Elisp{\x7fElisp\x012348,77202
+\let\exdent=\nofillexdent\x7fexdent\x012355,77418
+\let\nonarrowing=\relax\x7fnonarrowing\x012356,77444
+\def\next##1{\x7fnext\x012360,77528
+\let\example=\lisp\x7fexample\x012363,77551
+\def\Eexample{\x7fEexample\x012364,77570
+\let\smallexample=\lisp\x7fsmallexample\x012366,77593
+\def\Esmallexample{\x7fEsmallexample\x012367,77617
+\def\smalllispx{\x7fsmalllispx\x012373,77795
+\let\par=\lisppar\x7fpar\x012382,78131
+\def\Esmalllisp{\x7fEsmalllisp\x012383,78149
+\let\exdent=\nofillexdent\x7fexdent\x012392,78436
+\let\nonarrowing=\relax\x7fnonarrowing\x012393,78462
\obeyspaces \obeylines \ninett \indexfonts \rawbackslash\x7ffonts\x012396,78505
-\def\next##1{\x7f\next\x012397,78562
-\def\display{\x7f\display\x012401,78642
-\def\Edisplay{\x7f\Edisplay\x012410,78961
-\def\next##1{\x7f\next\x012422,79272
-\def\format{\x7f\format\x012426,79375
-\def\Eformat{\x7f\Eformat\x012434,79671
-\def\next##1{\x7f\next\x012437,79760
-\def\flushleft{\x7f\flushleft\x012441,79812
-\def\Eflushleft{\x7f\Eflushleft\x012451,80183
-\def\next##1{\x7f\next\x012454,80276
-\def\flushright{\x7f\flushright\x012456,80298
-\def\Eflushright{\x7f\Eflushright\x012466,80670
-\def\next##1{\x7f\next\x012470,80801
-\def\quotation{\x7f\quotation\x012474,80859
-\def\Equotation{\x7f\Equotation\x012480,81051
-\def\setdeffont #1 {\x7f\setdeffont\x012493,81449
+\def\next##1{\x7fnext\x012397,78562
+\def\display{\x7fdisplay\x012401,78642
+\let\par=\lisppar\x7fpar\x012409,78943
+\def\Edisplay{\x7fEdisplay\x012410,78961
+\let\exdent=\nofillexdent\x7fexdent\x012417,79180
+\let\nonarrowing=\relax\x7fnonarrowing\x012418,79206
+\def\next##1{\x7fnext\x012422,79272
+\def\format{\x7fformat\x012426,79375
+\let\par=\lisppar\x7fpar\x012433,79653
+\def\Eformat{\x7fEformat\x012434,79671
+\def\next##1{\x7fnext\x012437,79760
+\def\flushleft{\x7fflushleft\x012441,79812
+\let\par=\lisppar\x7fpar\x012450,80165
+\def\Eflushleft{\x7fEflushleft\x012451,80183
+\def\next##1{\x7fnext\x012454,80276
+\def\flushright{\x7fflushright\x012456,80298
+\let\par=\lisppar\x7fpar\x012465,80652
+\def\Eflushright{\x7fEflushright\x012466,80670
+\def\next##1{\x7fnext\x012470,80801
+\def\quotation{\x7fquotation\x012474,80859
+\def\Equotation{\x7fEquotation\x012480,81051
+\let\nonarrowing=\relax\x7fnonarrowing\x012487,81301
+\def\setdeffont #1 {\x7fsetdeffont\x012493,81449
+\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
+\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
-\def\activeparens{\x7f\activeparens\x012503,81822
-\def\opnr{\x7f\opnr\x012529,83034
-\def\lbrb{\x7f\lbrb\x012530,83099
-\def\defname #1#2{\x7f\defname\x012536,83300
+\def\activeparens{\x7factiveparens\x012503,81822
+\gdef\functionparens{\x7ffunctionparens\x012507,82016
+\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }\x7f&\x012507,82016
+\gdef\boldbrax{\x7fboldbrax\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f(\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f)\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f[\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f]\x012508,82074
+\gdef\oprm#1 {\x7foprm\x012512,82250
+\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %\x7f(\x012512,82250
+\gdef\opnested{\x7fopnested\x012516,82407
+\gdef\clrm{\x7fclrm\x012518,82466
+\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi\x7f(\x012520,82602
+\gdef\amprm#1 {\x7famprm\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f(\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f)\x012523,82769
+\gdef\normalparens{\x7fnormalparens\x012525,82822
+\gdef\normalparens{\boldbrax\let&=\ampnr}\x7f&\x012525,82822
+\def\opnr{\x7fopnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{\x7fclnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\x7fampnr\x012529,83034
+\def\lbrb{\x7flbrb\x012530,83099
+\def\lbrb{{\bf\char`\[}} \def\rbrb{\x7frbrb\x012530,83099
+\def\defname #1#2{\x7fdefname\x012536,83300
\advance\dimen2 by -\defbodyindent\x7fbodyindent\x012540,83418
\advance\dimen3 by -\defbodyindent\x7fbodyindent\x012542,83472
\setbox0=\hbox{\hskip \deflastargmargin{\x7flastargmargin\x012544,83526
+\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012544,83526
\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations\x7fargsindent\x012546,83668
\parshape 2 0in \dimen0 \defargsindent \dimen1 %\x7fargsindent\x012547,83743
\rlap{\rightline{{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012554,84112
\advance\leftskip by -\defbodyindent\x7fbodyindent\x012557,84246
\exdentamount=\defbodyindent\x7fbodyindent\x012558,84283
-\def\defparsebody #1#2#3{\x7f\defparsebody\x012568,84642
-\def#1{\x7f2572,84826
-\def#2{\x7f2573,84862
+\def\defparsebody #1#2#3{\x7fdefparsebody\x012568,84642
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\exdentamount=\defbodyindent\x7fbodyindent\x012576,85008
-\def\defmethparsebody #1#2#3#4 {\x7f\defmethparsebody\x012581,85112
-\def#1{\x7f2585,85273
-\def#2##1 {\x7f2586,85309
+\def\defmethparsebody #1#2#3#4 {\x7fdefmethparsebody\x012581,85112
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\exdentamount=\defbodyindent\x7fbodyindent\x012589,85466
-\def\defopparsebody #1#2#3#4#5 {\x7f\defopparsebody\x012592,85551
-\def#1{\x7f2596,85712
-\def#2##1 ##2 {\x7f2597,85748
+\def\defopparsebody #1#2#3#4#5 {\x7fdefopparsebody\x012592,85551
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\exdentamount=\defbodyindent\x7fbodyindent\x012601,85922
-\def\defvarparsebody #1#2#3{\x7f\defvarparsebody\x012608,86193
-\def#1{\x7f2612,86380
-\def#2{\x7f2613,86416
+\def\defvarparsebody #1#2#3{\x7fdefvarparsebody\x012608,86193
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\exdentamount=\defbodyindent\x7fbodyindent\x012616,86549
-\def\defvrparsebody #1#2#3#4 {\x7f\defvrparsebody\x012621,86640
-\def#1{\x7f2625,86799
-\def#2##1 {\x7f2626,86835
+\def\defvrparsebody #1#2#3#4 {\x7fdefvrparsebody\x012621,86640
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\exdentamount=\defbodyindent\x7fbodyindent\x012629,86979
-\def\defopvarparsebody #1#2#3#4#5 {\x7f\defopvarparsebody\x012632,87051
-\def#1{\x7f2636,87215
-\def#2##1 ##2 {\x7f2637,87251
+\def\defopvarparsebody #1#2#3#4#5 {\x7fdefopvarparsebody\x012632,87051
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\exdentamount=\defbodyindent\x7fbodyindent\x012641,87412
-\def\defunargs #1{\x7f\defunargs\x012664,88172
-\def\deftypefunargs #1{\x7f\deftypefunargs\x012676,88554
-\def\deffn{\x7f\deffn\x012690,88936
-\def\deffnheader #1#2#3{\x7f\deffnheader\x012692,88993
+\gdef\spacesplit#1#2^^M{\x7fspacesplit\x012652,87775
+\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{\x7fspacesplitfoo\x012653,87852
+\def\defunargs #1{\x7fdefunargs\x012664,88172
+\def\deftypefunargs #1{\x7fdeftypefunargs\x012676,88554
+\def\deffn{\x7fdeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7fmethparsebody\Edeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnx\deffnheader\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnheader\x012690,88936
+\def\deffnheader #1#2#3{\x7fdeffnheader\x012692,88993
\begingroup\defname {\x7fname\x012693,89041
-\def\defun{\x7f\defun\x012699,89186
-\def\defunheader #1#2{\x7f\defunheader\x012701,89239
+\begingroup\defname {#2}{#1}\defunargs{\x7funargs\x012693,89041
+\def\defun{\x7fdefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7fparsebody\Edefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funx\defunheader\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funheader\x012699,89186
+\def\defunheader #1#2{\x7fdefunheader\x012701,89239
\begingroup\defname {\x7fname\x012702,89314
\defunargs {\x7funargs\x012703,89350
-\def\deftypefun{\x7f\deftypefun\x012709,89498
-\def\deftypefunheader #1#2{\x7f\deftypefunheader\x012712,89620
-\def\deftypefunheaderx #1#2 #3\relax{\x7f\deftypefunheaderx\x012714,89729
+\def\deftypefun{\x7fdeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7fparsebody\Edeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunx\deftypefunheader\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunheader\x012709,89498
+\def\deftypefunheader #1#2{\x7fdeftypefunheader\x012712,89620
+\def\deftypefunheader #1#2{\deftypefunheaderx{\x7ftypefunheaderx\x012712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\x7fdeftypefunheaderx\x012714,89729
\begingroup\defname {\x7fname\x012716,89821
\deftypefunargs {\x7ftypefunargs\x012717,89867
-\def\deftypefn{\x7f\deftypefn\x012723,90038
-\def\deftypefnheader #1#2#3{\x7f\deftypefnheader\x012726,90187
-\def\deftypefnheaderx #1#2#3 #4\relax{\x7f\deftypefnheaderx\x012728,90323
+\def\deftypefn{\x7fdeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7fmethparsebody\Edeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnx\deftypefnheader\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnheader\x012723,90038
+\def\deftypefnheader #1#2#3{\x7fdeftypefnheader\x012726,90187
+\def\deftypefnheader #1#2#3{\deftypefnheaderx{\x7ftypefnheaderx\x012726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\x7fdeftypefnheaderx\x012728,90323
\begingroup\defname {\x7fname\x012730,90416
\deftypefunargs {\x7ftypefunargs\x012731,90456
-\def\defmac{\x7f\defmac\x012737,90577
-\def\defmacheader #1#2{\x7f\defmacheader\x012739,90634
+\def\defmac{\x7fdefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fparsebody\Edefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacx\defmacheader\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacheader\x012737,90577
+\def\defmacheader #1#2{\x7fdefmacheader\x012739,90634
\begingroup\defname {\x7fname\x012740,90710
\defunargs {\x7funargs\x012741,90743
-\def\defspec{\x7f\defspec\x012747,90867
-\def\defspecheader #1#2{\x7f\defspecheader\x012749,90928
+\def\defspec{\x7fdefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fparsebody\Edefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecx\defspecheader\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecheader\x012747,90867
+\def\defspecheader #1#2{\x7fdefspecheader\x012749,90928
\begingroup\defname {\x7fname\x012750,91005
\defunargs {\x7funargs\x012751,91045
-\def\deffnx #1 {\x7f\deffnx\x012758,91240
-\def\defunx #1 {\x7f\defunx\x012759,91297
-\def\defmacx #1 {\x7f\defmacx\x012760,91354
-\def\defspecx #1 {\x7f\defspecx\x012761,91413
-\def\deftypefnx #1 {\x7f\deftypefnx\x012762,91474
-\def\deftypeunx #1 {\x7f\deftypeunx\x012763,91539
-\def\defop #1 {\x7f\defop\x012769,91685
-\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\defopx\defopheader\defoptype\x012770,91720
-\def\defopheader #1#2#3{\x7f\defopheader\x012772,91774
+\def\deffnx #1 {\x7fdeffnx\x012758,91240
+\def\defunx #1 {\x7fdefunx\x012759,91297
+\def\defmacx #1 {\x7fdefmacx\x012760,91354
+\def\defspecx #1 {\x7fdefspecx\x012761,91413
+\def\deftypefnx #1 {\x7fdeftypefnx\x012762,91474
+\def\deftypeunx #1 {\x7fdeftypeunx\x012763,91539
+\def\defop #1 {\x7fdefop\x012769,91685
+\def\defop #1 {\def\defoptype{\x7fdefoptype\x012769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopx\defopheader\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopheader\defoptype\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7foptype\x012770,91720
+\def\defopheader #1#2#3{\x7fdefopheader\x012772,91774
\begingroup\defname {\x7fname\x012774,91863
+\begingroup\defname {#2}{\defoptype{\x7foptype\x012774,91863
\defunargs {\x7funargs\x012775,91909
-\def\defmethod{\x7f\defmethod\x012780,91970
-\def\defmethodheader #1#2#3{\x7f\defmethodheader\x012782,92043
+\def\defmethod{\x7fdefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethparsebody\Edefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodx\defmethodheader\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodheader\x012780,91970
+\def\defmethodheader #1#2#3{\x7fdefmethodheader\x012782,92043
\begingroup\defname {\x7fname\x012784,92131
\defunargs {\x7funargs\x012785,92171
-\def\defcv #1 {\x7f\defcv\x012790,92245
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype\x012791,92280
-\def\defcvarheader #1#2#3{\x7f\defcvarheader\x012793,92339
+\def\defcv #1 {\x7fdefcv\x012790,92245
+\def\defcv #1 {\def\defcvtype{\x7fdefcvtype\x012790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvx\defcvarheader\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvarheader\defcvtype\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvtype\x012791,92280
+\def\defcvarheader #1#2#3{\x7fdefcvarheader\x012793,92339
\begingroup\defname {\x7fname\x012795,92425
+\begingroup\defname {#2}{\defcvtype{\x7fcvtype\x012795,92425
\defvarargs {\x7fvarargs\x012796,92471
-\def\defivar{\x7f\defivar\x012801,92544
-\def\defivarheader #1#2#3{\x7f\defivarheader\x012803,92607
+\def\defivar{\x7fdefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fvrparsebody\Edefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarx\defivarheader\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarheader\x012801,92544
+\def\defivarheader #1#2#3{\x7fdefivarheader\x012803,92607
\begingroup\defname {\x7fname\x012805,92693
\defvarargs {\x7fvarargs\x012806,92744
-\def\defopx #1 {\x7f\defopx\x012812,92893
-\def\defmethodx #1 {\x7f\defmethodx\x012813,92950
-\def\defcvx #1 {\x7f\defcvx\x012814,93015
-\def\defivarx #1 {\x7f\defivarx\x012815,93072
-\def\defvarargs #1{\x7f\defvarargs\x012822,93343
-\def\defvr{\x7f\defvr\x012828,93487
-\def\defvrheader #1#2#3{\x7f\defvrheader\x012830,93542
+\def\defopx #1 {\x7fdefopx\x012812,92893
+\def\defmethodx #1 {\x7fdefmethodx\x012813,92950
+\def\defcvx #1 {\x7fdefcvx\x012814,93015
+\def\defivarx #1 {\x7fdefivarx\x012815,93072
+\def\defvarargs #1{\x7fdefvarargs\x012822,93343
+\def\defvr{\x7fdefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrparsebody\Edefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrx\defvrheader\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrheader\x012828,93487
+\def\defvrheader #1#2#3{\x7fdefvrheader\x012830,93542
\begingroup\defname {\x7fname\x012831,93590
-\def\defvar{\x7f\defvar\x012835,93675
-\def\defvarheader #1#2{\x7f\defvarheader\x012837,93735
+\begingroup\defname {#2}{#1}\defvarargs{\x7fvarargs\x012831,93590
+\def\defvar{\x7fdefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarparsebody\Edefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarx\defvarheader\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarheader\x012835,93675
+\def\defvarheader #1#2{\x7fdefvarheader\x012837,93735
\begingroup\defname {\x7fname\x012838,93806
\defvarargs {\x7fvarargs\x012839,93842
-\def\defopt{\x7f\defopt\x012844,93908
-\def\defoptheader #1#2{\x7f\defoptheader\x012846,93968
+\def\defopt{\x7fdefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7fvarparsebody\Edefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptx\defoptheader\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptheader\x012844,93908
+\def\defoptheader #1#2{\x7fdefoptheader\x012846,93968
\begingroup\defname {\x7fname\x012847,94039
\defvarargs {\x7fvarargs\x012848,94078
-\def\deftypevar{\x7f\deftypevar\x012853,94135
-\def\deftypevarheader #1#2{\x7f\deftypevarheader\x012856,94251
+\def\deftypevar{\x7fdeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7fvarparsebody\Edeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarx\deftypevarheader\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarheader\x012853,94135
+\def\deftypevarheader #1#2{\x7fdeftypevarheader\x012856,94251
\begingroup\defname {\x7fname\x012858,94334
-\def\deftypevr{\x7f\deftypevr\x012865,94508
-\def\deftypevrheader #1#2#3{\x7f\deftypevrheader\x012867,94579
+\def\deftypevr{\x7fdeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7fvrparsebody\Edeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrx\deftypevrheader\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrheader\x012865,94508
+\def\deftypevrheader #1#2#3{\x7fdeftypevrheader\x012867,94579
\begingroup\defname {\x7fname\x012868,94631
-\def\defvrx #1 {\x7f\defvrx\x012876,94868
-\def\defvarx #1 {\x7f\defvarx\x012877,94925
-\def\defoptx #1 {\x7f\defoptx\x012878,94984
-\def\deftypevarx #1 {\x7f\deftypevarx\x012879,95043
-\def\deftypevrx #1 {\x7f\deftypevrx\x012880,95110
-\def\deftpargs #1{\x7f\deftpargs\x012885,95259
-\def\deftp{\x7f\deftp\x012889,95339
-\def\deftpheader #1#2#3{\x7f\deftpheader\x012891,95394
+\def\defvrx #1 {\x7fdefvrx\x012876,94868
+\def\defvarx #1 {\x7fdefvarx\x012877,94925
+\def\defoptx #1 {\x7fdefoptx\x012878,94984
+\def\deftypevarx #1 {\x7fdeftypevarx\x012879,95043
+\def\deftypevrx #1 {\x7fdeftypevrx\x012880,95110
+\def\deftpargs #1{\x7fdeftpargs\x012885,95259
+\def\deftpargs #1{\bf \defvarargs{\x7fvarargs\x012885,95259
+\def\deftp{\x7fdeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7fvrparsebody\Edeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpx\deftpheader\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpheader\x012889,95339
+\def\deftpheader #1#2#3{\x7fdeftpheader\x012891,95394
\begingroup\defname {\x7fname\x012892,95442
-\def\deftpx #1 {\x7f\deftpx\x012897,95601
-\def\setref#1{\x7f\setref\x012908,95922
-\def\unnumbsetref#1{\x7f\unnumbsetref\x012913,96036
-\def\appendixsetref#1{\x7f\appendixsetref\x012918,96143
-\def\pxref#1{\x7f\pxref\x012929,96554
-\def\xref#1{\x7f\xref\x012930,96590
-\def\ref#1{\x7f\ref\x012931,96625
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7f\xrefX[\x012932,96655
-\def\printedmanual{\x7f\printedmanual\x012933,96698
-\def\printednodename{\x7f\printednodename\x012934,96736
-\def\printednodename{\x7f\printednodename\x012939,96861
-section ``\printednodename'' in \cite{\printedmanual}\x7f\printedmanual\x012954,97493
+\begingroup\defname {#2}{#1}\deftpargs{\x7ftpargs\x012892,95442
+\def\deftpx #1 {\x7fdeftpx\x012897,95601
+\def\setref#1{\x7fsetref\x012908,95922
+\def\unnumbsetref#1{\x7funnumbsetref\x012913,96036
+\def\appendixsetref#1{\x7fappendixsetref\x012918,96143
+\def\pxref#1{\x7fpxref\x012929,96554
+\def\xref#1{\x7fxref\x012930,96590
+\def\ref#1{\x7fref\x012931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7fxrefX\x012932,96655
+\def\printedmanual{\x7fprintedmanual\x012933,96698
+\def\printednodename{\x7fprintednodename\x012934,96736
+\def\printednodename{\x7fprintednodename\x012939,96861
+section ``\printednodename'' in \cite{\printedmanual}\x7fprintedmanual\x012954,97493
\refx{\x7fx\x012957,97571
-\def\dosetq #1#2{\x7f\dosetq\x012965,97791
-\def\internalsetq #1#2{\x7f\internalsetq\x012973,98049
-\def\Ypagenumber{\x7f\Ypagenumber\x012977,98150
-\def\Ytitle{\x7f\Ytitle\x012979,98176
-\def\Ynothing{\x7f\Ynothing\x012981,98203
-\def\Ysectionnumberandtype{\x7f\Ysectionnumberandtype\x012983,98220
-\def\Yappendixletterandtype{\x7f\Yappendixletterandtype\x012992,98536
+\refx{#1-snt}{} [\printednodename], page\tie\refx{\x7fx\x012957,97571
+\def\dosetq #1#2{\x7fdosetq\x012965,97791
+\def\dosetq #1#2{{\let\folio=0 \turnoffactive%\x7ffolio\x012965,97791
+\edef\next{\x7fnext\x012966,97838
+\def\internalsetq #1#2{\x7finternalsetq\x012973,98049
+\def\Ypagenumber{\x7fYpagenumber\x012977,98150
+\def\Ytitle{\x7fYtitle\x012979,98176
+\def\Ynothing{\x7fYnothing\x012981,98203
+\def\Ysectionnumberandtype{\x7fYsectionnumberandtype\x012983,98220
+\def\Yappendixletterandtype{\x7fYappendixletterandtype\x012992,98536
\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{\x7fno\x012993,98566
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\secno\x012994,98621
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\secno.\the\subsecno\x012996,98725
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\secno.\the\subsecno.\the\subsubsecno\x012998,98796
- \def\linenumber{\x7f\linenumber\x013009,99135
-\def\refx#1#2{\x7f\refx\x013015,99319
-\def\xrdef #1#2{\x7f\xrdef\x013037,99945
-\def\readauxfile{\x7f\readauxfile\x013040,100030
-\def\supereject{\x7f\supereject\x013110,101811
-\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\textindent\x013131,102496
-\def\openindices{\x7f\openindices\x013139,102682
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\x012994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\x012996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\x012998,98796
+\gdef\xreftie{\x7fxreftie\x013001,98891
+ \let\linenumber = \empty % Non-3.0.\x7flinenumber\x013007,99091
+ \def\linenumber{\x7flinenumber\x013009,99135
+\def\refx#1#2{\x7frefx\x013015,99319
+\def\xrdef #1#2{\x7fxrdef\x013037,99945
+{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {\x7fcsname\x013038,99962
+\def\readauxfile{\x7freadauxfile\x013040,100030
+\def\supereject{\x7fsupereject\x013110,101811
+\let\footnotestyle=\comment\x7ffootnotestyle\x013113,101918
+\let\ptexfootnote=\footnote\x7fptexfootnote\x013115,101947
+\long\gdef\footnote #1{\x7ffootnote\x013118,101993
+\edef\thisfootno{\x7fthisfootno\x013120,102060
+\let\@sf\empty\x7f@sf\x013121,102100
+\ifhmode\edef\@sf{\x7f@sf\x013122,102115
+\long\gdef\footnotezzz #1{\x7ffootnotezzz\x013126,102228
+\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\x013131,102496
+\def\openindices{\x7fopenindices\x013139,102682
+\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\parindent = \defaultparindent\x7faultparindent\x013152,102959
-\def\smallbook{\x7f\smallbook\x013175,103683
-\global\def\Esmallexample{\x7f\Esmallexample\x013192,104110
-\def\afourpaper{\x7f\afourpaper\x013196,104201
-\def\finalout{\x7f\finalout\x013224,105009
-\def\normaldoublequote{\x7f\normaldoublequote\x013235,105270
-\def\normaltilde{\x7f\normaltilde\x013236,105296
-\def\normalcaret{\x7f\normalcaret\x013237,105316
-\def\normalunderscore{\x7f\normalunderscore\x013238,105336
-\def\normalverticalbar{\x7f\normalverticalbar\x013239,105361
-\def\normalless{\x7f\normalless\x013240,105387
-\def\normalgreater{\x7f\normalgreater\x013241,105406
-\def\normalplus{\x7f\normalplus\x013242,105428
-\def\ifusingtt#1#2{\x7f\ifusingtt\x013253,105920
-\def\activedoublequote{\x7f\activedoublequote\x013261,106248
+\def\smallbook{\x7fsmallbook\x013175,103683
+\global\let\smalllisp=\smalllispx\x7fsmalllisp\x013190,104039
+\global\let\smallexample=\smalllispx\x7fsmallexample\x013191,104073
+\global\def\Esmallexample{\x7fEsmallexample\x013192,104110
+\def\afourpaper{\x7fafourpaper\x013196,104201
+\def\finalout{\x7ffinalout\x013224,105009
+\def\normaldoublequote{\x7fnormaldoublequote\x013235,105270
+\def\normaltilde{\x7fnormaltilde\x013236,105296
+\def\normalcaret{\x7fnormalcaret\x013237,105316
+\def\normalunderscore{\x7fnormalunderscore\x013238,105336
+\def\normalverticalbar{\x7fnormalverticalbar\x013239,105361
+\def\normalless{\x7fnormalless\x013240,105387
+\def\normalgreater{\x7fnormalgreater\x013241,105406
+\def\normalplus{\x7fnormalplus\x013242,105428
+\def\ifusingtt#1#2{\x7fifusingtt\x013253,105920
+\def\activedoublequote{\x7factivedoublequote\x013261,106248
+\let"=\activedoublequote\x7f"\x013262,106289
\def~{\x7f~\x013264,106334
\def^{\x7f^\x013267,106395
\def_{\x7f_\x013270,106434
-\def\_{\x7f\_\x013272,106508
-\def\lvvmode{\x7f\lvvmode\x013279,106845
+\def\_{\x7f_\x013272,106508
+\def\lvvmode{\x7flvvmode\x013279,106845
\def|{\x7f|\x013282,106895
\def<{\x7f<\x013285,106958
\def>{\x7f>\x013288,107015
\def+{\x7f+\x013290,107053
-\def\turnoffactive{\x7f\turnoffactive\x013296,107214
+\def\turnoffactive{\x7fturnoffactive\x013296,107214
+\def\turnoffactive{\let"=\normaldoublequote\x7f"\x013296,107214
+\let~=\normaltilde\x7f~\x013297,107258
+\let^=\normalcaret\x7f^\x013298,107277
+\let_=\normalunderscore\x7f_\x013299,107296
+\let|=\normalverticalbar\x7f|\x013300,107320
+\let<=\normalless\x7f<\x013301,107345
+\let>=\normalgreater\x7f>\x013302,107363
+\let+=\normalplus}\x7f+\x013303,107384
\global\def={\x7f=\x013307,107500
-\def\normalbackslash{\x7f\normalbackslash\x013321,107882
+\def\normalbackslash{\x7fnormalbackslash\x013321,107882
\f
merc-src/accumulator.m,3228
:- interface\x7f146,5371
diff --git a/test/manual/etags/ETAGS.good_4 b/test/manual/etags/ETAGS.good_4
index dc65a09fdc2..afde92702bb 100644
--- a/test/manual/etags/ETAGS.good_4
+++ b/test/manual/etags/ETAGS.good_4
@@ -3310,8 +3310,8 @@ scm-src/test.scm,260
(define (((((curry-test \x7f14,205
(define-syntax test-begin\x7f17,265
\f
-tex-src/testenv.tex,52
-\newcommand{\nm}\x7f\nm\x014,77
+tex-src/testenv.tex,51
+\newcommand{\nm}\x7fnm\x014,77
\section{blah}\x7fblah\x018,139
\f
tex-src/gzip.texi,303
@@ -3326,722 +3326,1142 @@ tex-src/gzip.texi,303
@node Problems,\x7f460,16769
@node Concept Index,\x7fConcept Index\x01473,17289
\f
-tex-src/texinfo.tex,30627
-\def\texinfoversion{\x7f\texinfoversion\x0126,1035
-\def\tie{\x7f\tie\x0149,1526
-\def\gloggingall{\x7f\gloggingall\x0172,2276
-\def\loggingall{\x7f\loggingall\x0173,2345
-\def\onepageout#1{\x7f\onepageout\x0199,3282
-\def\croppageout#1{\x7f\croppageout\x01115,4032
-\def\cropmarks{\x7f\cropmarks\x01142,5092
-\def\pagebody#1{\x7f\pagebody\x01144,5139
-\def\ewtop{\x7f\ewtop\x01157,5594
-\def\nstop{\x7f\nstop\x01158,5658
-\def\ewbot{\x7f\ewbot\x01160,5741
-\def\nsbot{\x7f\nsbot\x01161,5805
-\def\parsearg #1{\x7f\parsearg\x01170,6104
-\def\parseargx{\x7f\parseargx\x01172,6182
-\def\parseargline{\x7f\parseargline\x01182,6422
-\def\flushcr{\x7f\flushcr\x01186,6543
-\newif\ifENV \ENVfalse \def\inENV{\x7f\inENV\x01190,6742
-\def\ENVcheck{\x7f\ENVcheck\x01191,6806
-\outer\def\begin{\x7f\begin\x01198,7053
-\def\beginxxx #1{\x7f\beginxxx\x01200,7091
-\def\end{\x7f\end\x01208,7346
-\def\endxxx #1{\x7f\endxxx\x01210,7374
-\def\errorE#1{\x7f\errorE\x01216,7563
-\def\singlespace{\x7f\singlespace\x01222,7757
-\def\@{\x7f\@\x01232,7980
-\def\`{\x7f\`\x01236,8080
-\def\'{\x7f\'\x01237,8092
-\def\mylbrace {\x7f\mylbrace\x01241,8140
-\def\myrbrace {\x7f\myrbrace\x01242,8173
-\def\:{\x7f\:\x01247,8287
-\def\*{\x7f\*\x01250,8341
-\def\.{\x7f\.\x01253,8417
-\def\w#1{\x7f\w\x01258,8648
-\def\group{\x7f\group\x01268,9131
- \def\Egroup{\x7f\Egroup\x01273,9295
-\def\need{\x7f\need\x01289,9737
-\def\needx#1{\x7f\needx\x01300,10014
-\def\dots{\x7f\dots\x01339,11400
-\def\page{\x7f\page\x01343,11464
-\def\exdent{\x7f\exdent\x01353,11791
-\def\exdentyyy #1{\x7f\exdentyyy\x01354,11824
-\def\nofillexdent{\x7f\nofillexdent\x01357,11968
-\def\nofillexdentyyy #1{\x7f\nofillexdentyyy\x01358,12013
-\def\include{\x7f\include\x01365,12197
-\def\includezzz #1{\x7f\includezzz\x01366,12232
-\def\thisfile{\x7f\thisfile\x01369,12283
-\def\center{\x7f\center\x01373,12346
-\def\centerzzz #1{\x7f\centerzzz\x01374,12379
-\def\sp{\x7f\sp\x01380,12521
-\def\spxxx #1{\x7f\spxxx\x01381,12546
-\def\comment{\x7f\comment\x01387,12720
-\def\commentxxx #1{\x7f\commentxxx\x01390,12817
-\def\ignoresections{\x7f\ignoresections\x01396,12986
-\let\chapter=\relax\x7f=\relax\x01397,13008
-\let\section=\relax\x7f=\relax\x01406,13253
-\let\subsection=\relax\x7f=\relax\x01409,13314
-\let\subsubsection=\relax\x7f=\relax\x01410,13337
-\let\appendix=\relax\x7f=\relax\x01411,13363
-\let\appendixsec=\relax\x7fsec=\relax\x01412,13384
-\let\appendixsection=\relax\x7fsection=\relax\x01413,13408
-\let\appendixsubsec=\relax\x7fsubsec=\relax\x01414,13436
-\let\appendixsubsection=\relax\x7fsubsection=\relax\x01415,13463
-\let\appendixsubsubsec=\relax\x7fsubsubsec=\relax\x01416,13494
-\let\appendixsubsubsection=\relax\x7fsubsubsection=\relax\x01417,13524
-\def\ignore{\x7f\ignore\x01423,13626
-\long\def\ignorexxx #1\end ignore{\x7f\ignorexxx\x01427,13766
-\def\direntry{\x7f\direntry\x01429,13825
-\long\def\direntryxxx #1\end direntry{\x7f\direntryxxx\x01430,13864
-\def\ifset{\x7f\ifset\x01434,13974
-\def\ifsetxxx #1{\x7f\ifsetxxx\x01436,14032
-\def\Eifset{\x7f\Eifset\x01440,14159
-\def\ifsetfail{\x7f\ifsetfail\x01441,14173
-\long\def\ifsetfailxxx #1\end ifset{\x7f\ifsetfailxxx\x01442,14229
-\def\ifclear{\x7f\ifclear\x01444,14290
-\def\ifclearxxx #1{\x7f\ifclearxxx\x01446,14352
-\def\Eifclear{\x7f\Eifclear\x01450,14483
-\def\ifclearfail{\x7f\ifclearfail\x01451,14499
-\long\def\ifclearfailxxx #1\end ifclear{\x7f\ifclearfailxxx\x01452,14559
-\def\set{\x7f\set\x01456,14710
-\def\setxxx #1{\x7f\setxxx\x01457,14737
-\def\clear{\x7f\clear\x01460,14799
-\def\clearxxx #1{\x7f\clearxxx\x01461,14830
-\def\iftex{\x7f\iftex\x01466,14947
-\def\Eiftex{\x7f\Eiftex\x01467,14960
-\def\ifinfo{\x7f\ifinfo\x01468,14974
-\long\def\ifinfoxxx #1\end ifinfo{\x7f\ifinfoxxx\x01469,15024
-\long\def\menu #1\end menu{\x7f\menu\x01471,15083
-\def\asis#1{\x7f\asis\x01472,15112
-\def\math#1{\x7f\math\x01485,15655
-\def\node{\x7f\node\x01487,15699
-\def\nodezzz#1{\x7f\nodezzz\x01488,15737
-\def\nodexxx[#1,#2]{\x7f\nodexxx[\x01489,15768
-\def\donoderef{\x7f\donoderef\x01492,15830
-\def\unnumbnoderef{\x7f\unnumbnoderef\x01496,15951
-\def\appendixnoderef{\x7f\appendixnoderef\x01500,16082
+tex-src/texinfo.tex,55236
+\def\texinfoversion{\x7ftexinfoversion\x0126,1035
+\let\ptexlbrace=\{\x7fptexlbrace\x0135,1308
+\let\ptexrbrace=\}\x7fptexrbrace\x0136,1327
+\let\ptexdots=\dots\x7fptexdots\x0137,1346
+\let\ptexdot=\.\x7fptexdot\x0138,1366
+\let\ptexstar=\*\x7fptexstar\x0139,1382
+\let\ptexend=\end\x7fptexend\x0140,1399
+\let\ptexbullet=\bullet\x7fptexbullet\x0141,1417
+\let\ptexb=\b\x7fptexb\x0142,1441
+\let\ptexc=\c\x7fptexc\x0143,1455
+\let\ptexi=\i\x7fptexi\x0144,1469
+\let\ptext=\t\x7fptext\x0145,1483
+\let\ptexl=\l\x7fptexl\x0146,1497
+\let\ptexL=\L\x7fptexL\x0147,1511
+\def\tie{\x7ftie\x0149,1526
+\def\gloggingall{\x7fgloggingall\x0172,2276
+\def\loggingall{\x7floggingall\x0173,2345
+\def\onepageout#1{\x7fonepageout\x0199,3282
+\shipout\vbox{{\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01103,3489
+{\let\hsize=\pagewidth \makefootline}\x7fhsize\x01104,3556
+\def\croppageout#1{\x7fcroppageout\x01115,4032
+ {\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01126,4511
+ {\let\hsize=\pagewidth \makefootline}\x7fhsize\x01128,4569
+\def\cropmarks{\x7fcropmarks\x01142,5092
+\def\cropmarks{\let\onepageout=\croppageout }\x7fonepageout\x01142,5092
+\def\pagebody#1{\x7fpagebody\x01144,5139
+\gdef\pagecontents#1{\x7fpagecontents\x01146,5220
+\def\ewtop{\x7fewtop\x01157,5594
+\def\nstop{\x7fnstop\x01158,5658
+\def\ewbot{\x7fewbot\x01160,5741
+\def\nsbot{\x7fnsbot\x01161,5805
+\def\parsearg #1{\x7fparsearg\x01170,6104
+\def\parsearg #1{\let\next=#1\begingroup\obeylines\futurelet\temp\parseargx}\x7fnext\x01170,6104
+\def\parseargx{\x7fparseargx\x01172,6182
+\gdef\parseargdiscardspace {\x7fparseargdiscardspace\x01178,6321
+\gdef\obeyedspace{\x7fobeyedspace\x01180,6399
+\def\parseargline{\x7fparseargline\x01182,6422
+\gdef\parsearglinex #1^^M{\x7fparsearglinex\x01184,6493
+\def\flushcr{\x7fflushcr\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{\x7fnext\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}\x7fnext\x01186,6543
+\newif\ifENV \ENVfalse \def\inENV{\x7finENV\x01190,6742
+\def\ENVcheck{\x7fENVcheck\x01191,6806
+\outer\def\begin{\x7fbegin\x01198,7053
+\def\beginxxx #1{\x7fbeginxxx\x01200,7091
+\def\end{\x7fend\x01208,7346
+\def\endxxx #1{\x7fendxxx\x01210,7374
+\def\errorE#1{\x7ferrorE\x01216,7563
+\def\singlespace{\x7fsinglespace\x01222,7757
+\def\@{\x7f@\x01232,7980
+\def\`{\x7f`\x01236,8080
+\def\'{\x7f'\x01237,8092
+\def\mylbrace {\x7fmylbrace\x01241,8140
+\def\myrbrace {\x7fmyrbrace\x01242,8173
+\let\{=\mylbrace\x7f{\x01243,8206
+\let\}=\myrbrace\x7f}\x01244,8223
+\def\:{\x7f:\x01247,8287
+\def\*{\x7f*\x01250,8341
+\def\.{\x7f.\x01253,8417
+\def\w#1{\x7fw\x01258,8648
+\def\group{\x7fgroup\x01268,9131
+ \def\Egroup{\x7fEgroup\x01273,9295
+\def\need{\x7fneed\x01289,9737
+\def\needx#1{\x7fneedx\x01300,10014
+\let\br = \par\x7fbr\x01335,11355
+\def\dots{\x7fdots\x01339,11400
+\def\page{\x7fpage\x01343,11464
+\def\exdent{\x7fexdent\x01353,11791
+\def\exdentyyy #1{\x7fexdentyyy\x01354,11824
+\def\nofillexdent{\x7fnofillexdent\x01357,11968
+\def\nofillexdentyyy #1{\x7fnofillexdentyyy\x01358,12013
+\def\include{\x7finclude\x01365,12197
+\def\includezzz #1{\x7fincludezzz\x01366,12232
+\def\includezzz #1{{\def\thisfile{\x7fthisfile\x01366,12232
+\def\thisfile{\x7fthisfile\x01369,12283
+\def\center{\x7fcenter\x01373,12346
+\def\centerzzz #1{\x7fcenterzzz\x01374,12379
+\def\sp{\x7fsp\x01380,12521
+\def\spxxx #1{\x7fspxxx\x01381,12546
+\def\comment{\x7fcomment\x01387,12720
+\def\commentxxx #1{\x7fcommentxxx\x01390,12817
+\let\c=\comment\x7fc\x01392,12883
+\def\ignoresections{\x7fignoresections\x01396,12986
+\let\chapter=\relax\x7fchapter\x01397,13008
+\let\unnumbered=\relax\x7funnumbered\x01398,13028
+\let\top=\relax\x7ftop\x01399,13051
+\let\unnumberedsec=\relax\x7funnumberedsec\x01400,13067
+\let\unnumberedsection=\relax\x7funnumberedsection\x01401,13093
+\let\unnumberedsubsec=\relax\x7funnumberedsubsec\x01402,13123
+\let\unnumberedsubsection=\relax\x7funnumberedsubsection\x01403,13152
+\let\unnumberedsubsubsec=\relax\x7funnumberedsubsubsec\x01404,13185
+\let\unnumberedsubsubsection=\relax\x7funnumberedsubsubsection\x01405,13217
+\let\section=\relax\x7fsection\x01406,13253
+\let\subsec=\relax\x7fsubsec\x01407,13273
+\let\subsubsec=\relax\x7fsubsubsec\x01408,13292
+\let\subsection=\relax\x7fsubsection\x01409,13314
+\let\subsubsection=\relax\x7fsubsubsection\x01410,13337
+\let\appendix=\relax\x7fappendix\x01411,13363
+\let\appendixsec=\relax\x7fappendixsec\x01412,13384
+\let\appendixsection=\relax\x7fappendixsection\x01413,13408
+\let\appendixsubsec=\relax\x7fappendixsubsec\x01414,13436
+\let\appendixsubsection=\relax\x7fappendixsubsection\x01415,13463
+\let\appendixsubsubsec=\relax\x7fappendixsubsubsec\x01416,13494
+\let\appendixsubsubsection=\relax\x7fappendixsubsubsection\x01417,13524
+\let\contents=\relax\x7fcontents\x01418,13558
+\let\smallbook=\relax\x7fsmallbook\x01419,13579
+\let\titlepage=\relax\x7ftitlepage\x01420,13601
+\def\ignore{\x7fignore\x01423,13626
+\long\def\ignorexxx #1\end ignore{\x7fignorexxx\x01427,13766
+\def\direntry{\x7fdirentry\x01429,13825
+\long\def\direntryxxx #1\end direntry{\x7fdirentryxxx\x01430,13864
+\def\ifset{\x7fifset\x01434,13974
+\def\ifsetxxx #1{\x7fifsetxxx\x01436,14032
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\ifsetfail\x7ftemp\x01437,14059
+\else \let\temp=\relax \fi\x7ftemp\x01438,14125
+\def\Eifset{\x7fEifset\x01440,14159
+\def\ifsetfail{\x7fifsetfail\x01441,14173
+\long\def\ifsetfailxxx #1\end ifset{\x7fifsetfailxxx\x01442,14229
+\def\ifclear{\x7fifclear\x01444,14290
+\def\ifclearxxx #1{\x7fifclearxxx\x01446,14352
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\relax\x7ftemp\x01447,14381
+\else \let\temp=\ifclearfail \fi\x7ftemp\x01448,14443
+\def\Eifclear{\x7fEifclear\x01450,14483
+\def\ifclearfail{\x7fifclearfail\x01451,14499
+\long\def\ifclearfailxxx #1\end ifclear{\x7fifclearfailxxx\x01452,14559
+\def\set{\x7fset\x01456,14710
+\def\setxxx #1{\x7fsetxxx\x01457,14737
+\expandafter\let\csname IF#1\endcsname=\set}\x7fcsname\x01458,14753
+\def\clear{\x7fclear\x01460,14799
+\def\clearxxx #1{\x7fclearxxx\x01461,14830
+\expandafter\let\csname IF#1\endcsname=\relax}\x7fcsname\x01462,14848
+\def\iftex{\x7fiftex\x01466,14947
+\def\Eiftex{\x7fEiftex\x01467,14960
+\def\ifinfo{\x7fifinfo\x01468,14974
+\long\def\ifinfoxxx #1\end ifinfo{\x7fifinfoxxx\x01469,15024
+\long\def\menu #1\end menu{\x7fmenu\x01471,15083
+\def\asis#1{\x7fasis\x01472,15112
+\let\implicitmath = $\x7fimplicitmath\x01484,15633
+\def\math#1{\x7fmath\x01485,15655
+\def\node{\x7fnode\x01487,15699
+\def\nodezzz#1{\x7fnodezzz\x01488,15737
+\def\nodexxx[#1,#2]{\x7fnodexxx\x01489,15768
+\def\nodexxx[#1,#2]{\gdef\lastnode{\x7flastnode\x01489,15768
+\let\lastnode=\relax\x7flastnode\x01490,15808
+\def\donoderef{\x7fdonoderef\x01492,15830
+\let\lastnode=\relax}\x7flastnode\x01494,15928
+\def\unnumbnoderef{\x7funnumbnoderef\x01496,15951
+\let\lastnode=\relax}\x7flastnode\x01498,16059
+\def\appendixnoderef{\x7fappendixnoderef\x01500,16082
\expandafter\expandafter\expandafter\appendixsetref{\x7fsetref\x01501,16128
-\let\refill=\relax\x7fill=\relax\x01504,16217
-\def\setfilename{\x7f\setfilename\x01509,16431
-\outer\def\bye{\x7f\bye\x01518,16677
-\def\inforef #1{\x7f\inforef\x01520,16733
-\def\inforefzzz #1,#2,#3,#4**{\x7f\inforefzzz\x01521,16771
-\def\losespace #1{\x7f\losespace\x01523,16868
-\def\sf{\x7f\sf\x01532,17072
-\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf=cmbx10\x01558,17867
-\font\deftt=cmtt10 scaled \magstep1\x7ftt=cmtt10\x01559,17913
-\def\df{\x7f\df\x01560,17949
-\def\resetmathfonts{\x7f\resetmathfonts\x01635,20543
-\def\textfonts{\x7f\textfonts\x01648,21132
-\def\chapfonts{\x7f\chapfonts\x01653,21347
-\def\secfonts{\x7f\secfonts\x01658,21563
-\def\subsecfonts{\x7f\subsecfonts\x01663,21768
-\def\indexfonts{\x7f\indexfonts\x01668,21985
-\def\smartitalicx{\x7f\smartitalicx\x01691,22717
-\def\smartitalic#1{\x7f\smartitalic\x01692,22793
-\let\cite=\smartitalic\x7f=\smartitalic\x01698,22938
-\def\b#1{\x7f\b\x01700,22962
-\def\t#1{\x7f\t\x01703,22997
-\def\samp #1{\x7f\samp\x01706,23149
-\def\key #1{\x7f\key\x01707,23182
-\def\ctrl #1{\x7f\ctrl\x01708,23243
-\def\tclose#1{\x7f\tclose\x01716,23445
-\def\ {\x7f\\x01720,23611
-\def\xkey{\x7f\xkey\x01728,23880
-\def\kbdfoo#1#2#3\par{\x7f\kbdfoo\x01729,23896
-\def\dmn#1{\x7f\dmn\x01738,24197
-\def\kbd#1{\x7f\kbd\x01740,24224
-\def\l#1{\x7f\l\x01742,24281
-\def\r#1{\x7f\r\x01744,24310
-\def\sc#1{\x7f\sc\x01746,24378
-\def\ii#1{\x7f\ii\x01747,24421
-\def\titlefont#1{\x7f\titlefont\x01755,24654
-\def\titlepage{\x7f\titlepage\x01761,24757
- \def\subtitlefont{\x7f\subtitlefont\x01766,24984
- \def\authorfont{\x7f\authorfont\x01768,25068
- \def\title{\x7f\title\x01774,25278
- \def\titlezzz##1{\x7f\titlezzz\x01775,25313
- \def\subtitle{\x7f\subtitle\x01783,25628
- \def\subtitlezzz##1{\x7f\subtitlezzz\x01784,25669
- \def\author{\x7f\author\x01787,25787
- \def\authorzzz##1{\x7f\authorzzz\x01788,25824
- \def\page{\x7f\page\x01794,26115
-\def\Etitlepage{\x7f\Etitlepage\x01804,26284
-\def\finishtitlepage{\x7f\finishtitlepage\x01817,26672
-\def\evenheading{\x7f\evenheading\x01846,27680
-\def\oddheading{\x7f\oddheading\x01847,27723
-\def\everyheading{\x7f\everyheading\x01848,27764
-\def\evenfooting{\x7f\evenfooting\x01850,27810
-\def\oddfooting{\x7f\oddfooting\x01851,27853
-\def\everyfooting{\x7f\everyfooting\x01852,27894
-\def\headings #1 {\x7f\headings\x01893,29586
-\def\HEADINGSoff{\x7f\HEADINGSoff\x01895,29635
-\def\HEADINGSdouble{\x7f\HEADINGSdouble\x01904,30062
-\def\HEADINGSsingle{\x7f\HEADINGSsingle\x01914,30382
-\def\HEADINGSon{\x7f\HEADINGSon\x01922,30603
-\def\HEADINGSafter{\x7f\HEADINGSafter\x01924,30637
-\def\HEADINGSdoublex{\x7f\HEADINGSdoublex\x01926,30732
-\def\HEADINGSsingleafter{\x7f\HEADINGSsingleafter\x01933,30920
-\def\HEADINGSsinglex{\x7f\HEADINGSsinglex\x01934,30981
-\def\today{\x7f\today\x01943,31256
-\def\thistitle{\x7f\thistitle\x01958,31801
-\def\settitle{\x7f\settitle\x01959,31826
-\def\settitlezzz #1{\x7f\settitlezzz\x01960,31863
-\def\internalBitem{\x7f\internalBitem\x01992,32793
-\def\internalBitemx{\x7f\internalBitemx\x01993,32843
-\def\internalBxitem "#1"{\x7f\internalBxitem\x01995,32888
-\def\internalBxitemx "#1"{\x7f\internalBxitemx\x01996,32968
-\def\internalBkitem{\x7f\internalBkitem\x01998,33043
-\def\internalBkitemx{\x7f\internalBkitemx\x01999,33095
-\def\kitemzzz #1{\x7f\kitemzzz\x011001,33142
-\def\xitemzzz #1{\x7f\xitemzzz\x011004,33244
-\def\itemzzz #1{\x7f\itemzzz\x011007,33347
-\def\item{\x7f\item\x011037,34418
-\def\itemx{\x7f\itemx\x011038,34469
-\def\kitem{\x7f\kitem\x011039,34522
-\def\kitemx{\x7f\kitemx\x011040,34575
-\def\xitem{\x7f\xitem\x011041,34630
-\def\xitemx{\x7f\xitemx\x011042,34683
-\def\description{\x7f\description\x011045,34793
-\def\table{\x7f\table\x011047,34843
-\def\ftable{\x7f\ftable\x011052,34987
-\def\Eftable{\x7f\Eftable\x011056,35133
-\def\vtable{\x7f\vtable\x011059,35202
-\def\Evtable{\x7f\Evtable\x011063,35348
-\def\dontindex #1{\x7f\dontindex\x011066,35417
-\def\fnitemindex #1{\x7f\fnitemindex\x011067,35437
-\def\vritemindex #1{\x7f\vritemindex\x011068,35482
-\def\tablez #1#2#3#4#5#6{\x7f\tablez\x011074,35631
-\def\Edescription{\x7f\Edescription\x011077,35689
-\def\itemfont{\x7f\itemfont\x011082,35890
-\def\Etable{\x7f\Etable\x011090,36116
-\def\itemize{\x7f\itemize\x011103,36440
-\def\itemizezzz #1{\x7f\itemizezzz\x011105,36476
-\def\itemizey #1#2{\x7f\itemizey\x011110,36571
-\def#2{\x7f1119,36817
-\def\itemcontents{\x7f\itemcontents\x011120,36858
-\def\bullet{\x7f\bullet\x011123,36906
-\def\minus{\x7f\minus\x011124,36933
-\def\frenchspacing{\x7f\frenchspacing\x011128,37041
-\def\splitoff#1#2\endmark{\x7f\splitoff\x011134,37266
-\def\enumerate{\x7f\enumerate\x011140,37496
-\def\enumeratezzz #1{\x7f\enumeratezzz\x011141,37535
-\def\enumeratey #1 #2\endenumeratey{\x7f\enumeratey\x011142,37588
- \def\thearg{\x7f\thearg\x011146,37735
- \ifx\thearg\empty \def\thearg{\x7f\thearg\x011147,37754
-\def\numericenumerate{\x7f\numericenumerate\x011184,39088
-\def\lowercaseenumerate{\x7f\lowercaseenumerate\x011190,39218
-\def\uppercaseenumerate{\x7f\uppercaseenumerate\x011203,39565
-\def\startenumeration#1{\x7f\startenumeration\x011219,40055
-\def\alphaenumerate{\x7f\alphaenumerate\x011227,40237
-\def\capsenumerate{\x7f\capsenumerate\x011228,40272
-\def\Ealphaenumerate{\x7f\Ealphaenumerate\x011229,40306
-\def\Ecapsenumerate{\x7f\Ecapsenumerate\x011230,40340
-\def\itemizeitem{\x7f\itemizeitem\x011234,40420
-\def\newindex #1{\x7f\newindex\x011259,41277
-\def\defindex{\x7f\defindex\x011268,41566
-\def\newcodeindex #1{\x7f\newcodeindex\x011272,41674
-\def\defcodeindex{\x7f\defcodeindex\x011279,41934
-\def\synindex #1 #2 {\x7f\synindex\x011283,42114
-\def\syncodeindex #1 #2 {\x7f\syncodeindex\x011292,42454
-\def\doindex#1{\x7f\doindex\x011309,43133
-\def\singleindexer #1{\x7f\singleindexer\x011310,43192
-\def\docodeindex#1{\x7f\docodeindex\x011313,43304
-\def\singlecodeindexer #1{\x7f\singlecodeindexer\x011314,43371
-\def\indexdummies{\x7f\indexdummies\x011316,43429
-\def\_{\x7f\_\x011317,43449
-\def\w{\x7f\w\x011318,43477
-\def\bf{\x7f\bf\x011319,43504
-\def\rm{\x7f\rm\x011320,43533
-\def\sl{\x7f\sl\x011321,43562
-\def\sf{\x7f\sf\x011322,43591
-\def\tt{\x7f\tt\x011323,43619
-\def\gtr{\x7f\gtr\x011324,43647
-\def\less{\x7f\less\x011325,43677
-\def\hat{\x7f\hat\x011326,43709
-\def\char{\x7f\char\x011327,43739
-\def\TeX{\x7f\TeX\x011328,43771
-\def\dots{\x7f\dots\x011329,43801
-\def\copyright{\x7f\copyright\x011330,43834
-\def\tclose##1{\x7f\tclose\x011331,43877
-\def\code##1{\x7f\code\x011332,43922
-\def\samp##1{\x7f\samp\x011333,43963
-\def\t##1{\x7f\t\x011334,44004
-\def\r##1{\x7f\r\x011335,44039
-\def\i##1{\x7f\i\x011336,44074
-\def\b##1{\x7f\b\x011337,44109
-\def\cite##1{\x7f\cite\x011338,44144
-\def\key##1{\x7f\key\x011339,44185
-\def\file##1{\x7f\file\x011340,44224
-\def\var##1{\x7f\var\x011341,44265
-\def\kbd##1{\x7f\kbd\x011342,44304
-\def\indexdummyfont#1{\x7f\indexdummyfont\x011347,44460
-\def\indexdummytex{\x7f\indexdummytex\x011348,44486
-\def\indexdummydots{\x7f\indexdummydots\x011349,44510
-\def\indexnofonts{\x7f\indexnofonts\x011351,44536
+\let\lastnode=\relax}\x7flastnode\x01502,16194
+\let\refill=\relax\x7frefill\x01504,16217
+\def\setfilename{\x7fsetfilename\x01509,16431
+ \global\let\setfilename=\comment % Ignore extra @setfilename cmds.\x7fsetfilename\x01514,16562
+\outer\def\bye{\x7fbye\x01518,16677
+\def\inforef #1{\x7finforef\x01520,16733
+\def\inforefzzz #1,#2,#3,#4**{\x7finforefzzz\x01521,16771
+\def\losespace #1{\x7flosespace\x01523,16868
+\def\sf{\x7fsf\x01532,17072
+\let\li = \sf % Sometimes we call it \li, not \sf.\x7fli\x01533,17100
+\let\mainmagstep=\magstephalf\x7fmainmagstep\x01536,17201
+\let\mainmagstep=\magstep1\x7fmainmagstep\x01539,17250
+\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf\x01558,17867
+\font\deftt=cmtt10 scaled \magstep1\x7ftt\x01559,17913
+\def\df{\x7fdf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftentt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftenbf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7fbf\x01560,17949
+\let\indsl=\indit\x7findsl\x01570,18310
+\let\indtt=\ninett\x7findtt\x01571,18328
+\let\indsf=\indrm\x7findsf\x01572,18347
+\let\indbf=\indrm\x7findbf\x01573,18365
+\let\indsc=\indrm\x7findsc\x01574,18383
+\let\chapbf=\chaprm\x7fchapbf\x01584,18643
+\let\authorrm = \secrm\x7fauthorrm\x01627,20193
+\def\resetmathfonts{\x7fresetmathfonts\x01635,20543
+\def\textfonts{\x7ftextfonts\x01648,21132
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenrm\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenit\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftensl\x01649,21149
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftenbf\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftentt\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7fsmallcaps\x01650,21208
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensf\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7fteni\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensy\x01651,21271
+\def\chapfonts{\x7fchapfonts\x01653,21347
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenrm\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenit\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftensl\x01654,21364
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftenbf\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftentt\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7fsmallcaps\x01655,21424
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensf\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7fteni\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensy\x01656,21487
+\def\secfonts{\x7fsecfonts\x01658,21563
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenrm\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenit\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftensl\x01659,21579
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftenbf\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftentt\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7fsmallcaps\x01660,21635
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensf\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7fteni\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensy\x01661,21695
+\def\subsecfonts{\x7fsubsecfonts\x01663,21768
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenrm\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenit\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftensl\x01664,21787
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftenbf\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftentt\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7fsmallcaps\x01665,21846
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensf\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7fteni\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensy\x01666,21909
+\def\indexfonts{\x7findexfonts\x01668,21985
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenrm\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenit\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftensl\x01669,22003
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftenbf\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftentt\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7fsmallcaps\x01670,22059
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensf\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7fteni\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensy\x01671,22119
+\def\smartitalicx{\x7fsmartitalicx\x01691,22717
+\def\smartitalic#1{\x7fsmartitalic\x01692,22793
+\let\i=\smartitalic\x7fi\x01694,22851
+\let\var=\smartitalic\x7fvar\x01695,22871
+\let\dfn=\smartitalic\x7fdfn\x01696,22893
+\let\emph=\smartitalic\x7femph\x01697,22915
+\let\cite=\smartitalic\x7fcite\x01698,22938
+\def\b#1{\x7fb\x01700,22962
+\let\strong=\b\x7fstrong\x01701,22981
+\def\t#1{\x7ft\x01703,22997
+\let\ttfont = \t\x7fttfont\x01704,23072
+\def\samp #1{\x7fsamp\x01706,23149
+\def\key #1{\x7fkey\x01707,23182
+\def\ctrl #1{\x7fctrl\x01708,23243
+\let\file=\samp\x7ffile\x01710,23285
+\def\tclose#1{\x7ftclose\x01716,23445
+\let\code=\tclose\x7fcode\x01722,23722
+\def\xkey{\x7fxkey\x01728,23880
+\def\kbdfoo#1#2#3\par{\x7fkbdfoo\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{\x7fone\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{\x7fthree\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{\x7fthreex\x01729,23896
+\def\dmn#1{\x7fdmn\x01738,24197
+\def\kbd#1{\x7fkbd\x01740,24224
+\def\kbd#1{\def\look{\x7flook\x01740,24224
+\def\l#1{\x7fl\x01742,24281
+\def\r#1{\x7fr\x01744,24310
+\def\sc#1{\x7fsc\x01746,24378
+\def\ii#1{\x7fii\x01747,24421
+\def\titlefont#1{\x7ftitlefont\x01755,24654
+\def\titlepage{\x7ftitlepage\x01761,24757
+ \let\subtitlerm=\tenrm\x7fsubtitlerm\x01762,24810
+ \def\subtitlefont{\x7fsubtitlefont\x01766,24984
+ \def\authorfont{\x7fauthorfont\x01768,25068
+ \def\title{\x7ftitle\x01774,25278
+ \def\titlezzz##1{\x7ftitlezzz\x01775,25313
+ \def\subtitle{\x7fsubtitle\x01783,25628
+ \def\subtitlezzz##1{\x7fsubtitlezzz\x01784,25669
+ \def\author{\x7fauthor\x01787,25787
+ \def\authorzzz##1{\x7fauthorzzz\x01788,25824
+ \let\oldpage = \page\x7foldpage\x01793,26091
+ \def\page{\x7fpage\x01794,26115
+ \let\page = \oldpage\x7fpage\x01799,26206
+\def\Etitlepage{\x7fEtitlepage\x01804,26284
+\def\finishtitlepage{\x7ffinishtitlepage\x01817,26672
+\let\thispage=\folio\x7fthispage\x01825,26825
+\let\HEADINGShook=\relax\x7fHEADINGShook\x01837,27420
+\def\evenheading{\x7fevenheading\x01846,27680
+\def\oddheading{\x7foddheading\x01847,27723
+\def\everyheading{\x7feveryheading\x01848,27764
+\def\evenfooting{\x7fevenfooting\x01850,27810
+\def\oddfooting{\x7foddfooting\x01851,27853
+\def\everyfooting{\x7feveryfooting\x01852,27894
+\gdef\evenheadingxxx #1{\x7fevenheadingxxx\x01856,27958
+\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{\x7fevenheadingyyy\x01857,28017
+\gdef\oddheadingxxx #1{\x7foddheadingxxx\x01860,28126
+\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{\x7foddheadingyyy\x01861,28183
+\gdef\everyheadingxxx #1{\x7feveryheadingxxx\x01864,28290
+\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{\x7feveryheadingyyy\x01865,28351
+\gdef\evenfootingxxx #1{\x7fevenfootingxxx\x01869,28522
+\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{\x7fevenfootingyyy\x01870,28581
+\gdef\oddfootingxxx #1{\x7foddfootingxxx\x01873,28690
+\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{\x7foddfootingyyy\x01874,28747
+\gdef\everyfootingxxx #1{\x7feveryfootingxxx\x01877,28854
+\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{\x7feveryfootingyyy\x01878,28915
+\def\headings #1 {\x7fheadings\x01893,29586
+\def\HEADINGSoff{\x7fHEADINGSoff\x01895,29635
+\def\HEADINGSdouble{\x7fHEADINGSdouble\x01904,30062
+\def\HEADINGSsingle{\x7fHEADINGSsingle\x01914,30382
+\def\HEADINGSon{\x7fHEADINGSon\x01922,30603
+\def\HEADINGSafter{\x7fHEADINGSafter\x01924,30637
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}\x7fHEADINGShook\x01924,30637
+\let\HEADINGSdoubleafter=\HEADINGSafter\x7fHEADINGSdoubleafter\x01925,30692
+\def\HEADINGSdoublex{\x7fHEADINGSdoublex\x01926,30732
+\def\HEADINGSsingleafter{\x7fHEADINGSsingleafter\x01933,30920
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}\x7fHEADINGShook\x01933,30920
+\def\HEADINGSsinglex{\x7fHEADINGSsinglex\x01934,30981
+\def\today{\x7ftoday\x01943,31256
+\def\thistitle{\x7fthistitle\x01958,31801
+\def\settitle{\x7fsettitle\x01959,31826
+\def\settitlezzz #1{\x7fsettitlezzz\x01960,31863
+\def\settitlezzz #1{\gdef\thistitle{\x7fthistitle\x01960,31863
+\def\internalBitem{\x7finternalBitem\x01992,32793
+\def\internalBitemx{\x7finternalBitemx\x01993,32843
+\def\internalBxitem "#1"{\x7finternalBxitem\x01995,32888
+\def\internalBxitem "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01995,32888
+\def\internalBxitemx "#1"{\x7finternalBxitemx\x01996,32968
+\def\internalBxitemx "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01996,32968
+\def\internalBkitem{\x7finternalBkitem\x01998,33043
+\def\internalBkitemx{\x7finternalBkitemx\x01999,33095
+\def\kitemzzz #1{\x7fkitemzzz\x011001,33142
+\def\xitemzzz #1{\x7fxitemzzz\x011004,33244
+\def\itemzzz #1{\x7fitemzzz\x011007,33347
+\def\item{\x7fitem\x011037,34418
+\def\itemx{\x7fitemx\x011038,34469
+\def\kitem{\x7fkitem\x011039,34522
+\def\kitemx{\x7fkitemx\x011040,34575
+\def\xitem{\x7fxitem\x011041,34630
+\def\xitemx{\x7fxitemx\x011042,34683
+\def\description{\x7fdescription\x011045,34793
+\def\table{\x7ftable\x011047,34843
+\gdef\tablex #1^^M{\x7ftablex\x011049,34925
+\def\ftable{\x7fftable\x011052,34987
+\gdef\ftablex #1^^M{\x7fftablex\x011054,35071
+\def\Eftable{\x7fEftable\x011056,35133
+\let\Etable=\relax}\x7fEtable\x011057,35180
+\def\vtable{\x7fvtable\x011059,35202
+\gdef\vtablex #1^^M{\x7fvtablex\x011061,35286
+\def\Evtable{\x7fEvtable\x011063,35348
+\let\Etable=\relax}\x7fEtable\x011064,35395
+\def\dontindex #1{\x7fdontindex\x011066,35417
+\def\fnitemindex #1{\x7ffnitemindex\x011067,35437
+\def\vritemindex #1{\x7fvritemindex\x011068,35482
+\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\x7ftabley\x011071,35543
+\def\tablez #1#2#3#4#5#6{\x7ftablez\x011074,35631
+\def\Edescription{\x7fEdescription\x011077,35689
+\let\itemindex=#1%\x7fitemindex\x011078,35735
+\def\itemfont{\x7fitemfont\x011082,35890
+\def\Etable{\x7fEtable\x011090,36116
+\let\item = \internalBitem %\x7fitem\x011091,36162
+\let\itemx = \internalBitemx %\x7fitemx\x011092,36191
+\let\kitem = \internalBkitem %\x7fkitem\x011093,36222
+\let\kitemx = \internalBkitemx %\x7fkitemx\x011094,36253
+\let\xitem = \internalBxitem %\x7fxitem\x011095,36286
+\let\xitemx = \internalBxitemx %\x7fxitemx\x011096,36317
+\def\itemize{\x7fitemize\x011103,36440
+\def\itemizezzz #1{\x7fitemizezzz\x011105,36476
+\def\itemizey #1#2{\x7fitemizey\x011110,36571
+\def\itemcontents{\x7fitemcontents\x011120,36858
+\let\item=\itemizeitem}\x7fitem\x011121,36881
+\def\bullet{\x7fbullet\x011123,36906
+\def\minus{\x7fminus\x011124,36933
+\def\frenchspacing{\x7ffrenchspacing\x011128,37041
+\def\splitoff#1#2\endmark{\x7fsplitoff\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{\x7ffirst\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{\x7frest\x011134,37266
+\def\enumerate{\x7fenumerate\x011140,37496
+\def\enumeratezzz #1{\x7fenumeratezzz\x011141,37535
+\def\enumeratey #1 #2\endenumeratey{\x7fenumeratey\x011142,37588
+ \def\thearg{\x7fthearg\x011146,37735
+ \ifx\thearg\empty \def\thearg{\x7fthearg\x011147,37754
+\def\numericenumerate{\x7fnumericenumerate\x011184,39088
+\def\lowercaseenumerate{\x7flowercaseenumerate\x011190,39218
+\def\uppercaseenumerate{\x7fuppercaseenumerate\x011203,39565
+\def\startenumeration#1{\x7fstartenumeration\x011219,40055
+\def\alphaenumerate{\x7falphaenumerate\x011227,40237
+\def\capsenumerate{\x7fcapsenumerate\x011228,40272
+\def\Ealphaenumerate{\x7fEalphaenumerate\x011229,40306
+\def\Ecapsenumerate{\x7fEcapsenumerate\x011230,40340
+\def\itemizeitem{\x7fitemizeitem\x011234,40420
+{\let\par=\endgraf \smallbreak}\x7fpar\x011236,40460
+\gdef\newwrite{\x7fnewwrite\x011249,40841
+\def\newindex #1{\x7fnewindex\x011259,41277
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011262,41439
+\def\defindex{\x7fdefindex\x011268,41566
+\def\newcodeindex #1{\x7fnewcodeindex\x011272,41674
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011275,41840
+\def\defcodeindex{\x7fdefcodeindex\x011279,41934
+\def\synindex #1 #2 {\x7fsynindex\x011283,42114
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011284,42137
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011285,42217
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011286,42273
+\def\syncodeindex #1 #2 {\x7fsyncodeindex\x011292,42454
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011293,42481
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011294,42561
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011295,42617
+\def\doindex#1{\x7fdoindex\x011309,43133
+\def\doindex#1{\edef\indexname{\x7findexname\x011309,43133
+\def\singleindexer #1{\x7fsingleindexer\x011310,43192
+\def\singleindexer #1{\doind{\indexname}\x7fname\x011310,43192
+\def\docodeindex#1{\x7fdocodeindex\x011313,43304
+\def\docodeindex#1{\edef\indexname{\x7findexname\x011313,43304
+\def\singlecodeindexer #1{\x7fsinglecodeindexer\x011314,43371
+\def\singlecodeindexer #1{\doind{\indexname}\x7fname\x011314,43371
+\def\indexdummies{\x7findexdummies\x011316,43429
+\def\_{\x7f_\x011317,43449
+\def\w{\x7fw\x011318,43477
+\def\bf{\x7fbf\x011319,43504
+\def\rm{\x7frm\x011320,43533
+\def\sl{\x7fsl\x011321,43562
+\def\sf{\x7fsf\x011322,43591
+\def\tt{\x7ftt\x011323,43619
+\def\gtr{\x7fgtr\x011324,43647
+\def\less{\x7fless\x011325,43677
+\def\hat{\x7fhat\x011326,43709
+\def\char{\x7fchar\x011327,43739
+\def\TeX{\x7fTeX\x011328,43771
+\def\dots{\x7fdots\x011329,43801
+\def\copyright{\x7fcopyright\x011330,43834
+\def\tclose##1{\x7ftclose\x011331,43877
+\def\code##1{\x7fcode\x011332,43922
+\def\samp##1{\x7fsamp\x011333,43963
+\def\t##1{\x7ft\x011334,44004
+\def\r##1{\x7fr\x011335,44039
+\def\i##1{\x7fi\x011336,44074
+\def\b##1{\x7fb\x011337,44109
+\def\cite##1{\x7fcite\x011338,44144
+\def\key##1{\x7fkey\x011339,44185
+\def\file##1{\x7ffile\x011340,44224
+\def\var##1{\x7fvar\x011341,44265
+\def\kbd##1{\x7fkbd\x011342,44304
+\def\indexdummyfont#1{\x7findexdummyfont\x011347,44460
+\def\indexdummytex{\x7findexdummytex\x011348,44486
+\def\indexdummydots{\x7findexdummydots\x011349,44510
+\def\indexnofonts{\x7findexnofonts\x011351,44536
+\let\w=\indexdummyfont\x7fw\x011352,44556
\let\w=\indexdummyfont\x7fdummyfont\x011352,44556
+\let\t=\indexdummyfont\x7ft\x011353,44579
\let\t=\indexdummyfont\x7fdummyfont\x011353,44579
+\let\r=\indexdummyfont\x7fr\x011354,44602
\let\r=\indexdummyfont\x7fdummyfont\x011354,44602
+\let\i=\indexdummyfont\x7fi\x011355,44625
\let\i=\indexdummyfont\x7fdummyfont\x011355,44625
+\let\b=\indexdummyfont\x7fb\x011356,44648
\let\b=\indexdummyfont\x7fdummyfont\x011356,44648
+\let\emph=\indexdummyfont\x7femph\x011357,44671
\let\emph=\indexdummyfont\x7fdummyfont\x011357,44671
+\let\strong=\indexdummyfont\x7fstrong\x011358,44697
\let\strong=\indexdummyfont\x7fdummyfont\x011358,44697
-\let\cite=\indexdummyfont\x7f=\indexdummyfont\x011359,44725
+\let\cite=\indexdummyfont\x7fcite\x011359,44725
+\let\cite=\indexdummyfont\x7fdummyfont\x011359,44725
+\let\sc=\indexdummyfont\x7fsc\x011360,44751
\let\sc=\indexdummyfont\x7fdummyfont\x011360,44751
+\let\tclose=\indexdummyfont\x7ftclose\x011364,44923
\let\tclose=\indexdummyfont\x7fdummyfont\x011364,44923
+\let\code=\indexdummyfont\x7fcode\x011365,44951
\let\code=\indexdummyfont\x7fdummyfont\x011365,44951
+\let\file=\indexdummyfont\x7ffile\x011366,44977
\let\file=\indexdummyfont\x7fdummyfont\x011366,44977
+\let\samp=\indexdummyfont\x7fsamp\x011367,45003
\let\samp=\indexdummyfont\x7fdummyfont\x011367,45003
+\let\kbd=\indexdummyfont\x7fkbd\x011368,45029
\let\kbd=\indexdummyfont\x7fdummyfont\x011368,45029
+\let\key=\indexdummyfont\x7fkey\x011369,45054
\let\key=\indexdummyfont\x7fdummyfont\x011369,45054
+\let\var=\indexdummyfont\x7fvar\x011370,45079
\let\var=\indexdummyfont\x7fdummyfont\x011370,45079
+\let\TeX=\indexdummytex\x7fTeX\x011371,45104
\let\TeX=\indexdummytex\x7fdummytex\x011371,45104
+\let\dots=\indexdummydots\x7fdots\x011372,45128
\let\dots=\indexdummydots\x7fdummydots\x011372,45128
-\let\indexbackslash=0 %overridden during \printindex.\x7fbackslash=0\x011382,45380
-\def\doind #1#2{\x7f\doind\x011384,45436
+\let\indexbackslash=0 %overridden during \printindex.\x7findexbackslash\x011382,45380
+\def\doind #1#2{\x7fdoind\x011384,45436
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011386,45479
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011389,45619
+{\let\folio=0% Expand all macros now EXCEPT \folio\x7ffolio\x011388,45568
+\def\rawbackslashxx{\x7frawbackslashxx\x011389,45619
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011389,45619
{\indexnofonts\x7fnofonts\x011394,45881
-\def\dosubind #1#2#3{\x7f\dosubind\x011405,46192
+\xdef\temp1{\x7ftemp1\x011395,45896
+\edef\temp{\x7ftemp\x011399,46068
+\def\dosubind #1#2#3{\x7fdosubind\x011405,46192
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011407,46240
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011410,46344
+{\let\folio=0%\x7ffolio\x011409,46329
+\def\rawbackslashxx{\x7frawbackslashxx\x011410,46344
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011410,46344
{\indexnofonts\x7fnofonts\x011414,46498
-\def\findex {\x7f\findex\x011443,47429
-\def\kindex {\x7f\kindex\x011444,47452
-\def\cindex {\x7f\cindex\x011445,47475
-\def\vindex {\x7f\vindex\x011446,47498
-\def\tindex {\x7f\tindex\x011447,47521
-\def\pindex {\x7f\pindex\x011448,47544
-\def\cindexsub {\x7f\cindexsub\x011450,47568
-\def\printindex{\x7f\printindex\x011462,47895
-\def\doprintindex#1{\x7f\doprintindex\x011464,47936
- \def\indexbackslash{\x7f\indexbackslash\x011481,48421
+\xdef\temp1{\x7ftemp1\x011415,46513
+\edef\temp{\x7ftemp\x011419,46688
+\def\findex {\x7ffindex\x011443,47429
+\def\kindex {\x7fkindex\x011444,47452
+\def\cindex {\x7fcindex\x011445,47475
+\def\vindex {\x7fvindex\x011446,47498
+\def\tindex {\x7ftindex\x011447,47521
+\def\pindex {\x7fpindex\x011448,47544
+\def\cindexsub {\x7fcindexsub\x011450,47568
+\gdef\cindexsub "#1" #2^^M{\x7fcindexsub\x011452,47631
+\def\printindex{\x7fprintindex\x011462,47895
+\def\doprintindex#1{\x7fdoprintindex\x011464,47936
+ \def\indexbackslash{\x7findexbackslash\x011481,48421
\indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt\x7ffonts\rm\x011482,48460
-\def\initial #1{\x7f\initial\x011517,49532
-\def\entry #1#2{\x7f\entry\x011523,49739
+\def\initial #1{\x7finitial\x011517,49532
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftentt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7fsf\x011518,49550
+\def\entry #1#2{\x7fentry\x011523,49739
\null\nobreak\indexdotfill % Have leaders before the page number.\x7fdotfill\x011540,50386
-\def\indexdotfill{\x7f\indexdotfill\x011549,50714
-\def\primary #1{\x7f\primary\x011552,50820
-\def\secondary #1#2{\x7f\secondary\x011556,50902
+\def\indexdotfill{\x7findexdotfill\x011549,50714
+\def\primary #1{\x7fprimary\x011552,50820
+\def\secondary #1#2{\x7fsecondary\x011556,50902
\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par\x7fdotfill\x011559,50984
\newbox\partialpage\x7fialpage\x011566,51157
-\def\begindoublecolumns{\x7f\begindoublecolumns\x011572,51315
- \output={\global\setbox\partialpage=\x7fialpage=\x011573,51351
-\def\enddoublecolumns{\x7f\enddoublecolumns\x011577,51539
-\def\doublecolumnout{\x7f\doublecolumnout\x011580,51624
+\def\begindoublecolumns{\x7fbegindoublecolumns\x011572,51315
+ \output={\global\setbox\partialpage=\x7fialpage\x011573,51351
+\def\enddoublecolumns{\x7fenddoublecolumns\x011577,51539
+\def\doublecolumnout{\x7fdoublecolumnout\x011580,51624
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011581,51693
-\def\pagesofar{\x7f\pagesofar\x011584,51871
-\def\balancecolumns{\x7f\balancecolumns\x011588,52108
+\def\pagesofar{\x7fpagesofar\x011584,51871
+\def\pagesofar{\unvbox\partialpage %\x7fialpage\x011584,51871
+\def\balancecolumns{\x7fbalancecolumns\x011588,52108
\availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpage\x7fialpage\x011594,52279
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011600,52540
\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
-\def\appendixletter{\x7f\appendixletter\x011628,53486
-\def\opencontents{\x7f\opencontents\x011632,53589
-\def\thischapter{\x7f\thischapter\x011637,53770
-\def\seccheck#1{\x7f\seccheck\x011638,53808
-\def\chapternofonts{\x7f\chapternofonts\x011643,53912
-\def\result{\x7f\result\x011646,53987
-\def\equiv{\x7f\equiv\x011647,54022
-\def\expansion{\x7f\expansion\x011648,54055
-\def\print{\x7f\print\x011649,54096
-\def\TeX{\x7f\TeX\x011650,54129
-\def\dots{\x7f\dots\x011651,54158
-\def\copyright{\x7f\copyright\x011652,54189
-\def\tt{\x7f\tt\x011653,54230
-\def\bf{\x7f\bf\x011654,54257
-\def\w{\x7f\w\x011655,54285
-\def\less{\x7f\less\x011656,54310
-\def\gtr{\x7f\gtr\x011657,54341
-\def\hat{\x7f\hat\x011658,54370
-\def\char{\x7f\char\x011659,54399
-\def\tclose##1{\x7f\tclose\x011660,54430
-\def\code##1{\x7f\code\x011661,54474
-\def\samp##1{\x7f\samp\x011662,54514
-\def\r##1{\x7f\r\x011663,54554
-\def\b##1{\x7f\b\x011664,54588
-\def\key##1{\x7f\key\x011665,54622
-\def\file##1{\x7f\file\x011666,54660
-\def\kbd##1{\x7f\kbd\x011667,54700
-\def\i##1{\x7f\i\x011669,54808
-\def\cite##1{\x7f\cite\x011670,54842
-\def\var##1{\x7f\var\x011671,54882
-\def\emph##1{\x7f\emph\x011672,54920
-\def\dfn##1{\x7f\dfn\x011673,54960
-\def\thischaptername{\x7f\thischaptername\x011676,55001
-\outer\def\chapter{\x7f\chapter\x011677,55040
-\def\chapterzzz #1{\x7f\chapterzzz\x011678,55081
-{\chapternofonts%\x7fnofonts%\x011687,55477
-\global\let\section = \numberedsec\x7f=\x011692,55630
-\global\let\subsection = \numberedsubsec\x7f=\x011693,55665
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011694,55706
-\outer\def\appendix{\x7f\appendix\x011697,55757
-\def\appendixzzz #1{\x7f\appendixzzz\x011698,55800
+\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
+\def\appendixletter{\x7fappendixletter\x011628,53486
+\def\appendixletter{\char\the\appendixno}\x7fno\x011628,53486
+\def\opencontents{\x7fopencontents\x011632,53589
+\def\thischapter{\x7fthischapter\x011637,53770
+\def\thischapter{} \def\thissection{\x7fthissection\x011637,53770
+\def\seccheck#1{\x7fseccheck\x011638,53808
+\def\chapternofonts{\x7fchapternofonts\x011643,53912
+\let\rawbackslash=\relax%\x7frawbackslash\x011644,53934
+\let\frenchspacing=\relax%\x7ffrenchspacing\x011645,53960
+\def\result{\x7fresult\x011646,53987
+\def\equiv{\x7fequiv\x011647,54022
+\def\expansion{\x7fexpansion\x011648,54055
+\def\print{\x7fprint\x011649,54096
+\def\TeX{\x7fTeX\x011650,54129
+\def\dots{\x7fdots\x011651,54158
+\def\copyright{\x7fcopyright\x011652,54189
+\def\tt{\x7ftt\x011653,54230
+\def\bf{\x7fbf\x011654,54257
+\def\w{\x7fw\x011655,54285
+\def\less{\x7fless\x011656,54310
+\def\gtr{\x7fgtr\x011657,54341
+\def\hat{\x7fhat\x011658,54370
+\def\char{\x7fchar\x011659,54399
+\def\tclose##1{\x7ftclose\x011660,54430
+\def\code##1{\x7fcode\x011661,54474
+\def\samp##1{\x7fsamp\x011662,54514
+\def\r##1{\x7fr\x011663,54554
+\def\b##1{\x7fb\x011664,54588
+\def\key##1{\x7fkey\x011665,54622
+\def\file##1{\x7ffile\x011666,54660
+\def\kbd##1{\x7fkbd\x011667,54700
+\def\i##1{\x7fi\x011669,54808
+\def\cite##1{\x7fcite\x011670,54842
+\def\var##1{\x7fvar\x011671,54882
+\def\emph##1{\x7femph\x011672,54920
+\def\dfn##1{\x7fdfn\x011673,54960
+\def\thischaptername{\x7fthischaptername\x011676,55001
+\outer\def\chapter{\x7fchapter\x011677,55040
+\outer\def\chapter{\parsearg\chapterzzz}\x7fzzz\x011677,55040
+\def\chapterzzz #1{\x7fchapterzzz\x011678,55081
+\gdef\thissection{\x7fthissection\x011682,55246
+\gdef\thischaptername{\x7fthischaptername\x011683,55269
+\xdef\thischapter{\x7fthischapter\x011686,55410
+{\chapternofonts%\x7fnofonts\x011687,55477
+\edef\temp{\x7ftemp\x011688,55495
+\global\let\section = \numberedsec\x7fsection\x011692,55630
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011693,55665
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011694,55706
+\outer\def\appendix{\x7fappendix\x011697,55757
+\outer\def\appendix{\parsearg\appendixzzz}\x7fzzz\x011697,55757
+\def\appendixzzz #1{\x7fappendixzzz\x011698,55800
\global\advance \appendixno by 1 \message{\x7fno\x011700,55877
+\global\advance \appendixno by 1 \message{Appendix \appendixletter}\x7fletter\x011700,55877
\chapmacro {#1}{Appendix \appendixletter}\x7fletter\x011701,55946
+\gdef\thissection{\x7fthissection\x011702,55989
+\gdef\thischaptername{\x7fthischaptername\x011703,56012
+\xdef\thischapter{\x7fthischapter\x011704,56039
\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}\x7fletter:\x011704,56039
-{\chapternofonts%\x7fnofonts%\x011705,56111
+{\chapternofonts%\x7fnofonts\x011705,56111
+\edef\temp{\x7ftemp\x011706,56129
{#1}{Appendix \appendixletter}\x7fletter\x011707,56167
\appendixnoderef %\x7fnoderef\x011710,56267
-\global\let\section = \appendixsec\x7f=\x011711,56286
-\global\let\subsection = \appendixsubsec\x7f=\x011712,56321
-\global\let\subsubsection = \appendixsubsubsec\x7f=\x011713,56362
-\outer\def\top{\x7f\top\x011716,56413
-\outer\def\unnumbered{\x7f\unnumbered\x011717,56453
-\def\unnumberedzzz #1{\x7f\unnumberedzzz\x011718,56500
-{\chapternofonts%\x7fnofonts%\x011722,56663
-\global\let\section = \unnumberedsec\x7f=\x011727,56813
-\global\let\subsection = \unnumberedsubsec\x7f=\x011728,56850
-\global\let\subsubsection = \unnumberedsubsubsec\x7f=\x011729,56893
-\outer\def\numberedsec{\x7f\numberedsec\x011732,56946
-\def\seczzz #1{\x7f\seczzz\x011733,56987
-{\chapternofonts%\x7fnofonts%\x011736,57143
-\outer\def\appendixsection{\x7f\appendixsection\x011745,57329
-\outer\def\appendixsec{\x7f\appendixsec\x011746,57386
-\def\appendixsectionzzz #1{\x7f\appendixsectionzzz\x011747,57439
+\global\let\section = \appendixsec\x7fsection\x011711,56286
+\global\let\section = \appendixsec\x7fsec\x011711,56286
+\global\let\subsection = \appendixsubsec\x7fsubsection\x011712,56321
+\global\let\subsection = \appendixsubsec\x7fsubsec\x011712,56321
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsection\x011713,56362
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsec\x011713,56362
+\outer\def\top{\x7ftop\x011716,56413
+\outer\def\unnumbered{\x7funnumbered\x011717,56453
+\def\unnumberedzzz #1{\x7funnumberedzzz\x011718,56500
+\gdef\thischapter{\x7fthischapter\x011721,56619
+\gdef\thischapter{#1}\gdef\thissection{\x7fthissection\x011721,56619
+{\chapternofonts%\x7fnofonts\x011722,56663
+\edef\temp{\x7ftemp\x011723,56681
+\global\let\section = \unnumberedsec\x7fsection\x011727,56813
+\global\let\subsection = \unnumberedsubsec\x7fsubsection\x011728,56850
+\global\let\subsubsection = \unnumberedsubsubsec\x7fsubsubsection\x011729,56893
+\outer\def\numberedsec{\x7fnumberedsec\x011732,56946
+\def\seczzz #1{\x7fseczzz\x011733,56987
+\gdef\thissection{\x7fthissection\x011735,57079
+{\chapternofonts%\x7fnofonts\x011736,57143
+\edef\temp{\x7ftemp\x011737,57161
+\outer\def\appendixsection{\x7fappendixsection\x011745,57329
+\outer\def\appendixsection{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011745,57329
+\outer\def\appendixsec{\x7fappendixsec\x011746,57386
+\outer\def\appendixsec{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011746,57386
+\def\appendixsectionzzz #1{\x7fappendixsectionzzz\x011747,57439
+\gdef\thissection{\x7fthissection\x011749,57551
\gdef\thissection{#1}\secheading {#1}{\appendixletter}\x7fletter\x011749,57551
-{\chapternofonts%\x7fnofonts%\x011750,57619
+{\chapternofonts%\x7fnofonts\x011750,57619
+\edef\temp{\x7ftemp\x011751,57637
{#1}{\appendixletter}\x7fletter\x011752,57675
\appendixnoderef %\x7fnoderef\x011755,57775
-\outer\def\unnumberedsec{\x7f\unnumberedsec\x011759,57815
-\def\unnumberedseczzz #1{\x7f\unnumberedseczzz\x011760,57868
-{\chapternofonts%\x7fnofonts%\x011762,57963
-\outer\def\numberedsubsec{\x7f\numberedsubsec\x011770,58131
-\def\numberedsubseczzz #1{\x7f\numberedsubseczzz\x011771,58186
-{\chapternofonts%\x7fnofonts%\x011774,58365
-\outer\def\appendixsubsec{\x7f\appendixsubsec\x011783,58569
-\def\appendixsubseczzz #1{\x7f\appendixsubseczzz\x011784,58624
+\outer\def\unnumberedsec{\x7funnumberedsec\x011759,57815
+\def\unnumberedseczzz #1{\x7funnumberedseczzz\x011760,57868
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011761,57919
+{\chapternofonts%\x7fnofonts\x011762,57963
+\edef\temp{\x7ftemp\x011763,57981
+\outer\def\numberedsubsec{\x7fnumberedsubsec\x011770,58131
+\def\numberedsubseczzz #1{\x7fnumberedsubseczzz\x011771,58186
+\gdef\thissection{\x7fthissection\x011772,58235
+{\chapternofonts%\x7fnofonts\x011774,58365
+\edef\temp{\x7ftemp\x011775,58383
+\outer\def\appendixsubsec{\x7fappendixsubsec\x011783,58569
+\outer\def\appendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011783,58569
+\def\appendixsubseczzz #1{\x7fappendixsubseczzz\x011784,58624
+\gdef\thissection{\x7fthissection\x011785,58677
\subsecheading {#1}{\appendixletter}\x7fletter\x011786,58746
-{\chapternofonts%\x7fnofonts%\x011787,58811
+{\chapternofonts%\x7fnofonts\x011787,58811
+\edef\temp{\x7ftemp\x011788,58829
{#1}{\appendixletter}\x7fletter\x011789,58870
\appendixnoderef %\x7fnoderef\x011792,58985
-\outer\def\unnumberedsubsec{\x7f\unnumberedsubsec\x011796,59025
-\def\unnumberedsubseczzz #1{\x7f\unnumberedsubseczzz\x011797,59084
-{\chapternofonts%\x7fnofonts%\x011799,59185
-\outer\def\numberedsubsubsec{\x7f\numberedsubsubsec\x011807,59356
-\def\numberedsubsubseczzz #1{\x7f\numberedsubsubseczzz\x011808,59417
-{\chapternofonts%\x7fnofonts%\x011812,59614
-\outer\def\appendixsubsubsec{\x7f\appendixsubsubsec\x011823,59847
-\def\appendixsubsubseczzz #1{\x7f\appendixsubsubseczzz\x011824,59908
+\outer\def\unnumberedsubsec{\x7funnumberedsubsec\x011796,59025
+\def\unnumberedsubseczzz #1{\x7funnumberedsubseczzz\x011797,59084
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011798,59141
+{\chapternofonts%\x7fnofonts\x011799,59185
+\edef\temp{\x7ftemp\x011800,59203
+\outer\def\numberedsubsubsec{\x7fnumberedsubsubsec\x011807,59356
+\def\numberedsubsubseczzz #1{\x7fnumberedsubsubseczzz\x011808,59417
+\gdef\thissection{\x7fthissection\x011809,59472
+{\chapternofonts%\x7fnofonts\x011812,59614
+\edef\temp{\x7ftemp\x011813,59632
+\outer\def\appendixsubsubsec{\x7fappendixsubsubsec\x011823,59847
+\outer\def\appendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011823,59847
+\def\appendixsubsubseczzz #1{\x7fappendixsubsubseczzz\x011824,59908
+\gdef\thissection{\x7fthissection\x011825,59967
{\appendixletter}\x7fletter\x011827,60047
-{\chapternofonts%\x7fnofonts%\x011828,60113
+{\chapternofonts%\x7fnofonts\x011828,60113
+\edef\temp{\x7ftemp\x011829,60131
{\appendixletter}\x7fletter\x011830,60178
\appendixnoderef %\x7fnoderef\x011834,60312
-\outer\def\unnumberedsubsubsec{\x7f\unnumberedsubsubsec\x011838,60352
-\def\unnumberedsubsubseczzz #1{\x7f\unnumberedsubsubseczzz\x011839,60417
-{\chapternofonts%\x7fnofonts%\x011841,60524
-\def\infotop{\x7f\infotop\x011851,60853
-\def\infounnumbered{\x7f\infounnumbered\x011852,60891
-\def\infounnumberedsec{\x7f\infounnumberedsec\x011853,60936
-\def\infounnumberedsubsec{\x7f\infounnumberedsubsec\x011854,60987
-\def\infounnumberedsubsubsec{\x7f\infounnumberedsubsubsec\x011855,61044
-\def\infoappendix{\x7f\infoappendix\x011857,61108
-\def\infoappendixsec{\x7f\infoappendixsec\x011858,61149
-\def\infoappendixsubsec{\x7f\infoappendixsubsec\x011859,61196
-\def\infoappendixsubsubsec{\x7f\infoappendixsubsubsec\x011860,61249
-\def\infochapter{\x7f\infochapter\x011862,61309
-\def\infosection{\x7f\infosection\x011863,61348
-\def\infosubsection{\x7f\infosubsection\x011864,61387
-\def\infosubsubsection{\x7f\infosubsubsection\x011865,61432
-\global\let\section = \numberedsec\x7f=\x011870,61669
-\global\let\subsection = \numberedsubsec\x7f=\x011871,61704
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011872,61745
-\def\majorheading{\x7f\majorheading\x011886,62252
-\def\majorheadingzzz #1{\x7f\majorheadingzzz\x011887,62297
-\def\chapheading{\x7f\chapheading\x011893,62530
-\def\chapheadingzzz #1{\x7f\chapheadingzzz\x011894,62573
-\def\heading{\x7f\heading\x011899,62768
-\def\subheading{\x7f\subheading\x011901,62805
-\def\subsubheading{\x7f\subsubheading\x011903,62848
-\def\dobreak#1#2{\x7f\dobreak\x011910,63125
-\def\setchapterstyle #1 {\x7f\setchapterstyle\x011912,63203
-\def\chapbreak{\x7f\chapbreak\x011919,63458
-\def\chappager{\x7f\chappager\x011920,63508
-\def\chapoddpage{\x7f\chapoddpage\x011921,63546
-\def\setchapternewpage #1 {\x7f\setchapternewpage\x011923,63625
-\def\CHAPPAGoff{\x7f\CHAPPAGoff\x011925,63682
-\def\CHAPPAGon{\x7f\CHAPPAGon\x011929,63776
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011932,63867
-\def\CHAPPAGodd{\x7f\CHAPPAGodd\x011934,63909
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011937,64005
-\def\CHAPFplain{\x7f\CHAPFplain\x011941,64059
-\def\chfplain #1#2{\x7f\chfplain\x011945,64151
-\def\unnchfplain #1{\x7f\unnchfplain\x011956,64374
-\def\unnchfopen #1{\x7f\unnchfopen\x011964,64603
-\def\chfopen #1#2{\x7f\chfopen\x011970,64811
-\def\CHAPFopen{\x7f\CHAPFopen\x011975,64955
-\def\subsecheadingbreak{\x7f\subsecheadingbreak\x011982,65173
-\def\secheadingbreak{\x7f\secheadingbreak\x011985,65302
-\def\secheading #1#2#3{\x7f\secheading\x011993,65584
-\def\plainsecheading #1{\x7f\plainsecheading\x011994,65640
-\def\secheadingi #1{\x7f\secheadingi\x011995,65683
-\def\subsecheading #1#2#3#4{\x7f\subsecheading\x012006,66051
-\def\subsecheadingi #1{\x7f\subsecheadingi\x012007,66118
-\def\subsubsecfonts{\x7f\subsubsecfonts\x012014,66415
-\def\subsubsecheading #1#2#3#4#5{\x7f\subsubsecheading\x012017,66538
-\def\subsubsecheadingi #1{\x7f\subsubsecheadingi\x012018,66616
-\def\startcontents#1{\x7f\startcontents\x012032,67088
- \unnumbchapmacro{#1}\def\thischapter{\x7f\thischapter\x012040,67361
-\outer\def\contents{\x7f\contents\x012049,67720
-\outer\def\summarycontents{\x7f\summarycontents\x012057,67864
- \def\secentry ##1##2##3##4{\x7f\secentry\x012067,68235
- \def\unnumbsecentry ##1##2{\x7f\unnumbsecentry\x012068,68270
- \def\subsecentry ##1##2##3##4##5{\x7f\subsecentry\x012069,68305
- \def\unnumbsubsecentry ##1##2{\x7f\unnumbsubsecentry\x012070,68346
- \def\subsubsecentry ##1##2##3##4##5##6{\x7f\subsubsecentry\x012071,68384
- \def\unnumbsubsubsecentry ##1##2{\x7f\unnumbsubsubsecentry\x012072,68431
-\def\chapentry#1#2#3{\x7f\chapentry\x012085,68865
-\def\shortchapentry#1#2#3{\x7f\shortchapentry\x012088,68982
+\outer\def\unnumberedsubsubsec{\x7funnumberedsubsubsec\x011838,60352
+\def\unnumberedsubsubseczzz #1{\x7funnumberedsubsubseczzz\x011839,60417
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011840,60480
+{\chapternofonts%\x7fnofonts\x011841,60524
+\edef\temp{\x7ftemp\x011842,60542
+\def\infotop{\x7finfotop\x011851,60853
+\def\infounnumbered{\x7finfounnumbered\x011852,60891
+\def\infounnumberedsec{\x7finfounnumberedsec\x011853,60936
+\def\infounnumberedsubsec{\x7finfounnumberedsubsec\x011854,60987
+\def\infounnumberedsubsubsec{\x7finfounnumberedsubsubsec\x011855,61044
+\def\infoappendix{\x7finfoappendix\x011857,61108
+\def\infoappendix{\parsearg\appendixzzz}\x7fzzz\x011857,61108
+\def\infoappendixsec{\x7finfoappendixsec\x011858,61149
+\def\infoappendixsec{\parsearg\appendixseczzz}\x7fseczzz\x011858,61149
+\def\infoappendixsubsec{\x7finfoappendixsubsec\x011859,61196
+\def\infoappendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011859,61196
+\def\infoappendixsubsubsec{\x7finfoappendixsubsubsec\x011860,61249
+\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011860,61249
+\def\infochapter{\x7finfochapter\x011862,61309
+\def\infochapter{\parsearg\chapterzzz}\x7fzzz\x011862,61309
+\def\infosection{\x7finfosection\x011863,61348
+\def\infosection{\parsearg\sectionzzz}\x7fzzz\x011863,61348
+\def\infosubsection{\x7finfosubsection\x011864,61387
+\def\infosubsection{\parsearg\subsectionzzz}\x7fzzz\x011864,61387
+\def\infosubsubsection{\x7finfosubsubsection\x011865,61432
+\def\infosubsubsection{\parsearg\subsubsectionzzz}\x7fzzz\x011865,61432
+\global\let\section = \numberedsec\x7fsection\x011870,61669
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011871,61704
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011872,61745
+\def\majorheading{\x7fmajorheading\x011886,62252
+\def\majorheadingzzz #1{\x7fmajorheadingzzz\x011887,62297
+\def\chapheading{\x7fchapheading\x011893,62530
+\def\chapheadingzzz #1{\x7fchapheadingzzz\x011894,62573
+\def\heading{\x7fheading\x011899,62768
+\def\subheading{\x7fsubheading\x011901,62805
+\def\subsubheading{\x7fsubsubheading\x011903,62848
+\def\dobreak#1#2{\x7fdobreak\x011910,63125
+\def\setchapterstyle #1 {\x7fsetchapterstyle\x011912,63203
+\def\chapbreak{\x7fchapbreak\x011919,63458
+\def\chappager{\x7fchappager\x011920,63508
+\def\chapoddpage{\x7fchapoddpage\x011921,63546
+\def\setchapternewpage #1 {\x7fsetchapternewpage\x011923,63625
+\def\CHAPPAGoff{\x7fCHAPPAGoff\x011925,63682
+\global\let\pchapsepmacro=\chapbreak\x7fpchapsepmacro\x011926,63699
+\global\let\pagealignmacro=\chappager}\x7fpagealignmacro\x011927,63736
+\def\CHAPPAGon{\x7fCHAPPAGon\x011929,63776
+\global\let\pchapsepmacro=\chappager\x7fpchapsepmacro\x011930,63792
+\global\let\pagealignmacro=\chappager\x7fpagealignmacro\x011931,63829
+\global\def\HEADINGSon{\x7fHEADINGSon\x011932,63867
+\def\CHAPPAGodd{\x7fCHAPPAGodd\x011934,63909
+\global\let\pchapsepmacro=\chapoddpage\x7fpchapsepmacro\x011935,63926
+\global\let\pagealignmacro=\chapoddpage\x7fpagealignmacro\x011936,63965
+\global\def\HEADINGSon{\x7fHEADINGSon\x011937,64005
+\def\CHAPFplain{\x7fCHAPFplain\x011941,64059
+\global\let\chapmacro=\chfplain\x7fchapmacro\x011942,64076
+\global\let\unnumbchapmacro=\unnchfplain}\x7funnumbchapmacro\x011943,64108
+\def\chfplain #1#2{\x7fchfplain\x011945,64151
+\def\unnchfplain #1{\x7funnchfplain\x011956,64374
+\def\unnchfopen #1{\x7funnchfopen\x011964,64603
+\def\chfopen #1#2{\x7fchfopen\x011970,64811
+\def\CHAPFopen{\x7fCHAPFopen\x011975,64955
+\global\let\chapmacro=\chfopen\x7fchapmacro\x011976,64971
+\global\let\unnumbchapmacro=\unnchfopen}\x7funnumbchapmacro\x011977,65002
+\def\subsecheadingbreak{\x7fsubsecheadingbreak\x011982,65173
+\def\secheadingbreak{\x7fsecheadingbreak\x011985,65302
+\let\paragraphindent=\comment\x7fparagraphindent\x011988,65428
+\def\secheading #1#2#3{\x7fsecheading\x011993,65584
+\def\plainsecheading #1{\x7fplainsecheading\x011994,65640
+\def\secheadingi #1{\x7fsecheadingi\x011995,65683
+\def\subsecheading #1#2#3#4{\x7fsubsecheading\x012006,66051
+\def\subsecheadingi #1{\x7fsubsecheadingi\x012007,66118
+\def\subsubsecfonts{\x7fsubsubsecfonts\x012014,66415
+\def\subsubsecheading #1#2#3#4#5{\x7fsubsubsecheading\x012017,66538
+\def\subsubsecheadingi #1{\x7fsubsubsecheadingi\x012018,66616
+\def\startcontents#1{\x7fstartcontents\x012032,67088
+ \unnumbchapmacro{#1}\def\thischapter{\x7fthischapter\x012040,67361
+\outer\def\contents{\x7fcontents\x012049,67720
+\outer\def\summarycontents{\x7fsummarycontents\x012057,67864
+ \let\chapentry = \shortchapentry\x7fchapentry\x012060,67936
+ \let\unnumbchapentry = \shortunnumberedentry\x7funnumbchapentry\x012061,67975
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7frm\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fbf\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fsl\x012064,68098
+ \def\secentry ##1##2##3##4{\x7fsecentry\x012067,68235
+ \def\unnumbsecentry ##1##2{\x7funnumbsecentry\x012068,68270
+ \def\subsecentry ##1##2##3##4##5{\x7fsubsecentry\x012069,68305
+ \def\unnumbsubsecentry ##1##2{\x7funnumbsubsecentry\x012070,68346
+ \def\subsubsecentry ##1##2##3##4##5##6{\x7fsubsubsecentry\x012071,68384
+ \def\unnumbsubsubsecentry ##1##2{\x7funnumbsubsubsecentry\x012072,68431
+\let\shortcontents = \summarycontents\x7fshortcontents\x012077,68530
+\def\chapentry#1#2#3{\x7fchapentry\x012085,68865
+\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}\x7fspace\x012085,68865
+\def\shortchapentry#1#2#3{\x7fshortchapentry\x012088,68982
{#2\labelspace #1}\x7fspace\x012091,69092
-\def\unnumbchapentry#1#2{\x7f\unnumbchapentry\x012094,69146
-\def\shortunnumberedentry#1#2{\x7f\shortunnumberedentry\x012095,69193
-\def\secentry#1#2#3#4{\x7f\secentry\x012102,69357
-\def\unnumbsecentry#1#2{\x7f\unnumbsecentry\x012103,69416
-\def\subsecentry#1#2#3#4#5{\x7f\subsecentry\x012106,69477
-\def\unnumbsubsecentry#1#2{\x7f\unnumbsubsecentry\x012107,69547
-\def\subsubsecentry#1#2#3#4#5#6{\x7f\subsubsecentry\x012110,69621
+\def\unnumbchapentry#1#2{\x7funnumbchapentry\x012094,69146
+\def\shortunnumberedentry#1#2{\x7fshortunnumberedentry\x012095,69193
+\def\secentry#1#2#3#4{\x7fsecentry\x012102,69357
+\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}\x7fspace\x012102,69357
+\def\unnumbsecentry#1#2{\x7funnumbsecentry\x012103,69416
+\def\subsecentry#1#2#3#4#5{\x7fsubsecentry\x012106,69477
+\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}\x7fspace\x012106,69477
+\def\unnumbsubsecentry#1#2{\x7funnumbsubsecentry\x012107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\x7fsubsubsecentry\x012110,69621
\dosubsubsecentry{#2.#3.#4.#5\labelspace#1}\x7fspace\x012111,69655
-\def\unnumbsubsubsecentry#1#2{\x7f\unnumbsubsubsecentry\x012112,69706
-\def\dochapentry#1#2{\x7f\dochapentry\x012123,70080
-\def\dosecentry#1#2{\x7f\dosecentry\x012138,70685
-\def\dosubsecentry#1#2{\x7f\dosubsecentry\x012145,70863
-\def\dosubsubsecentry#1#2{\x7f\dosubsubsecentry\x012152,71048
-\def\labelspace{\x7f\labelspace\x012160,71299
-\def\dopageno#1{\x7f\dopageno\x012162,71334
-\def\doshortpageno#1{\x7f\doshortpageno\x012163,71360
-\def\chapentryfonts{\x7f\chapentryfonts\x012165,71392
-\def\secentryfonts{\x7f\secentryfonts\x012166,71427
-\def\point{\x7f\point\x012192,72386
-\def\result{\x7f\result\x012194,72407
-\def\expansion{\x7f\expansion\x012195,72480
-\def\print{\x7f\print\x012196,72551
-\def\equiv{\x7f\equiv\x012198,72618
-\def\error{\x7f\error\x012218,73391
-\def\tex{\x7f\tex\x012224,73620
-\def\@{\x7f\@\x012242,74003
-\gdef\sepspaces{\def {\ }}}\x7f\\x012265,74735
-\def\aboveenvbreak{\x7f\aboveenvbreak\x012268,74817
-\def\afterenvbreak{\x7f\afterenvbreak\x012272,74983
-\def\ctl{\x7f\ctl\x012286,75494
-\def\ctr{\x7f\ctr\x012287,75566
-\def\cbl{\x7f\cbl\x012288,75605
-\def\cbr{\x7f\cbr\x012289,75645
-\def\carttop{\x7f\carttop\x012290,75684
-\def\cartbot{\x7f\cartbot\x012293,75792
-\long\def\cartouche{\x7f\cartouche\x012299,75932
-\def\Ecartouche{\x7f\Ecartouche\x012326,76720
-\def\lisp{\x7f\lisp\x012338,76855
-\def\Elisp{\x7f\Elisp\x012348,77202
-\def\next##1{\x7f\next\x012360,77528
-\def\Eexample{\x7f\Eexample\x012364,77570
-\def\Esmallexample{\x7f\Esmallexample\x012367,77617
-\def\smalllispx{\x7f\smalllispx\x012373,77795
-\def\Esmalllisp{\x7f\Esmalllisp\x012383,78149
+\def\unnumbsubsubsecentry#1#2{\x7funnumbsubsubsecentry\x012112,69706
+\def\dochapentry#1#2{\x7fdochapentry\x012123,70080
+\def\dosecentry#1#2{\x7fdosecentry\x012138,70685
+\def\dosubsecentry#1#2{\x7fdosubsecentry\x012145,70863
+\def\dosubsubsecentry#1#2{\x7fdosubsubsecentry\x012152,71048
+\def\labelspace{\x7flabelspace\x012160,71299
+\def\dopageno#1{\x7fdopageno\x012162,71334
+\def\doshortpageno#1{\x7fdoshortpageno\x012163,71360
+\def\chapentryfonts{\x7fchapentryfonts\x012165,71392
+\def\secentryfonts{\x7fsecentryfonts\x012166,71427
+\let\subsecentryfonts = \textfonts\x7fsubsecentryfonts\x012167,71458
+\let\subsubsecentryfonts = \textfonts\x7fsubsubsecentryfonts\x012168,71493
+\let\ptexequiv = \equiv\x7fptexequiv\x012180,71896
+\def\point{\x7fpoint\x012192,72386
+\def\result{\x7fresult\x012194,72407
+\def\expansion{\x7fexpansion\x012195,72480
+\def\print{\x7fprint\x012196,72551
+\def\equiv{\x7fequiv\x012198,72618
+\def\error{\x7ferror\x012218,73391
+\def\tex{\x7ftex\x012224,73620
+\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie\x7f~\x012227,73731
+\let\{=\ptexlbrace\x7f{\x012237,73912
+\let\}=\ptexrbrace\x7f}\x012238,73931
+\let\.=\ptexdot\x7f.\x012239,73950
+\let\*=\ptexstar\x7f*\x012240,73966
+\let\dots=\ptexdots\x7fdots\x012241,73983
+\def\@{\x7f@\x012242,74003
+\let\bullet=\ptexbullet\x7fbullet\x012243,74014
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fb\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fc\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fi\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7ft\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fl\x012244,74038
+\let\L=\ptexL\x7fL\x012245,74108
+\let\Etex=\endgroup}\x7fEtex\x012247,74124
+\gdef\lisppar{\x7flisppar\x012259,74517
+\gdef\sepspaces{\x7fsepspaces\x012265,74735
+\def\aboveenvbreak{\x7faboveenvbreak\x012268,74817
+\def\afterenvbreak{\x7fafterenvbreak\x012272,74983
+\let\nonarrowing=\relax\x7fnonarrowing\x012276,75176
+\def\ctl{\x7fctl\x012286,75494
+\def\ctr{\x7fctr\x012287,75566
+\def\cbl{\x7fcbl\x012288,75605
+\def\cbr{\x7fcbr\x012289,75645
+\def\carttop{\x7fcarttop\x012290,75684
+\def\cartbot{\x7fcartbot\x012293,75792
+\long\def\cartouche{\x7fcartouche\x012299,75932
+ \let\nonarrowing=\comment\x7fnonarrowing\x012311,76404
+\def\Ecartouche{\x7fEcartouche\x012326,76720
+\def\lisp{\x7flisp\x012338,76855
+\let\par=\lisppar\x7fpar\x012347,77184
+\def\Elisp{\x7fElisp\x012348,77202
+\let\exdent=\nofillexdent\x7fexdent\x012355,77418
+\let\nonarrowing=\relax\x7fnonarrowing\x012356,77444
+\def\next##1{\x7fnext\x012360,77528
+\let\example=\lisp\x7fexample\x012363,77551
+\def\Eexample{\x7fEexample\x012364,77570
+\let\smallexample=\lisp\x7fsmallexample\x012366,77593
+\def\Esmallexample{\x7fEsmallexample\x012367,77617
+\def\smalllispx{\x7fsmalllispx\x012373,77795
+\let\par=\lisppar\x7fpar\x012382,78131
+\def\Esmalllisp{\x7fEsmalllisp\x012383,78149
+\let\exdent=\nofillexdent\x7fexdent\x012392,78436
+\let\nonarrowing=\relax\x7fnonarrowing\x012393,78462
\obeyspaces \obeylines \ninett \indexfonts \rawbackslash\x7ffonts\x012396,78505
-\def\next##1{\x7f\next\x012397,78562
-\def\display{\x7f\display\x012401,78642
-\def\Edisplay{\x7f\Edisplay\x012410,78961
-\def\next##1{\x7f\next\x012422,79272
-\def\format{\x7f\format\x012426,79375
-\def\Eformat{\x7f\Eformat\x012434,79671
-\def\next##1{\x7f\next\x012437,79760
-\def\flushleft{\x7f\flushleft\x012441,79812
-\def\Eflushleft{\x7f\Eflushleft\x012451,80183
-\def\next##1{\x7f\next\x012454,80276
-\def\flushright{\x7f\flushright\x012456,80298
-\def\Eflushright{\x7f\Eflushright\x012466,80670
-\def\next##1{\x7f\next\x012470,80801
-\def\quotation{\x7f\quotation\x012474,80859
-\def\Equotation{\x7f\Equotation\x012480,81051
-\def\setdeffont #1 {\x7f\setdeffont\x012493,81449
+\def\next##1{\x7fnext\x012397,78562
+\def\display{\x7fdisplay\x012401,78642
+\let\par=\lisppar\x7fpar\x012409,78943
+\def\Edisplay{\x7fEdisplay\x012410,78961
+\let\exdent=\nofillexdent\x7fexdent\x012417,79180
+\let\nonarrowing=\relax\x7fnonarrowing\x012418,79206
+\def\next##1{\x7fnext\x012422,79272
+\def\format{\x7fformat\x012426,79375
+\let\par=\lisppar\x7fpar\x012433,79653
+\def\Eformat{\x7fEformat\x012434,79671
+\def\next##1{\x7fnext\x012437,79760
+\def\flushleft{\x7fflushleft\x012441,79812
+\let\par=\lisppar\x7fpar\x012450,80165
+\def\Eflushleft{\x7fEflushleft\x012451,80183
+\def\next##1{\x7fnext\x012454,80276
+\def\flushright{\x7fflushright\x012456,80298
+\let\par=\lisppar\x7fpar\x012465,80652
+\def\Eflushright{\x7fEflushright\x012466,80670
+\def\next##1{\x7fnext\x012470,80801
+\def\quotation{\x7fquotation\x012474,80859
+\def\Equotation{\x7fEquotation\x012480,81051
+\let\nonarrowing=\relax\x7fnonarrowing\x012487,81301
+\def\setdeffont #1 {\x7fsetdeffont\x012493,81449
+\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
+\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
-\def\activeparens{\x7f\activeparens\x012503,81822
-\def\opnr{\x7f\opnr\x012529,83034
-\def\lbrb{\x7f\lbrb\x012530,83099
-\def\defname #1#2{\x7f\defname\x012536,83300
+\def\activeparens{\x7factiveparens\x012503,81822
+\gdef\functionparens{\x7ffunctionparens\x012507,82016
+\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }\x7f&\x012507,82016
+\gdef\boldbrax{\x7fboldbrax\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f(\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f)\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f[\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f]\x012508,82074
+\gdef\oprm#1 {\x7foprm\x012512,82250
+\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %\x7f(\x012512,82250
+\gdef\opnested{\x7fopnested\x012516,82407
+\gdef\clrm{\x7fclrm\x012518,82466
+\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi\x7f(\x012520,82602
+\gdef\amprm#1 {\x7famprm\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f(\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f)\x012523,82769
+\gdef\normalparens{\x7fnormalparens\x012525,82822
+\gdef\normalparens{\boldbrax\let&=\ampnr}\x7f&\x012525,82822
+\def\opnr{\x7fopnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{\x7fclnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\x7fampnr\x012529,83034
+\def\lbrb{\x7flbrb\x012530,83099
+\def\lbrb{{\bf\char`\[}} \def\rbrb{\x7frbrb\x012530,83099
+\def\defname #1#2{\x7fdefname\x012536,83300
\advance\dimen2 by -\defbodyindent\x7fbodyindent\x012540,83418
\advance\dimen3 by -\defbodyindent\x7fbodyindent\x012542,83472
\setbox0=\hbox{\hskip \deflastargmargin{\x7flastargmargin\x012544,83526
+\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012544,83526
\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations\x7fargsindent\x012546,83668
\parshape 2 0in \dimen0 \defargsindent \dimen1 %\x7fargsindent\x012547,83743
\rlap{\rightline{{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012554,84112
\advance\leftskip by -\defbodyindent\x7fbodyindent\x012557,84246
\exdentamount=\defbodyindent\x7fbodyindent\x012558,84283
-\def\defparsebody #1#2#3{\x7f\defparsebody\x012568,84642
-\def#1{\x7f2572,84826
-\def#2{\x7f2573,84862
+\def\defparsebody #1#2#3{\x7fdefparsebody\x012568,84642
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\exdentamount=\defbodyindent\x7fbodyindent\x012576,85008
-\def\defmethparsebody #1#2#3#4 {\x7f\defmethparsebody\x012581,85112
-\def#1{\x7f2585,85273
-\def#2##1 {\x7f2586,85309
+\def\defmethparsebody #1#2#3#4 {\x7fdefmethparsebody\x012581,85112
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\exdentamount=\defbodyindent\x7fbodyindent\x012589,85466
-\def\defopparsebody #1#2#3#4#5 {\x7f\defopparsebody\x012592,85551
-\def#1{\x7f2596,85712
-\def#2##1 ##2 {\x7f2597,85748
+\def\defopparsebody #1#2#3#4#5 {\x7fdefopparsebody\x012592,85551
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\exdentamount=\defbodyindent\x7fbodyindent\x012601,85922
-\def\defvarparsebody #1#2#3{\x7f\defvarparsebody\x012608,86193
-\def#1{\x7f2612,86380
-\def#2{\x7f2613,86416
+\def\defvarparsebody #1#2#3{\x7fdefvarparsebody\x012608,86193
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\exdentamount=\defbodyindent\x7fbodyindent\x012616,86549
-\def\defvrparsebody #1#2#3#4 {\x7f\defvrparsebody\x012621,86640
-\def#1{\x7f2625,86799
-\def#2##1 {\x7f2626,86835
+\def\defvrparsebody #1#2#3#4 {\x7fdefvrparsebody\x012621,86640
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\exdentamount=\defbodyindent\x7fbodyindent\x012629,86979
-\def\defopvarparsebody #1#2#3#4#5 {\x7f\defopvarparsebody\x012632,87051
-\def#1{\x7f2636,87215
-\def#2##1 ##2 {\x7f2637,87251
+\def\defopvarparsebody #1#2#3#4#5 {\x7fdefopvarparsebody\x012632,87051
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\exdentamount=\defbodyindent\x7fbodyindent\x012641,87412
-\def\defunargs #1{\x7f\defunargs\x012664,88172
-\def\deftypefunargs #1{\x7f\deftypefunargs\x012676,88554
-\def\deffn{\x7f\deffn\x012690,88936
-\def\deffnheader #1#2#3{\x7f\deffnheader\x012692,88993
+\gdef\spacesplit#1#2^^M{\x7fspacesplit\x012652,87775
+\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{\x7fspacesplitfoo\x012653,87852
+\def\defunargs #1{\x7fdefunargs\x012664,88172
+\def\deftypefunargs #1{\x7fdeftypefunargs\x012676,88554
+\def\deffn{\x7fdeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7fmethparsebody\Edeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnx\deffnheader\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnheader\x012690,88936
+\def\deffnheader #1#2#3{\x7fdeffnheader\x012692,88993
\begingroup\defname {\x7fname\x012693,89041
-\def\defun{\x7f\defun\x012699,89186
-\def\defunheader #1#2{\x7f\defunheader\x012701,89239
+\begingroup\defname {#2}{#1}\defunargs{\x7funargs\x012693,89041
+\def\defun{\x7fdefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7fparsebody\Edefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funx\defunheader\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funheader\x012699,89186
+\def\defunheader #1#2{\x7fdefunheader\x012701,89239
\begingroup\defname {\x7fname\x012702,89314
\defunargs {\x7funargs\x012703,89350
-\def\deftypefun{\x7f\deftypefun\x012709,89498
-\def\deftypefunheader #1#2{\x7f\deftypefunheader\x012712,89620
-\def\deftypefunheaderx #1#2 #3\relax{\x7f\deftypefunheaderx\x012714,89729
+\def\deftypefun{\x7fdeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7fparsebody\Edeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunx\deftypefunheader\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunheader\x012709,89498
+\def\deftypefunheader #1#2{\x7fdeftypefunheader\x012712,89620
+\def\deftypefunheader #1#2{\deftypefunheaderx{\x7ftypefunheaderx\x012712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\x7fdeftypefunheaderx\x012714,89729
\begingroup\defname {\x7fname\x012716,89821
\deftypefunargs {\x7ftypefunargs\x012717,89867
-\def\deftypefn{\x7f\deftypefn\x012723,90038
-\def\deftypefnheader #1#2#3{\x7f\deftypefnheader\x012726,90187
-\def\deftypefnheaderx #1#2#3 #4\relax{\x7f\deftypefnheaderx\x012728,90323
+\def\deftypefn{\x7fdeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7fmethparsebody\Edeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnx\deftypefnheader\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnheader\x012723,90038
+\def\deftypefnheader #1#2#3{\x7fdeftypefnheader\x012726,90187
+\def\deftypefnheader #1#2#3{\deftypefnheaderx{\x7ftypefnheaderx\x012726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\x7fdeftypefnheaderx\x012728,90323
\begingroup\defname {\x7fname\x012730,90416
\deftypefunargs {\x7ftypefunargs\x012731,90456
-\def\defmac{\x7f\defmac\x012737,90577
-\def\defmacheader #1#2{\x7f\defmacheader\x012739,90634
+\def\defmac{\x7fdefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fparsebody\Edefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacx\defmacheader\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacheader\x012737,90577
+\def\defmacheader #1#2{\x7fdefmacheader\x012739,90634
\begingroup\defname {\x7fname\x012740,90710
\defunargs {\x7funargs\x012741,90743
-\def\defspec{\x7f\defspec\x012747,90867
-\def\defspecheader #1#2{\x7f\defspecheader\x012749,90928
+\def\defspec{\x7fdefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fparsebody\Edefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecx\defspecheader\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecheader\x012747,90867
+\def\defspecheader #1#2{\x7fdefspecheader\x012749,90928
\begingroup\defname {\x7fname\x012750,91005
\defunargs {\x7funargs\x012751,91045
-\def\deffnx #1 {\x7f\deffnx\x012758,91240
-\def\defunx #1 {\x7f\defunx\x012759,91297
-\def\defmacx #1 {\x7f\defmacx\x012760,91354
-\def\defspecx #1 {\x7f\defspecx\x012761,91413
-\def\deftypefnx #1 {\x7f\deftypefnx\x012762,91474
-\def\deftypeunx #1 {\x7f\deftypeunx\x012763,91539
-\def\defop #1 {\x7f\defop\x012769,91685
-\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\defopx\defopheader\defoptype\x012770,91720
-\def\defopheader #1#2#3{\x7f\defopheader\x012772,91774
+\def\deffnx #1 {\x7fdeffnx\x012758,91240
+\def\defunx #1 {\x7fdefunx\x012759,91297
+\def\defmacx #1 {\x7fdefmacx\x012760,91354
+\def\defspecx #1 {\x7fdefspecx\x012761,91413
+\def\deftypefnx #1 {\x7fdeftypefnx\x012762,91474
+\def\deftypeunx #1 {\x7fdeftypeunx\x012763,91539
+\def\defop #1 {\x7fdefop\x012769,91685
+\def\defop #1 {\def\defoptype{\x7fdefoptype\x012769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopx\defopheader\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopheader\defoptype\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7foptype\x012770,91720
+\def\defopheader #1#2#3{\x7fdefopheader\x012772,91774
\begingroup\defname {\x7fname\x012774,91863
+\begingroup\defname {#2}{\defoptype{\x7foptype\x012774,91863
\defunargs {\x7funargs\x012775,91909
-\def\defmethod{\x7f\defmethod\x012780,91970
-\def\defmethodheader #1#2#3{\x7f\defmethodheader\x012782,92043
+\def\defmethod{\x7fdefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethparsebody\Edefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodx\defmethodheader\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodheader\x012780,91970
+\def\defmethodheader #1#2#3{\x7fdefmethodheader\x012782,92043
\begingroup\defname {\x7fname\x012784,92131
\defunargs {\x7funargs\x012785,92171
-\def\defcv #1 {\x7f\defcv\x012790,92245
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype\x012791,92280
-\def\defcvarheader #1#2#3{\x7f\defcvarheader\x012793,92339
+\def\defcv #1 {\x7fdefcv\x012790,92245
+\def\defcv #1 {\def\defcvtype{\x7fdefcvtype\x012790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvx\defcvarheader\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvarheader\defcvtype\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvtype\x012791,92280
+\def\defcvarheader #1#2#3{\x7fdefcvarheader\x012793,92339
\begingroup\defname {\x7fname\x012795,92425
+\begingroup\defname {#2}{\defcvtype{\x7fcvtype\x012795,92425
\defvarargs {\x7fvarargs\x012796,92471
-\def\defivar{\x7f\defivar\x012801,92544
-\def\defivarheader #1#2#3{\x7f\defivarheader\x012803,92607
+\def\defivar{\x7fdefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fvrparsebody\Edefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarx\defivarheader\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarheader\x012801,92544
+\def\defivarheader #1#2#3{\x7fdefivarheader\x012803,92607
\begingroup\defname {\x7fname\x012805,92693
\defvarargs {\x7fvarargs\x012806,92744
-\def\defopx #1 {\x7f\defopx\x012812,92893
-\def\defmethodx #1 {\x7f\defmethodx\x012813,92950
-\def\defcvx #1 {\x7f\defcvx\x012814,93015
-\def\defivarx #1 {\x7f\defivarx\x012815,93072
-\def\defvarargs #1{\x7f\defvarargs\x012822,93343
-\def\defvr{\x7f\defvr\x012828,93487
-\def\defvrheader #1#2#3{\x7f\defvrheader\x012830,93542
+\def\defopx #1 {\x7fdefopx\x012812,92893
+\def\defmethodx #1 {\x7fdefmethodx\x012813,92950
+\def\defcvx #1 {\x7fdefcvx\x012814,93015
+\def\defivarx #1 {\x7fdefivarx\x012815,93072
+\def\defvarargs #1{\x7fdefvarargs\x012822,93343
+\def\defvr{\x7fdefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrparsebody\Edefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrx\defvrheader\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrheader\x012828,93487
+\def\defvrheader #1#2#3{\x7fdefvrheader\x012830,93542
\begingroup\defname {\x7fname\x012831,93590
-\def\defvar{\x7f\defvar\x012835,93675
-\def\defvarheader #1#2{\x7f\defvarheader\x012837,93735
+\begingroup\defname {#2}{#1}\defvarargs{\x7fvarargs\x012831,93590
+\def\defvar{\x7fdefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarparsebody\Edefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarx\defvarheader\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarheader\x012835,93675
+\def\defvarheader #1#2{\x7fdefvarheader\x012837,93735
\begingroup\defname {\x7fname\x012838,93806
\defvarargs {\x7fvarargs\x012839,93842
-\def\defopt{\x7f\defopt\x012844,93908
-\def\defoptheader #1#2{\x7f\defoptheader\x012846,93968
+\def\defopt{\x7fdefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7fvarparsebody\Edefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptx\defoptheader\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptheader\x012844,93908
+\def\defoptheader #1#2{\x7fdefoptheader\x012846,93968
\begingroup\defname {\x7fname\x012847,94039
\defvarargs {\x7fvarargs\x012848,94078
-\def\deftypevar{\x7f\deftypevar\x012853,94135
-\def\deftypevarheader #1#2{\x7f\deftypevarheader\x012856,94251
+\def\deftypevar{\x7fdeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7fvarparsebody\Edeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarx\deftypevarheader\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarheader\x012853,94135
+\def\deftypevarheader #1#2{\x7fdeftypevarheader\x012856,94251
\begingroup\defname {\x7fname\x012858,94334
-\def\deftypevr{\x7f\deftypevr\x012865,94508
-\def\deftypevrheader #1#2#3{\x7f\deftypevrheader\x012867,94579
+\def\deftypevr{\x7fdeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7fvrparsebody\Edeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrx\deftypevrheader\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrheader\x012865,94508
+\def\deftypevrheader #1#2#3{\x7fdeftypevrheader\x012867,94579
\begingroup\defname {\x7fname\x012868,94631
-\def\defvrx #1 {\x7f\defvrx\x012876,94868
-\def\defvarx #1 {\x7f\defvarx\x012877,94925
-\def\defoptx #1 {\x7f\defoptx\x012878,94984
-\def\deftypevarx #1 {\x7f\deftypevarx\x012879,95043
-\def\deftypevrx #1 {\x7f\deftypevrx\x012880,95110
-\def\deftpargs #1{\x7f\deftpargs\x012885,95259
-\def\deftp{\x7f\deftp\x012889,95339
-\def\deftpheader #1#2#3{\x7f\deftpheader\x012891,95394
+\def\defvrx #1 {\x7fdefvrx\x012876,94868
+\def\defvarx #1 {\x7fdefvarx\x012877,94925
+\def\defoptx #1 {\x7fdefoptx\x012878,94984
+\def\deftypevarx #1 {\x7fdeftypevarx\x012879,95043
+\def\deftypevrx #1 {\x7fdeftypevrx\x012880,95110
+\def\deftpargs #1{\x7fdeftpargs\x012885,95259
+\def\deftpargs #1{\bf \defvarargs{\x7fvarargs\x012885,95259
+\def\deftp{\x7fdeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7fvrparsebody\Edeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpx\deftpheader\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpheader\x012889,95339
+\def\deftpheader #1#2#3{\x7fdeftpheader\x012891,95394
\begingroup\defname {\x7fname\x012892,95442
-\def\deftpx #1 {\x7f\deftpx\x012897,95601
-\def\setref#1{\x7f\setref\x012908,95922
-\def\unnumbsetref#1{\x7f\unnumbsetref\x012913,96036
-\def\appendixsetref#1{\x7f\appendixsetref\x012918,96143
-\def\pxref#1{\x7f\pxref\x012929,96554
-\def\xref#1{\x7f\xref\x012930,96590
-\def\ref#1{\x7f\ref\x012931,96625
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7f\xrefX[\x012932,96655
-\def\printedmanual{\x7f\printedmanual\x012933,96698
-\def\printednodename{\x7f\printednodename\x012934,96736
-\def\printednodename{\x7f\printednodename\x012939,96861
-section ``\printednodename'' in \cite{\printedmanual}\x7f\printedmanual\x012954,97493
+\begingroup\defname {#2}{#1}\deftpargs{\x7ftpargs\x012892,95442
+\def\deftpx #1 {\x7fdeftpx\x012897,95601
+\def\setref#1{\x7fsetref\x012908,95922
+\def\unnumbsetref#1{\x7funnumbsetref\x012913,96036
+\def\appendixsetref#1{\x7fappendixsetref\x012918,96143
+\def\pxref#1{\x7fpxref\x012929,96554
+\def\xref#1{\x7fxref\x012930,96590
+\def\ref#1{\x7fref\x012931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7fxrefX\x012932,96655
+\def\printedmanual{\x7fprintedmanual\x012933,96698
+\def\printednodename{\x7fprintednodename\x012934,96736
+\def\printednodename{\x7fprintednodename\x012939,96861
+section ``\printednodename'' in \cite{\printedmanual}\x7fprintedmanual\x012954,97493
\refx{\x7fx\x012957,97571
-\def\dosetq #1#2{\x7f\dosetq\x012965,97791
-\def\internalsetq #1#2{\x7f\internalsetq\x012973,98049
-\def\Ypagenumber{\x7f\Ypagenumber\x012977,98150
-\def\Ytitle{\x7f\Ytitle\x012979,98176
-\def\Ynothing{\x7f\Ynothing\x012981,98203
-\def\Ysectionnumberandtype{\x7f\Ysectionnumberandtype\x012983,98220
-\def\Yappendixletterandtype{\x7f\Yappendixletterandtype\x012992,98536
+\refx{#1-snt}{} [\printednodename], page\tie\refx{\x7fx\x012957,97571
+\def\dosetq #1#2{\x7fdosetq\x012965,97791
+\def\dosetq #1#2{{\let\folio=0 \turnoffactive%\x7ffolio\x012965,97791
+\edef\next{\x7fnext\x012966,97838
+\def\internalsetq #1#2{\x7finternalsetq\x012973,98049
+\def\Ypagenumber{\x7fYpagenumber\x012977,98150
+\def\Ytitle{\x7fYtitle\x012979,98176
+\def\Ynothing{\x7fYnothing\x012981,98203
+\def\Ysectionnumberandtype{\x7fYsectionnumberandtype\x012983,98220
+\def\Yappendixletterandtype{\x7fYappendixletterandtype\x012992,98536
\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{\x7fno\x012993,98566
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\secno\x012994,98621
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\secno.\the\subsecno\x012996,98725
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\secno.\the\subsecno.\the\subsubsecno\x012998,98796
- \def\linenumber{\x7f\linenumber\x013009,99135
-\def\refx#1#2{\x7f\refx\x013015,99319
-\def\xrdef #1#2{\x7f\xrdef\x013037,99945
-\def\readauxfile{\x7f\readauxfile\x013040,100030
-\def\supereject{\x7f\supereject\x013110,101811
-\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\textindent\x013131,102496
-\def\openindices{\x7f\openindices\x013139,102682
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\x012994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\x012996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\x012998,98796
+\gdef\xreftie{\x7fxreftie\x013001,98891
+ \let\linenumber = \empty % Non-3.0.\x7flinenumber\x013007,99091
+ \def\linenumber{\x7flinenumber\x013009,99135
+\def\refx#1#2{\x7frefx\x013015,99319
+\def\xrdef #1#2{\x7fxrdef\x013037,99945
+{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {\x7fcsname\x013038,99962
+\def\readauxfile{\x7freadauxfile\x013040,100030
+\def\supereject{\x7fsupereject\x013110,101811
+\let\footnotestyle=\comment\x7ffootnotestyle\x013113,101918
+\let\ptexfootnote=\footnote\x7fptexfootnote\x013115,101947
+\long\gdef\footnote #1{\x7ffootnote\x013118,101993
+\edef\thisfootno{\x7fthisfootno\x013120,102060
+\let\@sf\empty\x7f@sf\x013121,102100
+\ifhmode\edef\@sf{\x7f@sf\x013122,102115
+\long\gdef\footnotezzz #1{\x7ffootnotezzz\x013126,102228
+\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\x013131,102496
+\def\openindices{\x7fopenindices\x013139,102682
+\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\parindent = \defaultparindent\x7faultparindent\x013152,102959
-\def\smallbook{\x7f\smallbook\x013175,103683
-\global\def\Esmallexample{\x7f\Esmallexample\x013192,104110
-\def\afourpaper{\x7f\afourpaper\x013196,104201
-\def\finalout{\x7f\finalout\x013224,105009
-\def\normaldoublequote{\x7f\normaldoublequote\x013235,105270
-\def\normaltilde{\x7f\normaltilde\x013236,105296
-\def\normalcaret{\x7f\normalcaret\x013237,105316
-\def\normalunderscore{\x7f\normalunderscore\x013238,105336
-\def\normalverticalbar{\x7f\normalverticalbar\x013239,105361
-\def\normalless{\x7f\normalless\x013240,105387
-\def\normalgreater{\x7f\normalgreater\x013241,105406
-\def\normalplus{\x7f\normalplus\x013242,105428
-\def\ifusingtt#1#2{\x7f\ifusingtt\x013253,105920
-\def\activedoublequote{\x7f\activedoublequote\x013261,106248
+\def\smallbook{\x7fsmallbook\x013175,103683
+\global\let\smalllisp=\smalllispx\x7fsmalllisp\x013190,104039
+\global\let\smallexample=\smalllispx\x7fsmallexample\x013191,104073
+\global\def\Esmallexample{\x7fEsmallexample\x013192,104110
+\def\afourpaper{\x7fafourpaper\x013196,104201
+\def\finalout{\x7ffinalout\x013224,105009
+\def\normaldoublequote{\x7fnormaldoublequote\x013235,105270
+\def\normaltilde{\x7fnormaltilde\x013236,105296
+\def\normalcaret{\x7fnormalcaret\x013237,105316
+\def\normalunderscore{\x7fnormalunderscore\x013238,105336
+\def\normalverticalbar{\x7fnormalverticalbar\x013239,105361
+\def\normalless{\x7fnormalless\x013240,105387
+\def\normalgreater{\x7fnormalgreater\x013241,105406
+\def\normalplus{\x7fnormalplus\x013242,105428
+\def\ifusingtt#1#2{\x7fifusingtt\x013253,105920
+\def\activedoublequote{\x7factivedoublequote\x013261,106248
+\let"=\activedoublequote\x7f"\x013262,106289
\def~{\x7f~\x013264,106334
\def^{\x7f^\x013267,106395
\def_{\x7f_\x013270,106434
-\def\_{\x7f\_\x013272,106508
-\def\lvvmode{\x7f\lvvmode\x013279,106845
+\def\_{\x7f_\x013272,106508
+\def\lvvmode{\x7flvvmode\x013279,106845
\def|{\x7f|\x013282,106895
\def<{\x7f<\x013285,106958
\def>{\x7f>\x013288,107015
\def+{\x7f+\x013290,107053
-\def\turnoffactive{\x7f\turnoffactive\x013296,107214
+\def\turnoffactive{\x7fturnoffactive\x013296,107214
+\def\turnoffactive{\let"=\normaldoublequote\x7f"\x013296,107214
+\let~=\normaltilde\x7f~\x013297,107258
+\let^=\normalcaret\x7f^\x013298,107277
+\let_=\normalunderscore\x7f_\x013299,107296
+\let|=\normalverticalbar\x7f|\x013300,107320
+\let<=\normalless\x7f<\x013301,107345
+\let>=\normalgreater\x7f>\x013302,107363
+\let+=\normalplus}\x7f+\x013303,107384
\global\def={\x7f=\x013307,107500
-\def\normalbackslash{\x7f\normalbackslash\x013321,107882
+\def\normalbackslash{\x7fnormalbackslash\x013321,107882
\f
merc-src/accumulator.m,3228
:- interface\x7f146,5371
diff --git a/test/manual/etags/ETAGS.good_5 b/test/manual/etags/ETAGS.good_5
index 3e238a50f38..26385943f2d 100644
--- a/test/manual/etags/ETAGS.good_5
+++ b/test/manual/etags/ETAGS.good_5
@@ -4290,8 +4290,8 @@ scm-src/test.scm,260
(define (((((curry-test \x7f14,205
(define-syntax test-begin\x7f17,265
\f
-tex-src/testenv.tex,52
-\newcommand{\nm}\x7f\nm\x014,77
+tex-src/testenv.tex,51
+\newcommand{\nm}\x7fnm\x014,77
\section{blah}\x7fblah\x018,139
\f
tex-src/gzip.texi,303
@@ -4306,722 +4306,1142 @@ tex-src/gzip.texi,303
@node Problems,\x7f460,16769
@node Concept Index,\x7fConcept Index\x01473,17289
\f
-tex-src/texinfo.tex,30627
-\def\texinfoversion{\x7f\texinfoversion\x0126,1035
-\def\tie{\x7f\tie\x0149,1526
-\def\gloggingall{\x7f\gloggingall\x0172,2276
-\def\loggingall{\x7f\loggingall\x0173,2345
-\def\onepageout#1{\x7f\onepageout\x0199,3282
-\def\croppageout#1{\x7f\croppageout\x01115,4032
-\def\cropmarks{\x7f\cropmarks\x01142,5092
-\def\pagebody#1{\x7f\pagebody\x01144,5139
-\def\ewtop{\x7f\ewtop\x01157,5594
-\def\nstop{\x7f\nstop\x01158,5658
-\def\ewbot{\x7f\ewbot\x01160,5741
-\def\nsbot{\x7f\nsbot\x01161,5805
-\def\parsearg #1{\x7f\parsearg\x01170,6104
-\def\parseargx{\x7f\parseargx\x01172,6182
-\def\parseargline{\x7f\parseargline\x01182,6422
-\def\flushcr{\x7f\flushcr\x01186,6543
-\newif\ifENV \ENVfalse \def\inENV{\x7f\inENV\x01190,6742
-\def\ENVcheck{\x7f\ENVcheck\x01191,6806
-\outer\def\begin{\x7f\begin\x01198,7053
-\def\beginxxx #1{\x7f\beginxxx\x01200,7091
-\def\end{\x7f\end\x01208,7346
-\def\endxxx #1{\x7f\endxxx\x01210,7374
-\def\errorE#1{\x7f\errorE\x01216,7563
-\def\singlespace{\x7f\singlespace\x01222,7757
-\def\@{\x7f\@\x01232,7980
-\def\`{\x7f\`\x01236,8080
-\def\'{\x7f\'\x01237,8092
-\def\mylbrace {\x7f\mylbrace\x01241,8140
-\def\myrbrace {\x7f\myrbrace\x01242,8173
-\def\:{\x7f\:\x01247,8287
-\def\*{\x7f\*\x01250,8341
-\def\.{\x7f\.\x01253,8417
-\def\w#1{\x7f\w\x01258,8648
-\def\group{\x7f\group\x01268,9131
- \def\Egroup{\x7f\Egroup\x01273,9295
-\def\need{\x7f\need\x01289,9737
-\def\needx#1{\x7f\needx\x01300,10014
-\def\dots{\x7f\dots\x01339,11400
-\def\page{\x7f\page\x01343,11464
-\def\exdent{\x7f\exdent\x01353,11791
-\def\exdentyyy #1{\x7f\exdentyyy\x01354,11824
-\def\nofillexdent{\x7f\nofillexdent\x01357,11968
-\def\nofillexdentyyy #1{\x7f\nofillexdentyyy\x01358,12013
-\def\include{\x7f\include\x01365,12197
-\def\includezzz #1{\x7f\includezzz\x01366,12232
-\def\thisfile{\x7f\thisfile\x01369,12283
-\def\center{\x7f\center\x01373,12346
-\def\centerzzz #1{\x7f\centerzzz\x01374,12379
-\def\sp{\x7f\sp\x01380,12521
-\def\spxxx #1{\x7f\spxxx\x01381,12546
-\def\comment{\x7f\comment\x01387,12720
-\def\commentxxx #1{\x7f\commentxxx\x01390,12817
-\def\ignoresections{\x7f\ignoresections\x01396,12986
-\let\chapter=\relax\x7f=\relax\x01397,13008
-\let\section=\relax\x7f=\relax\x01406,13253
-\let\subsection=\relax\x7f=\relax\x01409,13314
-\let\subsubsection=\relax\x7f=\relax\x01410,13337
-\let\appendix=\relax\x7f=\relax\x01411,13363
-\let\appendixsec=\relax\x7fsec=\relax\x01412,13384
-\let\appendixsection=\relax\x7fsection=\relax\x01413,13408
-\let\appendixsubsec=\relax\x7fsubsec=\relax\x01414,13436
-\let\appendixsubsection=\relax\x7fsubsection=\relax\x01415,13463
-\let\appendixsubsubsec=\relax\x7fsubsubsec=\relax\x01416,13494
-\let\appendixsubsubsection=\relax\x7fsubsubsection=\relax\x01417,13524
-\def\ignore{\x7f\ignore\x01423,13626
-\long\def\ignorexxx #1\end ignore{\x7f\ignorexxx\x01427,13766
-\def\direntry{\x7f\direntry\x01429,13825
-\long\def\direntryxxx #1\end direntry{\x7f\direntryxxx\x01430,13864
-\def\ifset{\x7f\ifset\x01434,13974
-\def\ifsetxxx #1{\x7f\ifsetxxx\x01436,14032
-\def\Eifset{\x7f\Eifset\x01440,14159
-\def\ifsetfail{\x7f\ifsetfail\x01441,14173
-\long\def\ifsetfailxxx #1\end ifset{\x7f\ifsetfailxxx\x01442,14229
-\def\ifclear{\x7f\ifclear\x01444,14290
-\def\ifclearxxx #1{\x7f\ifclearxxx\x01446,14352
-\def\Eifclear{\x7f\Eifclear\x01450,14483
-\def\ifclearfail{\x7f\ifclearfail\x01451,14499
-\long\def\ifclearfailxxx #1\end ifclear{\x7f\ifclearfailxxx\x01452,14559
-\def\set{\x7f\set\x01456,14710
-\def\setxxx #1{\x7f\setxxx\x01457,14737
-\def\clear{\x7f\clear\x01460,14799
-\def\clearxxx #1{\x7f\clearxxx\x01461,14830
-\def\iftex{\x7f\iftex\x01466,14947
-\def\Eiftex{\x7f\Eiftex\x01467,14960
-\def\ifinfo{\x7f\ifinfo\x01468,14974
-\long\def\ifinfoxxx #1\end ifinfo{\x7f\ifinfoxxx\x01469,15024
-\long\def\menu #1\end menu{\x7f\menu\x01471,15083
-\def\asis#1{\x7f\asis\x01472,15112
-\def\math#1{\x7f\math\x01485,15655
-\def\node{\x7f\node\x01487,15699
-\def\nodezzz#1{\x7f\nodezzz\x01488,15737
-\def\nodexxx[#1,#2]{\x7f\nodexxx[\x01489,15768
-\def\donoderef{\x7f\donoderef\x01492,15830
-\def\unnumbnoderef{\x7f\unnumbnoderef\x01496,15951
-\def\appendixnoderef{\x7f\appendixnoderef\x01500,16082
+tex-src/texinfo.tex,55236
+\def\texinfoversion{\x7ftexinfoversion\x0126,1035
+\let\ptexlbrace=\{\x7fptexlbrace\x0135,1308
+\let\ptexrbrace=\}\x7fptexrbrace\x0136,1327
+\let\ptexdots=\dots\x7fptexdots\x0137,1346
+\let\ptexdot=\.\x7fptexdot\x0138,1366
+\let\ptexstar=\*\x7fptexstar\x0139,1382
+\let\ptexend=\end\x7fptexend\x0140,1399
+\let\ptexbullet=\bullet\x7fptexbullet\x0141,1417
+\let\ptexb=\b\x7fptexb\x0142,1441
+\let\ptexc=\c\x7fptexc\x0143,1455
+\let\ptexi=\i\x7fptexi\x0144,1469
+\let\ptext=\t\x7fptext\x0145,1483
+\let\ptexl=\l\x7fptexl\x0146,1497
+\let\ptexL=\L\x7fptexL\x0147,1511
+\def\tie{\x7ftie\x0149,1526
+\def\gloggingall{\x7fgloggingall\x0172,2276
+\def\loggingall{\x7floggingall\x0173,2345
+\def\onepageout#1{\x7fonepageout\x0199,3282
+\shipout\vbox{{\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01103,3489
+{\let\hsize=\pagewidth \makefootline}\x7fhsize\x01104,3556
+\def\croppageout#1{\x7fcroppageout\x01115,4032
+ {\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01126,4511
+ {\let\hsize=\pagewidth \makefootline}\x7fhsize\x01128,4569
+\def\cropmarks{\x7fcropmarks\x01142,5092
+\def\cropmarks{\let\onepageout=\croppageout }\x7fonepageout\x01142,5092
+\def\pagebody#1{\x7fpagebody\x01144,5139
+\gdef\pagecontents#1{\x7fpagecontents\x01146,5220
+\def\ewtop{\x7fewtop\x01157,5594
+\def\nstop{\x7fnstop\x01158,5658
+\def\ewbot{\x7fewbot\x01160,5741
+\def\nsbot{\x7fnsbot\x01161,5805
+\def\parsearg #1{\x7fparsearg\x01170,6104
+\def\parsearg #1{\let\next=#1\begingroup\obeylines\futurelet\temp\parseargx}\x7fnext\x01170,6104
+\def\parseargx{\x7fparseargx\x01172,6182
+\gdef\parseargdiscardspace {\x7fparseargdiscardspace\x01178,6321
+\gdef\obeyedspace{\x7fobeyedspace\x01180,6399
+\def\parseargline{\x7fparseargline\x01182,6422
+\gdef\parsearglinex #1^^M{\x7fparsearglinex\x01184,6493
+\def\flushcr{\x7fflushcr\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{\x7fnext\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}\x7fnext\x01186,6543
+\newif\ifENV \ENVfalse \def\inENV{\x7finENV\x01190,6742
+\def\ENVcheck{\x7fENVcheck\x01191,6806
+\outer\def\begin{\x7fbegin\x01198,7053
+\def\beginxxx #1{\x7fbeginxxx\x01200,7091
+\def\end{\x7fend\x01208,7346
+\def\endxxx #1{\x7fendxxx\x01210,7374
+\def\errorE#1{\x7ferrorE\x01216,7563
+\def\singlespace{\x7fsinglespace\x01222,7757
+\def\@{\x7f@\x01232,7980
+\def\`{\x7f`\x01236,8080
+\def\'{\x7f'\x01237,8092
+\def\mylbrace {\x7fmylbrace\x01241,8140
+\def\myrbrace {\x7fmyrbrace\x01242,8173
+\let\{=\mylbrace\x7f{\x01243,8206
+\let\}=\myrbrace\x7f}\x01244,8223
+\def\:{\x7f:\x01247,8287
+\def\*{\x7f*\x01250,8341
+\def\.{\x7f.\x01253,8417
+\def\w#1{\x7fw\x01258,8648
+\def\group{\x7fgroup\x01268,9131
+ \def\Egroup{\x7fEgroup\x01273,9295
+\def\need{\x7fneed\x01289,9737
+\def\needx#1{\x7fneedx\x01300,10014
+\let\br = \par\x7fbr\x01335,11355
+\def\dots{\x7fdots\x01339,11400
+\def\page{\x7fpage\x01343,11464
+\def\exdent{\x7fexdent\x01353,11791
+\def\exdentyyy #1{\x7fexdentyyy\x01354,11824
+\def\nofillexdent{\x7fnofillexdent\x01357,11968
+\def\nofillexdentyyy #1{\x7fnofillexdentyyy\x01358,12013
+\def\include{\x7finclude\x01365,12197
+\def\includezzz #1{\x7fincludezzz\x01366,12232
+\def\includezzz #1{{\def\thisfile{\x7fthisfile\x01366,12232
+\def\thisfile{\x7fthisfile\x01369,12283
+\def\center{\x7fcenter\x01373,12346
+\def\centerzzz #1{\x7fcenterzzz\x01374,12379
+\def\sp{\x7fsp\x01380,12521
+\def\spxxx #1{\x7fspxxx\x01381,12546
+\def\comment{\x7fcomment\x01387,12720
+\def\commentxxx #1{\x7fcommentxxx\x01390,12817
+\let\c=\comment\x7fc\x01392,12883
+\def\ignoresections{\x7fignoresections\x01396,12986
+\let\chapter=\relax\x7fchapter\x01397,13008
+\let\unnumbered=\relax\x7funnumbered\x01398,13028
+\let\top=\relax\x7ftop\x01399,13051
+\let\unnumberedsec=\relax\x7funnumberedsec\x01400,13067
+\let\unnumberedsection=\relax\x7funnumberedsection\x01401,13093
+\let\unnumberedsubsec=\relax\x7funnumberedsubsec\x01402,13123
+\let\unnumberedsubsection=\relax\x7funnumberedsubsection\x01403,13152
+\let\unnumberedsubsubsec=\relax\x7funnumberedsubsubsec\x01404,13185
+\let\unnumberedsubsubsection=\relax\x7funnumberedsubsubsection\x01405,13217
+\let\section=\relax\x7fsection\x01406,13253
+\let\subsec=\relax\x7fsubsec\x01407,13273
+\let\subsubsec=\relax\x7fsubsubsec\x01408,13292
+\let\subsection=\relax\x7fsubsection\x01409,13314
+\let\subsubsection=\relax\x7fsubsubsection\x01410,13337
+\let\appendix=\relax\x7fappendix\x01411,13363
+\let\appendixsec=\relax\x7fappendixsec\x01412,13384
+\let\appendixsection=\relax\x7fappendixsection\x01413,13408
+\let\appendixsubsec=\relax\x7fappendixsubsec\x01414,13436
+\let\appendixsubsection=\relax\x7fappendixsubsection\x01415,13463
+\let\appendixsubsubsec=\relax\x7fappendixsubsubsec\x01416,13494
+\let\appendixsubsubsection=\relax\x7fappendixsubsubsection\x01417,13524
+\let\contents=\relax\x7fcontents\x01418,13558
+\let\smallbook=\relax\x7fsmallbook\x01419,13579
+\let\titlepage=\relax\x7ftitlepage\x01420,13601
+\def\ignore{\x7fignore\x01423,13626
+\long\def\ignorexxx #1\end ignore{\x7fignorexxx\x01427,13766
+\def\direntry{\x7fdirentry\x01429,13825
+\long\def\direntryxxx #1\end direntry{\x7fdirentryxxx\x01430,13864
+\def\ifset{\x7fifset\x01434,13974
+\def\ifsetxxx #1{\x7fifsetxxx\x01436,14032
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\ifsetfail\x7ftemp\x01437,14059
+\else \let\temp=\relax \fi\x7ftemp\x01438,14125
+\def\Eifset{\x7fEifset\x01440,14159
+\def\ifsetfail{\x7fifsetfail\x01441,14173
+\long\def\ifsetfailxxx #1\end ifset{\x7fifsetfailxxx\x01442,14229
+\def\ifclear{\x7fifclear\x01444,14290
+\def\ifclearxxx #1{\x7fifclearxxx\x01446,14352
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\relax\x7ftemp\x01447,14381
+\else \let\temp=\ifclearfail \fi\x7ftemp\x01448,14443
+\def\Eifclear{\x7fEifclear\x01450,14483
+\def\ifclearfail{\x7fifclearfail\x01451,14499
+\long\def\ifclearfailxxx #1\end ifclear{\x7fifclearfailxxx\x01452,14559
+\def\set{\x7fset\x01456,14710
+\def\setxxx #1{\x7fsetxxx\x01457,14737
+\expandafter\let\csname IF#1\endcsname=\set}\x7fcsname\x01458,14753
+\def\clear{\x7fclear\x01460,14799
+\def\clearxxx #1{\x7fclearxxx\x01461,14830
+\expandafter\let\csname IF#1\endcsname=\relax}\x7fcsname\x01462,14848
+\def\iftex{\x7fiftex\x01466,14947
+\def\Eiftex{\x7fEiftex\x01467,14960
+\def\ifinfo{\x7fifinfo\x01468,14974
+\long\def\ifinfoxxx #1\end ifinfo{\x7fifinfoxxx\x01469,15024
+\long\def\menu #1\end menu{\x7fmenu\x01471,15083
+\def\asis#1{\x7fasis\x01472,15112
+\let\implicitmath = $\x7fimplicitmath\x01484,15633
+\def\math#1{\x7fmath\x01485,15655
+\def\node{\x7fnode\x01487,15699
+\def\nodezzz#1{\x7fnodezzz\x01488,15737
+\def\nodexxx[#1,#2]{\x7fnodexxx\x01489,15768
+\def\nodexxx[#1,#2]{\gdef\lastnode{\x7flastnode\x01489,15768
+\let\lastnode=\relax\x7flastnode\x01490,15808
+\def\donoderef{\x7fdonoderef\x01492,15830
+\let\lastnode=\relax}\x7flastnode\x01494,15928
+\def\unnumbnoderef{\x7funnumbnoderef\x01496,15951
+\let\lastnode=\relax}\x7flastnode\x01498,16059
+\def\appendixnoderef{\x7fappendixnoderef\x01500,16082
\expandafter\expandafter\expandafter\appendixsetref{\x7fsetref\x01501,16128
-\let\refill=\relax\x7fill=\relax\x01504,16217
-\def\setfilename{\x7f\setfilename\x01509,16431
-\outer\def\bye{\x7f\bye\x01518,16677
-\def\inforef #1{\x7f\inforef\x01520,16733
-\def\inforefzzz #1,#2,#3,#4**{\x7f\inforefzzz\x01521,16771
-\def\losespace #1{\x7f\losespace\x01523,16868
-\def\sf{\x7f\sf\x01532,17072
-\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf=cmbx10\x01558,17867
-\font\deftt=cmtt10 scaled \magstep1\x7ftt=cmtt10\x01559,17913
-\def\df{\x7f\df\x01560,17949
-\def\resetmathfonts{\x7f\resetmathfonts\x01635,20543
-\def\textfonts{\x7f\textfonts\x01648,21132
-\def\chapfonts{\x7f\chapfonts\x01653,21347
-\def\secfonts{\x7f\secfonts\x01658,21563
-\def\subsecfonts{\x7f\subsecfonts\x01663,21768
-\def\indexfonts{\x7f\indexfonts\x01668,21985
-\def\smartitalicx{\x7f\smartitalicx\x01691,22717
-\def\smartitalic#1{\x7f\smartitalic\x01692,22793
-\let\cite=\smartitalic\x7f=\smartitalic\x01698,22938
-\def\b#1{\x7f\b\x01700,22962
-\def\t#1{\x7f\t\x01703,22997
-\def\samp #1{\x7f\samp\x01706,23149
-\def\key #1{\x7f\key\x01707,23182
-\def\ctrl #1{\x7f\ctrl\x01708,23243
-\def\tclose#1{\x7f\tclose\x01716,23445
-\def\ {\x7f\\x01720,23611
-\def\xkey{\x7f\xkey\x01728,23880
-\def\kbdfoo#1#2#3\par{\x7f\kbdfoo\x01729,23896
-\def\dmn#1{\x7f\dmn\x01738,24197
-\def\kbd#1{\x7f\kbd\x01740,24224
-\def\l#1{\x7f\l\x01742,24281
-\def\r#1{\x7f\r\x01744,24310
-\def\sc#1{\x7f\sc\x01746,24378
-\def\ii#1{\x7f\ii\x01747,24421
-\def\titlefont#1{\x7f\titlefont\x01755,24654
-\def\titlepage{\x7f\titlepage\x01761,24757
- \def\subtitlefont{\x7f\subtitlefont\x01766,24984
- \def\authorfont{\x7f\authorfont\x01768,25068
- \def\title{\x7f\title\x01774,25278
- \def\titlezzz##1{\x7f\titlezzz\x01775,25313
- \def\subtitle{\x7f\subtitle\x01783,25628
- \def\subtitlezzz##1{\x7f\subtitlezzz\x01784,25669
- \def\author{\x7f\author\x01787,25787
- \def\authorzzz##1{\x7f\authorzzz\x01788,25824
- \def\page{\x7f\page\x01794,26115
-\def\Etitlepage{\x7f\Etitlepage\x01804,26284
-\def\finishtitlepage{\x7f\finishtitlepage\x01817,26672
-\def\evenheading{\x7f\evenheading\x01846,27680
-\def\oddheading{\x7f\oddheading\x01847,27723
-\def\everyheading{\x7f\everyheading\x01848,27764
-\def\evenfooting{\x7f\evenfooting\x01850,27810
-\def\oddfooting{\x7f\oddfooting\x01851,27853
-\def\everyfooting{\x7f\everyfooting\x01852,27894
-\def\headings #1 {\x7f\headings\x01893,29586
-\def\HEADINGSoff{\x7f\HEADINGSoff\x01895,29635
-\def\HEADINGSdouble{\x7f\HEADINGSdouble\x01904,30062
-\def\HEADINGSsingle{\x7f\HEADINGSsingle\x01914,30382
-\def\HEADINGSon{\x7f\HEADINGSon\x01922,30603
-\def\HEADINGSafter{\x7f\HEADINGSafter\x01924,30637
-\def\HEADINGSdoublex{\x7f\HEADINGSdoublex\x01926,30732
-\def\HEADINGSsingleafter{\x7f\HEADINGSsingleafter\x01933,30920
-\def\HEADINGSsinglex{\x7f\HEADINGSsinglex\x01934,30981
-\def\today{\x7f\today\x01943,31256
-\def\thistitle{\x7f\thistitle\x01958,31801
-\def\settitle{\x7f\settitle\x01959,31826
-\def\settitlezzz #1{\x7f\settitlezzz\x01960,31863
-\def\internalBitem{\x7f\internalBitem\x01992,32793
-\def\internalBitemx{\x7f\internalBitemx\x01993,32843
-\def\internalBxitem "#1"{\x7f\internalBxitem\x01995,32888
-\def\internalBxitemx "#1"{\x7f\internalBxitemx\x01996,32968
-\def\internalBkitem{\x7f\internalBkitem\x01998,33043
-\def\internalBkitemx{\x7f\internalBkitemx\x01999,33095
-\def\kitemzzz #1{\x7f\kitemzzz\x011001,33142
-\def\xitemzzz #1{\x7f\xitemzzz\x011004,33244
-\def\itemzzz #1{\x7f\itemzzz\x011007,33347
-\def\item{\x7f\item\x011037,34418
-\def\itemx{\x7f\itemx\x011038,34469
-\def\kitem{\x7f\kitem\x011039,34522
-\def\kitemx{\x7f\kitemx\x011040,34575
-\def\xitem{\x7f\xitem\x011041,34630
-\def\xitemx{\x7f\xitemx\x011042,34683
-\def\description{\x7f\description\x011045,34793
-\def\table{\x7f\table\x011047,34843
-\def\ftable{\x7f\ftable\x011052,34987
-\def\Eftable{\x7f\Eftable\x011056,35133
-\def\vtable{\x7f\vtable\x011059,35202
-\def\Evtable{\x7f\Evtable\x011063,35348
-\def\dontindex #1{\x7f\dontindex\x011066,35417
-\def\fnitemindex #1{\x7f\fnitemindex\x011067,35437
-\def\vritemindex #1{\x7f\vritemindex\x011068,35482
-\def\tablez #1#2#3#4#5#6{\x7f\tablez\x011074,35631
-\def\Edescription{\x7f\Edescription\x011077,35689
-\def\itemfont{\x7f\itemfont\x011082,35890
-\def\Etable{\x7f\Etable\x011090,36116
-\def\itemize{\x7f\itemize\x011103,36440
-\def\itemizezzz #1{\x7f\itemizezzz\x011105,36476
-\def\itemizey #1#2{\x7f\itemizey\x011110,36571
-\def#2{\x7f1119,36817
-\def\itemcontents{\x7f\itemcontents\x011120,36858
-\def\bullet{\x7f\bullet\x011123,36906
-\def\minus{\x7f\minus\x011124,36933
-\def\frenchspacing{\x7f\frenchspacing\x011128,37041
-\def\splitoff#1#2\endmark{\x7f\splitoff\x011134,37266
-\def\enumerate{\x7f\enumerate\x011140,37496
-\def\enumeratezzz #1{\x7f\enumeratezzz\x011141,37535
-\def\enumeratey #1 #2\endenumeratey{\x7f\enumeratey\x011142,37588
- \def\thearg{\x7f\thearg\x011146,37735
- \ifx\thearg\empty \def\thearg{\x7f\thearg\x011147,37754
-\def\numericenumerate{\x7f\numericenumerate\x011184,39088
-\def\lowercaseenumerate{\x7f\lowercaseenumerate\x011190,39218
-\def\uppercaseenumerate{\x7f\uppercaseenumerate\x011203,39565
-\def\startenumeration#1{\x7f\startenumeration\x011219,40055
-\def\alphaenumerate{\x7f\alphaenumerate\x011227,40237
-\def\capsenumerate{\x7f\capsenumerate\x011228,40272
-\def\Ealphaenumerate{\x7f\Ealphaenumerate\x011229,40306
-\def\Ecapsenumerate{\x7f\Ecapsenumerate\x011230,40340
-\def\itemizeitem{\x7f\itemizeitem\x011234,40420
-\def\newindex #1{\x7f\newindex\x011259,41277
-\def\defindex{\x7f\defindex\x011268,41566
-\def\newcodeindex #1{\x7f\newcodeindex\x011272,41674
-\def\defcodeindex{\x7f\defcodeindex\x011279,41934
-\def\synindex #1 #2 {\x7f\synindex\x011283,42114
-\def\syncodeindex #1 #2 {\x7f\syncodeindex\x011292,42454
-\def\doindex#1{\x7f\doindex\x011309,43133
-\def\singleindexer #1{\x7f\singleindexer\x011310,43192
-\def\docodeindex#1{\x7f\docodeindex\x011313,43304
-\def\singlecodeindexer #1{\x7f\singlecodeindexer\x011314,43371
-\def\indexdummies{\x7f\indexdummies\x011316,43429
-\def\_{\x7f\_\x011317,43449
-\def\w{\x7f\w\x011318,43477
-\def\bf{\x7f\bf\x011319,43504
-\def\rm{\x7f\rm\x011320,43533
-\def\sl{\x7f\sl\x011321,43562
-\def\sf{\x7f\sf\x011322,43591
-\def\tt{\x7f\tt\x011323,43619
-\def\gtr{\x7f\gtr\x011324,43647
-\def\less{\x7f\less\x011325,43677
-\def\hat{\x7f\hat\x011326,43709
-\def\char{\x7f\char\x011327,43739
-\def\TeX{\x7f\TeX\x011328,43771
-\def\dots{\x7f\dots\x011329,43801
-\def\copyright{\x7f\copyright\x011330,43834
-\def\tclose##1{\x7f\tclose\x011331,43877
-\def\code##1{\x7f\code\x011332,43922
-\def\samp##1{\x7f\samp\x011333,43963
-\def\t##1{\x7f\t\x011334,44004
-\def\r##1{\x7f\r\x011335,44039
-\def\i##1{\x7f\i\x011336,44074
-\def\b##1{\x7f\b\x011337,44109
-\def\cite##1{\x7f\cite\x011338,44144
-\def\key##1{\x7f\key\x011339,44185
-\def\file##1{\x7f\file\x011340,44224
-\def\var##1{\x7f\var\x011341,44265
-\def\kbd##1{\x7f\kbd\x011342,44304
-\def\indexdummyfont#1{\x7f\indexdummyfont\x011347,44460
-\def\indexdummytex{\x7f\indexdummytex\x011348,44486
-\def\indexdummydots{\x7f\indexdummydots\x011349,44510
-\def\indexnofonts{\x7f\indexnofonts\x011351,44536
+\let\lastnode=\relax}\x7flastnode\x01502,16194
+\let\refill=\relax\x7frefill\x01504,16217
+\def\setfilename{\x7fsetfilename\x01509,16431
+ \global\let\setfilename=\comment % Ignore extra @setfilename cmds.\x7fsetfilename\x01514,16562
+\outer\def\bye{\x7fbye\x01518,16677
+\def\inforef #1{\x7finforef\x01520,16733
+\def\inforefzzz #1,#2,#3,#4**{\x7finforefzzz\x01521,16771
+\def\losespace #1{\x7flosespace\x01523,16868
+\def\sf{\x7fsf\x01532,17072
+\let\li = \sf % Sometimes we call it \li, not \sf.\x7fli\x01533,17100
+\let\mainmagstep=\magstephalf\x7fmainmagstep\x01536,17201
+\let\mainmagstep=\magstep1\x7fmainmagstep\x01539,17250
+\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf\x01558,17867
+\font\deftt=cmtt10 scaled \magstep1\x7ftt\x01559,17913
+\def\df{\x7fdf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftentt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftenbf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7fbf\x01560,17949
+\let\indsl=\indit\x7findsl\x01570,18310
+\let\indtt=\ninett\x7findtt\x01571,18328
+\let\indsf=\indrm\x7findsf\x01572,18347
+\let\indbf=\indrm\x7findbf\x01573,18365
+\let\indsc=\indrm\x7findsc\x01574,18383
+\let\chapbf=\chaprm\x7fchapbf\x01584,18643
+\let\authorrm = \secrm\x7fauthorrm\x01627,20193
+\def\resetmathfonts{\x7fresetmathfonts\x01635,20543
+\def\textfonts{\x7ftextfonts\x01648,21132
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenrm\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenit\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftensl\x01649,21149
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftenbf\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftentt\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7fsmallcaps\x01650,21208
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensf\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7fteni\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensy\x01651,21271
+\def\chapfonts{\x7fchapfonts\x01653,21347
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenrm\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenit\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftensl\x01654,21364
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftenbf\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftentt\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7fsmallcaps\x01655,21424
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensf\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7fteni\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensy\x01656,21487
+\def\secfonts{\x7fsecfonts\x01658,21563
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenrm\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenit\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftensl\x01659,21579
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftenbf\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftentt\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7fsmallcaps\x01660,21635
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensf\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7fteni\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensy\x01661,21695
+\def\subsecfonts{\x7fsubsecfonts\x01663,21768
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenrm\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenit\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftensl\x01664,21787
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftenbf\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftentt\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7fsmallcaps\x01665,21846
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensf\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7fteni\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensy\x01666,21909
+\def\indexfonts{\x7findexfonts\x01668,21985
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenrm\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenit\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftensl\x01669,22003
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftenbf\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftentt\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7fsmallcaps\x01670,22059
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensf\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7fteni\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensy\x01671,22119
+\def\smartitalicx{\x7fsmartitalicx\x01691,22717
+\def\smartitalic#1{\x7fsmartitalic\x01692,22793
+\let\i=\smartitalic\x7fi\x01694,22851
+\let\var=\smartitalic\x7fvar\x01695,22871
+\let\dfn=\smartitalic\x7fdfn\x01696,22893
+\let\emph=\smartitalic\x7femph\x01697,22915
+\let\cite=\smartitalic\x7fcite\x01698,22938
+\def\b#1{\x7fb\x01700,22962
+\let\strong=\b\x7fstrong\x01701,22981
+\def\t#1{\x7ft\x01703,22997
+\let\ttfont = \t\x7fttfont\x01704,23072
+\def\samp #1{\x7fsamp\x01706,23149
+\def\key #1{\x7fkey\x01707,23182
+\def\ctrl #1{\x7fctrl\x01708,23243
+\let\file=\samp\x7ffile\x01710,23285
+\def\tclose#1{\x7ftclose\x01716,23445
+\let\code=\tclose\x7fcode\x01722,23722
+\def\xkey{\x7fxkey\x01728,23880
+\def\kbdfoo#1#2#3\par{\x7fkbdfoo\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{\x7fone\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{\x7fthree\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{\x7fthreex\x01729,23896
+\def\dmn#1{\x7fdmn\x01738,24197
+\def\kbd#1{\x7fkbd\x01740,24224
+\def\kbd#1{\def\look{\x7flook\x01740,24224
+\def\l#1{\x7fl\x01742,24281
+\def\r#1{\x7fr\x01744,24310
+\def\sc#1{\x7fsc\x01746,24378
+\def\ii#1{\x7fii\x01747,24421
+\def\titlefont#1{\x7ftitlefont\x01755,24654
+\def\titlepage{\x7ftitlepage\x01761,24757
+ \let\subtitlerm=\tenrm\x7fsubtitlerm\x01762,24810
+ \def\subtitlefont{\x7fsubtitlefont\x01766,24984
+ \def\authorfont{\x7fauthorfont\x01768,25068
+ \def\title{\x7ftitle\x01774,25278
+ \def\titlezzz##1{\x7ftitlezzz\x01775,25313
+ \def\subtitle{\x7fsubtitle\x01783,25628
+ \def\subtitlezzz##1{\x7fsubtitlezzz\x01784,25669
+ \def\author{\x7fauthor\x01787,25787
+ \def\authorzzz##1{\x7fauthorzzz\x01788,25824
+ \let\oldpage = \page\x7foldpage\x01793,26091
+ \def\page{\x7fpage\x01794,26115
+ \let\page = \oldpage\x7fpage\x01799,26206
+\def\Etitlepage{\x7fEtitlepage\x01804,26284
+\def\finishtitlepage{\x7ffinishtitlepage\x01817,26672
+\let\thispage=\folio\x7fthispage\x01825,26825
+\let\HEADINGShook=\relax\x7fHEADINGShook\x01837,27420
+\def\evenheading{\x7fevenheading\x01846,27680
+\def\oddheading{\x7foddheading\x01847,27723
+\def\everyheading{\x7feveryheading\x01848,27764
+\def\evenfooting{\x7fevenfooting\x01850,27810
+\def\oddfooting{\x7foddfooting\x01851,27853
+\def\everyfooting{\x7feveryfooting\x01852,27894
+\gdef\evenheadingxxx #1{\x7fevenheadingxxx\x01856,27958
+\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{\x7fevenheadingyyy\x01857,28017
+\gdef\oddheadingxxx #1{\x7foddheadingxxx\x01860,28126
+\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{\x7foddheadingyyy\x01861,28183
+\gdef\everyheadingxxx #1{\x7feveryheadingxxx\x01864,28290
+\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{\x7feveryheadingyyy\x01865,28351
+\gdef\evenfootingxxx #1{\x7fevenfootingxxx\x01869,28522
+\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{\x7fevenfootingyyy\x01870,28581
+\gdef\oddfootingxxx #1{\x7foddfootingxxx\x01873,28690
+\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{\x7foddfootingyyy\x01874,28747
+\gdef\everyfootingxxx #1{\x7feveryfootingxxx\x01877,28854
+\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{\x7feveryfootingyyy\x01878,28915
+\def\headings #1 {\x7fheadings\x01893,29586
+\def\HEADINGSoff{\x7fHEADINGSoff\x01895,29635
+\def\HEADINGSdouble{\x7fHEADINGSdouble\x01904,30062
+\def\HEADINGSsingle{\x7fHEADINGSsingle\x01914,30382
+\def\HEADINGSon{\x7fHEADINGSon\x01922,30603
+\def\HEADINGSafter{\x7fHEADINGSafter\x01924,30637
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}\x7fHEADINGShook\x01924,30637
+\let\HEADINGSdoubleafter=\HEADINGSafter\x7fHEADINGSdoubleafter\x01925,30692
+\def\HEADINGSdoublex{\x7fHEADINGSdoublex\x01926,30732
+\def\HEADINGSsingleafter{\x7fHEADINGSsingleafter\x01933,30920
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}\x7fHEADINGShook\x01933,30920
+\def\HEADINGSsinglex{\x7fHEADINGSsinglex\x01934,30981
+\def\today{\x7ftoday\x01943,31256
+\def\thistitle{\x7fthistitle\x01958,31801
+\def\settitle{\x7fsettitle\x01959,31826
+\def\settitlezzz #1{\x7fsettitlezzz\x01960,31863
+\def\settitlezzz #1{\gdef\thistitle{\x7fthistitle\x01960,31863
+\def\internalBitem{\x7finternalBitem\x01992,32793
+\def\internalBitemx{\x7finternalBitemx\x01993,32843
+\def\internalBxitem "#1"{\x7finternalBxitem\x01995,32888
+\def\internalBxitem "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01995,32888
+\def\internalBxitemx "#1"{\x7finternalBxitemx\x01996,32968
+\def\internalBxitemx "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01996,32968
+\def\internalBkitem{\x7finternalBkitem\x01998,33043
+\def\internalBkitemx{\x7finternalBkitemx\x01999,33095
+\def\kitemzzz #1{\x7fkitemzzz\x011001,33142
+\def\xitemzzz #1{\x7fxitemzzz\x011004,33244
+\def\itemzzz #1{\x7fitemzzz\x011007,33347
+\def\item{\x7fitem\x011037,34418
+\def\itemx{\x7fitemx\x011038,34469
+\def\kitem{\x7fkitem\x011039,34522
+\def\kitemx{\x7fkitemx\x011040,34575
+\def\xitem{\x7fxitem\x011041,34630
+\def\xitemx{\x7fxitemx\x011042,34683
+\def\description{\x7fdescription\x011045,34793
+\def\table{\x7ftable\x011047,34843
+\gdef\tablex #1^^M{\x7ftablex\x011049,34925
+\def\ftable{\x7fftable\x011052,34987
+\gdef\ftablex #1^^M{\x7fftablex\x011054,35071
+\def\Eftable{\x7fEftable\x011056,35133
+\let\Etable=\relax}\x7fEtable\x011057,35180
+\def\vtable{\x7fvtable\x011059,35202
+\gdef\vtablex #1^^M{\x7fvtablex\x011061,35286
+\def\Evtable{\x7fEvtable\x011063,35348
+\let\Etable=\relax}\x7fEtable\x011064,35395
+\def\dontindex #1{\x7fdontindex\x011066,35417
+\def\fnitemindex #1{\x7ffnitemindex\x011067,35437
+\def\vritemindex #1{\x7fvritemindex\x011068,35482
+\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\x7ftabley\x011071,35543
+\def\tablez #1#2#3#4#5#6{\x7ftablez\x011074,35631
+\def\Edescription{\x7fEdescription\x011077,35689
+\let\itemindex=#1%\x7fitemindex\x011078,35735
+\def\itemfont{\x7fitemfont\x011082,35890
+\def\Etable{\x7fEtable\x011090,36116
+\let\item = \internalBitem %\x7fitem\x011091,36162
+\let\itemx = \internalBitemx %\x7fitemx\x011092,36191
+\let\kitem = \internalBkitem %\x7fkitem\x011093,36222
+\let\kitemx = \internalBkitemx %\x7fkitemx\x011094,36253
+\let\xitem = \internalBxitem %\x7fxitem\x011095,36286
+\let\xitemx = \internalBxitemx %\x7fxitemx\x011096,36317
+\def\itemize{\x7fitemize\x011103,36440
+\def\itemizezzz #1{\x7fitemizezzz\x011105,36476
+\def\itemizey #1#2{\x7fitemizey\x011110,36571
+\def\itemcontents{\x7fitemcontents\x011120,36858
+\let\item=\itemizeitem}\x7fitem\x011121,36881
+\def\bullet{\x7fbullet\x011123,36906
+\def\minus{\x7fminus\x011124,36933
+\def\frenchspacing{\x7ffrenchspacing\x011128,37041
+\def\splitoff#1#2\endmark{\x7fsplitoff\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{\x7ffirst\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{\x7frest\x011134,37266
+\def\enumerate{\x7fenumerate\x011140,37496
+\def\enumeratezzz #1{\x7fenumeratezzz\x011141,37535
+\def\enumeratey #1 #2\endenumeratey{\x7fenumeratey\x011142,37588
+ \def\thearg{\x7fthearg\x011146,37735
+ \ifx\thearg\empty \def\thearg{\x7fthearg\x011147,37754
+\def\numericenumerate{\x7fnumericenumerate\x011184,39088
+\def\lowercaseenumerate{\x7flowercaseenumerate\x011190,39218
+\def\uppercaseenumerate{\x7fuppercaseenumerate\x011203,39565
+\def\startenumeration#1{\x7fstartenumeration\x011219,40055
+\def\alphaenumerate{\x7falphaenumerate\x011227,40237
+\def\capsenumerate{\x7fcapsenumerate\x011228,40272
+\def\Ealphaenumerate{\x7fEalphaenumerate\x011229,40306
+\def\Ecapsenumerate{\x7fEcapsenumerate\x011230,40340
+\def\itemizeitem{\x7fitemizeitem\x011234,40420
+{\let\par=\endgraf \smallbreak}\x7fpar\x011236,40460
+\gdef\newwrite{\x7fnewwrite\x011249,40841
+\def\newindex #1{\x7fnewindex\x011259,41277
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011262,41439
+\def\defindex{\x7fdefindex\x011268,41566
+\def\newcodeindex #1{\x7fnewcodeindex\x011272,41674
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011275,41840
+\def\defcodeindex{\x7fdefcodeindex\x011279,41934
+\def\synindex #1 #2 {\x7fsynindex\x011283,42114
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011284,42137
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011285,42217
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011286,42273
+\def\syncodeindex #1 #2 {\x7fsyncodeindex\x011292,42454
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011293,42481
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011294,42561
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011295,42617
+\def\doindex#1{\x7fdoindex\x011309,43133
+\def\doindex#1{\edef\indexname{\x7findexname\x011309,43133
+\def\singleindexer #1{\x7fsingleindexer\x011310,43192
+\def\singleindexer #1{\doind{\indexname}\x7fname\x011310,43192
+\def\docodeindex#1{\x7fdocodeindex\x011313,43304
+\def\docodeindex#1{\edef\indexname{\x7findexname\x011313,43304
+\def\singlecodeindexer #1{\x7fsinglecodeindexer\x011314,43371
+\def\singlecodeindexer #1{\doind{\indexname}\x7fname\x011314,43371
+\def\indexdummies{\x7findexdummies\x011316,43429
+\def\_{\x7f_\x011317,43449
+\def\w{\x7fw\x011318,43477
+\def\bf{\x7fbf\x011319,43504
+\def\rm{\x7frm\x011320,43533
+\def\sl{\x7fsl\x011321,43562
+\def\sf{\x7fsf\x011322,43591
+\def\tt{\x7ftt\x011323,43619
+\def\gtr{\x7fgtr\x011324,43647
+\def\less{\x7fless\x011325,43677
+\def\hat{\x7fhat\x011326,43709
+\def\char{\x7fchar\x011327,43739
+\def\TeX{\x7fTeX\x011328,43771
+\def\dots{\x7fdots\x011329,43801
+\def\copyright{\x7fcopyright\x011330,43834
+\def\tclose##1{\x7ftclose\x011331,43877
+\def\code##1{\x7fcode\x011332,43922
+\def\samp##1{\x7fsamp\x011333,43963
+\def\t##1{\x7ft\x011334,44004
+\def\r##1{\x7fr\x011335,44039
+\def\i##1{\x7fi\x011336,44074
+\def\b##1{\x7fb\x011337,44109
+\def\cite##1{\x7fcite\x011338,44144
+\def\key##1{\x7fkey\x011339,44185
+\def\file##1{\x7ffile\x011340,44224
+\def\var##1{\x7fvar\x011341,44265
+\def\kbd##1{\x7fkbd\x011342,44304
+\def\indexdummyfont#1{\x7findexdummyfont\x011347,44460
+\def\indexdummytex{\x7findexdummytex\x011348,44486
+\def\indexdummydots{\x7findexdummydots\x011349,44510
+\def\indexnofonts{\x7findexnofonts\x011351,44536
+\let\w=\indexdummyfont\x7fw\x011352,44556
\let\w=\indexdummyfont\x7fdummyfont\x011352,44556
+\let\t=\indexdummyfont\x7ft\x011353,44579
\let\t=\indexdummyfont\x7fdummyfont\x011353,44579
+\let\r=\indexdummyfont\x7fr\x011354,44602
\let\r=\indexdummyfont\x7fdummyfont\x011354,44602
+\let\i=\indexdummyfont\x7fi\x011355,44625
\let\i=\indexdummyfont\x7fdummyfont\x011355,44625
+\let\b=\indexdummyfont\x7fb\x011356,44648
\let\b=\indexdummyfont\x7fdummyfont\x011356,44648
+\let\emph=\indexdummyfont\x7femph\x011357,44671
\let\emph=\indexdummyfont\x7fdummyfont\x011357,44671
+\let\strong=\indexdummyfont\x7fstrong\x011358,44697
\let\strong=\indexdummyfont\x7fdummyfont\x011358,44697
-\let\cite=\indexdummyfont\x7f=\indexdummyfont\x011359,44725
+\let\cite=\indexdummyfont\x7fcite\x011359,44725
+\let\cite=\indexdummyfont\x7fdummyfont\x011359,44725
+\let\sc=\indexdummyfont\x7fsc\x011360,44751
\let\sc=\indexdummyfont\x7fdummyfont\x011360,44751
+\let\tclose=\indexdummyfont\x7ftclose\x011364,44923
\let\tclose=\indexdummyfont\x7fdummyfont\x011364,44923
+\let\code=\indexdummyfont\x7fcode\x011365,44951
\let\code=\indexdummyfont\x7fdummyfont\x011365,44951
+\let\file=\indexdummyfont\x7ffile\x011366,44977
\let\file=\indexdummyfont\x7fdummyfont\x011366,44977
+\let\samp=\indexdummyfont\x7fsamp\x011367,45003
\let\samp=\indexdummyfont\x7fdummyfont\x011367,45003
+\let\kbd=\indexdummyfont\x7fkbd\x011368,45029
\let\kbd=\indexdummyfont\x7fdummyfont\x011368,45029
+\let\key=\indexdummyfont\x7fkey\x011369,45054
\let\key=\indexdummyfont\x7fdummyfont\x011369,45054
+\let\var=\indexdummyfont\x7fvar\x011370,45079
\let\var=\indexdummyfont\x7fdummyfont\x011370,45079
+\let\TeX=\indexdummytex\x7fTeX\x011371,45104
\let\TeX=\indexdummytex\x7fdummytex\x011371,45104
+\let\dots=\indexdummydots\x7fdots\x011372,45128
\let\dots=\indexdummydots\x7fdummydots\x011372,45128
-\let\indexbackslash=0 %overridden during \printindex.\x7fbackslash=0\x011382,45380
-\def\doind #1#2{\x7f\doind\x011384,45436
+\let\indexbackslash=0 %overridden during \printindex.\x7findexbackslash\x011382,45380
+\def\doind #1#2{\x7fdoind\x011384,45436
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011386,45479
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011389,45619
+{\let\folio=0% Expand all macros now EXCEPT \folio\x7ffolio\x011388,45568
+\def\rawbackslashxx{\x7frawbackslashxx\x011389,45619
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011389,45619
{\indexnofonts\x7fnofonts\x011394,45881
-\def\dosubind #1#2#3{\x7f\dosubind\x011405,46192
+\xdef\temp1{\x7ftemp1\x011395,45896
+\edef\temp{\x7ftemp\x011399,46068
+\def\dosubind #1#2#3{\x7fdosubind\x011405,46192
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011407,46240
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011410,46344
+{\let\folio=0%\x7ffolio\x011409,46329
+\def\rawbackslashxx{\x7frawbackslashxx\x011410,46344
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011410,46344
{\indexnofonts\x7fnofonts\x011414,46498
-\def\findex {\x7f\findex\x011443,47429
-\def\kindex {\x7f\kindex\x011444,47452
-\def\cindex {\x7f\cindex\x011445,47475
-\def\vindex {\x7f\vindex\x011446,47498
-\def\tindex {\x7f\tindex\x011447,47521
-\def\pindex {\x7f\pindex\x011448,47544
-\def\cindexsub {\x7f\cindexsub\x011450,47568
-\def\printindex{\x7f\printindex\x011462,47895
-\def\doprintindex#1{\x7f\doprintindex\x011464,47936
- \def\indexbackslash{\x7f\indexbackslash\x011481,48421
+\xdef\temp1{\x7ftemp1\x011415,46513
+\edef\temp{\x7ftemp\x011419,46688
+\def\findex {\x7ffindex\x011443,47429
+\def\kindex {\x7fkindex\x011444,47452
+\def\cindex {\x7fcindex\x011445,47475
+\def\vindex {\x7fvindex\x011446,47498
+\def\tindex {\x7ftindex\x011447,47521
+\def\pindex {\x7fpindex\x011448,47544
+\def\cindexsub {\x7fcindexsub\x011450,47568
+\gdef\cindexsub "#1" #2^^M{\x7fcindexsub\x011452,47631
+\def\printindex{\x7fprintindex\x011462,47895
+\def\doprintindex#1{\x7fdoprintindex\x011464,47936
+ \def\indexbackslash{\x7findexbackslash\x011481,48421
\indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt\x7ffonts\rm\x011482,48460
-\def\initial #1{\x7f\initial\x011517,49532
-\def\entry #1#2{\x7f\entry\x011523,49739
+\def\initial #1{\x7finitial\x011517,49532
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftentt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7fsf\x011518,49550
+\def\entry #1#2{\x7fentry\x011523,49739
\null\nobreak\indexdotfill % Have leaders before the page number.\x7fdotfill\x011540,50386
-\def\indexdotfill{\x7f\indexdotfill\x011549,50714
-\def\primary #1{\x7f\primary\x011552,50820
-\def\secondary #1#2{\x7f\secondary\x011556,50902
+\def\indexdotfill{\x7findexdotfill\x011549,50714
+\def\primary #1{\x7fprimary\x011552,50820
+\def\secondary #1#2{\x7fsecondary\x011556,50902
\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par\x7fdotfill\x011559,50984
\newbox\partialpage\x7fialpage\x011566,51157
-\def\begindoublecolumns{\x7f\begindoublecolumns\x011572,51315
- \output={\global\setbox\partialpage=\x7fialpage=\x011573,51351
-\def\enddoublecolumns{\x7f\enddoublecolumns\x011577,51539
-\def\doublecolumnout{\x7f\doublecolumnout\x011580,51624
+\def\begindoublecolumns{\x7fbegindoublecolumns\x011572,51315
+ \output={\global\setbox\partialpage=\x7fialpage\x011573,51351
+\def\enddoublecolumns{\x7fenddoublecolumns\x011577,51539
+\def\doublecolumnout{\x7fdoublecolumnout\x011580,51624
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011581,51693
-\def\pagesofar{\x7f\pagesofar\x011584,51871
-\def\balancecolumns{\x7f\balancecolumns\x011588,52108
+\def\pagesofar{\x7fpagesofar\x011584,51871
+\def\pagesofar{\unvbox\partialpage %\x7fialpage\x011584,51871
+\def\balancecolumns{\x7fbalancecolumns\x011588,52108
\availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpage\x7fialpage\x011594,52279
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011600,52540
\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
-\def\appendixletter{\x7f\appendixletter\x011628,53486
-\def\opencontents{\x7f\opencontents\x011632,53589
-\def\thischapter{\x7f\thischapter\x011637,53770
-\def\seccheck#1{\x7f\seccheck\x011638,53808
-\def\chapternofonts{\x7f\chapternofonts\x011643,53912
-\def\result{\x7f\result\x011646,53987
-\def\equiv{\x7f\equiv\x011647,54022
-\def\expansion{\x7f\expansion\x011648,54055
-\def\print{\x7f\print\x011649,54096
-\def\TeX{\x7f\TeX\x011650,54129
-\def\dots{\x7f\dots\x011651,54158
-\def\copyright{\x7f\copyright\x011652,54189
-\def\tt{\x7f\tt\x011653,54230
-\def\bf{\x7f\bf\x011654,54257
-\def\w{\x7f\w\x011655,54285
-\def\less{\x7f\less\x011656,54310
-\def\gtr{\x7f\gtr\x011657,54341
-\def\hat{\x7f\hat\x011658,54370
-\def\char{\x7f\char\x011659,54399
-\def\tclose##1{\x7f\tclose\x011660,54430
-\def\code##1{\x7f\code\x011661,54474
-\def\samp##1{\x7f\samp\x011662,54514
-\def\r##1{\x7f\r\x011663,54554
-\def\b##1{\x7f\b\x011664,54588
-\def\key##1{\x7f\key\x011665,54622
-\def\file##1{\x7f\file\x011666,54660
-\def\kbd##1{\x7f\kbd\x011667,54700
-\def\i##1{\x7f\i\x011669,54808
-\def\cite##1{\x7f\cite\x011670,54842
-\def\var##1{\x7f\var\x011671,54882
-\def\emph##1{\x7f\emph\x011672,54920
-\def\dfn##1{\x7f\dfn\x011673,54960
-\def\thischaptername{\x7f\thischaptername\x011676,55001
-\outer\def\chapter{\x7f\chapter\x011677,55040
-\def\chapterzzz #1{\x7f\chapterzzz\x011678,55081
-{\chapternofonts%\x7fnofonts%\x011687,55477
-\global\let\section = \numberedsec\x7f=\x011692,55630
-\global\let\subsection = \numberedsubsec\x7f=\x011693,55665
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011694,55706
-\outer\def\appendix{\x7f\appendix\x011697,55757
-\def\appendixzzz #1{\x7f\appendixzzz\x011698,55800
+\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
+\def\appendixletter{\x7fappendixletter\x011628,53486
+\def\appendixletter{\char\the\appendixno}\x7fno\x011628,53486
+\def\opencontents{\x7fopencontents\x011632,53589
+\def\thischapter{\x7fthischapter\x011637,53770
+\def\thischapter{} \def\thissection{\x7fthissection\x011637,53770
+\def\seccheck#1{\x7fseccheck\x011638,53808
+\def\chapternofonts{\x7fchapternofonts\x011643,53912
+\let\rawbackslash=\relax%\x7frawbackslash\x011644,53934
+\let\frenchspacing=\relax%\x7ffrenchspacing\x011645,53960
+\def\result{\x7fresult\x011646,53987
+\def\equiv{\x7fequiv\x011647,54022
+\def\expansion{\x7fexpansion\x011648,54055
+\def\print{\x7fprint\x011649,54096
+\def\TeX{\x7fTeX\x011650,54129
+\def\dots{\x7fdots\x011651,54158
+\def\copyright{\x7fcopyright\x011652,54189
+\def\tt{\x7ftt\x011653,54230
+\def\bf{\x7fbf\x011654,54257
+\def\w{\x7fw\x011655,54285
+\def\less{\x7fless\x011656,54310
+\def\gtr{\x7fgtr\x011657,54341
+\def\hat{\x7fhat\x011658,54370
+\def\char{\x7fchar\x011659,54399
+\def\tclose##1{\x7ftclose\x011660,54430
+\def\code##1{\x7fcode\x011661,54474
+\def\samp##1{\x7fsamp\x011662,54514
+\def\r##1{\x7fr\x011663,54554
+\def\b##1{\x7fb\x011664,54588
+\def\key##1{\x7fkey\x011665,54622
+\def\file##1{\x7ffile\x011666,54660
+\def\kbd##1{\x7fkbd\x011667,54700
+\def\i##1{\x7fi\x011669,54808
+\def\cite##1{\x7fcite\x011670,54842
+\def\var##1{\x7fvar\x011671,54882
+\def\emph##1{\x7femph\x011672,54920
+\def\dfn##1{\x7fdfn\x011673,54960
+\def\thischaptername{\x7fthischaptername\x011676,55001
+\outer\def\chapter{\x7fchapter\x011677,55040
+\outer\def\chapter{\parsearg\chapterzzz}\x7fzzz\x011677,55040
+\def\chapterzzz #1{\x7fchapterzzz\x011678,55081
+\gdef\thissection{\x7fthissection\x011682,55246
+\gdef\thischaptername{\x7fthischaptername\x011683,55269
+\xdef\thischapter{\x7fthischapter\x011686,55410
+{\chapternofonts%\x7fnofonts\x011687,55477
+\edef\temp{\x7ftemp\x011688,55495
+\global\let\section = \numberedsec\x7fsection\x011692,55630
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011693,55665
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011694,55706
+\outer\def\appendix{\x7fappendix\x011697,55757
+\outer\def\appendix{\parsearg\appendixzzz}\x7fzzz\x011697,55757
+\def\appendixzzz #1{\x7fappendixzzz\x011698,55800
\global\advance \appendixno by 1 \message{\x7fno\x011700,55877
+\global\advance \appendixno by 1 \message{Appendix \appendixletter}\x7fletter\x011700,55877
\chapmacro {#1}{Appendix \appendixletter}\x7fletter\x011701,55946
+\gdef\thissection{\x7fthissection\x011702,55989
+\gdef\thischaptername{\x7fthischaptername\x011703,56012
+\xdef\thischapter{\x7fthischapter\x011704,56039
\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}\x7fletter:\x011704,56039
-{\chapternofonts%\x7fnofonts%\x011705,56111
+{\chapternofonts%\x7fnofonts\x011705,56111
+\edef\temp{\x7ftemp\x011706,56129
{#1}{Appendix \appendixletter}\x7fletter\x011707,56167
\appendixnoderef %\x7fnoderef\x011710,56267
-\global\let\section = \appendixsec\x7f=\x011711,56286
-\global\let\subsection = \appendixsubsec\x7f=\x011712,56321
-\global\let\subsubsection = \appendixsubsubsec\x7f=\x011713,56362
-\outer\def\top{\x7f\top\x011716,56413
-\outer\def\unnumbered{\x7f\unnumbered\x011717,56453
-\def\unnumberedzzz #1{\x7f\unnumberedzzz\x011718,56500
-{\chapternofonts%\x7fnofonts%\x011722,56663
-\global\let\section = \unnumberedsec\x7f=\x011727,56813
-\global\let\subsection = \unnumberedsubsec\x7f=\x011728,56850
-\global\let\subsubsection = \unnumberedsubsubsec\x7f=\x011729,56893
-\outer\def\numberedsec{\x7f\numberedsec\x011732,56946
-\def\seczzz #1{\x7f\seczzz\x011733,56987
-{\chapternofonts%\x7fnofonts%\x011736,57143
-\outer\def\appendixsection{\x7f\appendixsection\x011745,57329
-\outer\def\appendixsec{\x7f\appendixsec\x011746,57386
-\def\appendixsectionzzz #1{\x7f\appendixsectionzzz\x011747,57439
+\global\let\section = \appendixsec\x7fsection\x011711,56286
+\global\let\section = \appendixsec\x7fsec\x011711,56286
+\global\let\subsection = \appendixsubsec\x7fsubsection\x011712,56321
+\global\let\subsection = \appendixsubsec\x7fsubsec\x011712,56321
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsection\x011713,56362
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsec\x011713,56362
+\outer\def\top{\x7ftop\x011716,56413
+\outer\def\unnumbered{\x7funnumbered\x011717,56453
+\def\unnumberedzzz #1{\x7funnumberedzzz\x011718,56500
+\gdef\thischapter{\x7fthischapter\x011721,56619
+\gdef\thischapter{#1}\gdef\thissection{\x7fthissection\x011721,56619
+{\chapternofonts%\x7fnofonts\x011722,56663
+\edef\temp{\x7ftemp\x011723,56681
+\global\let\section = \unnumberedsec\x7fsection\x011727,56813
+\global\let\subsection = \unnumberedsubsec\x7fsubsection\x011728,56850
+\global\let\subsubsection = \unnumberedsubsubsec\x7fsubsubsection\x011729,56893
+\outer\def\numberedsec{\x7fnumberedsec\x011732,56946
+\def\seczzz #1{\x7fseczzz\x011733,56987
+\gdef\thissection{\x7fthissection\x011735,57079
+{\chapternofonts%\x7fnofonts\x011736,57143
+\edef\temp{\x7ftemp\x011737,57161
+\outer\def\appendixsection{\x7fappendixsection\x011745,57329
+\outer\def\appendixsection{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011745,57329
+\outer\def\appendixsec{\x7fappendixsec\x011746,57386
+\outer\def\appendixsec{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011746,57386
+\def\appendixsectionzzz #1{\x7fappendixsectionzzz\x011747,57439
+\gdef\thissection{\x7fthissection\x011749,57551
\gdef\thissection{#1}\secheading {#1}{\appendixletter}\x7fletter\x011749,57551
-{\chapternofonts%\x7fnofonts%\x011750,57619
+{\chapternofonts%\x7fnofonts\x011750,57619
+\edef\temp{\x7ftemp\x011751,57637
{#1}{\appendixletter}\x7fletter\x011752,57675
\appendixnoderef %\x7fnoderef\x011755,57775
-\outer\def\unnumberedsec{\x7f\unnumberedsec\x011759,57815
-\def\unnumberedseczzz #1{\x7f\unnumberedseczzz\x011760,57868
-{\chapternofonts%\x7fnofonts%\x011762,57963
-\outer\def\numberedsubsec{\x7f\numberedsubsec\x011770,58131
-\def\numberedsubseczzz #1{\x7f\numberedsubseczzz\x011771,58186
-{\chapternofonts%\x7fnofonts%\x011774,58365
-\outer\def\appendixsubsec{\x7f\appendixsubsec\x011783,58569
-\def\appendixsubseczzz #1{\x7f\appendixsubseczzz\x011784,58624
+\outer\def\unnumberedsec{\x7funnumberedsec\x011759,57815
+\def\unnumberedseczzz #1{\x7funnumberedseczzz\x011760,57868
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011761,57919
+{\chapternofonts%\x7fnofonts\x011762,57963
+\edef\temp{\x7ftemp\x011763,57981
+\outer\def\numberedsubsec{\x7fnumberedsubsec\x011770,58131
+\def\numberedsubseczzz #1{\x7fnumberedsubseczzz\x011771,58186
+\gdef\thissection{\x7fthissection\x011772,58235
+{\chapternofonts%\x7fnofonts\x011774,58365
+\edef\temp{\x7ftemp\x011775,58383
+\outer\def\appendixsubsec{\x7fappendixsubsec\x011783,58569
+\outer\def\appendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011783,58569
+\def\appendixsubseczzz #1{\x7fappendixsubseczzz\x011784,58624
+\gdef\thissection{\x7fthissection\x011785,58677
\subsecheading {#1}{\appendixletter}\x7fletter\x011786,58746
-{\chapternofonts%\x7fnofonts%\x011787,58811
+{\chapternofonts%\x7fnofonts\x011787,58811
+\edef\temp{\x7ftemp\x011788,58829
{#1}{\appendixletter}\x7fletter\x011789,58870
\appendixnoderef %\x7fnoderef\x011792,58985
-\outer\def\unnumberedsubsec{\x7f\unnumberedsubsec\x011796,59025
-\def\unnumberedsubseczzz #1{\x7f\unnumberedsubseczzz\x011797,59084
-{\chapternofonts%\x7fnofonts%\x011799,59185
-\outer\def\numberedsubsubsec{\x7f\numberedsubsubsec\x011807,59356
-\def\numberedsubsubseczzz #1{\x7f\numberedsubsubseczzz\x011808,59417
-{\chapternofonts%\x7fnofonts%\x011812,59614
-\outer\def\appendixsubsubsec{\x7f\appendixsubsubsec\x011823,59847
-\def\appendixsubsubseczzz #1{\x7f\appendixsubsubseczzz\x011824,59908
+\outer\def\unnumberedsubsec{\x7funnumberedsubsec\x011796,59025
+\def\unnumberedsubseczzz #1{\x7funnumberedsubseczzz\x011797,59084
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011798,59141
+{\chapternofonts%\x7fnofonts\x011799,59185
+\edef\temp{\x7ftemp\x011800,59203
+\outer\def\numberedsubsubsec{\x7fnumberedsubsubsec\x011807,59356
+\def\numberedsubsubseczzz #1{\x7fnumberedsubsubseczzz\x011808,59417
+\gdef\thissection{\x7fthissection\x011809,59472
+{\chapternofonts%\x7fnofonts\x011812,59614
+\edef\temp{\x7ftemp\x011813,59632
+\outer\def\appendixsubsubsec{\x7fappendixsubsubsec\x011823,59847
+\outer\def\appendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011823,59847
+\def\appendixsubsubseczzz #1{\x7fappendixsubsubseczzz\x011824,59908
+\gdef\thissection{\x7fthissection\x011825,59967
{\appendixletter}\x7fletter\x011827,60047
-{\chapternofonts%\x7fnofonts%\x011828,60113
+{\chapternofonts%\x7fnofonts\x011828,60113
+\edef\temp{\x7ftemp\x011829,60131
{\appendixletter}\x7fletter\x011830,60178
\appendixnoderef %\x7fnoderef\x011834,60312
-\outer\def\unnumberedsubsubsec{\x7f\unnumberedsubsubsec\x011838,60352
-\def\unnumberedsubsubseczzz #1{\x7f\unnumberedsubsubseczzz\x011839,60417
-{\chapternofonts%\x7fnofonts%\x011841,60524
-\def\infotop{\x7f\infotop\x011851,60853
-\def\infounnumbered{\x7f\infounnumbered\x011852,60891
-\def\infounnumberedsec{\x7f\infounnumberedsec\x011853,60936
-\def\infounnumberedsubsec{\x7f\infounnumberedsubsec\x011854,60987
-\def\infounnumberedsubsubsec{\x7f\infounnumberedsubsubsec\x011855,61044
-\def\infoappendix{\x7f\infoappendix\x011857,61108
-\def\infoappendixsec{\x7f\infoappendixsec\x011858,61149
-\def\infoappendixsubsec{\x7f\infoappendixsubsec\x011859,61196
-\def\infoappendixsubsubsec{\x7f\infoappendixsubsubsec\x011860,61249
-\def\infochapter{\x7f\infochapter\x011862,61309
-\def\infosection{\x7f\infosection\x011863,61348
-\def\infosubsection{\x7f\infosubsection\x011864,61387
-\def\infosubsubsection{\x7f\infosubsubsection\x011865,61432
-\global\let\section = \numberedsec\x7f=\x011870,61669
-\global\let\subsection = \numberedsubsec\x7f=\x011871,61704
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011872,61745
-\def\majorheading{\x7f\majorheading\x011886,62252
-\def\majorheadingzzz #1{\x7f\majorheadingzzz\x011887,62297
-\def\chapheading{\x7f\chapheading\x011893,62530
-\def\chapheadingzzz #1{\x7f\chapheadingzzz\x011894,62573
-\def\heading{\x7f\heading\x011899,62768
-\def\subheading{\x7f\subheading\x011901,62805
-\def\subsubheading{\x7f\subsubheading\x011903,62848
-\def\dobreak#1#2{\x7f\dobreak\x011910,63125
-\def\setchapterstyle #1 {\x7f\setchapterstyle\x011912,63203
-\def\chapbreak{\x7f\chapbreak\x011919,63458
-\def\chappager{\x7f\chappager\x011920,63508
-\def\chapoddpage{\x7f\chapoddpage\x011921,63546
-\def\setchapternewpage #1 {\x7f\setchapternewpage\x011923,63625
-\def\CHAPPAGoff{\x7f\CHAPPAGoff\x011925,63682
-\def\CHAPPAGon{\x7f\CHAPPAGon\x011929,63776
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011932,63867
-\def\CHAPPAGodd{\x7f\CHAPPAGodd\x011934,63909
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011937,64005
-\def\CHAPFplain{\x7f\CHAPFplain\x011941,64059
-\def\chfplain #1#2{\x7f\chfplain\x011945,64151
-\def\unnchfplain #1{\x7f\unnchfplain\x011956,64374
-\def\unnchfopen #1{\x7f\unnchfopen\x011964,64603
-\def\chfopen #1#2{\x7f\chfopen\x011970,64811
-\def\CHAPFopen{\x7f\CHAPFopen\x011975,64955
-\def\subsecheadingbreak{\x7f\subsecheadingbreak\x011982,65173
-\def\secheadingbreak{\x7f\secheadingbreak\x011985,65302
-\def\secheading #1#2#3{\x7f\secheading\x011993,65584
-\def\plainsecheading #1{\x7f\plainsecheading\x011994,65640
-\def\secheadingi #1{\x7f\secheadingi\x011995,65683
-\def\subsecheading #1#2#3#4{\x7f\subsecheading\x012006,66051
-\def\subsecheadingi #1{\x7f\subsecheadingi\x012007,66118
-\def\subsubsecfonts{\x7f\subsubsecfonts\x012014,66415
-\def\subsubsecheading #1#2#3#4#5{\x7f\subsubsecheading\x012017,66538
-\def\subsubsecheadingi #1{\x7f\subsubsecheadingi\x012018,66616
-\def\startcontents#1{\x7f\startcontents\x012032,67088
- \unnumbchapmacro{#1}\def\thischapter{\x7f\thischapter\x012040,67361
-\outer\def\contents{\x7f\contents\x012049,67720
-\outer\def\summarycontents{\x7f\summarycontents\x012057,67864
- \def\secentry ##1##2##3##4{\x7f\secentry\x012067,68235
- \def\unnumbsecentry ##1##2{\x7f\unnumbsecentry\x012068,68270
- \def\subsecentry ##1##2##3##4##5{\x7f\subsecentry\x012069,68305
- \def\unnumbsubsecentry ##1##2{\x7f\unnumbsubsecentry\x012070,68346
- \def\subsubsecentry ##1##2##3##4##5##6{\x7f\subsubsecentry\x012071,68384
- \def\unnumbsubsubsecentry ##1##2{\x7f\unnumbsubsubsecentry\x012072,68431
-\def\chapentry#1#2#3{\x7f\chapentry\x012085,68865
-\def\shortchapentry#1#2#3{\x7f\shortchapentry\x012088,68982
+\outer\def\unnumberedsubsubsec{\x7funnumberedsubsubsec\x011838,60352
+\def\unnumberedsubsubseczzz #1{\x7funnumberedsubsubseczzz\x011839,60417
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011840,60480
+{\chapternofonts%\x7fnofonts\x011841,60524
+\edef\temp{\x7ftemp\x011842,60542
+\def\infotop{\x7finfotop\x011851,60853
+\def\infounnumbered{\x7finfounnumbered\x011852,60891
+\def\infounnumberedsec{\x7finfounnumberedsec\x011853,60936
+\def\infounnumberedsubsec{\x7finfounnumberedsubsec\x011854,60987
+\def\infounnumberedsubsubsec{\x7finfounnumberedsubsubsec\x011855,61044
+\def\infoappendix{\x7finfoappendix\x011857,61108
+\def\infoappendix{\parsearg\appendixzzz}\x7fzzz\x011857,61108
+\def\infoappendixsec{\x7finfoappendixsec\x011858,61149
+\def\infoappendixsec{\parsearg\appendixseczzz}\x7fseczzz\x011858,61149
+\def\infoappendixsubsec{\x7finfoappendixsubsec\x011859,61196
+\def\infoappendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011859,61196
+\def\infoappendixsubsubsec{\x7finfoappendixsubsubsec\x011860,61249
+\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011860,61249
+\def\infochapter{\x7finfochapter\x011862,61309
+\def\infochapter{\parsearg\chapterzzz}\x7fzzz\x011862,61309
+\def\infosection{\x7finfosection\x011863,61348
+\def\infosection{\parsearg\sectionzzz}\x7fzzz\x011863,61348
+\def\infosubsection{\x7finfosubsection\x011864,61387
+\def\infosubsection{\parsearg\subsectionzzz}\x7fzzz\x011864,61387
+\def\infosubsubsection{\x7finfosubsubsection\x011865,61432
+\def\infosubsubsection{\parsearg\subsubsectionzzz}\x7fzzz\x011865,61432
+\global\let\section = \numberedsec\x7fsection\x011870,61669
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011871,61704
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011872,61745
+\def\majorheading{\x7fmajorheading\x011886,62252
+\def\majorheadingzzz #1{\x7fmajorheadingzzz\x011887,62297
+\def\chapheading{\x7fchapheading\x011893,62530
+\def\chapheadingzzz #1{\x7fchapheadingzzz\x011894,62573
+\def\heading{\x7fheading\x011899,62768
+\def\subheading{\x7fsubheading\x011901,62805
+\def\subsubheading{\x7fsubsubheading\x011903,62848
+\def\dobreak#1#2{\x7fdobreak\x011910,63125
+\def\setchapterstyle #1 {\x7fsetchapterstyle\x011912,63203
+\def\chapbreak{\x7fchapbreak\x011919,63458
+\def\chappager{\x7fchappager\x011920,63508
+\def\chapoddpage{\x7fchapoddpage\x011921,63546
+\def\setchapternewpage #1 {\x7fsetchapternewpage\x011923,63625
+\def\CHAPPAGoff{\x7fCHAPPAGoff\x011925,63682
+\global\let\pchapsepmacro=\chapbreak\x7fpchapsepmacro\x011926,63699
+\global\let\pagealignmacro=\chappager}\x7fpagealignmacro\x011927,63736
+\def\CHAPPAGon{\x7fCHAPPAGon\x011929,63776
+\global\let\pchapsepmacro=\chappager\x7fpchapsepmacro\x011930,63792
+\global\let\pagealignmacro=\chappager\x7fpagealignmacro\x011931,63829
+\global\def\HEADINGSon{\x7fHEADINGSon\x011932,63867
+\def\CHAPPAGodd{\x7fCHAPPAGodd\x011934,63909
+\global\let\pchapsepmacro=\chapoddpage\x7fpchapsepmacro\x011935,63926
+\global\let\pagealignmacro=\chapoddpage\x7fpagealignmacro\x011936,63965
+\global\def\HEADINGSon{\x7fHEADINGSon\x011937,64005
+\def\CHAPFplain{\x7fCHAPFplain\x011941,64059
+\global\let\chapmacro=\chfplain\x7fchapmacro\x011942,64076
+\global\let\unnumbchapmacro=\unnchfplain}\x7funnumbchapmacro\x011943,64108
+\def\chfplain #1#2{\x7fchfplain\x011945,64151
+\def\unnchfplain #1{\x7funnchfplain\x011956,64374
+\def\unnchfopen #1{\x7funnchfopen\x011964,64603
+\def\chfopen #1#2{\x7fchfopen\x011970,64811
+\def\CHAPFopen{\x7fCHAPFopen\x011975,64955
+\global\let\chapmacro=\chfopen\x7fchapmacro\x011976,64971
+\global\let\unnumbchapmacro=\unnchfopen}\x7funnumbchapmacro\x011977,65002
+\def\subsecheadingbreak{\x7fsubsecheadingbreak\x011982,65173
+\def\secheadingbreak{\x7fsecheadingbreak\x011985,65302
+\let\paragraphindent=\comment\x7fparagraphindent\x011988,65428
+\def\secheading #1#2#3{\x7fsecheading\x011993,65584
+\def\plainsecheading #1{\x7fplainsecheading\x011994,65640
+\def\secheadingi #1{\x7fsecheadingi\x011995,65683
+\def\subsecheading #1#2#3#4{\x7fsubsecheading\x012006,66051
+\def\subsecheadingi #1{\x7fsubsecheadingi\x012007,66118
+\def\subsubsecfonts{\x7fsubsubsecfonts\x012014,66415
+\def\subsubsecheading #1#2#3#4#5{\x7fsubsubsecheading\x012017,66538
+\def\subsubsecheadingi #1{\x7fsubsubsecheadingi\x012018,66616
+\def\startcontents#1{\x7fstartcontents\x012032,67088
+ \unnumbchapmacro{#1}\def\thischapter{\x7fthischapter\x012040,67361
+\outer\def\contents{\x7fcontents\x012049,67720
+\outer\def\summarycontents{\x7fsummarycontents\x012057,67864
+ \let\chapentry = \shortchapentry\x7fchapentry\x012060,67936
+ \let\unnumbchapentry = \shortunnumberedentry\x7funnumbchapentry\x012061,67975
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7frm\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fbf\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fsl\x012064,68098
+ \def\secentry ##1##2##3##4{\x7fsecentry\x012067,68235
+ \def\unnumbsecentry ##1##2{\x7funnumbsecentry\x012068,68270
+ \def\subsecentry ##1##2##3##4##5{\x7fsubsecentry\x012069,68305
+ \def\unnumbsubsecentry ##1##2{\x7funnumbsubsecentry\x012070,68346
+ \def\subsubsecentry ##1##2##3##4##5##6{\x7fsubsubsecentry\x012071,68384
+ \def\unnumbsubsubsecentry ##1##2{\x7funnumbsubsubsecentry\x012072,68431
+\let\shortcontents = \summarycontents\x7fshortcontents\x012077,68530
+\def\chapentry#1#2#3{\x7fchapentry\x012085,68865
+\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}\x7fspace\x012085,68865
+\def\shortchapentry#1#2#3{\x7fshortchapentry\x012088,68982
{#2\labelspace #1}\x7fspace\x012091,69092
-\def\unnumbchapentry#1#2{\x7f\unnumbchapentry\x012094,69146
-\def\shortunnumberedentry#1#2{\x7f\shortunnumberedentry\x012095,69193
-\def\secentry#1#2#3#4{\x7f\secentry\x012102,69357
-\def\unnumbsecentry#1#2{\x7f\unnumbsecentry\x012103,69416
-\def\subsecentry#1#2#3#4#5{\x7f\subsecentry\x012106,69477
-\def\unnumbsubsecentry#1#2{\x7f\unnumbsubsecentry\x012107,69547
-\def\subsubsecentry#1#2#3#4#5#6{\x7f\subsubsecentry\x012110,69621
+\def\unnumbchapentry#1#2{\x7funnumbchapentry\x012094,69146
+\def\shortunnumberedentry#1#2{\x7fshortunnumberedentry\x012095,69193
+\def\secentry#1#2#3#4{\x7fsecentry\x012102,69357
+\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}\x7fspace\x012102,69357
+\def\unnumbsecentry#1#2{\x7funnumbsecentry\x012103,69416
+\def\subsecentry#1#2#3#4#5{\x7fsubsecentry\x012106,69477
+\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}\x7fspace\x012106,69477
+\def\unnumbsubsecentry#1#2{\x7funnumbsubsecentry\x012107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\x7fsubsubsecentry\x012110,69621
\dosubsubsecentry{#2.#3.#4.#5\labelspace#1}\x7fspace\x012111,69655
-\def\unnumbsubsubsecentry#1#2{\x7f\unnumbsubsubsecentry\x012112,69706
-\def\dochapentry#1#2{\x7f\dochapentry\x012123,70080
-\def\dosecentry#1#2{\x7f\dosecentry\x012138,70685
-\def\dosubsecentry#1#2{\x7f\dosubsecentry\x012145,70863
-\def\dosubsubsecentry#1#2{\x7f\dosubsubsecentry\x012152,71048
-\def\labelspace{\x7f\labelspace\x012160,71299
-\def\dopageno#1{\x7f\dopageno\x012162,71334
-\def\doshortpageno#1{\x7f\doshortpageno\x012163,71360
-\def\chapentryfonts{\x7f\chapentryfonts\x012165,71392
-\def\secentryfonts{\x7f\secentryfonts\x012166,71427
-\def\point{\x7f\point\x012192,72386
-\def\result{\x7f\result\x012194,72407
-\def\expansion{\x7f\expansion\x012195,72480
-\def\print{\x7f\print\x012196,72551
-\def\equiv{\x7f\equiv\x012198,72618
-\def\error{\x7f\error\x012218,73391
-\def\tex{\x7f\tex\x012224,73620
-\def\@{\x7f\@\x012242,74003
-\gdef\sepspaces{\def {\ }}}\x7f\\x012265,74735
-\def\aboveenvbreak{\x7f\aboveenvbreak\x012268,74817
-\def\afterenvbreak{\x7f\afterenvbreak\x012272,74983
-\def\ctl{\x7f\ctl\x012286,75494
-\def\ctr{\x7f\ctr\x012287,75566
-\def\cbl{\x7f\cbl\x012288,75605
-\def\cbr{\x7f\cbr\x012289,75645
-\def\carttop{\x7f\carttop\x012290,75684
-\def\cartbot{\x7f\cartbot\x012293,75792
-\long\def\cartouche{\x7f\cartouche\x012299,75932
-\def\Ecartouche{\x7f\Ecartouche\x012326,76720
-\def\lisp{\x7f\lisp\x012338,76855
-\def\Elisp{\x7f\Elisp\x012348,77202
-\def\next##1{\x7f\next\x012360,77528
-\def\Eexample{\x7f\Eexample\x012364,77570
-\def\Esmallexample{\x7f\Esmallexample\x012367,77617
-\def\smalllispx{\x7f\smalllispx\x012373,77795
-\def\Esmalllisp{\x7f\Esmalllisp\x012383,78149
+\def\unnumbsubsubsecentry#1#2{\x7funnumbsubsubsecentry\x012112,69706
+\def\dochapentry#1#2{\x7fdochapentry\x012123,70080
+\def\dosecentry#1#2{\x7fdosecentry\x012138,70685
+\def\dosubsecentry#1#2{\x7fdosubsecentry\x012145,70863
+\def\dosubsubsecentry#1#2{\x7fdosubsubsecentry\x012152,71048
+\def\labelspace{\x7flabelspace\x012160,71299
+\def\dopageno#1{\x7fdopageno\x012162,71334
+\def\doshortpageno#1{\x7fdoshortpageno\x012163,71360
+\def\chapentryfonts{\x7fchapentryfonts\x012165,71392
+\def\secentryfonts{\x7fsecentryfonts\x012166,71427
+\let\subsecentryfonts = \textfonts\x7fsubsecentryfonts\x012167,71458
+\let\subsubsecentryfonts = \textfonts\x7fsubsubsecentryfonts\x012168,71493
+\let\ptexequiv = \equiv\x7fptexequiv\x012180,71896
+\def\point{\x7fpoint\x012192,72386
+\def\result{\x7fresult\x012194,72407
+\def\expansion{\x7fexpansion\x012195,72480
+\def\print{\x7fprint\x012196,72551
+\def\equiv{\x7fequiv\x012198,72618
+\def\error{\x7ferror\x012218,73391
+\def\tex{\x7ftex\x012224,73620
+\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie\x7f~\x012227,73731
+\let\{=\ptexlbrace\x7f{\x012237,73912
+\let\}=\ptexrbrace\x7f}\x012238,73931
+\let\.=\ptexdot\x7f.\x012239,73950
+\let\*=\ptexstar\x7f*\x012240,73966
+\let\dots=\ptexdots\x7fdots\x012241,73983
+\def\@{\x7f@\x012242,74003
+\let\bullet=\ptexbullet\x7fbullet\x012243,74014
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fb\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fc\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fi\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7ft\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fl\x012244,74038
+\let\L=\ptexL\x7fL\x012245,74108
+\let\Etex=\endgroup}\x7fEtex\x012247,74124
+\gdef\lisppar{\x7flisppar\x012259,74517
+\gdef\sepspaces{\x7fsepspaces\x012265,74735
+\def\aboveenvbreak{\x7faboveenvbreak\x012268,74817
+\def\afterenvbreak{\x7fafterenvbreak\x012272,74983
+\let\nonarrowing=\relax\x7fnonarrowing\x012276,75176
+\def\ctl{\x7fctl\x012286,75494
+\def\ctr{\x7fctr\x012287,75566
+\def\cbl{\x7fcbl\x012288,75605
+\def\cbr{\x7fcbr\x012289,75645
+\def\carttop{\x7fcarttop\x012290,75684
+\def\cartbot{\x7fcartbot\x012293,75792
+\long\def\cartouche{\x7fcartouche\x012299,75932
+ \let\nonarrowing=\comment\x7fnonarrowing\x012311,76404
+\def\Ecartouche{\x7fEcartouche\x012326,76720
+\def\lisp{\x7flisp\x012338,76855
+\let\par=\lisppar\x7fpar\x012347,77184
+\def\Elisp{\x7fElisp\x012348,77202
+\let\exdent=\nofillexdent\x7fexdent\x012355,77418
+\let\nonarrowing=\relax\x7fnonarrowing\x012356,77444
+\def\next##1{\x7fnext\x012360,77528
+\let\example=\lisp\x7fexample\x012363,77551
+\def\Eexample{\x7fEexample\x012364,77570
+\let\smallexample=\lisp\x7fsmallexample\x012366,77593
+\def\Esmallexample{\x7fEsmallexample\x012367,77617
+\def\smalllispx{\x7fsmalllispx\x012373,77795
+\let\par=\lisppar\x7fpar\x012382,78131
+\def\Esmalllisp{\x7fEsmalllisp\x012383,78149
+\let\exdent=\nofillexdent\x7fexdent\x012392,78436
+\let\nonarrowing=\relax\x7fnonarrowing\x012393,78462
\obeyspaces \obeylines \ninett \indexfonts \rawbackslash\x7ffonts\x012396,78505
-\def\next##1{\x7f\next\x012397,78562
-\def\display{\x7f\display\x012401,78642
-\def\Edisplay{\x7f\Edisplay\x012410,78961
-\def\next##1{\x7f\next\x012422,79272
-\def\format{\x7f\format\x012426,79375
-\def\Eformat{\x7f\Eformat\x012434,79671
-\def\next##1{\x7f\next\x012437,79760
-\def\flushleft{\x7f\flushleft\x012441,79812
-\def\Eflushleft{\x7f\Eflushleft\x012451,80183
-\def\next##1{\x7f\next\x012454,80276
-\def\flushright{\x7f\flushright\x012456,80298
-\def\Eflushright{\x7f\Eflushright\x012466,80670
-\def\next##1{\x7f\next\x012470,80801
-\def\quotation{\x7f\quotation\x012474,80859
-\def\Equotation{\x7f\Equotation\x012480,81051
-\def\setdeffont #1 {\x7f\setdeffont\x012493,81449
+\def\next##1{\x7fnext\x012397,78562
+\def\display{\x7fdisplay\x012401,78642
+\let\par=\lisppar\x7fpar\x012409,78943
+\def\Edisplay{\x7fEdisplay\x012410,78961
+\let\exdent=\nofillexdent\x7fexdent\x012417,79180
+\let\nonarrowing=\relax\x7fnonarrowing\x012418,79206
+\def\next##1{\x7fnext\x012422,79272
+\def\format{\x7fformat\x012426,79375
+\let\par=\lisppar\x7fpar\x012433,79653
+\def\Eformat{\x7fEformat\x012434,79671
+\def\next##1{\x7fnext\x012437,79760
+\def\flushleft{\x7fflushleft\x012441,79812
+\let\par=\lisppar\x7fpar\x012450,80165
+\def\Eflushleft{\x7fEflushleft\x012451,80183
+\def\next##1{\x7fnext\x012454,80276
+\def\flushright{\x7fflushright\x012456,80298
+\let\par=\lisppar\x7fpar\x012465,80652
+\def\Eflushright{\x7fEflushright\x012466,80670
+\def\next##1{\x7fnext\x012470,80801
+\def\quotation{\x7fquotation\x012474,80859
+\def\Equotation{\x7fEquotation\x012480,81051
+\let\nonarrowing=\relax\x7fnonarrowing\x012487,81301
+\def\setdeffont #1 {\x7fsetdeffont\x012493,81449
+\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
+\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
-\def\activeparens{\x7f\activeparens\x012503,81822
-\def\opnr{\x7f\opnr\x012529,83034
-\def\lbrb{\x7f\lbrb\x012530,83099
-\def\defname #1#2{\x7f\defname\x012536,83300
+\def\activeparens{\x7factiveparens\x012503,81822
+\gdef\functionparens{\x7ffunctionparens\x012507,82016
+\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }\x7f&\x012507,82016
+\gdef\boldbrax{\x7fboldbrax\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f(\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f)\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f[\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f]\x012508,82074
+\gdef\oprm#1 {\x7foprm\x012512,82250
+\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %\x7f(\x012512,82250
+\gdef\opnested{\x7fopnested\x012516,82407
+\gdef\clrm{\x7fclrm\x012518,82466
+\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi\x7f(\x012520,82602
+\gdef\amprm#1 {\x7famprm\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f(\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f)\x012523,82769
+\gdef\normalparens{\x7fnormalparens\x012525,82822
+\gdef\normalparens{\boldbrax\let&=\ampnr}\x7f&\x012525,82822
+\def\opnr{\x7fopnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{\x7fclnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\x7fampnr\x012529,83034
+\def\lbrb{\x7flbrb\x012530,83099
+\def\lbrb{{\bf\char`\[}} \def\rbrb{\x7frbrb\x012530,83099
+\def\defname #1#2{\x7fdefname\x012536,83300
\advance\dimen2 by -\defbodyindent\x7fbodyindent\x012540,83418
\advance\dimen3 by -\defbodyindent\x7fbodyindent\x012542,83472
\setbox0=\hbox{\hskip \deflastargmargin{\x7flastargmargin\x012544,83526
+\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012544,83526
\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations\x7fargsindent\x012546,83668
\parshape 2 0in \dimen0 \defargsindent \dimen1 %\x7fargsindent\x012547,83743
\rlap{\rightline{{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012554,84112
\advance\leftskip by -\defbodyindent\x7fbodyindent\x012557,84246
\exdentamount=\defbodyindent\x7fbodyindent\x012558,84283
-\def\defparsebody #1#2#3{\x7f\defparsebody\x012568,84642
-\def#1{\x7f2572,84826
-\def#2{\x7f2573,84862
+\def\defparsebody #1#2#3{\x7fdefparsebody\x012568,84642
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\exdentamount=\defbodyindent\x7fbodyindent\x012576,85008
-\def\defmethparsebody #1#2#3#4 {\x7f\defmethparsebody\x012581,85112
-\def#1{\x7f2585,85273
-\def#2##1 {\x7f2586,85309
+\def\defmethparsebody #1#2#3#4 {\x7fdefmethparsebody\x012581,85112
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\exdentamount=\defbodyindent\x7fbodyindent\x012589,85466
-\def\defopparsebody #1#2#3#4#5 {\x7f\defopparsebody\x012592,85551
-\def#1{\x7f2596,85712
-\def#2##1 ##2 {\x7f2597,85748
+\def\defopparsebody #1#2#3#4#5 {\x7fdefopparsebody\x012592,85551
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\exdentamount=\defbodyindent\x7fbodyindent\x012601,85922
-\def\defvarparsebody #1#2#3{\x7f\defvarparsebody\x012608,86193
-\def#1{\x7f2612,86380
-\def#2{\x7f2613,86416
+\def\defvarparsebody #1#2#3{\x7fdefvarparsebody\x012608,86193
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\exdentamount=\defbodyindent\x7fbodyindent\x012616,86549
-\def\defvrparsebody #1#2#3#4 {\x7f\defvrparsebody\x012621,86640
-\def#1{\x7f2625,86799
-\def#2##1 {\x7f2626,86835
+\def\defvrparsebody #1#2#3#4 {\x7fdefvrparsebody\x012621,86640
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\exdentamount=\defbodyindent\x7fbodyindent\x012629,86979
-\def\defopvarparsebody #1#2#3#4#5 {\x7f\defopvarparsebody\x012632,87051
-\def#1{\x7f2636,87215
-\def#2##1 ##2 {\x7f2637,87251
+\def\defopvarparsebody #1#2#3#4#5 {\x7fdefopvarparsebody\x012632,87051
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\exdentamount=\defbodyindent\x7fbodyindent\x012641,87412
-\def\defunargs #1{\x7f\defunargs\x012664,88172
-\def\deftypefunargs #1{\x7f\deftypefunargs\x012676,88554
-\def\deffn{\x7f\deffn\x012690,88936
-\def\deffnheader #1#2#3{\x7f\deffnheader\x012692,88993
+\gdef\spacesplit#1#2^^M{\x7fspacesplit\x012652,87775
+\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{\x7fspacesplitfoo\x012653,87852
+\def\defunargs #1{\x7fdefunargs\x012664,88172
+\def\deftypefunargs #1{\x7fdeftypefunargs\x012676,88554
+\def\deffn{\x7fdeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7fmethparsebody\Edeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnx\deffnheader\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnheader\x012690,88936
+\def\deffnheader #1#2#3{\x7fdeffnheader\x012692,88993
\begingroup\defname {\x7fname\x012693,89041
-\def\defun{\x7f\defun\x012699,89186
-\def\defunheader #1#2{\x7f\defunheader\x012701,89239
+\begingroup\defname {#2}{#1}\defunargs{\x7funargs\x012693,89041
+\def\defun{\x7fdefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7fparsebody\Edefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funx\defunheader\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funheader\x012699,89186
+\def\defunheader #1#2{\x7fdefunheader\x012701,89239
\begingroup\defname {\x7fname\x012702,89314
\defunargs {\x7funargs\x012703,89350
-\def\deftypefun{\x7f\deftypefun\x012709,89498
-\def\deftypefunheader #1#2{\x7f\deftypefunheader\x012712,89620
-\def\deftypefunheaderx #1#2 #3\relax{\x7f\deftypefunheaderx\x012714,89729
+\def\deftypefun{\x7fdeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7fparsebody\Edeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunx\deftypefunheader\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunheader\x012709,89498
+\def\deftypefunheader #1#2{\x7fdeftypefunheader\x012712,89620
+\def\deftypefunheader #1#2{\deftypefunheaderx{\x7ftypefunheaderx\x012712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\x7fdeftypefunheaderx\x012714,89729
\begingroup\defname {\x7fname\x012716,89821
\deftypefunargs {\x7ftypefunargs\x012717,89867
-\def\deftypefn{\x7f\deftypefn\x012723,90038
-\def\deftypefnheader #1#2#3{\x7f\deftypefnheader\x012726,90187
-\def\deftypefnheaderx #1#2#3 #4\relax{\x7f\deftypefnheaderx\x012728,90323
+\def\deftypefn{\x7fdeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7fmethparsebody\Edeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnx\deftypefnheader\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnheader\x012723,90038
+\def\deftypefnheader #1#2#3{\x7fdeftypefnheader\x012726,90187
+\def\deftypefnheader #1#2#3{\deftypefnheaderx{\x7ftypefnheaderx\x012726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\x7fdeftypefnheaderx\x012728,90323
\begingroup\defname {\x7fname\x012730,90416
\deftypefunargs {\x7ftypefunargs\x012731,90456
-\def\defmac{\x7f\defmac\x012737,90577
-\def\defmacheader #1#2{\x7f\defmacheader\x012739,90634
+\def\defmac{\x7fdefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fparsebody\Edefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacx\defmacheader\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacheader\x012737,90577
+\def\defmacheader #1#2{\x7fdefmacheader\x012739,90634
\begingroup\defname {\x7fname\x012740,90710
\defunargs {\x7funargs\x012741,90743
-\def\defspec{\x7f\defspec\x012747,90867
-\def\defspecheader #1#2{\x7f\defspecheader\x012749,90928
+\def\defspec{\x7fdefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fparsebody\Edefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecx\defspecheader\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecheader\x012747,90867
+\def\defspecheader #1#2{\x7fdefspecheader\x012749,90928
\begingroup\defname {\x7fname\x012750,91005
\defunargs {\x7funargs\x012751,91045
-\def\deffnx #1 {\x7f\deffnx\x012758,91240
-\def\defunx #1 {\x7f\defunx\x012759,91297
-\def\defmacx #1 {\x7f\defmacx\x012760,91354
-\def\defspecx #1 {\x7f\defspecx\x012761,91413
-\def\deftypefnx #1 {\x7f\deftypefnx\x012762,91474
-\def\deftypeunx #1 {\x7f\deftypeunx\x012763,91539
-\def\defop #1 {\x7f\defop\x012769,91685
-\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\defopx\defopheader\defoptype\x012770,91720
-\def\defopheader #1#2#3{\x7f\defopheader\x012772,91774
+\def\deffnx #1 {\x7fdeffnx\x012758,91240
+\def\defunx #1 {\x7fdefunx\x012759,91297
+\def\defmacx #1 {\x7fdefmacx\x012760,91354
+\def\defspecx #1 {\x7fdefspecx\x012761,91413
+\def\deftypefnx #1 {\x7fdeftypefnx\x012762,91474
+\def\deftypeunx #1 {\x7fdeftypeunx\x012763,91539
+\def\defop #1 {\x7fdefop\x012769,91685
+\def\defop #1 {\def\defoptype{\x7fdefoptype\x012769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopx\defopheader\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopheader\defoptype\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7foptype\x012770,91720
+\def\defopheader #1#2#3{\x7fdefopheader\x012772,91774
\begingroup\defname {\x7fname\x012774,91863
+\begingroup\defname {#2}{\defoptype{\x7foptype\x012774,91863
\defunargs {\x7funargs\x012775,91909
-\def\defmethod{\x7f\defmethod\x012780,91970
-\def\defmethodheader #1#2#3{\x7f\defmethodheader\x012782,92043
+\def\defmethod{\x7fdefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethparsebody\Edefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodx\defmethodheader\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodheader\x012780,91970
+\def\defmethodheader #1#2#3{\x7fdefmethodheader\x012782,92043
\begingroup\defname {\x7fname\x012784,92131
\defunargs {\x7funargs\x012785,92171
-\def\defcv #1 {\x7f\defcv\x012790,92245
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype\x012791,92280
-\def\defcvarheader #1#2#3{\x7f\defcvarheader\x012793,92339
+\def\defcv #1 {\x7fdefcv\x012790,92245
+\def\defcv #1 {\def\defcvtype{\x7fdefcvtype\x012790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvx\defcvarheader\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvarheader\defcvtype\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvtype\x012791,92280
+\def\defcvarheader #1#2#3{\x7fdefcvarheader\x012793,92339
\begingroup\defname {\x7fname\x012795,92425
+\begingroup\defname {#2}{\defcvtype{\x7fcvtype\x012795,92425
\defvarargs {\x7fvarargs\x012796,92471
-\def\defivar{\x7f\defivar\x012801,92544
-\def\defivarheader #1#2#3{\x7f\defivarheader\x012803,92607
+\def\defivar{\x7fdefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fvrparsebody\Edefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarx\defivarheader\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarheader\x012801,92544
+\def\defivarheader #1#2#3{\x7fdefivarheader\x012803,92607
\begingroup\defname {\x7fname\x012805,92693
\defvarargs {\x7fvarargs\x012806,92744
-\def\defopx #1 {\x7f\defopx\x012812,92893
-\def\defmethodx #1 {\x7f\defmethodx\x012813,92950
-\def\defcvx #1 {\x7f\defcvx\x012814,93015
-\def\defivarx #1 {\x7f\defivarx\x012815,93072
-\def\defvarargs #1{\x7f\defvarargs\x012822,93343
-\def\defvr{\x7f\defvr\x012828,93487
-\def\defvrheader #1#2#3{\x7f\defvrheader\x012830,93542
+\def\defopx #1 {\x7fdefopx\x012812,92893
+\def\defmethodx #1 {\x7fdefmethodx\x012813,92950
+\def\defcvx #1 {\x7fdefcvx\x012814,93015
+\def\defivarx #1 {\x7fdefivarx\x012815,93072
+\def\defvarargs #1{\x7fdefvarargs\x012822,93343
+\def\defvr{\x7fdefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrparsebody\Edefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrx\defvrheader\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrheader\x012828,93487
+\def\defvrheader #1#2#3{\x7fdefvrheader\x012830,93542
\begingroup\defname {\x7fname\x012831,93590
-\def\defvar{\x7f\defvar\x012835,93675
-\def\defvarheader #1#2{\x7f\defvarheader\x012837,93735
+\begingroup\defname {#2}{#1}\defvarargs{\x7fvarargs\x012831,93590
+\def\defvar{\x7fdefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarparsebody\Edefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarx\defvarheader\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarheader\x012835,93675
+\def\defvarheader #1#2{\x7fdefvarheader\x012837,93735
\begingroup\defname {\x7fname\x012838,93806
\defvarargs {\x7fvarargs\x012839,93842
-\def\defopt{\x7f\defopt\x012844,93908
-\def\defoptheader #1#2{\x7f\defoptheader\x012846,93968
+\def\defopt{\x7fdefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7fvarparsebody\Edefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptx\defoptheader\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptheader\x012844,93908
+\def\defoptheader #1#2{\x7fdefoptheader\x012846,93968
\begingroup\defname {\x7fname\x012847,94039
\defvarargs {\x7fvarargs\x012848,94078
-\def\deftypevar{\x7f\deftypevar\x012853,94135
-\def\deftypevarheader #1#2{\x7f\deftypevarheader\x012856,94251
+\def\deftypevar{\x7fdeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7fvarparsebody\Edeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarx\deftypevarheader\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarheader\x012853,94135
+\def\deftypevarheader #1#2{\x7fdeftypevarheader\x012856,94251
\begingroup\defname {\x7fname\x012858,94334
-\def\deftypevr{\x7f\deftypevr\x012865,94508
-\def\deftypevrheader #1#2#3{\x7f\deftypevrheader\x012867,94579
+\def\deftypevr{\x7fdeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7fvrparsebody\Edeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrx\deftypevrheader\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrheader\x012865,94508
+\def\deftypevrheader #1#2#3{\x7fdeftypevrheader\x012867,94579
\begingroup\defname {\x7fname\x012868,94631
-\def\defvrx #1 {\x7f\defvrx\x012876,94868
-\def\defvarx #1 {\x7f\defvarx\x012877,94925
-\def\defoptx #1 {\x7f\defoptx\x012878,94984
-\def\deftypevarx #1 {\x7f\deftypevarx\x012879,95043
-\def\deftypevrx #1 {\x7f\deftypevrx\x012880,95110
-\def\deftpargs #1{\x7f\deftpargs\x012885,95259
-\def\deftp{\x7f\deftp\x012889,95339
-\def\deftpheader #1#2#3{\x7f\deftpheader\x012891,95394
+\def\defvrx #1 {\x7fdefvrx\x012876,94868
+\def\defvarx #1 {\x7fdefvarx\x012877,94925
+\def\defoptx #1 {\x7fdefoptx\x012878,94984
+\def\deftypevarx #1 {\x7fdeftypevarx\x012879,95043
+\def\deftypevrx #1 {\x7fdeftypevrx\x012880,95110
+\def\deftpargs #1{\x7fdeftpargs\x012885,95259
+\def\deftpargs #1{\bf \defvarargs{\x7fvarargs\x012885,95259
+\def\deftp{\x7fdeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7fvrparsebody\Edeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpx\deftpheader\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpheader\x012889,95339
+\def\deftpheader #1#2#3{\x7fdeftpheader\x012891,95394
\begingroup\defname {\x7fname\x012892,95442
-\def\deftpx #1 {\x7f\deftpx\x012897,95601
-\def\setref#1{\x7f\setref\x012908,95922
-\def\unnumbsetref#1{\x7f\unnumbsetref\x012913,96036
-\def\appendixsetref#1{\x7f\appendixsetref\x012918,96143
-\def\pxref#1{\x7f\pxref\x012929,96554
-\def\xref#1{\x7f\xref\x012930,96590
-\def\ref#1{\x7f\ref\x012931,96625
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7f\xrefX[\x012932,96655
-\def\printedmanual{\x7f\printedmanual\x012933,96698
-\def\printednodename{\x7f\printednodename\x012934,96736
-\def\printednodename{\x7f\printednodename\x012939,96861
-section ``\printednodename'' in \cite{\printedmanual}\x7f\printedmanual\x012954,97493
+\begingroup\defname {#2}{#1}\deftpargs{\x7ftpargs\x012892,95442
+\def\deftpx #1 {\x7fdeftpx\x012897,95601
+\def\setref#1{\x7fsetref\x012908,95922
+\def\unnumbsetref#1{\x7funnumbsetref\x012913,96036
+\def\appendixsetref#1{\x7fappendixsetref\x012918,96143
+\def\pxref#1{\x7fpxref\x012929,96554
+\def\xref#1{\x7fxref\x012930,96590
+\def\ref#1{\x7fref\x012931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7fxrefX\x012932,96655
+\def\printedmanual{\x7fprintedmanual\x012933,96698
+\def\printednodename{\x7fprintednodename\x012934,96736
+\def\printednodename{\x7fprintednodename\x012939,96861
+section ``\printednodename'' in \cite{\printedmanual}\x7fprintedmanual\x012954,97493
\refx{\x7fx\x012957,97571
-\def\dosetq #1#2{\x7f\dosetq\x012965,97791
-\def\internalsetq #1#2{\x7f\internalsetq\x012973,98049
-\def\Ypagenumber{\x7f\Ypagenumber\x012977,98150
-\def\Ytitle{\x7f\Ytitle\x012979,98176
-\def\Ynothing{\x7f\Ynothing\x012981,98203
-\def\Ysectionnumberandtype{\x7f\Ysectionnumberandtype\x012983,98220
-\def\Yappendixletterandtype{\x7f\Yappendixletterandtype\x012992,98536
+\refx{#1-snt}{} [\printednodename], page\tie\refx{\x7fx\x012957,97571
+\def\dosetq #1#2{\x7fdosetq\x012965,97791
+\def\dosetq #1#2{{\let\folio=0 \turnoffactive%\x7ffolio\x012965,97791
+\edef\next{\x7fnext\x012966,97838
+\def\internalsetq #1#2{\x7finternalsetq\x012973,98049
+\def\Ypagenumber{\x7fYpagenumber\x012977,98150
+\def\Ytitle{\x7fYtitle\x012979,98176
+\def\Ynothing{\x7fYnothing\x012981,98203
+\def\Ysectionnumberandtype{\x7fYsectionnumberandtype\x012983,98220
+\def\Yappendixletterandtype{\x7fYappendixletterandtype\x012992,98536
\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{\x7fno\x012993,98566
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\secno\x012994,98621
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\secno.\the\subsecno\x012996,98725
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\secno.\the\subsecno.\the\subsubsecno\x012998,98796
- \def\linenumber{\x7f\linenumber\x013009,99135
-\def\refx#1#2{\x7f\refx\x013015,99319
-\def\xrdef #1#2{\x7f\xrdef\x013037,99945
-\def\readauxfile{\x7f\readauxfile\x013040,100030
-\def\supereject{\x7f\supereject\x013110,101811
-\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\textindent\x013131,102496
-\def\openindices{\x7f\openindices\x013139,102682
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\x012994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\x012996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\x012998,98796
+\gdef\xreftie{\x7fxreftie\x013001,98891
+ \let\linenumber = \empty % Non-3.0.\x7flinenumber\x013007,99091
+ \def\linenumber{\x7flinenumber\x013009,99135
+\def\refx#1#2{\x7frefx\x013015,99319
+\def\xrdef #1#2{\x7fxrdef\x013037,99945
+{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {\x7fcsname\x013038,99962
+\def\readauxfile{\x7freadauxfile\x013040,100030
+\def\supereject{\x7fsupereject\x013110,101811
+\let\footnotestyle=\comment\x7ffootnotestyle\x013113,101918
+\let\ptexfootnote=\footnote\x7fptexfootnote\x013115,101947
+\long\gdef\footnote #1{\x7ffootnote\x013118,101993
+\edef\thisfootno{\x7fthisfootno\x013120,102060
+\let\@sf\empty\x7f@sf\x013121,102100
+\ifhmode\edef\@sf{\x7f@sf\x013122,102115
+\long\gdef\footnotezzz #1{\x7ffootnotezzz\x013126,102228
+\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\x013131,102496
+\def\openindices{\x7fopenindices\x013139,102682
+\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\parindent = \defaultparindent\x7faultparindent\x013152,102959
-\def\smallbook{\x7f\smallbook\x013175,103683
-\global\def\Esmallexample{\x7f\Esmallexample\x013192,104110
-\def\afourpaper{\x7f\afourpaper\x013196,104201
-\def\finalout{\x7f\finalout\x013224,105009
-\def\normaldoublequote{\x7f\normaldoublequote\x013235,105270
-\def\normaltilde{\x7f\normaltilde\x013236,105296
-\def\normalcaret{\x7f\normalcaret\x013237,105316
-\def\normalunderscore{\x7f\normalunderscore\x013238,105336
-\def\normalverticalbar{\x7f\normalverticalbar\x013239,105361
-\def\normalless{\x7f\normalless\x013240,105387
-\def\normalgreater{\x7f\normalgreater\x013241,105406
-\def\normalplus{\x7f\normalplus\x013242,105428
-\def\ifusingtt#1#2{\x7f\ifusingtt\x013253,105920
-\def\activedoublequote{\x7f\activedoublequote\x013261,106248
+\def\smallbook{\x7fsmallbook\x013175,103683
+\global\let\smalllisp=\smalllispx\x7fsmalllisp\x013190,104039
+\global\let\smallexample=\smalllispx\x7fsmallexample\x013191,104073
+\global\def\Esmallexample{\x7fEsmallexample\x013192,104110
+\def\afourpaper{\x7fafourpaper\x013196,104201
+\def\finalout{\x7ffinalout\x013224,105009
+\def\normaldoublequote{\x7fnormaldoublequote\x013235,105270
+\def\normaltilde{\x7fnormaltilde\x013236,105296
+\def\normalcaret{\x7fnormalcaret\x013237,105316
+\def\normalunderscore{\x7fnormalunderscore\x013238,105336
+\def\normalverticalbar{\x7fnormalverticalbar\x013239,105361
+\def\normalless{\x7fnormalless\x013240,105387
+\def\normalgreater{\x7fnormalgreater\x013241,105406
+\def\normalplus{\x7fnormalplus\x013242,105428
+\def\ifusingtt#1#2{\x7fifusingtt\x013253,105920
+\def\activedoublequote{\x7factivedoublequote\x013261,106248
+\let"=\activedoublequote\x7f"\x013262,106289
\def~{\x7f~\x013264,106334
\def^{\x7f^\x013267,106395
\def_{\x7f_\x013270,106434
-\def\_{\x7f\_\x013272,106508
-\def\lvvmode{\x7f\lvvmode\x013279,106845
+\def\_{\x7f_\x013272,106508
+\def\lvvmode{\x7flvvmode\x013279,106845
\def|{\x7f|\x013282,106895
\def<{\x7f<\x013285,106958
\def>{\x7f>\x013288,107015
\def+{\x7f+\x013290,107053
-\def\turnoffactive{\x7f\turnoffactive\x013296,107214
+\def\turnoffactive{\x7fturnoffactive\x013296,107214
+\def\turnoffactive{\let"=\normaldoublequote\x7f"\x013296,107214
+\let~=\normaltilde\x7f~\x013297,107258
+\let^=\normalcaret\x7f^\x013298,107277
+\let_=\normalunderscore\x7f_\x013299,107296
+\let|=\normalverticalbar\x7f|\x013300,107320
+\let<=\normalless\x7f<\x013301,107345
+\let>=\normalgreater\x7f>\x013302,107363
+\let+=\normalplus}\x7f+\x013303,107384
\global\def={\x7f=\x013307,107500
-\def\normalbackslash{\x7f\normalbackslash\x013321,107882
+\def\normalbackslash{\x7fnormalbackslash\x013321,107882
\f
merc-src/accumulator.m,4915
:- interface\x7f146,5371
diff --git a/test/manual/etags/ETAGS.good_6 b/test/manual/etags/ETAGS.good_6
index 09abde35c51..35265f606c2 100644
--- a/test/manual/etags/ETAGS.good_6
+++ b/test/manual/etags/ETAGS.good_6
@@ -4290,8 +4290,8 @@ scm-src/test.scm,260
(define (((((curry-test \x7f14,205
(define-syntax test-begin\x7f17,265
\f
-tex-src/testenv.tex,52
-\newcommand{\nm}\x7f\nm\x014,77
+tex-src/testenv.tex,51
+\newcommand{\nm}\x7fnm\x014,77
\section{blah}\x7fblah\x018,139
\f
tex-src/gzip.texi,303
@@ -4306,722 +4306,1142 @@ tex-src/gzip.texi,303
@node Problems,\x7f460,16769
@node Concept Index,\x7fConcept Index\x01473,17289
\f
-tex-src/texinfo.tex,30627
-\def\texinfoversion{\x7f\texinfoversion\x0126,1035
-\def\tie{\x7f\tie\x0149,1526
-\def\gloggingall{\x7f\gloggingall\x0172,2276
-\def\loggingall{\x7f\loggingall\x0173,2345
-\def\onepageout#1{\x7f\onepageout\x0199,3282
-\def\croppageout#1{\x7f\croppageout\x01115,4032
-\def\cropmarks{\x7f\cropmarks\x01142,5092
-\def\pagebody#1{\x7f\pagebody\x01144,5139
-\def\ewtop{\x7f\ewtop\x01157,5594
-\def\nstop{\x7f\nstop\x01158,5658
-\def\ewbot{\x7f\ewbot\x01160,5741
-\def\nsbot{\x7f\nsbot\x01161,5805
-\def\parsearg #1{\x7f\parsearg\x01170,6104
-\def\parseargx{\x7f\parseargx\x01172,6182
-\def\parseargline{\x7f\parseargline\x01182,6422
-\def\flushcr{\x7f\flushcr\x01186,6543
-\newif\ifENV \ENVfalse \def\inENV{\x7f\inENV\x01190,6742
-\def\ENVcheck{\x7f\ENVcheck\x01191,6806
-\outer\def\begin{\x7f\begin\x01198,7053
-\def\beginxxx #1{\x7f\beginxxx\x01200,7091
-\def\end{\x7f\end\x01208,7346
-\def\endxxx #1{\x7f\endxxx\x01210,7374
-\def\errorE#1{\x7f\errorE\x01216,7563
-\def\singlespace{\x7f\singlespace\x01222,7757
-\def\@{\x7f\@\x01232,7980
-\def\`{\x7f\`\x01236,8080
-\def\'{\x7f\'\x01237,8092
-\def\mylbrace {\x7f\mylbrace\x01241,8140
-\def\myrbrace {\x7f\myrbrace\x01242,8173
-\def\:{\x7f\:\x01247,8287
-\def\*{\x7f\*\x01250,8341
-\def\.{\x7f\.\x01253,8417
-\def\w#1{\x7f\w\x01258,8648
-\def\group{\x7f\group\x01268,9131
- \def\Egroup{\x7f\Egroup\x01273,9295
-\def\need{\x7f\need\x01289,9737
-\def\needx#1{\x7f\needx\x01300,10014
-\def\dots{\x7f\dots\x01339,11400
-\def\page{\x7f\page\x01343,11464
-\def\exdent{\x7f\exdent\x01353,11791
-\def\exdentyyy #1{\x7f\exdentyyy\x01354,11824
-\def\nofillexdent{\x7f\nofillexdent\x01357,11968
-\def\nofillexdentyyy #1{\x7f\nofillexdentyyy\x01358,12013
-\def\include{\x7f\include\x01365,12197
-\def\includezzz #1{\x7f\includezzz\x01366,12232
-\def\thisfile{\x7f\thisfile\x01369,12283
-\def\center{\x7f\center\x01373,12346
-\def\centerzzz #1{\x7f\centerzzz\x01374,12379
-\def\sp{\x7f\sp\x01380,12521
-\def\spxxx #1{\x7f\spxxx\x01381,12546
-\def\comment{\x7f\comment\x01387,12720
-\def\commentxxx #1{\x7f\commentxxx\x01390,12817
-\def\ignoresections{\x7f\ignoresections\x01396,12986
-\let\chapter=\relax\x7f=\relax\x01397,13008
-\let\section=\relax\x7f=\relax\x01406,13253
-\let\subsection=\relax\x7f=\relax\x01409,13314
-\let\subsubsection=\relax\x7f=\relax\x01410,13337
-\let\appendix=\relax\x7f=\relax\x01411,13363
-\let\appendixsec=\relax\x7fsec=\relax\x01412,13384
-\let\appendixsection=\relax\x7fsection=\relax\x01413,13408
-\let\appendixsubsec=\relax\x7fsubsec=\relax\x01414,13436
-\let\appendixsubsection=\relax\x7fsubsection=\relax\x01415,13463
-\let\appendixsubsubsec=\relax\x7fsubsubsec=\relax\x01416,13494
-\let\appendixsubsubsection=\relax\x7fsubsubsection=\relax\x01417,13524
-\def\ignore{\x7f\ignore\x01423,13626
-\long\def\ignorexxx #1\end ignore{\x7f\ignorexxx\x01427,13766
-\def\direntry{\x7f\direntry\x01429,13825
-\long\def\direntryxxx #1\end direntry{\x7f\direntryxxx\x01430,13864
-\def\ifset{\x7f\ifset\x01434,13974
-\def\ifsetxxx #1{\x7f\ifsetxxx\x01436,14032
-\def\Eifset{\x7f\Eifset\x01440,14159
-\def\ifsetfail{\x7f\ifsetfail\x01441,14173
-\long\def\ifsetfailxxx #1\end ifset{\x7f\ifsetfailxxx\x01442,14229
-\def\ifclear{\x7f\ifclear\x01444,14290
-\def\ifclearxxx #1{\x7f\ifclearxxx\x01446,14352
-\def\Eifclear{\x7f\Eifclear\x01450,14483
-\def\ifclearfail{\x7f\ifclearfail\x01451,14499
-\long\def\ifclearfailxxx #1\end ifclear{\x7f\ifclearfailxxx\x01452,14559
-\def\set{\x7f\set\x01456,14710
-\def\setxxx #1{\x7f\setxxx\x01457,14737
-\def\clear{\x7f\clear\x01460,14799
-\def\clearxxx #1{\x7f\clearxxx\x01461,14830
-\def\iftex{\x7f\iftex\x01466,14947
-\def\Eiftex{\x7f\Eiftex\x01467,14960
-\def\ifinfo{\x7f\ifinfo\x01468,14974
-\long\def\ifinfoxxx #1\end ifinfo{\x7f\ifinfoxxx\x01469,15024
-\long\def\menu #1\end menu{\x7f\menu\x01471,15083
-\def\asis#1{\x7f\asis\x01472,15112
-\def\math#1{\x7f\math\x01485,15655
-\def\node{\x7f\node\x01487,15699
-\def\nodezzz#1{\x7f\nodezzz\x01488,15737
-\def\nodexxx[#1,#2]{\x7f\nodexxx[\x01489,15768
-\def\donoderef{\x7f\donoderef\x01492,15830
-\def\unnumbnoderef{\x7f\unnumbnoderef\x01496,15951
-\def\appendixnoderef{\x7f\appendixnoderef\x01500,16082
+tex-src/texinfo.tex,55236
+\def\texinfoversion{\x7ftexinfoversion\x0126,1035
+\let\ptexlbrace=\{\x7fptexlbrace\x0135,1308
+\let\ptexrbrace=\}\x7fptexrbrace\x0136,1327
+\let\ptexdots=\dots\x7fptexdots\x0137,1346
+\let\ptexdot=\.\x7fptexdot\x0138,1366
+\let\ptexstar=\*\x7fptexstar\x0139,1382
+\let\ptexend=\end\x7fptexend\x0140,1399
+\let\ptexbullet=\bullet\x7fptexbullet\x0141,1417
+\let\ptexb=\b\x7fptexb\x0142,1441
+\let\ptexc=\c\x7fptexc\x0143,1455
+\let\ptexi=\i\x7fptexi\x0144,1469
+\let\ptext=\t\x7fptext\x0145,1483
+\let\ptexl=\l\x7fptexl\x0146,1497
+\let\ptexL=\L\x7fptexL\x0147,1511
+\def\tie{\x7ftie\x0149,1526
+\def\gloggingall{\x7fgloggingall\x0172,2276
+\def\loggingall{\x7floggingall\x0173,2345
+\def\onepageout#1{\x7fonepageout\x0199,3282
+\shipout\vbox{{\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01103,3489
+{\let\hsize=\pagewidth \makefootline}\x7fhsize\x01104,3556
+\def\croppageout#1{\x7fcroppageout\x01115,4032
+ {\let\hsize=\pagewidth \makeheadline}\x7fhsize\x01126,4511
+ {\let\hsize=\pagewidth \makefootline}\x7fhsize\x01128,4569
+\def\cropmarks{\x7fcropmarks\x01142,5092
+\def\cropmarks{\let\onepageout=\croppageout }\x7fonepageout\x01142,5092
+\def\pagebody#1{\x7fpagebody\x01144,5139
+\gdef\pagecontents#1{\x7fpagecontents\x01146,5220
+\def\ewtop{\x7fewtop\x01157,5594
+\def\nstop{\x7fnstop\x01158,5658
+\def\ewbot{\x7fewbot\x01160,5741
+\def\nsbot{\x7fnsbot\x01161,5805
+\def\parsearg #1{\x7fparsearg\x01170,6104
+\def\parsearg #1{\let\next=#1\begingroup\obeylines\futurelet\temp\parseargx}\x7fnext\x01170,6104
+\def\parseargx{\x7fparseargx\x01172,6182
+\gdef\parseargdiscardspace {\x7fparseargdiscardspace\x01178,6321
+\gdef\obeyedspace{\x7fobeyedspace\x01180,6399
+\def\parseargline{\x7fparseargline\x01182,6422
+\gdef\parsearglinex #1^^M{\x7fparsearglinex\x01184,6493
+\def\flushcr{\x7fflushcr\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{\x7fnext\x01186,6543
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}\x7fnext\x01186,6543
+\newif\ifENV \ENVfalse \def\inENV{\x7finENV\x01190,6742
+\def\ENVcheck{\x7fENVcheck\x01191,6806
+\outer\def\begin{\x7fbegin\x01198,7053
+\def\beginxxx #1{\x7fbeginxxx\x01200,7091
+\def\end{\x7fend\x01208,7346
+\def\endxxx #1{\x7fendxxx\x01210,7374
+\def\errorE#1{\x7ferrorE\x01216,7563
+\def\singlespace{\x7fsinglespace\x01222,7757
+\def\@{\x7f@\x01232,7980
+\def\`{\x7f`\x01236,8080
+\def\'{\x7f'\x01237,8092
+\def\mylbrace {\x7fmylbrace\x01241,8140
+\def\myrbrace {\x7fmyrbrace\x01242,8173
+\let\{=\mylbrace\x7f{\x01243,8206
+\let\}=\myrbrace\x7f}\x01244,8223
+\def\:{\x7f:\x01247,8287
+\def\*{\x7f*\x01250,8341
+\def\.{\x7f.\x01253,8417
+\def\w#1{\x7fw\x01258,8648
+\def\group{\x7fgroup\x01268,9131
+ \def\Egroup{\x7fEgroup\x01273,9295
+\def\need{\x7fneed\x01289,9737
+\def\needx#1{\x7fneedx\x01300,10014
+\let\br = \par\x7fbr\x01335,11355
+\def\dots{\x7fdots\x01339,11400
+\def\page{\x7fpage\x01343,11464
+\def\exdent{\x7fexdent\x01353,11791
+\def\exdentyyy #1{\x7fexdentyyy\x01354,11824
+\def\nofillexdent{\x7fnofillexdent\x01357,11968
+\def\nofillexdentyyy #1{\x7fnofillexdentyyy\x01358,12013
+\def\include{\x7finclude\x01365,12197
+\def\includezzz #1{\x7fincludezzz\x01366,12232
+\def\includezzz #1{{\def\thisfile{\x7fthisfile\x01366,12232
+\def\thisfile{\x7fthisfile\x01369,12283
+\def\center{\x7fcenter\x01373,12346
+\def\centerzzz #1{\x7fcenterzzz\x01374,12379
+\def\sp{\x7fsp\x01380,12521
+\def\spxxx #1{\x7fspxxx\x01381,12546
+\def\comment{\x7fcomment\x01387,12720
+\def\commentxxx #1{\x7fcommentxxx\x01390,12817
+\let\c=\comment\x7fc\x01392,12883
+\def\ignoresections{\x7fignoresections\x01396,12986
+\let\chapter=\relax\x7fchapter\x01397,13008
+\let\unnumbered=\relax\x7funnumbered\x01398,13028
+\let\top=\relax\x7ftop\x01399,13051
+\let\unnumberedsec=\relax\x7funnumberedsec\x01400,13067
+\let\unnumberedsection=\relax\x7funnumberedsection\x01401,13093
+\let\unnumberedsubsec=\relax\x7funnumberedsubsec\x01402,13123
+\let\unnumberedsubsection=\relax\x7funnumberedsubsection\x01403,13152
+\let\unnumberedsubsubsec=\relax\x7funnumberedsubsubsec\x01404,13185
+\let\unnumberedsubsubsection=\relax\x7funnumberedsubsubsection\x01405,13217
+\let\section=\relax\x7fsection\x01406,13253
+\let\subsec=\relax\x7fsubsec\x01407,13273
+\let\subsubsec=\relax\x7fsubsubsec\x01408,13292
+\let\subsection=\relax\x7fsubsection\x01409,13314
+\let\subsubsection=\relax\x7fsubsubsection\x01410,13337
+\let\appendix=\relax\x7fappendix\x01411,13363
+\let\appendixsec=\relax\x7fappendixsec\x01412,13384
+\let\appendixsection=\relax\x7fappendixsection\x01413,13408
+\let\appendixsubsec=\relax\x7fappendixsubsec\x01414,13436
+\let\appendixsubsection=\relax\x7fappendixsubsection\x01415,13463
+\let\appendixsubsubsec=\relax\x7fappendixsubsubsec\x01416,13494
+\let\appendixsubsubsection=\relax\x7fappendixsubsubsection\x01417,13524
+\let\contents=\relax\x7fcontents\x01418,13558
+\let\smallbook=\relax\x7fsmallbook\x01419,13579
+\let\titlepage=\relax\x7ftitlepage\x01420,13601
+\def\ignore{\x7fignore\x01423,13626
+\long\def\ignorexxx #1\end ignore{\x7fignorexxx\x01427,13766
+\def\direntry{\x7fdirentry\x01429,13825
+\long\def\direntryxxx #1\end direntry{\x7fdirentryxxx\x01430,13864
+\def\ifset{\x7fifset\x01434,13974
+\def\ifsetxxx #1{\x7fifsetxxx\x01436,14032
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\ifsetfail\x7ftemp\x01437,14059
+\else \let\temp=\relax \fi\x7ftemp\x01438,14125
+\def\Eifset{\x7fEifset\x01440,14159
+\def\ifsetfail{\x7fifsetfail\x01441,14173
+\long\def\ifsetfailxxx #1\end ifset{\x7fifsetfailxxx\x01442,14229
+\def\ifclear{\x7fifclear\x01444,14290
+\def\ifclearxxx #1{\x7fifclearxxx\x01446,14352
+\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\relax\x7ftemp\x01447,14381
+\else \let\temp=\ifclearfail \fi\x7ftemp\x01448,14443
+\def\Eifclear{\x7fEifclear\x01450,14483
+\def\ifclearfail{\x7fifclearfail\x01451,14499
+\long\def\ifclearfailxxx #1\end ifclear{\x7fifclearfailxxx\x01452,14559
+\def\set{\x7fset\x01456,14710
+\def\setxxx #1{\x7fsetxxx\x01457,14737
+\expandafter\let\csname IF#1\endcsname=\set}\x7fcsname\x01458,14753
+\def\clear{\x7fclear\x01460,14799
+\def\clearxxx #1{\x7fclearxxx\x01461,14830
+\expandafter\let\csname IF#1\endcsname=\relax}\x7fcsname\x01462,14848
+\def\iftex{\x7fiftex\x01466,14947
+\def\Eiftex{\x7fEiftex\x01467,14960
+\def\ifinfo{\x7fifinfo\x01468,14974
+\long\def\ifinfoxxx #1\end ifinfo{\x7fifinfoxxx\x01469,15024
+\long\def\menu #1\end menu{\x7fmenu\x01471,15083
+\def\asis#1{\x7fasis\x01472,15112
+\let\implicitmath = $\x7fimplicitmath\x01484,15633
+\def\math#1{\x7fmath\x01485,15655
+\def\node{\x7fnode\x01487,15699
+\def\nodezzz#1{\x7fnodezzz\x01488,15737
+\def\nodexxx[#1,#2]{\x7fnodexxx\x01489,15768
+\def\nodexxx[#1,#2]{\gdef\lastnode{\x7flastnode\x01489,15768
+\let\lastnode=\relax\x7flastnode\x01490,15808
+\def\donoderef{\x7fdonoderef\x01492,15830
+\let\lastnode=\relax}\x7flastnode\x01494,15928
+\def\unnumbnoderef{\x7funnumbnoderef\x01496,15951
+\let\lastnode=\relax}\x7flastnode\x01498,16059
+\def\appendixnoderef{\x7fappendixnoderef\x01500,16082
\expandafter\expandafter\expandafter\appendixsetref{\x7fsetref\x01501,16128
-\let\refill=\relax\x7fill=\relax\x01504,16217
-\def\setfilename{\x7f\setfilename\x01509,16431
-\outer\def\bye{\x7f\bye\x01518,16677
-\def\inforef #1{\x7f\inforef\x01520,16733
-\def\inforefzzz #1,#2,#3,#4**{\x7f\inforefzzz\x01521,16771
-\def\losespace #1{\x7f\losespace\x01523,16868
-\def\sf{\x7f\sf\x01532,17072
-\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf=cmbx10\x01558,17867
-\font\deftt=cmtt10 scaled \magstep1\x7ftt=cmtt10\x01559,17913
-\def\df{\x7f\df\x01560,17949
-\def\resetmathfonts{\x7f\resetmathfonts\x01635,20543
-\def\textfonts{\x7f\textfonts\x01648,21132
-\def\chapfonts{\x7f\chapfonts\x01653,21347
-\def\secfonts{\x7f\secfonts\x01658,21563
-\def\subsecfonts{\x7f\subsecfonts\x01663,21768
-\def\indexfonts{\x7f\indexfonts\x01668,21985
-\def\smartitalicx{\x7f\smartitalicx\x01691,22717
-\def\smartitalic#1{\x7f\smartitalic\x01692,22793
-\let\cite=\smartitalic\x7f=\smartitalic\x01698,22938
-\def\b#1{\x7f\b\x01700,22962
-\def\t#1{\x7f\t\x01703,22997
-\def\samp #1{\x7f\samp\x01706,23149
-\def\key #1{\x7f\key\x01707,23182
-\def\ctrl #1{\x7f\ctrl\x01708,23243
-\def\tclose#1{\x7f\tclose\x01716,23445
-\def\ {\x7f\\x01720,23611
-\def\xkey{\x7f\xkey\x01728,23880
-\def\kbdfoo#1#2#3\par{\x7f\kbdfoo\x01729,23896
-\def\dmn#1{\x7f\dmn\x01738,24197
-\def\kbd#1{\x7f\kbd\x01740,24224
-\def\l#1{\x7f\l\x01742,24281
-\def\r#1{\x7f\r\x01744,24310
-\def\sc#1{\x7f\sc\x01746,24378
-\def\ii#1{\x7f\ii\x01747,24421
-\def\titlefont#1{\x7f\titlefont\x01755,24654
-\def\titlepage{\x7f\titlepage\x01761,24757
- \def\subtitlefont{\x7f\subtitlefont\x01766,24984
- \def\authorfont{\x7f\authorfont\x01768,25068
- \def\title{\x7f\title\x01774,25278
- \def\titlezzz##1{\x7f\titlezzz\x01775,25313
- \def\subtitle{\x7f\subtitle\x01783,25628
- \def\subtitlezzz##1{\x7f\subtitlezzz\x01784,25669
- \def\author{\x7f\author\x01787,25787
- \def\authorzzz##1{\x7f\authorzzz\x01788,25824
- \def\page{\x7f\page\x01794,26115
-\def\Etitlepage{\x7f\Etitlepage\x01804,26284
-\def\finishtitlepage{\x7f\finishtitlepage\x01817,26672
-\def\evenheading{\x7f\evenheading\x01846,27680
-\def\oddheading{\x7f\oddheading\x01847,27723
-\def\everyheading{\x7f\everyheading\x01848,27764
-\def\evenfooting{\x7f\evenfooting\x01850,27810
-\def\oddfooting{\x7f\oddfooting\x01851,27853
-\def\everyfooting{\x7f\everyfooting\x01852,27894
-\def\headings #1 {\x7f\headings\x01893,29586
-\def\HEADINGSoff{\x7f\HEADINGSoff\x01895,29635
-\def\HEADINGSdouble{\x7f\HEADINGSdouble\x01904,30062
-\def\HEADINGSsingle{\x7f\HEADINGSsingle\x01914,30382
-\def\HEADINGSon{\x7f\HEADINGSon\x01922,30603
-\def\HEADINGSafter{\x7f\HEADINGSafter\x01924,30637
-\def\HEADINGSdoublex{\x7f\HEADINGSdoublex\x01926,30732
-\def\HEADINGSsingleafter{\x7f\HEADINGSsingleafter\x01933,30920
-\def\HEADINGSsinglex{\x7f\HEADINGSsinglex\x01934,30981
-\def\today{\x7f\today\x01943,31256
-\def\thistitle{\x7f\thistitle\x01958,31801
-\def\settitle{\x7f\settitle\x01959,31826
-\def\settitlezzz #1{\x7f\settitlezzz\x01960,31863
-\def\internalBitem{\x7f\internalBitem\x01992,32793
-\def\internalBitemx{\x7f\internalBitemx\x01993,32843
-\def\internalBxitem "#1"{\x7f\internalBxitem\x01995,32888
-\def\internalBxitemx "#1"{\x7f\internalBxitemx\x01996,32968
-\def\internalBkitem{\x7f\internalBkitem\x01998,33043
-\def\internalBkitemx{\x7f\internalBkitemx\x01999,33095
-\def\kitemzzz #1{\x7f\kitemzzz\x011001,33142
-\def\xitemzzz #1{\x7f\xitemzzz\x011004,33244
-\def\itemzzz #1{\x7f\itemzzz\x011007,33347
-\def\item{\x7f\item\x011037,34418
-\def\itemx{\x7f\itemx\x011038,34469
-\def\kitem{\x7f\kitem\x011039,34522
-\def\kitemx{\x7f\kitemx\x011040,34575
-\def\xitem{\x7f\xitem\x011041,34630
-\def\xitemx{\x7f\xitemx\x011042,34683
-\def\description{\x7f\description\x011045,34793
-\def\table{\x7f\table\x011047,34843
-\def\ftable{\x7f\ftable\x011052,34987
-\def\Eftable{\x7f\Eftable\x011056,35133
-\def\vtable{\x7f\vtable\x011059,35202
-\def\Evtable{\x7f\Evtable\x011063,35348
-\def\dontindex #1{\x7f\dontindex\x011066,35417
-\def\fnitemindex #1{\x7f\fnitemindex\x011067,35437
-\def\vritemindex #1{\x7f\vritemindex\x011068,35482
-\def\tablez #1#2#3#4#5#6{\x7f\tablez\x011074,35631
-\def\Edescription{\x7f\Edescription\x011077,35689
-\def\itemfont{\x7f\itemfont\x011082,35890
-\def\Etable{\x7f\Etable\x011090,36116
-\def\itemize{\x7f\itemize\x011103,36440
-\def\itemizezzz #1{\x7f\itemizezzz\x011105,36476
-\def\itemizey #1#2{\x7f\itemizey\x011110,36571
-\def#2{\x7f1119,36817
-\def\itemcontents{\x7f\itemcontents\x011120,36858
-\def\bullet{\x7f\bullet\x011123,36906
-\def\minus{\x7f\minus\x011124,36933
-\def\frenchspacing{\x7f\frenchspacing\x011128,37041
-\def\splitoff#1#2\endmark{\x7f\splitoff\x011134,37266
-\def\enumerate{\x7f\enumerate\x011140,37496
-\def\enumeratezzz #1{\x7f\enumeratezzz\x011141,37535
-\def\enumeratey #1 #2\endenumeratey{\x7f\enumeratey\x011142,37588
- \def\thearg{\x7f\thearg\x011146,37735
- \ifx\thearg\empty \def\thearg{\x7f\thearg\x011147,37754
-\def\numericenumerate{\x7f\numericenumerate\x011184,39088
-\def\lowercaseenumerate{\x7f\lowercaseenumerate\x011190,39218
-\def\uppercaseenumerate{\x7f\uppercaseenumerate\x011203,39565
-\def\startenumeration#1{\x7f\startenumeration\x011219,40055
-\def\alphaenumerate{\x7f\alphaenumerate\x011227,40237
-\def\capsenumerate{\x7f\capsenumerate\x011228,40272
-\def\Ealphaenumerate{\x7f\Ealphaenumerate\x011229,40306
-\def\Ecapsenumerate{\x7f\Ecapsenumerate\x011230,40340
-\def\itemizeitem{\x7f\itemizeitem\x011234,40420
-\def\newindex #1{\x7f\newindex\x011259,41277
-\def\defindex{\x7f\defindex\x011268,41566
-\def\newcodeindex #1{\x7f\newcodeindex\x011272,41674
-\def\defcodeindex{\x7f\defcodeindex\x011279,41934
-\def\synindex #1 #2 {\x7f\synindex\x011283,42114
-\def\syncodeindex #1 #2 {\x7f\syncodeindex\x011292,42454
-\def\doindex#1{\x7f\doindex\x011309,43133
-\def\singleindexer #1{\x7f\singleindexer\x011310,43192
-\def\docodeindex#1{\x7f\docodeindex\x011313,43304
-\def\singlecodeindexer #1{\x7f\singlecodeindexer\x011314,43371
-\def\indexdummies{\x7f\indexdummies\x011316,43429
-\def\_{\x7f\_\x011317,43449
-\def\w{\x7f\w\x011318,43477
-\def\bf{\x7f\bf\x011319,43504
-\def\rm{\x7f\rm\x011320,43533
-\def\sl{\x7f\sl\x011321,43562
-\def\sf{\x7f\sf\x011322,43591
-\def\tt{\x7f\tt\x011323,43619
-\def\gtr{\x7f\gtr\x011324,43647
-\def\less{\x7f\less\x011325,43677
-\def\hat{\x7f\hat\x011326,43709
-\def\char{\x7f\char\x011327,43739
-\def\TeX{\x7f\TeX\x011328,43771
-\def\dots{\x7f\dots\x011329,43801
-\def\copyright{\x7f\copyright\x011330,43834
-\def\tclose##1{\x7f\tclose\x011331,43877
-\def\code##1{\x7f\code\x011332,43922
-\def\samp##1{\x7f\samp\x011333,43963
-\def\t##1{\x7f\t\x011334,44004
-\def\r##1{\x7f\r\x011335,44039
-\def\i##1{\x7f\i\x011336,44074
-\def\b##1{\x7f\b\x011337,44109
-\def\cite##1{\x7f\cite\x011338,44144
-\def\key##1{\x7f\key\x011339,44185
-\def\file##1{\x7f\file\x011340,44224
-\def\var##1{\x7f\var\x011341,44265
-\def\kbd##1{\x7f\kbd\x011342,44304
-\def\indexdummyfont#1{\x7f\indexdummyfont\x011347,44460
-\def\indexdummytex{\x7f\indexdummytex\x011348,44486
-\def\indexdummydots{\x7f\indexdummydots\x011349,44510
-\def\indexnofonts{\x7f\indexnofonts\x011351,44536
+\let\lastnode=\relax}\x7flastnode\x01502,16194
+\let\refill=\relax\x7frefill\x01504,16217
+\def\setfilename{\x7fsetfilename\x01509,16431
+ \global\let\setfilename=\comment % Ignore extra @setfilename cmds.\x7fsetfilename\x01514,16562
+\outer\def\bye{\x7fbye\x01518,16677
+\def\inforef #1{\x7finforef\x01520,16733
+\def\inforefzzz #1,#2,#3,#4**{\x7finforefzzz\x01521,16771
+\def\losespace #1{\x7flosespace\x01523,16868
+\def\sf{\x7fsf\x01532,17072
+\let\li = \sf % Sometimes we call it \li, not \sf.\x7fli\x01533,17100
+\let\mainmagstep=\magstephalf\x7fmainmagstep\x01536,17201
+\let\mainmagstep=\magstep1\x7fmainmagstep\x01539,17250
+\font\defbf=cmbx10 scaled \magstep1 %was 1314\x7fbf\x01558,17867
+\font\deftt=cmtt10 scaled \magstep1\x7ftt\x01559,17913
+\def\df{\x7fdf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftentt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftt\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7ftenbf\x01560,17949
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}\x7fbf\x01560,17949
+\let\indsl=\indit\x7findsl\x01570,18310
+\let\indtt=\ninett\x7findtt\x01571,18328
+\let\indsf=\indrm\x7findsf\x01572,18347
+\let\indbf=\indrm\x7findbf\x01573,18365
+\let\indsc=\indrm\x7findsc\x01574,18383
+\let\chapbf=\chaprm\x7fchapbf\x01584,18643
+\let\authorrm = \secrm\x7fauthorrm\x01627,20193
+\def\resetmathfonts{\x7fresetmathfonts\x01635,20543
+\def\textfonts{\x7ftextfonts\x01648,21132
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenrm\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftenit\x01649,21149
+ \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl\x7ftensl\x01649,21149
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftenbf\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7ftentt\x01650,21208
+ \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc\x7fsmallcaps\x01650,21208
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensf\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7fteni\x01651,21271
+ \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy\x7ftensy\x01651,21271
+\def\chapfonts{\x7fchapfonts\x01653,21347
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenrm\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftenit\x01654,21364
+ \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \x7ftensl\x01654,21364
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftenbf\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7ftentt\x01655,21424
+ \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc\x7fsmallcaps\x01655,21424
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensf\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7fteni\x01656,21487
+ \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy\x7ftensy\x01656,21487
+\def\secfonts{\x7fsecfonts\x01658,21563
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenrm\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftenit\x01659,21579
+ \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl\x7ftensl\x01659,21579
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftenbf\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7ftentt\x01660,21635
+ \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc\x7fsmallcaps\x01660,21635
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensf\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7fteni\x01661,21695
+ \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy\x7ftensy\x01661,21695
+\def\subsecfonts{\x7fsubsecfonts\x01663,21768
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenrm\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftenit\x01664,21787
+ \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl\x7ftensl\x01664,21787
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftenbf\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7ftentt\x01665,21846
+ \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc\x7fsmallcaps\x01665,21846
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensf\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7fteni\x01666,21909
+ \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy\x7ftensy\x01666,21909
+\def\indexfonts{\x7findexfonts\x01668,21985
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenrm\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftenit\x01669,22003
+ \let\tenrm=\indrm \let\tenit=\indit \let\tensl=\indsl\x7ftensl\x01669,22003
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftenbf\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7ftentt\x01670,22059
+ \let\tenbf=\indbf \let\tentt=\indtt \let\smallcaps=\indsc\x7fsmallcaps\x01670,22059
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensf\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7fteni\x01671,22119
+ \let\tensf=\indsf \let\teni=\indi \let\tensy=\indsy\x7ftensy\x01671,22119
+\def\smartitalicx{\x7fsmartitalicx\x01691,22717
+\def\smartitalic#1{\x7fsmartitalic\x01692,22793
+\let\i=\smartitalic\x7fi\x01694,22851
+\let\var=\smartitalic\x7fvar\x01695,22871
+\let\dfn=\smartitalic\x7fdfn\x01696,22893
+\let\emph=\smartitalic\x7femph\x01697,22915
+\let\cite=\smartitalic\x7fcite\x01698,22938
+\def\b#1{\x7fb\x01700,22962
+\let\strong=\b\x7fstrong\x01701,22981
+\def\t#1{\x7ft\x01703,22997
+\let\ttfont = \t\x7fttfont\x01704,23072
+\def\samp #1{\x7fsamp\x01706,23149
+\def\key #1{\x7fkey\x01707,23182
+\def\ctrl #1{\x7fctrl\x01708,23243
+\let\file=\samp\x7ffile\x01710,23285
+\def\tclose#1{\x7ftclose\x01716,23445
+\let\code=\tclose\x7fcode\x01722,23722
+\def\xkey{\x7fxkey\x01728,23880
+\def\kbdfoo#1#2#3\par{\x7fkbdfoo\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{\x7fone\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{\x7fthree\x01729,23896
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{\x7fthreex\x01729,23896
+\def\dmn#1{\x7fdmn\x01738,24197
+\def\kbd#1{\x7fkbd\x01740,24224
+\def\kbd#1{\def\look{\x7flook\x01740,24224
+\def\l#1{\x7fl\x01742,24281
+\def\r#1{\x7fr\x01744,24310
+\def\sc#1{\x7fsc\x01746,24378
+\def\ii#1{\x7fii\x01747,24421
+\def\titlefont#1{\x7ftitlefont\x01755,24654
+\def\titlepage{\x7ftitlepage\x01761,24757
+ \let\subtitlerm=\tenrm\x7fsubtitlerm\x01762,24810
+ \def\subtitlefont{\x7fsubtitlefont\x01766,24984
+ \def\authorfont{\x7fauthorfont\x01768,25068
+ \def\title{\x7ftitle\x01774,25278
+ \def\titlezzz##1{\x7ftitlezzz\x01775,25313
+ \def\subtitle{\x7fsubtitle\x01783,25628
+ \def\subtitlezzz##1{\x7fsubtitlezzz\x01784,25669
+ \def\author{\x7fauthor\x01787,25787
+ \def\authorzzz##1{\x7fauthorzzz\x01788,25824
+ \let\oldpage = \page\x7foldpage\x01793,26091
+ \def\page{\x7fpage\x01794,26115
+ \let\page = \oldpage\x7fpage\x01799,26206
+\def\Etitlepage{\x7fEtitlepage\x01804,26284
+\def\finishtitlepage{\x7ffinishtitlepage\x01817,26672
+\let\thispage=\folio\x7fthispage\x01825,26825
+\let\HEADINGShook=\relax\x7fHEADINGShook\x01837,27420
+\def\evenheading{\x7fevenheading\x01846,27680
+\def\oddheading{\x7foddheading\x01847,27723
+\def\everyheading{\x7feveryheading\x01848,27764
+\def\evenfooting{\x7fevenfooting\x01850,27810
+\def\oddfooting{\x7foddfooting\x01851,27853
+\def\everyfooting{\x7feveryfooting\x01852,27894
+\gdef\evenheadingxxx #1{\x7fevenheadingxxx\x01856,27958
+\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{\x7fevenheadingyyy\x01857,28017
+\gdef\oddheadingxxx #1{\x7foddheadingxxx\x01860,28126
+\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{\x7foddheadingyyy\x01861,28183
+\gdef\everyheadingxxx #1{\x7feveryheadingxxx\x01864,28290
+\gdef\everyheadingyyy #1@|#2@|#3@|#4\finish{\x7feveryheadingyyy\x01865,28351
+\gdef\evenfootingxxx #1{\x7fevenfootingxxx\x01869,28522
+\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{\x7fevenfootingyyy\x01870,28581
+\gdef\oddfootingxxx #1{\x7foddfootingxxx\x01873,28690
+\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{\x7foddfootingyyy\x01874,28747
+\gdef\everyfootingxxx #1{\x7feveryfootingxxx\x01877,28854
+\gdef\everyfootingyyy #1@|#2@|#3@|#4\finish{\x7feveryfootingyyy\x01878,28915
+\def\headings #1 {\x7fheadings\x01893,29586
+\def\HEADINGSoff{\x7fHEADINGSoff\x01895,29635
+\def\HEADINGSdouble{\x7fHEADINGSdouble\x01904,30062
+\def\HEADINGSsingle{\x7fHEADINGSsingle\x01914,30382
+\def\HEADINGSon{\x7fHEADINGSon\x01922,30603
+\def\HEADINGSafter{\x7fHEADINGSafter\x01924,30637
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}\x7fHEADINGShook\x01924,30637
+\let\HEADINGSdoubleafter=\HEADINGSafter\x7fHEADINGSdoubleafter\x01925,30692
+\def\HEADINGSdoublex{\x7fHEADINGSdoublex\x01926,30732
+\def\HEADINGSsingleafter{\x7fHEADINGSsingleafter\x01933,30920
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}\x7fHEADINGShook\x01933,30920
+\def\HEADINGSsinglex{\x7fHEADINGSsinglex\x01934,30981
+\def\today{\x7ftoday\x01943,31256
+\def\thistitle{\x7fthistitle\x01958,31801
+\def\settitle{\x7fsettitle\x01959,31826
+\def\settitlezzz #1{\x7fsettitlezzz\x01960,31863
+\def\settitlezzz #1{\gdef\thistitle{\x7fthistitle\x01960,31863
+\def\internalBitem{\x7finternalBitem\x01992,32793
+\def\internalBitemx{\x7finternalBitemx\x01993,32843
+\def\internalBxitem "#1"{\x7finternalBxitem\x01995,32888
+\def\internalBxitem "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01995,32888
+\def\internalBxitemx "#1"{\x7finternalBxitemx\x01996,32968
+\def\internalBxitemx "#1"{\def\xitemsubtopix{\x7fxitemsubtopix\x01996,32968
+\def\internalBkitem{\x7finternalBkitem\x01998,33043
+\def\internalBkitemx{\x7finternalBkitemx\x01999,33095
+\def\kitemzzz #1{\x7fkitemzzz\x011001,33142
+\def\xitemzzz #1{\x7fxitemzzz\x011004,33244
+\def\itemzzz #1{\x7fitemzzz\x011007,33347
+\def\item{\x7fitem\x011037,34418
+\def\itemx{\x7fitemx\x011038,34469
+\def\kitem{\x7fkitem\x011039,34522
+\def\kitemx{\x7fkitemx\x011040,34575
+\def\xitem{\x7fxitem\x011041,34630
+\def\xitemx{\x7fxitemx\x011042,34683
+\def\description{\x7fdescription\x011045,34793
+\def\table{\x7ftable\x011047,34843
+\gdef\tablex #1^^M{\x7ftablex\x011049,34925
+\def\ftable{\x7fftable\x011052,34987
+\gdef\ftablex #1^^M{\x7fftablex\x011054,35071
+\def\Eftable{\x7fEftable\x011056,35133
+\let\Etable=\relax}\x7fEtable\x011057,35180
+\def\vtable{\x7fvtable\x011059,35202
+\gdef\vtablex #1^^M{\x7fvtablex\x011061,35286
+\def\Evtable{\x7fEvtable\x011063,35348
+\let\Etable=\relax}\x7fEtable\x011064,35395
+\def\dontindex #1{\x7fdontindex\x011066,35417
+\def\fnitemindex #1{\x7ffnitemindex\x011067,35437
+\def\vritemindex #1{\x7fvritemindex\x011068,35482
+\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\x7ftabley\x011071,35543
+\def\tablez #1#2#3#4#5#6{\x7ftablez\x011074,35631
+\def\Edescription{\x7fEdescription\x011077,35689
+\let\itemindex=#1%\x7fitemindex\x011078,35735
+\def\itemfont{\x7fitemfont\x011082,35890
+\def\Etable{\x7fEtable\x011090,36116
+\let\item = \internalBitem %\x7fitem\x011091,36162
+\let\itemx = \internalBitemx %\x7fitemx\x011092,36191
+\let\kitem = \internalBkitem %\x7fkitem\x011093,36222
+\let\kitemx = \internalBkitemx %\x7fkitemx\x011094,36253
+\let\xitem = \internalBxitem %\x7fxitem\x011095,36286
+\let\xitemx = \internalBxitemx %\x7fxitemx\x011096,36317
+\def\itemize{\x7fitemize\x011103,36440
+\def\itemizezzz #1{\x7fitemizezzz\x011105,36476
+\def\itemizey #1#2{\x7fitemizey\x011110,36571
+\def\itemcontents{\x7fitemcontents\x011120,36858
+\let\item=\itemizeitem}\x7fitem\x011121,36881
+\def\bullet{\x7fbullet\x011123,36906
+\def\minus{\x7fminus\x011124,36933
+\def\frenchspacing{\x7ffrenchspacing\x011128,37041
+\def\splitoff#1#2\endmark{\x7fsplitoff\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{\x7ffirst\x011134,37266
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{\x7frest\x011134,37266
+\def\enumerate{\x7fenumerate\x011140,37496
+\def\enumeratezzz #1{\x7fenumeratezzz\x011141,37535
+\def\enumeratey #1 #2\endenumeratey{\x7fenumeratey\x011142,37588
+ \def\thearg{\x7fthearg\x011146,37735
+ \ifx\thearg\empty \def\thearg{\x7fthearg\x011147,37754
+\def\numericenumerate{\x7fnumericenumerate\x011184,39088
+\def\lowercaseenumerate{\x7flowercaseenumerate\x011190,39218
+\def\uppercaseenumerate{\x7fuppercaseenumerate\x011203,39565
+\def\startenumeration#1{\x7fstartenumeration\x011219,40055
+\def\alphaenumerate{\x7falphaenumerate\x011227,40237
+\def\capsenumerate{\x7fcapsenumerate\x011228,40272
+\def\Ealphaenumerate{\x7fEalphaenumerate\x011229,40306
+\def\Ecapsenumerate{\x7fEcapsenumerate\x011230,40340
+\def\itemizeitem{\x7fitemizeitem\x011234,40420
+{\let\par=\endgraf \smallbreak}\x7fpar\x011236,40460
+\gdef\newwrite{\x7fnewwrite\x011249,40841
+\def\newindex #1{\x7fnewindex\x011259,41277
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011262,41439
+\def\defindex{\x7fdefindex\x011268,41566
+\def\newcodeindex #1{\x7fnewcodeindex\x011272,41674
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011275,41840
+\def\defcodeindex{\x7fdefcodeindex\x011279,41934
+\def\synindex #1 #2 {\x7fsynindex\x011283,42114
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011284,42137
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011285,42217
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011286,42273
+\def\syncodeindex #1 #2 {\x7fsyncodeindex\x011292,42454
+\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname\x7fexpandafter\x011293,42481
+\expandafter\let\csname#1indfile\endcsname=\synindexfoo\x7fcsname\x011294,42561
+\expandafter\xdef\csname#1index\endcsname{\x7fcsname\x011295,42617
+\def\doindex#1{\x7fdoindex\x011309,43133
+\def\doindex#1{\edef\indexname{\x7findexname\x011309,43133
+\def\singleindexer #1{\x7fsingleindexer\x011310,43192
+\def\singleindexer #1{\doind{\indexname}\x7fname\x011310,43192
+\def\docodeindex#1{\x7fdocodeindex\x011313,43304
+\def\docodeindex#1{\edef\indexname{\x7findexname\x011313,43304
+\def\singlecodeindexer #1{\x7fsinglecodeindexer\x011314,43371
+\def\singlecodeindexer #1{\doind{\indexname}\x7fname\x011314,43371
+\def\indexdummies{\x7findexdummies\x011316,43429
+\def\_{\x7f_\x011317,43449
+\def\w{\x7fw\x011318,43477
+\def\bf{\x7fbf\x011319,43504
+\def\rm{\x7frm\x011320,43533
+\def\sl{\x7fsl\x011321,43562
+\def\sf{\x7fsf\x011322,43591
+\def\tt{\x7ftt\x011323,43619
+\def\gtr{\x7fgtr\x011324,43647
+\def\less{\x7fless\x011325,43677
+\def\hat{\x7fhat\x011326,43709
+\def\char{\x7fchar\x011327,43739
+\def\TeX{\x7fTeX\x011328,43771
+\def\dots{\x7fdots\x011329,43801
+\def\copyright{\x7fcopyright\x011330,43834
+\def\tclose##1{\x7ftclose\x011331,43877
+\def\code##1{\x7fcode\x011332,43922
+\def\samp##1{\x7fsamp\x011333,43963
+\def\t##1{\x7ft\x011334,44004
+\def\r##1{\x7fr\x011335,44039
+\def\i##1{\x7fi\x011336,44074
+\def\b##1{\x7fb\x011337,44109
+\def\cite##1{\x7fcite\x011338,44144
+\def\key##1{\x7fkey\x011339,44185
+\def\file##1{\x7ffile\x011340,44224
+\def\var##1{\x7fvar\x011341,44265
+\def\kbd##1{\x7fkbd\x011342,44304
+\def\indexdummyfont#1{\x7findexdummyfont\x011347,44460
+\def\indexdummytex{\x7findexdummytex\x011348,44486
+\def\indexdummydots{\x7findexdummydots\x011349,44510
+\def\indexnofonts{\x7findexnofonts\x011351,44536
+\let\w=\indexdummyfont\x7fw\x011352,44556
\let\w=\indexdummyfont\x7fdummyfont\x011352,44556
+\let\t=\indexdummyfont\x7ft\x011353,44579
\let\t=\indexdummyfont\x7fdummyfont\x011353,44579
+\let\r=\indexdummyfont\x7fr\x011354,44602
\let\r=\indexdummyfont\x7fdummyfont\x011354,44602
+\let\i=\indexdummyfont\x7fi\x011355,44625
\let\i=\indexdummyfont\x7fdummyfont\x011355,44625
+\let\b=\indexdummyfont\x7fb\x011356,44648
\let\b=\indexdummyfont\x7fdummyfont\x011356,44648
+\let\emph=\indexdummyfont\x7femph\x011357,44671
\let\emph=\indexdummyfont\x7fdummyfont\x011357,44671
+\let\strong=\indexdummyfont\x7fstrong\x011358,44697
\let\strong=\indexdummyfont\x7fdummyfont\x011358,44697
-\let\cite=\indexdummyfont\x7f=\indexdummyfont\x011359,44725
+\let\cite=\indexdummyfont\x7fcite\x011359,44725
+\let\cite=\indexdummyfont\x7fdummyfont\x011359,44725
+\let\sc=\indexdummyfont\x7fsc\x011360,44751
\let\sc=\indexdummyfont\x7fdummyfont\x011360,44751
+\let\tclose=\indexdummyfont\x7ftclose\x011364,44923
\let\tclose=\indexdummyfont\x7fdummyfont\x011364,44923
+\let\code=\indexdummyfont\x7fcode\x011365,44951
\let\code=\indexdummyfont\x7fdummyfont\x011365,44951
+\let\file=\indexdummyfont\x7ffile\x011366,44977
\let\file=\indexdummyfont\x7fdummyfont\x011366,44977
+\let\samp=\indexdummyfont\x7fsamp\x011367,45003
\let\samp=\indexdummyfont\x7fdummyfont\x011367,45003
+\let\kbd=\indexdummyfont\x7fkbd\x011368,45029
\let\kbd=\indexdummyfont\x7fdummyfont\x011368,45029
+\let\key=\indexdummyfont\x7fkey\x011369,45054
\let\key=\indexdummyfont\x7fdummyfont\x011369,45054
+\let\var=\indexdummyfont\x7fvar\x011370,45079
\let\var=\indexdummyfont\x7fdummyfont\x011370,45079
+\let\TeX=\indexdummytex\x7fTeX\x011371,45104
\let\TeX=\indexdummytex\x7fdummytex\x011371,45104
+\let\dots=\indexdummydots\x7fdots\x011372,45128
\let\dots=\indexdummydots\x7fdummydots\x011372,45128
-\let\indexbackslash=0 %overridden during \printindex.\x7fbackslash=0\x011382,45380
-\def\doind #1#2{\x7f\doind\x011384,45436
+\let\indexbackslash=0 %overridden during \printindex.\x7findexbackslash\x011382,45380
+\def\doind #1#2{\x7fdoind\x011384,45436
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011386,45479
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011389,45619
+{\let\folio=0% Expand all macros now EXCEPT \folio\x7ffolio\x011388,45568
+\def\rawbackslashxx{\x7frawbackslashxx\x011389,45619
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011389,45619
{\indexnofonts\x7fnofonts\x011394,45881
-\def\dosubind #1#2#3{\x7f\dosubind\x011405,46192
+\xdef\temp1{\x7ftemp1\x011395,45896
+\edef\temp{\x7ftemp\x011399,46068
+\def\dosubind #1#2#3{\x7fdosubind\x011405,46192
{\indexdummies % Must do this here, since \bf, etc expand at this stage\x7fdummies\x011407,46240
-\def\rawbackslashxx{\x7f\rawbackslashxx\x011410,46344
+{\let\folio=0%\x7ffolio\x011409,46329
+\def\rawbackslashxx{\x7frawbackslashxx\x011410,46344
+\def\rawbackslashxx{\indexbackslash}\x7fbackslash\x011410,46344
{\indexnofonts\x7fnofonts\x011414,46498
-\def\findex {\x7f\findex\x011443,47429
-\def\kindex {\x7f\kindex\x011444,47452
-\def\cindex {\x7f\cindex\x011445,47475
-\def\vindex {\x7f\vindex\x011446,47498
-\def\tindex {\x7f\tindex\x011447,47521
-\def\pindex {\x7f\pindex\x011448,47544
-\def\cindexsub {\x7f\cindexsub\x011450,47568
-\def\printindex{\x7f\printindex\x011462,47895
-\def\doprintindex#1{\x7f\doprintindex\x011464,47936
- \def\indexbackslash{\x7f\indexbackslash\x011481,48421
+\xdef\temp1{\x7ftemp1\x011415,46513
+\edef\temp{\x7ftemp\x011419,46688
+\def\findex {\x7ffindex\x011443,47429
+\def\kindex {\x7fkindex\x011444,47452
+\def\cindex {\x7fcindex\x011445,47475
+\def\vindex {\x7fvindex\x011446,47498
+\def\tindex {\x7ftindex\x011447,47521
+\def\pindex {\x7fpindex\x011448,47544
+\def\cindexsub {\x7fcindexsub\x011450,47568
+\gdef\cindexsub "#1" #2^^M{\x7fcindexsub\x011452,47631
+\def\printindex{\x7fprintindex\x011462,47895
+\def\doprintindex#1{\x7fdoprintindex\x011464,47936
+ \def\indexbackslash{\x7findexbackslash\x011481,48421
\indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt\x7ffonts\rm\x011482,48460
-\def\initial #1{\x7f\initial\x011517,49532
-\def\entry #1#2{\x7f\entry\x011523,49739
+\def\initial #1{\x7finitial\x011517,49532
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftentt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7ftt\x011518,49550
+{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt\x7fsf\x011518,49550
+\def\entry #1#2{\x7fentry\x011523,49739
\null\nobreak\indexdotfill % Have leaders before the page number.\x7fdotfill\x011540,50386
-\def\indexdotfill{\x7f\indexdotfill\x011549,50714
-\def\primary #1{\x7f\primary\x011552,50820
-\def\secondary #1#2{\x7f\secondary\x011556,50902
+\def\indexdotfill{\x7findexdotfill\x011549,50714
+\def\primary #1{\x7fprimary\x011552,50820
+\def\secondary #1#2{\x7fsecondary\x011556,50902
\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\par\x7fdotfill\x011559,50984
\newbox\partialpage\x7fialpage\x011566,51157
-\def\begindoublecolumns{\x7f\begindoublecolumns\x011572,51315
- \output={\global\setbox\partialpage=\x7fialpage=\x011573,51351
-\def\enddoublecolumns{\x7f\enddoublecolumns\x011577,51539
-\def\doublecolumnout{\x7f\doublecolumnout\x011580,51624
+\def\begindoublecolumns{\x7fbegindoublecolumns\x011572,51315
+ \output={\global\setbox\partialpage=\x7fialpage\x011573,51351
+\def\enddoublecolumns{\x7fenddoublecolumns\x011577,51539
+\def\doublecolumnout{\x7fdoublecolumnout\x011580,51624
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011581,51693
-\def\pagesofar{\x7f\pagesofar\x011584,51871
-\def\balancecolumns{\x7f\balancecolumns\x011588,52108
+\def\pagesofar{\x7fpagesofar\x011584,51871
+\def\pagesofar{\unvbox\partialpage %\x7fialpage\x011584,51871
+\def\balancecolumns{\x7fbalancecolumns\x011588,52108
\availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpage\x7fialpage\x011594,52279
\dimen@=\pageheight \advance\dimen@ by-\ht\partialpage\x7fialpage\x011600,52540
\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
-\def\appendixletter{\x7f\appendixletter\x011628,53486
-\def\opencontents{\x7f\opencontents\x011632,53589
-\def\thischapter{\x7f\thischapter\x011637,53770
-\def\seccheck#1{\x7f\seccheck\x011638,53808
-\def\chapternofonts{\x7f\chapternofonts\x011643,53912
-\def\result{\x7f\result\x011646,53987
-\def\equiv{\x7f\equiv\x011647,54022
-\def\expansion{\x7f\expansion\x011648,54055
-\def\print{\x7f\print\x011649,54096
-\def\TeX{\x7f\TeX\x011650,54129
-\def\dots{\x7f\dots\x011651,54158
-\def\copyright{\x7f\copyright\x011652,54189
-\def\tt{\x7f\tt\x011653,54230
-\def\bf{\x7f\bf\x011654,54257
-\def\w{\x7f\w\x011655,54285
-\def\less{\x7f\less\x011656,54310
-\def\gtr{\x7f\gtr\x011657,54341
-\def\hat{\x7f\hat\x011658,54370
-\def\char{\x7f\char\x011659,54399
-\def\tclose##1{\x7f\tclose\x011660,54430
-\def\code##1{\x7f\code\x011661,54474
-\def\samp##1{\x7f\samp\x011662,54514
-\def\r##1{\x7f\r\x011663,54554
-\def\b##1{\x7f\b\x011664,54588
-\def\key##1{\x7f\key\x011665,54622
-\def\file##1{\x7f\file\x011666,54660
-\def\kbd##1{\x7f\kbd\x011667,54700
-\def\i##1{\x7f\i\x011669,54808
-\def\cite##1{\x7f\cite\x011670,54842
-\def\var##1{\x7f\var\x011671,54882
-\def\emph##1{\x7f\emph\x011672,54920
-\def\dfn##1{\x7f\dfn\x011673,54960
-\def\thischaptername{\x7f\thischaptername\x011676,55001
-\outer\def\chapter{\x7f\chapter\x011677,55040
-\def\chapterzzz #1{\x7f\chapterzzz\x011678,55081
-{\chapternofonts%\x7fnofonts%\x011687,55477
-\global\let\section = \numberedsec\x7f=\x011692,55630
-\global\let\subsection = \numberedsubsec\x7f=\x011693,55665
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011694,55706
-\outer\def\appendix{\x7f\appendix\x011697,55757
-\def\appendixzzz #1{\x7f\appendixzzz\x011698,55800
+\newcount \appendixno \appendixno = `\@\x7fno\x011627,53445
+\def\appendixletter{\x7fappendixletter\x011628,53486
+\def\appendixletter{\char\the\appendixno}\x7fno\x011628,53486
+\def\opencontents{\x7fopencontents\x011632,53589
+\def\thischapter{\x7fthischapter\x011637,53770
+\def\thischapter{} \def\thissection{\x7fthissection\x011637,53770
+\def\seccheck#1{\x7fseccheck\x011638,53808
+\def\chapternofonts{\x7fchapternofonts\x011643,53912
+\let\rawbackslash=\relax%\x7frawbackslash\x011644,53934
+\let\frenchspacing=\relax%\x7ffrenchspacing\x011645,53960
+\def\result{\x7fresult\x011646,53987
+\def\equiv{\x7fequiv\x011647,54022
+\def\expansion{\x7fexpansion\x011648,54055
+\def\print{\x7fprint\x011649,54096
+\def\TeX{\x7fTeX\x011650,54129
+\def\dots{\x7fdots\x011651,54158
+\def\copyright{\x7fcopyright\x011652,54189
+\def\tt{\x7ftt\x011653,54230
+\def\bf{\x7fbf\x011654,54257
+\def\w{\x7fw\x011655,54285
+\def\less{\x7fless\x011656,54310
+\def\gtr{\x7fgtr\x011657,54341
+\def\hat{\x7fhat\x011658,54370
+\def\char{\x7fchar\x011659,54399
+\def\tclose##1{\x7ftclose\x011660,54430
+\def\code##1{\x7fcode\x011661,54474
+\def\samp##1{\x7fsamp\x011662,54514
+\def\r##1{\x7fr\x011663,54554
+\def\b##1{\x7fb\x011664,54588
+\def\key##1{\x7fkey\x011665,54622
+\def\file##1{\x7ffile\x011666,54660
+\def\kbd##1{\x7fkbd\x011667,54700
+\def\i##1{\x7fi\x011669,54808
+\def\cite##1{\x7fcite\x011670,54842
+\def\var##1{\x7fvar\x011671,54882
+\def\emph##1{\x7femph\x011672,54920
+\def\dfn##1{\x7fdfn\x011673,54960
+\def\thischaptername{\x7fthischaptername\x011676,55001
+\outer\def\chapter{\x7fchapter\x011677,55040
+\outer\def\chapter{\parsearg\chapterzzz}\x7fzzz\x011677,55040
+\def\chapterzzz #1{\x7fchapterzzz\x011678,55081
+\gdef\thissection{\x7fthissection\x011682,55246
+\gdef\thischaptername{\x7fthischaptername\x011683,55269
+\xdef\thischapter{\x7fthischapter\x011686,55410
+{\chapternofonts%\x7fnofonts\x011687,55477
+\edef\temp{\x7ftemp\x011688,55495
+\global\let\section = \numberedsec\x7fsection\x011692,55630
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011693,55665
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011694,55706
+\outer\def\appendix{\x7fappendix\x011697,55757
+\outer\def\appendix{\parsearg\appendixzzz}\x7fzzz\x011697,55757
+\def\appendixzzz #1{\x7fappendixzzz\x011698,55800
\global\advance \appendixno by 1 \message{\x7fno\x011700,55877
+\global\advance \appendixno by 1 \message{Appendix \appendixletter}\x7fletter\x011700,55877
\chapmacro {#1}{Appendix \appendixletter}\x7fletter\x011701,55946
+\gdef\thissection{\x7fthissection\x011702,55989
+\gdef\thischaptername{\x7fthischaptername\x011703,56012
+\xdef\thischapter{\x7fthischapter\x011704,56039
\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}\x7fletter:\x011704,56039
-{\chapternofonts%\x7fnofonts%\x011705,56111
+{\chapternofonts%\x7fnofonts\x011705,56111
+\edef\temp{\x7ftemp\x011706,56129
{#1}{Appendix \appendixletter}\x7fletter\x011707,56167
\appendixnoderef %\x7fnoderef\x011710,56267
-\global\let\section = \appendixsec\x7f=\x011711,56286
-\global\let\subsection = \appendixsubsec\x7f=\x011712,56321
-\global\let\subsubsection = \appendixsubsubsec\x7f=\x011713,56362
-\outer\def\top{\x7f\top\x011716,56413
-\outer\def\unnumbered{\x7f\unnumbered\x011717,56453
-\def\unnumberedzzz #1{\x7f\unnumberedzzz\x011718,56500
-{\chapternofonts%\x7fnofonts%\x011722,56663
-\global\let\section = \unnumberedsec\x7f=\x011727,56813
-\global\let\subsection = \unnumberedsubsec\x7f=\x011728,56850
-\global\let\subsubsection = \unnumberedsubsubsec\x7f=\x011729,56893
-\outer\def\numberedsec{\x7f\numberedsec\x011732,56946
-\def\seczzz #1{\x7f\seczzz\x011733,56987
-{\chapternofonts%\x7fnofonts%\x011736,57143
-\outer\def\appendixsection{\x7f\appendixsection\x011745,57329
-\outer\def\appendixsec{\x7f\appendixsec\x011746,57386
-\def\appendixsectionzzz #1{\x7f\appendixsectionzzz\x011747,57439
+\global\let\section = \appendixsec\x7fsection\x011711,56286
+\global\let\section = \appendixsec\x7fsec\x011711,56286
+\global\let\subsection = \appendixsubsec\x7fsubsection\x011712,56321
+\global\let\subsection = \appendixsubsec\x7fsubsec\x011712,56321
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsection\x011713,56362
+\global\let\subsubsection = \appendixsubsubsec\x7fsubsubsec\x011713,56362
+\outer\def\top{\x7ftop\x011716,56413
+\outer\def\unnumbered{\x7funnumbered\x011717,56453
+\def\unnumberedzzz #1{\x7funnumberedzzz\x011718,56500
+\gdef\thischapter{\x7fthischapter\x011721,56619
+\gdef\thischapter{#1}\gdef\thissection{\x7fthissection\x011721,56619
+{\chapternofonts%\x7fnofonts\x011722,56663
+\edef\temp{\x7ftemp\x011723,56681
+\global\let\section = \unnumberedsec\x7fsection\x011727,56813
+\global\let\subsection = \unnumberedsubsec\x7fsubsection\x011728,56850
+\global\let\subsubsection = \unnumberedsubsubsec\x7fsubsubsection\x011729,56893
+\outer\def\numberedsec{\x7fnumberedsec\x011732,56946
+\def\seczzz #1{\x7fseczzz\x011733,56987
+\gdef\thissection{\x7fthissection\x011735,57079
+{\chapternofonts%\x7fnofonts\x011736,57143
+\edef\temp{\x7ftemp\x011737,57161
+\outer\def\appendixsection{\x7fappendixsection\x011745,57329
+\outer\def\appendixsection{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011745,57329
+\outer\def\appendixsec{\x7fappendixsec\x011746,57386
+\outer\def\appendixsec{\parsearg\appendixsectionzzz}\x7fsectionzzz\x011746,57386
+\def\appendixsectionzzz #1{\x7fappendixsectionzzz\x011747,57439
+\gdef\thissection{\x7fthissection\x011749,57551
\gdef\thissection{#1}\secheading {#1}{\appendixletter}\x7fletter\x011749,57551
-{\chapternofonts%\x7fnofonts%\x011750,57619
+{\chapternofonts%\x7fnofonts\x011750,57619
+\edef\temp{\x7ftemp\x011751,57637
{#1}{\appendixletter}\x7fletter\x011752,57675
\appendixnoderef %\x7fnoderef\x011755,57775
-\outer\def\unnumberedsec{\x7f\unnumberedsec\x011759,57815
-\def\unnumberedseczzz #1{\x7f\unnumberedseczzz\x011760,57868
-{\chapternofonts%\x7fnofonts%\x011762,57963
-\outer\def\numberedsubsec{\x7f\numberedsubsec\x011770,58131
-\def\numberedsubseczzz #1{\x7f\numberedsubseczzz\x011771,58186
-{\chapternofonts%\x7fnofonts%\x011774,58365
-\outer\def\appendixsubsec{\x7f\appendixsubsec\x011783,58569
-\def\appendixsubseczzz #1{\x7f\appendixsubseczzz\x011784,58624
+\outer\def\unnumberedsec{\x7funnumberedsec\x011759,57815
+\def\unnumberedseczzz #1{\x7funnumberedseczzz\x011760,57868
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011761,57919
+{\chapternofonts%\x7fnofonts\x011762,57963
+\edef\temp{\x7ftemp\x011763,57981
+\outer\def\numberedsubsec{\x7fnumberedsubsec\x011770,58131
+\def\numberedsubseczzz #1{\x7fnumberedsubseczzz\x011771,58186
+\gdef\thissection{\x7fthissection\x011772,58235
+{\chapternofonts%\x7fnofonts\x011774,58365
+\edef\temp{\x7ftemp\x011775,58383
+\outer\def\appendixsubsec{\x7fappendixsubsec\x011783,58569
+\outer\def\appendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011783,58569
+\def\appendixsubseczzz #1{\x7fappendixsubseczzz\x011784,58624
+\gdef\thissection{\x7fthissection\x011785,58677
\subsecheading {#1}{\appendixletter}\x7fletter\x011786,58746
-{\chapternofonts%\x7fnofonts%\x011787,58811
+{\chapternofonts%\x7fnofonts\x011787,58811
+\edef\temp{\x7ftemp\x011788,58829
{#1}{\appendixletter}\x7fletter\x011789,58870
\appendixnoderef %\x7fnoderef\x011792,58985
-\outer\def\unnumberedsubsec{\x7f\unnumberedsubsec\x011796,59025
-\def\unnumberedsubseczzz #1{\x7f\unnumberedsubseczzz\x011797,59084
-{\chapternofonts%\x7fnofonts%\x011799,59185
-\outer\def\numberedsubsubsec{\x7f\numberedsubsubsec\x011807,59356
-\def\numberedsubsubseczzz #1{\x7f\numberedsubsubseczzz\x011808,59417
-{\chapternofonts%\x7fnofonts%\x011812,59614
-\outer\def\appendixsubsubsec{\x7f\appendixsubsubsec\x011823,59847
-\def\appendixsubsubseczzz #1{\x7f\appendixsubsubseczzz\x011824,59908
+\outer\def\unnumberedsubsec{\x7funnumberedsubsec\x011796,59025
+\def\unnumberedsubseczzz #1{\x7funnumberedsubseczzz\x011797,59084
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011798,59141
+{\chapternofonts%\x7fnofonts\x011799,59185
+\edef\temp{\x7ftemp\x011800,59203
+\outer\def\numberedsubsubsec{\x7fnumberedsubsubsec\x011807,59356
+\def\numberedsubsubseczzz #1{\x7fnumberedsubsubseczzz\x011808,59417
+\gdef\thissection{\x7fthissection\x011809,59472
+{\chapternofonts%\x7fnofonts\x011812,59614
+\edef\temp{\x7ftemp\x011813,59632
+\outer\def\appendixsubsubsec{\x7fappendixsubsubsec\x011823,59847
+\outer\def\appendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011823,59847
+\def\appendixsubsubseczzz #1{\x7fappendixsubsubseczzz\x011824,59908
+\gdef\thissection{\x7fthissection\x011825,59967
{\appendixletter}\x7fletter\x011827,60047
-{\chapternofonts%\x7fnofonts%\x011828,60113
+{\chapternofonts%\x7fnofonts\x011828,60113
+\edef\temp{\x7ftemp\x011829,60131
{\appendixletter}\x7fletter\x011830,60178
\appendixnoderef %\x7fnoderef\x011834,60312
-\outer\def\unnumberedsubsubsec{\x7f\unnumberedsubsubsec\x011838,60352
-\def\unnumberedsubsubseczzz #1{\x7f\unnumberedsubsubseczzz\x011839,60417
-{\chapternofonts%\x7fnofonts%\x011841,60524
-\def\infotop{\x7f\infotop\x011851,60853
-\def\infounnumbered{\x7f\infounnumbered\x011852,60891
-\def\infounnumberedsec{\x7f\infounnumberedsec\x011853,60936
-\def\infounnumberedsubsec{\x7f\infounnumberedsubsec\x011854,60987
-\def\infounnumberedsubsubsec{\x7f\infounnumberedsubsubsec\x011855,61044
-\def\infoappendix{\x7f\infoappendix\x011857,61108
-\def\infoappendixsec{\x7f\infoappendixsec\x011858,61149
-\def\infoappendixsubsec{\x7f\infoappendixsubsec\x011859,61196
-\def\infoappendixsubsubsec{\x7f\infoappendixsubsubsec\x011860,61249
-\def\infochapter{\x7f\infochapter\x011862,61309
-\def\infosection{\x7f\infosection\x011863,61348
-\def\infosubsection{\x7f\infosubsection\x011864,61387
-\def\infosubsubsection{\x7f\infosubsubsection\x011865,61432
-\global\let\section = \numberedsec\x7f=\x011870,61669
-\global\let\subsection = \numberedsubsec\x7f=\x011871,61704
-\global\let\subsubsection = \numberedsubsubsec\x7f=\x011872,61745
-\def\majorheading{\x7f\majorheading\x011886,62252
-\def\majorheadingzzz #1{\x7f\majorheadingzzz\x011887,62297
-\def\chapheading{\x7f\chapheading\x011893,62530
-\def\chapheadingzzz #1{\x7f\chapheadingzzz\x011894,62573
-\def\heading{\x7f\heading\x011899,62768
-\def\subheading{\x7f\subheading\x011901,62805
-\def\subsubheading{\x7f\subsubheading\x011903,62848
-\def\dobreak#1#2{\x7f\dobreak\x011910,63125
-\def\setchapterstyle #1 {\x7f\setchapterstyle\x011912,63203
-\def\chapbreak{\x7f\chapbreak\x011919,63458
-\def\chappager{\x7f\chappager\x011920,63508
-\def\chapoddpage{\x7f\chapoddpage\x011921,63546
-\def\setchapternewpage #1 {\x7f\setchapternewpage\x011923,63625
-\def\CHAPPAGoff{\x7f\CHAPPAGoff\x011925,63682
-\def\CHAPPAGon{\x7f\CHAPPAGon\x011929,63776
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011932,63867
-\def\CHAPPAGodd{\x7f\CHAPPAGodd\x011934,63909
-\global\def\HEADINGSon{\x7f\HEADINGSon\x011937,64005
-\def\CHAPFplain{\x7f\CHAPFplain\x011941,64059
-\def\chfplain #1#2{\x7f\chfplain\x011945,64151
-\def\unnchfplain #1{\x7f\unnchfplain\x011956,64374
-\def\unnchfopen #1{\x7f\unnchfopen\x011964,64603
-\def\chfopen #1#2{\x7f\chfopen\x011970,64811
-\def\CHAPFopen{\x7f\CHAPFopen\x011975,64955
-\def\subsecheadingbreak{\x7f\subsecheadingbreak\x011982,65173
-\def\secheadingbreak{\x7f\secheadingbreak\x011985,65302
-\def\secheading #1#2#3{\x7f\secheading\x011993,65584
-\def\plainsecheading #1{\x7f\plainsecheading\x011994,65640
-\def\secheadingi #1{\x7f\secheadingi\x011995,65683
-\def\subsecheading #1#2#3#4{\x7f\subsecheading\x012006,66051
-\def\subsecheadingi #1{\x7f\subsecheadingi\x012007,66118
-\def\subsubsecfonts{\x7f\subsubsecfonts\x012014,66415
-\def\subsubsecheading #1#2#3#4#5{\x7f\subsubsecheading\x012017,66538
-\def\subsubsecheadingi #1{\x7f\subsubsecheadingi\x012018,66616
-\def\startcontents#1{\x7f\startcontents\x012032,67088
- \unnumbchapmacro{#1}\def\thischapter{\x7f\thischapter\x012040,67361
-\outer\def\contents{\x7f\contents\x012049,67720
-\outer\def\summarycontents{\x7f\summarycontents\x012057,67864
- \def\secentry ##1##2##3##4{\x7f\secentry\x012067,68235
- \def\unnumbsecentry ##1##2{\x7f\unnumbsecentry\x012068,68270
- \def\subsecentry ##1##2##3##4##5{\x7f\subsecentry\x012069,68305
- \def\unnumbsubsecentry ##1##2{\x7f\unnumbsubsecentry\x012070,68346
- \def\subsubsecentry ##1##2##3##4##5##6{\x7f\subsubsecentry\x012071,68384
- \def\unnumbsubsubsecentry ##1##2{\x7f\unnumbsubsubsecentry\x012072,68431
-\def\chapentry#1#2#3{\x7f\chapentry\x012085,68865
-\def\shortchapentry#1#2#3{\x7f\shortchapentry\x012088,68982
+\outer\def\unnumberedsubsubsec{\x7funnumberedsubsubsec\x011838,60352
+\def\unnumberedsubsubseczzz #1{\x7funnumberedsubsubseczzz\x011839,60417
+\plainsecheading {#1}\gdef\thissection{\x7fthissection\x011840,60480
+{\chapternofonts%\x7fnofonts\x011841,60524
+\edef\temp{\x7ftemp\x011842,60542
+\def\infotop{\x7finfotop\x011851,60853
+\def\infounnumbered{\x7finfounnumbered\x011852,60891
+\def\infounnumberedsec{\x7finfounnumberedsec\x011853,60936
+\def\infounnumberedsubsec{\x7finfounnumberedsubsec\x011854,60987
+\def\infounnumberedsubsubsec{\x7finfounnumberedsubsubsec\x011855,61044
+\def\infoappendix{\x7finfoappendix\x011857,61108
+\def\infoappendix{\parsearg\appendixzzz}\x7fzzz\x011857,61108
+\def\infoappendixsec{\x7finfoappendixsec\x011858,61149
+\def\infoappendixsec{\parsearg\appendixseczzz}\x7fseczzz\x011858,61149
+\def\infoappendixsubsec{\x7finfoappendixsubsec\x011859,61196
+\def\infoappendixsubsec{\parsearg\appendixsubseczzz}\x7fsubseczzz\x011859,61196
+\def\infoappendixsubsubsec{\x7finfoappendixsubsubsec\x011860,61249
+\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}\x7fsubsubseczzz\x011860,61249
+\def\infochapter{\x7finfochapter\x011862,61309
+\def\infochapter{\parsearg\chapterzzz}\x7fzzz\x011862,61309
+\def\infosection{\x7finfosection\x011863,61348
+\def\infosection{\parsearg\sectionzzz}\x7fzzz\x011863,61348
+\def\infosubsection{\x7finfosubsection\x011864,61387
+\def\infosubsection{\parsearg\subsectionzzz}\x7fzzz\x011864,61387
+\def\infosubsubsection{\x7finfosubsubsection\x011865,61432
+\def\infosubsubsection{\parsearg\subsubsectionzzz}\x7fzzz\x011865,61432
+\global\let\section = \numberedsec\x7fsection\x011870,61669
+\global\let\subsection = \numberedsubsec\x7fsubsection\x011871,61704
+\global\let\subsubsection = \numberedsubsubsec\x7fsubsubsection\x011872,61745
+\def\majorheading{\x7fmajorheading\x011886,62252
+\def\majorheadingzzz #1{\x7fmajorheadingzzz\x011887,62297
+\def\chapheading{\x7fchapheading\x011893,62530
+\def\chapheadingzzz #1{\x7fchapheadingzzz\x011894,62573
+\def\heading{\x7fheading\x011899,62768
+\def\subheading{\x7fsubheading\x011901,62805
+\def\subsubheading{\x7fsubsubheading\x011903,62848
+\def\dobreak#1#2{\x7fdobreak\x011910,63125
+\def\setchapterstyle #1 {\x7fsetchapterstyle\x011912,63203
+\def\chapbreak{\x7fchapbreak\x011919,63458
+\def\chappager{\x7fchappager\x011920,63508
+\def\chapoddpage{\x7fchapoddpage\x011921,63546
+\def\setchapternewpage #1 {\x7fsetchapternewpage\x011923,63625
+\def\CHAPPAGoff{\x7fCHAPPAGoff\x011925,63682
+\global\let\pchapsepmacro=\chapbreak\x7fpchapsepmacro\x011926,63699
+\global\let\pagealignmacro=\chappager}\x7fpagealignmacro\x011927,63736
+\def\CHAPPAGon{\x7fCHAPPAGon\x011929,63776
+\global\let\pchapsepmacro=\chappager\x7fpchapsepmacro\x011930,63792
+\global\let\pagealignmacro=\chappager\x7fpagealignmacro\x011931,63829
+\global\def\HEADINGSon{\x7fHEADINGSon\x011932,63867
+\def\CHAPPAGodd{\x7fCHAPPAGodd\x011934,63909
+\global\let\pchapsepmacro=\chapoddpage\x7fpchapsepmacro\x011935,63926
+\global\let\pagealignmacro=\chapoddpage\x7fpagealignmacro\x011936,63965
+\global\def\HEADINGSon{\x7fHEADINGSon\x011937,64005
+\def\CHAPFplain{\x7fCHAPFplain\x011941,64059
+\global\let\chapmacro=\chfplain\x7fchapmacro\x011942,64076
+\global\let\unnumbchapmacro=\unnchfplain}\x7funnumbchapmacro\x011943,64108
+\def\chfplain #1#2{\x7fchfplain\x011945,64151
+\def\unnchfplain #1{\x7funnchfplain\x011956,64374
+\def\unnchfopen #1{\x7funnchfopen\x011964,64603
+\def\chfopen #1#2{\x7fchfopen\x011970,64811
+\def\CHAPFopen{\x7fCHAPFopen\x011975,64955
+\global\let\chapmacro=\chfopen\x7fchapmacro\x011976,64971
+\global\let\unnumbchapmacro=\unnchfopen}\x7funnumbchapmacro\x011977,65002
+\def\subsecheadingbreak{\x7fsubsecheadingbreak\x011982,65173
+\def\secheadingbreak{\x7fsecheadingbreak\x011985,65302
+\let\paragraphindent=\comment\x7fparagraphindent\x011988,65428
+\def\secheading #1#2#3{\x7fsecheading\x011993,65584
+\def\plainsecheading #1{\x7fplainsecheading\x011994,65640
+\def\secheadingi #1{\x7fsecheadingi\x011995,65683
+\def\subsecheading #1#2#3#4{\x7fsubsecheading\x012006,66051
+\def\subsecheadingi #1{\x7fsubsecheadingi\x012007,66118
+\def\subsubsecfonts{\x7fsubsubsecfonts\x012014,66415
+\def\subsubsecheading #1#2#3#4#5{\x7fsubsubsecheading\x012017,66538
+\def\subsubsecheadingi #1{\x7fsubsubsecheadingi\x012018,66616
+\def\startcontents#1{\x7fstartcontents\x012032,67088
+ \unnumbchapmacro{#1}\def\thischapter{\x7fthischapter\x012040,67361
+\outer\def\contents{\x7fcontents\x012049,67720
+\outer\def\summarycontents{\x7fsummarycontents\x012057,67864
+ \let\chapentry = \shortchapentry\x7fchapentry\x012060,67936
+ \let\unnumbchapentry = \shortunnumberedentry\x7funnumbchapentry\x012061,67975
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7frm\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fbf\x012064,68098
+ \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl\x7fsl\x012064,68098
+ \def\secentry ##1##2##3##4{\x7fsecentry\x012067,68235
+ \def\unnumbsecentry ##1##2{\x7funnumbsecentry\x012068,68270
+ \def\subsecentry ##1##2##3##4##5{\x7fsubsecentry\x012069,68305
+ \def\unnumbsubsecentry ##1##2{\x7funnumbsubsecentry\x012070,68346
+ \def\subsubsecentry ##1##2##3##4##5##6{\x7fsubsubsecentry\x012071,68384
+ \def\unnumbsubsubsecentry ##1##2{\x7funnumbsubsubsecentry\x012072,68431
+\let\shortcontents = \summarycontents\x7fshortcontents\x012077,68530
+\def\chapentry#1#2#3{\x7fchapentry\x012085,68865
+\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}\x7fspace\x012085,68865
+\def\shortchapentry#1#2#3{\x7fshortchapentry\x012088,68982
{#2\labelspace #1}\x7fspace\x012091,69092
-\def\unnumbchapentry#1#2{\x7f\unnumbchapentry\x012094,69146
-\def\shortunnumberedentry#1#2{\x7f\shortunnumberedentry\x012095,69193
-\def\secentry#1#2#3#4{\x7f\secentry\x012102,69357
-\def\unnumbsecentry#1#2{\x7f\unnumbsecentry\x012103,69416
-\def\subsecentry#1#2#3#4#5{\x7f\subsecentry\x012106,69477
-\def\unnumbsubsecentry#1#2{\x7f\unnumbsubsecentry\x012107,69547
-\def\subsubsecentry#1#2#3#4#5#6{\x7f\subsubsecentry\x012110,69621
+\def\unnumbchapentry#1#2{\x7funnumbchapentry\x012094,69146
+\def\shortunnumberedentry#1#2{\x7fshortunnumberedentry\x012095,69193
+\def\secentry#1#2#3#4{\x7fsecentry\x012102,69357
+\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}\x7fspace\x012102,69357
+\def\unnumbsecentry#1#2{\x7funnumbsecentry\x012103,69416
+\def\subsecentry#1#2#3#4#5{\x7fsubsecentry\x012106,69477
+\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}\x7fspace\x012106,69477
+\def\unnumbsubsecentry#1#2{\x7funnumbsubsecentry\x012107,69547
+\def\subsubsecentry#1#2#3#4#5#6{\x7fsubsubsecentry\x012110,69621
\dosubsubsecentry{#2.#3.#4.#5\labelspace#1}\x7fspace\x012111,69655
-\def\unnumbsubsubsecentry#1#2{\x7f\unnumbsubsubsecentry\x012112,69706
-\def\dochapentry#1#2{\x7f\dochapentry\x012123,70080
-\def\dosecentry#1#2{\x7f\dosecentry\x012138,70685
-\def\dosubsecentry#1#2{\x7f\dosubsecentry\x012145,70863
-\def\dosubsubsecentry#1#2{\x7f\dosubsubsecentry\x012152,71048
-\def\labelspace{\x7f\labelspace\x012160,71299
-\def\dopageno#1{\x7f\dopageno\x012162,71334
-\def\doshortpageno#1{\x7f\doshortpageno\x012163,71360
-\def\chapentryfonts{\x7f\chapentryfonts\x012165,71392
-\def\secentryfonts{\x7f\secentryfonts\x012166,71427
-\def\point{\x7f\point\x012192,72386
-\def\result{\x7f\result\x012194,72407
-\def\expansion{\x7f\expansion\x012195,72480
-\def\print{\x7f\print\x012196,72551
-\def\equiv{\x7f\equiv\x012198,72618
-\def\error{\x7f\error\x012218,73391
-\def\tex{\x7f\tex\x012224,73620
-\def\@{\x7f\@\x012242,74003
-\gdef\sepspaces{\def {\ }}}\x7f\\x012265,74735
-\def\aboveenvbreak{\x7f\aboveenvbreak\x012268,74817
-\def\afterenvbreak{\x7f\afterenvbreak\x012272,74983
-\def\ctl{\x7f\ctl\x012286,75494
-\def\ctr{\x7f\ctr\x012287,75566
-\def\cbl{\x7f\cbl\x012288,75605
-\def\cbr{\x7f\cbr\x012289,75645
-\def\carttop{\x7f\carttop\x012290,75684
-\def\cartbot{\x7f\cartbot\x012293,75792
-\long\def\cartouche{\x7f\cartouche\x012299,75932
-\def\Ecartouche{\x7f\Ecartouche\x012326,76720
-\def\lisp{\x7f\lisp\x012338,76855
-\def\Elisp{\x7f\Elisp\x012348,77202
-\def\next##1{\x7f\next\x012360,77528
-\def\Eexample{\x7f\Eexample\x012364,77570
-\def\Esmallexample{\x7f\Esmallexample\x012367,77617
-\def\smalllispx{\x7f\smalllispx\x012373,77795
-\def\Esmalllisp{\x7f\Esmalllisp\x012383,78149
+\def\unnumbsubsubsecentry#1#2{\x7funnumbsubsubsecentry\x012112,69706
+\def\dochapentry#1#2{\x7fdochapentry\x012123,70080
+\def\dosecentry#1#2{\x7fdosecentry\x012138,70685
+\def\dosubsecentry#1#2{\x7fdosubsecentry\x012145,70863
+\def\dosubsubsecentry#1#2{\x7fdosubsubsecentry\x012152,71048
+\def\labelspace{\x7flabelspace\x012160,71299
+\def\dopageno#1{\x7fdopageno\x012162,71334
+\def\doshortpageno#1{\x7fdoshortpageno\x012163,71360
+\def\chapentryfonts{\x7fchapentryfonts\x012165,71392
+\def\secentryfonts{\x7fsecentryfonts\x012166,71427
+\let\subsecentryfonts = \textfonts\x7fsubsecentryfonts\x012167,71458
+\let\subsubsecentryfonts = \textfonts\x7fsubsubsecentryfonts\x012168,71493
+\let\ptexequiv = \equiv\x7fptexequiv\x012180,71896
+\def\point{\x7fpoint\x012192,72386
+\def\result{\x7fresult\x012194,72407
+\def\expansion{\x7fexpansion\x012195,72480
+\def\print{\x7fprint\x012196,72551
+\def\equiv{\x7fequiv\x012198,72618
+\def\error{\x7ferror\x012218,73391
+\def\tex{\x7ftex\x012224,73620
+\catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie\x7f~\x012227,73731
+\let\{=\ptexlbrace\x7f{\x012237,73912
+\let\}=\ptexrbrace\x7f}\x012238,73931
+\let\.=\ptexdot\x7f.\x012239,73950
+\let\*=\ptexstar\x7f*\x012240,73966
+\let\dots=\ptexdots\x7fdots\x012241,73983
+\def\@{\x7f@\x012242,74003
+\let\bullet=\ptexbullet\x7fbullet\x012243,74014
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fb\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fc\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fi\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7ft\x012244,74038
+\let\b=\ptexb \let\c=\ptexc \let\i=\ptexi \let\t=\ptext \let\l=\ptexl\x7fl\x012244,74038
+\let\L=\ptexL\x7fL\x012245,74108
+\let\Etex=\endgroup}\x7fEtex\x012247,74124
+\gdef\lisppar{\x7flisppar\x012259,74517
+\gdef\sepspaces{\x7fsepspaces\x012265,74735
+\def\aboveenvbreak{\x7faboveenvbreak\x012268,74817
+\def\afterenvbreak{\x7fafterenvbreak\x012272,74983
+\let\nonarrowing=\relax\x7fnonarrowing\x012276,75176
+\def\ctl{\x7fctl\x012286,75494
+\def\ctr{\x7fctr\x012287,75566
+\def\cbl{\x7fcbl\x012288,75605
+\def\cbr{\x7fcbr\x012289,75645
+\def\carttop{\x7fcarttop\x012290,75684
+\def\cartbot{\x7fcartbot\x012293,75792
+\long\def\cartouche{\x7fcartouche\x012299,75932
+ \let\nonarrowing=\comment\x7fnonarrowing\x012311,76404
+\def\Ecartouche{\x7fEcartouche\x012326,76720
+\def\lisp{\x7flisp\x012338,76855
+\let\par=\lisppar\x7fpar\x012347,77184
+\def\Elisp{\x7fElisp\x012348,77202
+\let\exdent=\nofillexdent\x7fexdent\x012355,77418
+\let\nonarrowing=\relax\x7fnonarrowing\x012356,77444
+\def\next##1{\x7fnext\x012360,77528
+\let\example=\lisp\x7fexample\x012363,77551
+\def\Eexample{\x7fEexample\x012364,77570
+\let\smallexample=\lisp\x7fsmallexample\x012366,77593
+\def\Esmallexample{\x7fEsmallexample\x012367,77617
+\def\smalllispx{\x7fsmalllispx\x012373,77795
+\let\par=\lisppar\x7fpar\x012382,78131
+\def\Esmalllisp{\x7fEsmalllisp\x012383,78149
+\let\exdent=\nofillexdent\x7fexdent\x012392,78436
+\let\nonarrowing=\relax\x7fnonarrowing\x012393,78462
\obeyspaces \obeylines \ninett \indexfonts \rawbackslash\x7ffonts\x012396,78505
-\def\next##1{\x7f\next\x012397,78562
-\def\display{\x7f\display\x012401,78642
-\def\Edisplay{\x7f\Edisplay\x012410,78961
-\def\next##1{\x7f\next\x012422,79272
-\def\format{\x7f\format\x012426,79375
-\def\Eformat{\x7f\Eformat\x012434,79671
-\def\next##1{\x7f\next\x012437,79760
-\def\flushleft{\x7f\flushleft\x012441,79812
-\def\Eflushleft{\x7f\Eflushleft\x012451,80183
-\def\next##1{\x7f\next\x012454,80276
-\def\flushright{\x7f\flushright\x012456,80298
-\def\Eflushright{\x7f\Eflushright\x012466,80670
-\def\next##1{\x7f\next\x012470,80801
-\def\quotation{\x7f\quotation\x012474,80859
-\def\Equotation{\x7f\Equotation\x012480,81051
-\def\setdeffont #1 {\x7f\setdeffont\x012493,81449
+\def\next##1{\x7fnext\x012397,78562
+\def\display{\x7fdisplay\x012401,78642
+\let\par=\lisppar\x7fpar\x012409,78943
+\def\Edisplay{\x7fEdisplay\x012410,78961
+\let\exdent=\nofillexdent\x7fexdent\x012417,79180
+\let\nonarrowing=\relax\x7fnonarrowing\x012418,79206
+\def\next##1{\x7fnext\x012422,79272
+\def\format{\x7fformat\x012426,79375
+\let\par=\lisppar\x7fpar\x012433,79653
+\def\Eformat{\x7fEformat\x012434,79671
+\def\next##1{\x7fnext\x012437,79760
+\def\flushleft{\x7fflushleft\x012441,79812
+\let\par=\lisppar\x7fpar\x012450,80165
+\def\Eflushleft{\x7fEflushleft\x012451,80183
+\def\next##1{\x7fnext\x012454,80276
+\def\flushright{\x7fflushright\x012456,80298
+\let\par=\lisppar\x7fpar\x012465,80652
+\def\Eflushright{\x7fEflushright\x012466,80670
+\def\next##1{\x7fnext\x012470,80801
+\def\quotation{\x7fquotation\x012474,80859
+\def\Equotation{\x7fEquotation\x012480,81051
+\let\nonarrowing=\relax\x7fnonarrowing\x012487,81301
+\def\setdeffont #1 {\x7fsetdeffont\x012493,81449
+\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defbodyindent \defbodyindent=.4in\x7fbodyindent\x012495,81495
\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
+\newskip\defargsindent \defargsindent=50pt\x7fargsindent\x012496,81538
\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deftypemargin \deftypemargin=12pt\x7ftypemargin\x012497,81581
+\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
\newskip\deflastargmargin \deflastargmargin=18pt\x7flastargmargin\x012498,81624
-\def\activeparens{\x7f\activeparens\x012503,81822
-\def\opnr{\x7f\opnr\x012529,83034
-\def\lbrb{\x7f\lbrb\x012530,83099
-\def\defname #1#2{\x7f\defname\x012536,83300
+\def\activeparens{\x7factiveparens\x012503,81822
+\gdef\functionparens{\x7ffunctionparens\x012507,82016
+\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }\x7f&\x012507,82016
+\gdef\boldbrax{\x7fboldbrax\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f(\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f)\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f[\x012508,82074
+\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}\x7f]\x012508,82074
+\gdef\oprm#1 {\x7foprm\x012512,82250
+\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested %\x7f(\x012512,82250
+\gdef\opnested{\x7fopnested\x012516,82407
+\gdef\clrm{\x7fclrm\x012518,82466
+\ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi\x7f(\x012520,82602
+\gdef\amprm#1 {\x7famprm\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f(\x012523,82769
+\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }\x7f)\x012523,82769
+\gdef\normalparens{\x7fnormalparens\x012525,82822
+\gdef\normalparens{\boldbrax\let&=\ampnr}\x7f&\x012525,82822
+\def\opnr{\x7fopnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{\x7fclnr\x012529,83034
+\def\opnr{{\sf\char`\(}} \def\clnr{{\sf\char`\)}} \def\ampnr{\x7fampnr\x012529,83034
+\def\lbrb{\x7flbrb\x012530,83099
+\def\lbrb{{\bf\char`\[}} \def\rbrb{\x7frbrb\x012530,83099
+\def\defname #1#2{\x7fdefname\x012536,83300
\advance\dimen2 by -\defbodyindent\x7fbodyindent\x012540,83418
\advance\dimen3 by -\defbodyindent\x7fbodyindent\x012542,83472
\setbox0=\hbox{\hskip \deflastargmargin{\x7flastargmargin\x012544,83526
+\setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012544,83526
\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations\x7fargsindent\x012546,83668
\parshape 2 0in \dimen0 \defargsindent \dimen1 %\x7fargsindent\x012547,83743
\rlap{\rightline{{\rm #2}\hskip \deftypemargin}\x7ftypemargin\x012554,84112
\advance\leftskip by -\defbodyindent\x7fbodyindent\x012557,84246
\exdentamount=\defbodyindent\x7fbodyindent\x012558,84283
-\def\defparsebody #1#2#3{\x7f\defparsebody\x012568,84642
-\def#1{\x7f2572,84826
-\def#2{\x7f2573,84862
+\def\defparsebody #1#2#3{\x7fdefparsebody\x012568,84642
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012575,84934
\exdentamount=\defbodyindent\x7fbodyindent\x012576,85008
-\def\defmethparsebody #1#2#3#4 {\x7f\defmethparsebody\x012581,85112
-\def#1{\x7f2585,85273
-\def#2##1 {\x7f2586,85309
+\def\defmethparsebody #1#2#3#4 {\x7fdefmethparsebody\x012581,85112
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012588,85392
\exdentamount=\defbodyindent\x7fbodyindent\x012589,85466
-\def\defopparsebody #1#2#3#4#5 {\x7f\defopparsebody\x012592,85551
-\def#1{\x7f2596,85712
-\def#2##1 ##2 {\x7f2597,85748
+\def\defopparsebody #1#2#3#4#5 {\x7fdefopparsebody\x012592,85551
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012600,85848
\exdentamount=\defbodyindent\x7fbodyindent\x012601,85922
-\def\defvarparsebody #1#2#3{\x7f\defvarparsebody\x012608,86193
-\def#1{\x7f2612,86380
-\def#2{\x7f2613,86416
+\def\defvarparsebody #1#2#3{\x7fdefvarparsebody\x012608,86193
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012615,86475
\exdentamount=\defbodyindent\x7fbodyindent\x012616,86549
-\def\defvrparsebody #1#2#3#4 {\x7f\defvrparsebody\x012621,86640
-\def#1{\x7f2625,86799
-\def#2##1 {\x7f2626,86835
+\def\defvrparsebody #1#2#3#4 {\x7fdefvrparsebody\x012621,86640
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012628,86905
\exdentamount=\defbodyindent\x7fbodyindent\x012629,86979
-\def\defopvarparsebody #1#2#3#4#5 {\x7f\defopvarparsebody\x012632,87051
-\def#1{\x7f2636,87215
-\def#2##1 ##2 {\x7f2637,87251
+\def\defopvarparsebody #1#2#3#4#5 {\x7fdefopvarparsebody\x012632,87051
+\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindent\x7fbodyindent\x012640,87338
\exdentamount=\defbodyindent\x7fbodyindent\x012641,87412
-\def\defunargs #1{\x7f\defunargs\x012664,88172
-\def\deftypefunargs #1{\x7f\deftypefunargs\x012676,88554
-\def\deffn{\x7f\deffn\x012690,88936
-\def\deffnheader #1#2#3{\x7f\deffnheader\x012692,88993
+\gdef\spacesplit#1#2^^M{\x7fspacesplit\x012652,87775
+\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{\x7fspacesplitfoo\x012653,87852
+\def\defunargs #1{\x7fdefunargs\x012664,88172
+\def\deftypefunargs #1{\x7fdeftypefunargs\x012676,88554
+\def\deffn{\x7fdeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7fmethparsebody\Edeffn\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnx\deffnheader\x012690,88936
+\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}\x7ffnheader\x012690,88936
+\def\deffnheader #1#2#3{\x7fdeffnheader\x012692,88993
\begingroup\defname {\x7fname\x012693,89041
-\def\defun{\x7f\defun\x012699,89186
-\def\defunheader #1#2{\x7f\defunheader\x012701,89239
+\begingroup\defname {#2}{#1}\defunargs{\x7funargs\x012693,89041
+\def\defun{\x7fdefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7fparsebody\Edefun\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funx\defunheader\x012699,89186
+\def\defun{\defparsebody\Edefun\defunx\defunheader}\x7funheader\x012699,89186
+\def\defunheader #1#2{\x7fdefunheader\x012701,89239
\begingroup\defname {\x7fname\x012702,89314
\defunargs {\x7funargs\x012703,89350
-\def\deftypefun{\x7f\deftypefun\x012709,89498
-\def\deftypefunheader #1#2{\x7f\deftypefunheader\x012712,89620
-\def\deftypefunheaderx #1#2 #3\relax{\x7f\deftypefunheaderx\x012714,89729
+\def\deftypefun{\x7fdeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7fparsebody\Edeftypefun\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunx\deftypefunheader\x012709,89498
+\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}\x7ftypefunheader\x012709,89498
+\def\deftypefunheader #1#2{\x7fdeftypefunheader\x012712,89620
+\def\deftypefunheader #1#2{\deftypefunheaderx{\x7ftypefunheaderx\x012712,89620
+\def\deftypefunheaderx #1#2 #3\relax{\x7fdeftypefunheaderx\x012714,89729
\begingroup\defname {\x7fname\x012716,89821
\deftypefunargs {\x7ftypefunargs\x012717,89867
-\def\deftypefn{\x7f\deftypefn\x012723,90038
-\def\deftypefnheader #1#2#3{\x7f\deftypefnheader\x012726,90187
-\def\deftypefnheaderx #1#2#3 #4\relax{\x7f\deftypefnheaderx\x012728,90323
+\def\deftypefn{\x7fdeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7fmethparsebody\Edeftypefn\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnx\deftypefnheader\x012723,90038
+\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}\x7ftypefnheader\x012723,90038
+\def\deftypefnheader #1#2#3{\x7fdeftypefnheader\x012726,90187
+\def\deftypefnheader #1#2#3{\deftypefnheaderx{\x7ftypefnheaderx\x012726,90187
+\def\deftypefnheaderx #1#2#3 #4\relax{\x7fdeftypefnheaderx\x012728,90323
\begingroup\defname {\x7fname\x012730,90416
\deftypefunargs {\x7ftypefunargs\x012731,90456
-\def\defmac{\x7f\defmac\x012737,90577
-\def\defmacheader #1#2{\x7f\defmacheader\x012739,90634
+\def\defmac{\x7fdefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fparsebody\Edefmac\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacx\defmacheader\x012737,90577
+\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}\x7fmacheader\x012737,90577
+\def\defmacheader #1#2{\x7fdefmacheader\x012739,90634
\begingroup\defname {\x7fname\x012740,90710
\defunargs {\x7funargs\x012741,90743
-\def\defspec{\x7f\defspec\x012747,90867
-\def\defspecheader #1#2{\x7f\defspecheader\x012749,90928
+\def\defspec{\x7fdefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fparsebody\Edefspec\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecx\defspecheader\x012747,90867
+\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}\x7fspecheader\x012747,90867
+\def\defspecheader #1#2{\x7fdefspecheader\x012749,90928
\begingroup\defname {\x7fname\x012750,91005
\defunargs {\x7funargs\x012751,91045
-\def\deffnx #1 {\x7f\deffnx\x012758,91240
-\def\defunx #1 {\x7f\defunx\x012759,91297
-\def\defmacx #1 {\x7f\defmacx\x012760,91354
-\def\defspecx #1 {\x7f\defspecx\x012761,91413
-\def\deftypefnx #1 {\x7f\deftypefnx\x012762,91474
-\def\deftypeunx #1 {\x7f\deftypeunx\x012763,91539
-\def\defop #1 {\x7f\defop\x012769,91685
-\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\defopx\defopheader\defoptype\x012770,91720
-\def\defopheader #1#2#3{\x7f\defopheader\x012772,91774
+\def\deffnx #1 {\x7fdeffnx\x012758,91240
+\def\defunx #1 {\x7fdefunx\x012759,91297
+\def\defmacx #1 {\x7fdefmacx\x012760,91354
+\def\defspecx #1 {\x7fdefspecx\x012761,91413
+\def\deftypefnx #1 {\x7fdeftypefnx\x012762,91474
+\def\deftypeunx #1 {\x7fdeftypeunx\x012763,91539
+\def\defop #1 {\x7fdefop\x012769,91685
+\def\defop #1 {\def\defoptype{\x7fdefoptype\x012769,91685
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopparsebody\Edefop\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopx\defopheader\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7fopheader\defoptype\x012770,91720
+\defopparsebody\Edefop\defopx\defopheader\defoptype}\x7foptype\x012770,91720
+\def\defopheader #1#2#3{\x7fdefopheader\x012772,91774
\begingroup\defname {\x7fname\x012774,91863
+\begingroup\defname {#2}{\defoptype{\x7foptype\x012774,91863
\defunargs {\x7funargs\x012775,91909
-\def\defmethod{\x7f\defmethod\x012780,91970
-\def\defmethodheader #1#2#3{\x7f\defmethodheader\x012782,92043
+\def\defmethod{\x7fdefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethparsebody\Edefmethod\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodx\defmethodheader\x012780,91970
+\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}\x7fmethodheader\x012780,91970
+\def\defmethodheader #1#2#3{\x7fdefmethodheader\x012782,92043
\begingroup\defname {\x7fname\x012784,92131
\defunargs {\x7funargs\x012785,92171
-\def\defcv #1 {\x7f\defcv\x012790,92245
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype\x012791,92280
-\def\defcvarheader #1#2#3{\x7f\defcvarheader\x012793,92339
+\def\defcv #1 {\x7fdefcv\x012790,92245
+\def\defcv #1 {\def\defcvtype{\x7fdefcvtype\x012790,92245
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fopvarparsebody\Edefcv\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvx\defcvarheader\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvarheader\defcvtype\x012791,92280
+\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}\x7fcvtype\x012791,92280
+\def\defcvarheader #1#2#3{\x7fdefcvarheader\x012793,92339
\begingroup\defname {\x7fname\x012795,92425
+\begingroup\defname {#2}{\defcvtype{\x7fcvtype\x012795,92425
\defvarargs {\x7fvarargs\x012796,92471
-\def\defivar{\x7f\defivar\x012801,92544
-\def\defivarheader #1#2#3{\x7f\defivarheader\x012803,92607
+\def\defivar{\x7fdefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fvrparsebody\Edefivar\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarx\defivarheader\x012801,92544
+\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}\x7fivarheader\x012801,92544
+\def\defivarheader #1#2#3{\x7fdefivarheader\x012803,92607
\begingroup\defname {\x7fname\x012805,92693
\defvarargs {\x7fvarargs\x012806,92744
-\def\defopx #1 {\x7f\defopx\x012812,92893
-\def\defmethodx #1 {\x7f\defmethodx\x012813,92950
-\def\defcvx #1 {\x7f\defcvx\x012814,93015
-\def\defivarx #1 {\x7f\defivarx\x012815,93072
-\def\defvarargs #1{\x7f\defvarargs\x012822,93343
-\def\defvr{\x7f\defvr\x012828,93487
-\def\defvrheader #1#2#3{\x7f\defvrheader\x012830,93542
+\def\defopx #1 {\x7fdefopx\x012812,92893
+\def\defmethodx #1 {\x7fdefmethodx\x012813,92950
+\def\defcvx #1 {\x7fdefcvx\x012814,93015
+\def\defivarx #1 {\x7fdefivarx\x012815,93072
+\def\defvarargs #1{\x7fdefvarargs\x012822,93343
+\def\defvr{\x7fdefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrparsebody\Edefvr\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrx\defvrheader\x012828,93487
+\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}\x7fvrheader\x012828,93487
+\def\defvrheader #1#2#3{\x7fdefvrheader\x012830,93542
\begingroup\defname {\x7fname\x012831,93590
-\def\defvar{\x7f\defvar\x012835,93675
-\def\defvarheader #1#2{\x7f\defvarheader\x012837,93735
+\begingroup\defname {#2}{#1}\defvarargs{\x7fvarargs\x012831,93590
+\def\defvar{\x7fdefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarparsebody\Edefvar\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarx\defvarheader\x012835,93675
+\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}\x7fvarheader\x012835,93675
+\def\defvarheader #1#2{\x7fdefvarheader\x012837,93735
\begingroup\defname {\x7fname\x012838,93806
\defvarargs {\x7fvarargs\x012839,93842
-\def\defopt{\x7f\defopt\x012844,93908
-\def\defoptheader #1#2{\x7f\defoptheader\x012846,93968
+\def\defopt{\x7fdefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7fvarparsebody\Edefopt\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptx\defoptheader\x012844,93908
+\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}\x7foptheader\x012844,93908
+\def\defoptheader #1#2{\x7fdefoptheader\x012846,93968
\begingroup\defname {\x7fname\x012847,94039
\defvarargs {\x7fvarargs\x012848,94078
-\def\deftypevar{\x7f\deftypevar\x012853,94135
-\def\deftypevarheader #1#2{\x7f\deftypevarheader\x012856,94251
+\def\deftypevar{\x7fdeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7fvarparsebody\Edeftypevar\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarx\deftypevarheader\x012853,94135
+\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}\x7ftypevarheader\x012853,94135
+\def\deftypevarheader #1#2{\x7fdeftypevarheader\x012856,94251
\begingroup\defname {\x7fname\x012858,94334
-\def\deftypevr{\x7f\deftypevr\x012865,94508
-\def\deftypevrheader #1#2#3{\x7f\deftypevrheader\x012867,94579
+\def\deftypevr{\x7fdeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7fvrparsebody\Edeftypevr\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrx\deftypevrheader\x012865,94508
+\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}\x7ftypevrheader\x012865,94508
+\def\deftypevrheader #1#2#3{\x7fdeftypevrheader\x012867,94579
\begingroup\defname {\x7fname\x012868,94631
-\def\defvrx #1 {\x7f\defvrx\x012876,94868
-\def\defvarx #1 {\x7f\defvarx\x012877,94925
-\def\defoptx #1 {\x7f\defoptx\x012878,94984
-\def\deftypevarx #1 {\x7f\deftypevarx\x012879,95043
-\def\deftypevrx #1 {\x7f\deftypevrx\x012880,95110
-\def\deftpargs #1{\x7f\deftpargs\x012885,95259
-\def\deftp{\x7f\deftp\x012889,95339
-\def\deftpheader #1#2#3{\x7f\deftpheader\x012891,95394
+\def\defvrx #1 {\x7fdefvrx\x012876,94868
+\def\defvarx #1 {\x7fdefvarx\x012877,94925
+\def\defoptx #1 {\x7fdefoptx\x012878,94984
+\def\deftypevarx #1 {\x7fdeftypevarx\x012879,95043
+\def\deftypevrx #1 {\x7fdeftypevrx\x012880,95110
+\def\deftpargs #1{\x7fdeftpargs\x012885,95259
+\def\deftpargs #1{\bf \defvarargs{\x7fvarargs\x012885,95259
+\def\deftp{\x7fdeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7fvrparsebody\Edeftp\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpx\deftpheader\x012889,95339
+\def\deftp{\defvrparsebody\Edeftp\deftpx\deftpheader}\x7ftpheader\x012889,95339
+\def\deftpheader #1#2#3{\x7fdeftpheader\x012891,95394
\begingroup\defname {\x7fname\x012892,95442
-\def\deftpx #1 {\x7f\deftpx\x012897,95601
-\def\setref#1{\x7f\setref\x012908,95922
-\def\unnumbsetref#1{\x7f\unnumbsetref\x012913,96036
-\def\appendixsetref#1{\x7f\appendixsetref\x012918,96143
-\def\pxref#1{\x7f\pxref\x012929,96554
-\def\xref#1{\x7f\xref\x012930,96590
-\def\ref#1{\x7f\ref\x012931,96625
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7f\xrefX[\x012932,96655
-\def\printedmanual{\x7f\printedmanual\x012933,96698
-\def\printednodename{\x7f\printednodename\x012934,96736
-\def\printednodename{\x7f\printednodename\x012939,96861
-section ``\printednodename'' in \cite{\printedmanual}\x7f\printedmanual\x012954,97493
+\begingroup\defname {#2}{#1}\deftpargs{\x7ftpargs\x012892,95442
+\def\deftpx #1 {\x7fdeftpx\x012897,95601
+\def\setref#1{\x7fsetref\x012908,95922
+\def\unnumbsetref#1{\x7funnumbsetref\x012913,96036
+\def\appendixsetref#1{\x7fappendixsetref\x012918,96143
+\def\pxref#1{\x7fpxref\x012929,96554
+\def\xref#1{\x7fxref\x012930,96590
+\def\ref#1{\x7fref\x012931,96625
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\x7fxrefX\x012932,96655
+\def\printedmanual{\x7fprintedmanual\x012933,96698
+\def\printednodename{\x7fprintednodename\x012934,96736
+\def\printednodename{\x7fprintednodename\x012939,96861
+section ``\printednodename'' in \cite{\printedmanual}\x7fprintedmanual\x012954,97493
\refx{\x7fx\x012957,97571
-\def\dosetq #1#2{\x7f\dosetq\x012965,97791
-\def\internalsetq #1#2{\x7f\internalsetq\x012973,98049
-\def\Ypagenumber{\x7f\Ypagenumber\x012977,98150
-\def\Ytitle{\x7f\Ytitle\x012979,98176
-\def\Ynothing{\x7f\Ynothing\x012981,98203
-\def\Ysectionnumberandtype{\x7f\Ysectionnumberandtype\x012983,98220
-\def\Yappendixletterandtype{\x7f\Yappendixletterandtype\x012992,98536
+\refx{#1-snt}{} [\printednodename], page\tie\refx{\x7fx\x012957,97571
+\def\dosetq #1#2{\x7fdosetq\x012965,97791
+\def\dosetq #1#2{{\let\folio=0 \turnoffactive%\x7ffolio\x012965,97791
+\edef\next{\x7fnext\x012966,97838
+\def\internalsetq #1#2{\x7finternalsetq\x012973,98049
+\def\Ypagenumber{\x7fYpagenumber\x012977,98150
+\def\Ytitle{\x7fYtitle\x012979,98176
+\def\Ynothing{\x7fYnothing\x012981,98203
+\def\Ysectionnumberandtype{\x7fYsectionnumberandtype\x012983,98220
+\def\Yappendixletterandtype{\x7fYappendixletterandtype\x012992,98536
\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{\x7fno\x012993,98566
-\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\secno\x012994,98621
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\secno.\the\subsecno\x012996,98725
-Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\secno.\the\subsecno.\the\subsubsecno\x012998,98796
- \def\linenumber{\x7f\linenumber\x013009,99135
-\def\refx#1#2{\x7f\refx\x013015,99319
-\def\xrdef #1#2{\x7f\xrdef\x013037,99945
-\def\readauxfile{\x7f\readauxfile\x013040,100030
-\def\supereject{\x7f\supereject\x013110,101811
-\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\textindent\x013131,102496
-\def\openindices{\x7f\openindices\x013139,102682
+\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %\x7fno.\the\x012994,98621
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %\x7fno.\the\x012996,98725
+Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %\x7fno.\the\x012998,98796
+\gdef\xreftie{\x7fxreftie\x013001,98891
+ \let\linenumber = \empty % Non-3.0.\x7flinenumber\x013007,99091
+ \def\linenumber{\x7flinenumber\x013009,99135
+\def\refx#1#2{\x7frefx\x013015,99319
+\def\xrdef #1#2{\x7fxrdef\x013037,99945
+{\catcode`\'=\other\expandafter \gdef \csname X#1\endcsname {\x7fcsname\x013038,99962
+\def\readauxfile{\x7freadauxfile\x013040,100030
+\def\supereject{\x7fsupereject\x013110,101811
+\let\footnotestyle=\comment\x7ffootnotestyle\x013113,101918
+\let\ptexfootnote=\footnote\x7fptexfootnote\x013115,101947
+\long\gdef\footnote #1{\x7ffootnote\x013118,101993
+\edef\thisfootno{\x7fthisfootno\x013120,102060
+\let\@sf\empty\x7f@sf\x013121,102100
+\ifhmode\edef\@sf{\x7f@sf\x013122,102115
+\long\gdef\footnotezzz #1{\x7ffootnotezzz\x013126,102228
+\footstrut\parindent=\defaultparindent\hang\textindent{\x7faultparindent\hang\x013131,102496
+\def\openindices{\x7fopenindices\x013139,102682
+\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\newdimen\defaultparindent \defaultparindent = 15pt\x7faultparindent\x013151,102907
\parindent = \defaultparindent\x7faultparindent\x013152,102959
-\def\smallbook{\x7f\smallbook\x013175,103683
-\global\def\Esmallexample{\x7f\Esmallexample\x013192,104110
-\def\afourpaper{\x7f\afourpaper\x013196,104201
-\def\finalout{\x7f\finalout\x013224,105009
-\def\normaldoublequote{\x7f\normaldoublequote\x013235,105270
-\def\normaltilde{\x7f\normaltilde\x013236,105296
-\def\normalcaret{\x7f\normalcaret\x013237,105316
-\def\normalunderscore{\x7f\normalunderscore\x013238,105336
-\def\normalverticalbar{\x7f\normalverticalbar\x013239,105361
-\def\normalless{\x7f\normalless\x013240,105387
-\def\normalgreater{\x7f\normalgreater\x013241,105406
-\def\normalplus{\x7f\normalplus\x013242,105428
-\def\ifusingtt#1#2{\x7f\ifusingtt\x013253,105920
-\def\activedoublequote{\x7f\activedoublequote\x013261,106248
+\def\smallbook{\x7fsmallbook\x013175,103683
+\global\let\smalllisp=\smalllispx\x7fsmalllisp\x013190,104039
+\global\let\smallexample=\smalllispx\x7fsmallexample\x013191,104073
+\global\def\Esmallexample{\x7fEsmallexample\x013192,104110
+\def\afourpaper{\x7fafourpaper\x013196,104201
+\def\finalout{\x7ffinalout\x013224,105009
+\def\normaldoublequote{\x7fnormaldoublequote\x013235,105270
+\def\normaltilde{\x7fnormaltilde\x013236,105296
+\def\normalcaret{\x7fnormalcaret\x013237,105316
+\def\normalunderscore{\x7fnormalunderscore\x013238,105336
+\def\normalverticalbar{\x7fnormalverticalbar\x013239,105361
+\def\normalless{\x7fnormalless\x013240,105387
+\def\normalgreater{\x7fnormalgreater\x013241,105406
+\def\normalplus{\x7fnormalplus\x013242,105428
+\def\ifusingtt#1#2{\x7fifusingtt\x013253,105920
+\def\activedoublequote{\x7factivedoublequote\x013261,106248
+\let"=\activedoublequote\x7f"\x013262,106289
\def~{\x7f~\x013264,106334
\def^{\x7f^\x013267,106395
\def_{\x7f_\x013270,106434
-\def\_{\x7f\_\x013272,106508
-\def\lvvmode{\x7f\lvvmode\x013279,106845
+\def\_{\x7f_\x013272,106508
+\def\lvvmode{\x7flvvmode\x013279,106845
\def|{\x7f|\x013282,106895
\def<{\x7f<\x013285,106958
\def>{\x7f>\x013288,107015
\def+{\x7f+\x013290,107053
-\def\turnoffactive{\x7f\turnoffactive\x013296,107214
+\def\turnoffactive{\x7fturnoffactive\x013296,107214
+\def\turnoffactive{\let"=\normaldoublequote\x7f"\x013296,107214
+\let~=\normaltilde\x7f~\x013297,107258
+\let^=\normalcaret\x7f^\x013298,107277
+\let_=\normalunderscore\x7f_\x013299,107296
+\let|=\normalverticalbar\x7f|\x013300,107320
+\let<=\normalless\x7f<\x013301,107345
+\let>=\normalgreater\x7f>\x013302,107363
+\let+=\normalplus}\x7f+\x013303,107384
\global\def={\x7f=\x013307,107500
-\def\normalbackslash{\x7f\normalbackslash\x013321,107882
+\def\normalbackslash{\x7fnormalbackslash\x013321,107882
\f
merc-src/accumulator.m,4915
:- interface\x7f146,5371
--
2.39.4
^ permalink raw reply related [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-06-10 13:29 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-07-27 15:39 ` Arash Esbati
2024-07-28 23:57 ` Dmitry Gutov
0 siblings, 1 reply; 106+ messages in thread
From: Arash Esbati @ 2024-07-27 15:39 UTC (permalink / raw)
To: 53749; +Cc: ikumi, dgutov, dfussner, stefankangas, tsdh, eliz, monnier
David Fussner via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org> writes:
> Hi Dmitry, Stefan M and Stefan K,
>
> Here's the latest patch, with most of the modifications requested by
> Stefan K. The code populating `semantic-symref-filepattern-alist` I've
> left in tex-mode.el, because I wasn't sure how to adjudicate the
> differing opinions on where it should go. Moving it won't take any
> time, should that be the verdict. I've had a stab at a NEWS entry, and
> included the patches to the manual etags test files. The diffs for the
> test files are large, since we remove the TeX escape char from any tag
> names where it occurs, as discussed elsewhere on this thread.
>
> Please let me know if more changes are needed.
Ping! Gents, is it possible to give David your comments? There was
some effort behind this, maybe it's time to bring this to an end. TIA.
Best, Arash
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-07-27 15:39 ` Arash Esbati
@ 2024-07-28 23:57 ` Dmitry Gutov
2024-07-29 10:31 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-14 13:43 ` Stefan Kangas
0 siblings, 2 replies; 106+ messages in thread
From: Dmitry Gutov @ 2024-07-28 23:57 UTC (permalink / raw)
To: Arash Esbati, 53749; +Cc: ikumi, dfussner, monnier, tsdh, eliz, stefankangas
On 27/07/2024 18:39, Arash Esbati wrote:
> David Fussner via "Bug reports for GNU Emacs, the Swiss army knife of text editors"<bug-gnu-emacs@gnu.org> writes:
>
>> Hi Dmitry, Stefan M and Stefan K,
>>
>> Here's the latest patch, with most of the modifications requested by
>> Stefan K. The code populating `semantic-symref-filepattern-alist` I've
>> left in tex-mode.el, because I wasn't sure how to adjudicate the
>> differing opinions on where it should go. Moving it won't take any
>> time, should that be the verdict. I've had a stab at a NEWS entry, and
>> included the patches to the manual etags test files. The diffs for the
>> test files are large, since we remove the TeX escape char from any tag
>> names where it occurs, as discussed elsewhere on this thread.
>>
>> Please let me know if more changes are needed.
> Ping! Gents, is it possible to give David your comments? There was
> some effort behind this, maybe it's time to bring this to an end. TIA.
It's good enough from my side, but I hope someone else could comment as
well.
Additionally though, it might or might not be too big a change for Emacs
30 (I'm not sure), and if we're talking about 31 only, then it could
wait a little more for the review.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-07-28 23:57 ` Dmitry Gutov
@ 2024-07-29 10:31 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-14 13:43 ` Stefan Kangas
1 sibling, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-07-29 10:31 UTC (permalink / raw)
To: Dmitry Gutov
Cc: 53749, ikumi, Arash Esbati, stefankangas, tsdh, eliz, monnier
Hi Dmitry and Arash,
> Additionally though, it might or might not be too big a change for Emacs
> 30 (I'm not sure), and if we're talking about 31 only, then it could
> wait a little more for the review.
Good point -- I'm OK either way. Getting it tested, even lightly, on
master for a while might make sense for a patch of its size, but
others will have a better sense of it.
Best, David.
On Mon, 29 Jul 2024 at 00:58, Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> On 27/07/2024 18:39, Arash Esbati wrote:
> > David Fussner via "Bug reports for GNU Emacs, the Swiss army knife of text editors"<bug-gnu-emacs@gnu.org> writes:
> >
> >> Hi Dmitry, Stefan M and Stefan K,
> >>
> >> Here's the latest patch, with most of the modifications requested by
> >> Stefan K. The code populating `semantic-symref-filepattern-alist` I've
> >> left in tex-mode.el, because I wasn't sure how to adjudicate the
> >> differing opinions on where it should go. Moving it won't take any
> >> time, should that be the verdict. I've had a stab at a NEWS entry, and
> >> included the patches to the manual etags test files. The diffs for the
> >> test files are large, since we remove the TeX escape char from any tag
> >> names where it occurs, as discussed elsewhere on this thread.
> >>
> >> Please let me know if more changes are needed.
> > Ping! Gents, is it possible to give David your comments? There was
> > some effort behind this, maybe it's time to bring this to an end. TIA.
>
> It's good enough from my side, but I hope someone else could comment as
> well.
>
> Additionally though, it might or might not be too big a change for Emacs
> 30 (I'm not sure), and if we're talking about 31 only, then it could
> wait a little more for the review.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-07-28 23:57 ` Dmitry Gutov
2024-07-29 10:31 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-09-14 13:43 ` Stefan Kangas
2024-09-14 14:06 ` Eli Zaretskii
1 sibling, 1 reply; 106+ messages in thread
From: Stefan Kangas @ 2024-09-14 13:43 UTC (permalink / raw)
To: Dmitry Gutov, Arash Esbati, 53749; +Cc: ikumi, eliz, monnier, dfussner, tsdh
Dmitry Gutov <dgutov@yandex.ru> writes:
> It's good enough from my side, but I hope someone else could comment as
> well.
>
> Additionally though, it might or might not be too big a change for Emacs
> 30 (I'm not sure), and if we're talking about 31 only, then it could
> wait a little more for the review.
Are we happy to install this now, or are we still waiting for more
comments?
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-09-14 13:43 ` Stefan Kangas
@ 2024-09-14 14:06 ` Eli Zaretskii
2024-09-14 15:02 ` Dmitry Gutov
2024-09-14 15:08 ` Stefan Kangas
0 siblings, 2 replies; 106+ messages in thread
From: Eli Zaretskii @ 2024-09-14 14:06 UTC (permalink / raw)
To: Stefan Kangas; +Cc: 53749, ikumi, dgutov, dfussner, arash, monnier, tsdh
> From: Stefan Kangas <stefankangas@gmail.com>
> Date: Sat, 14 Sep 2024 06:43:01 -0700
> Cc: ikumi@ikumi.que.jp, dfussner@googlemail.com, tsdh@gnu.org, eliz@gnu.org,
> monnier@iro.umontreal.ca
>
> Dmitry Gutov <dgutov@yandex.ru> writes:
>
> > It's good enough from my side, but I hope someone else could comment as
> > well.
> >
> > Additionally though, it might or might not be too big a change for Emacs
> > 30 (I'm not sure), and if we're talking about 31 only, then it could
> > wait a little more for the review.
>
> Are we happy to install this now, or are we still waiting for more
> comments?
We've waited long enough, I think.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-09-14 14:06 ` Eli Zaretskii
@ 2024-09-14 15:02 ` Dmitry Gutov
2024-09-14 15:08 ` Stefan Kangas
1 sibling, 0 replies; 106+ messages in thread
From: Dmitry Gutov @ 2024-09-14 15:02 UTC (permalink / raw)
To: Eli Zaretskii, Stefan Kangas; +Cc: 53749, ikumi, dfussner, arash, monnier, tsdh
On 14/09/2024 17:06, Eli Zaretskii wrote:
>> From: Stefan Kangas<stefankangas@gmail.com>
>> Date: Sat, 14 Sep 2024 06:43:01 -0700
>> Cc:ikumi@ikumi.que.jp,dfussner@googlemail.com,tsdh@gnu.org,eliz@gnu.org,
>> monnier@iro.umontreal.ca
>>
>> Dmitry Gutov<dgutov@yandex.ru> writes:
>>
>>> It's good enough from my side, but I hope someone else could comment as
>>> well.
>>>
>>> Additionally though, it might or might not be too big a change for Emacs
>>> 30 (I'm not sure), and if we're talking about 31 only, then it could
>>> wait a little more for the review.
>> Are we happy to install this now, or are we still waiting for more
>> comments?
> We've waited long enough, I think.
I also agree.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-09-14 14:06 ` Eli Zaretskii
2024-09-14 15:02 ` Dmitry Gutov
@ 2024-09-14 15:08 ` Stefan Kangas
2024-09-14 15:28 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
1 sibling, 1 reply; 106+ messages in thread
From: Stefan Kangas @ 2024-09-14 15:08 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 53749-done, ikumi, dgutov, dfussner, arash, monnier, tsdh
Version: 31.1
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Stefan Kangas <stefankangas@gmail.com>
>> Date: Sat, 14 Sep 2024 06:43:01 -0700
>> Cc: ikumi@ikumi.que.jp, dfussner@googlemail.com, tsdh@gnu.org, eliz@gnu.org,
>> monnier@iro.umontreal.ca
>>
>> Dmitry Gutov <dgutov@yandex.ru> writes:
>>
>> > It's good enough from my side, but I hope someone else could comment as
>> > well.
>>
>> Are we happy to install this now, or are we still waiting for more
>> comments?
>
> We've waited long enough, I think.
Thanks, so I've now installed the patch on master. Note that I broke
out the etags/ctags changes into a separate patch (in David's name) to
make the original patch a bit less unwieldy.
3090b2304e7 Update the etags/ctags test files
b44c00669ac Provide a modified xref backend for TeX buffers
And with that, I'm closing this bug report. Congratulations to David
for landing his first contribution to Emacs, and thanks again.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-09-14 15:08 ` Stefan Kangas
@ 2024-09-14 15:28 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-09-14 15:28 UTC (permalink / raw)
To: Stefan Kangas
Cc: 53749-done, Ikumi Keita, Dmitry Gutov, Arash Esbati,
Stefan Monnier, Tassilo Horn, Eli Zaretskii
[-- Attachment #1: Type: text/plain, Size: 1311 bytes --]
Many thanks to you all for your help and advice. I'm not subscribed to this
list, though I am a frequent lurker, so if I can be of any help fixing
issues with the patches please ping me if I'm being oblivious.
Best, David.
On Sat, 14 Sept 2024, 16:08 Stefan Kangas, <stefankangas@gmail.com> wrote:
> Version: 31.1
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> >> From: Stefan Kangas <stefankangas@gmail.com>
> >> Date: Sat, 14 Sep 2024 06:43:01 -0700
> >> Cc: ikumi@ikumi.que.jp, dfussner@googlemail.com, tsdh@gnu.org,
> eliz@gnu.org,
> >> monnier@iro.umontreal.ca
> >>
> >> Dmitry Gutov <dgutov@yandex.ru> writes:
> >>
> >> > It's good enough from my side, but I hope someone else could comment
> as
> >> > well.
> >>
> >> Are we happy to install this now, or are we still waiting for more
> >> comments?
> >
> > We've waited long enough, I think.
>
> Thanks, so I've now installed the patch on master. Note that I broke
> out the etags/ctags changes into a separate patch (in David's name) to
> make the original patch a bit less unwieldy.
>
> 3090b2304e7 Update the etags/ctags test files
> b44c00669ac Provide a modified xref backend for TeX buffers
>
> And with that, I'm closing this bug report. Congratulations to David
> for landing his first contribution to Emacs, and thanks again.
>
[-- Attachment #2: Type: text/html, Size: 2427 bytes --]
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2022-02-03 15:09 bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
` (2 preceding siblings ...)
2022-02-25 20:16 ` Augusto Stoffel
@ 2024-09-14 17:26 ` Mattias Engdegård
2024-09-16 8:33 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
3 siblings, 1 reply; 106+ messages in thread
From: Mattias Engdegård @ 2024-09-14 17:26 UTC (permalink / raw)
To: David Fussner
Cc: 53749, Ikumi Keita, Dmitry Gutov, Arash Esbati, Stefan Kangas,
Tassilo Horn, Eli Zaretskii, Stefan Monnier
Thanks for the contribution, David! My electronic servant complained about some regexps:
3881 (re-search-backward (concat "[]["
3882 (mapconcat #'regexp-quote
3883 (mapcar #'char-to-string
3884 tex-thingatpt-exclude-chars))
3885 "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
This is not a correct way to build a regexp; `regexp-quote` can only be used to quote strings that should match literally, not characters inside [...], where backslashes have no escaping power.
There are various ways of doing this properly. I would suggest something like
(rx-to-string `(or (in "\"#$%&'()*,=[]`|" cntrl blank)
,@tex-thingatpt-exclude-chars)
t))
but it also depends on what you want that `tex-thingatpt-exclude-chars` variable to be. Should it be a user option (defcustom)? The variable's doc string is a wall of text that basically says that it can be set to whatever you want but things will stop working so you'd better not.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-09-14 17:26 ` Mattias Engdegård
@ 2024-09-16 8:33 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-16 13:30 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-17 12:35 ` Mattias Engdegård
0 siblings, 2 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-09-16 8:33 UTC (permalink / raw)
To: Mattias Engdegård
Cc: 53749, Ikumi Keita, Dmitry Gutov, Arash Esbati, Stefan Kangas,
Tassilo Horn, Eli Zaretskii, Stefan Monnier
Hi Mattias,
Thanks for this, and of course you are quite right on both counts:
> but it also depends on what you want that `tex-thingatpt-exclude-chars` variable to be
I believe it's time I abandoned this piece of idiocy, already flagged
by several commentators before you. The basic motivation was to allow
using the new xref code in TeX files that used non-standard escape and
grouping characters. Both etags and AUCTeX address this possibility,
but the latter does it right by having three separate variables:
TeX-esc, TeX-grop, and TeX-grcl, so that these can be part of the
whole regular expression apparatus for syntax highlighting and
everything else. I had in the back of my mind to implement something
similar in tex-mode, but the half-measure of
`tex-thingatpt-exclude-chars` is the wrong way to go.
I propose, therefore, to eliminate this variable from tex-mode and
just hard code the standard escape and grouping characters for the
time being, as in the rest of tex-mode.el, then to submit later a
patch to implement something similar to what AUCTeX does, and one
interoperable with AUCTeX, also.
> This is not a correct way to build a regexp;
Given the above changes, would you and your electronic servant be OK
with code like the following?
(re-search-forward "[][\\{}\"*`'#=&()%,|$[:cntrl:][:blank:]]")
(I still, I'm ashamed to confess, find the traditional regexp syntax
easier to read than rx notation, but could overcome this if you think
rx is a better fit here.)
What do you think?
Best, David.
On Sat, 14 Sept 2024 at 18:26, Mattias Engdegård
<mattias.engdegard@gmail.com> wrote:
>
> Thanks for the contribution, David! My electronic servant complained about some regexps:
>
> 3881 (re-search-backward (concat "[]["
> 3882 (mapconcat #'regexp-quote
> 3883 (mapcar #'char-to-string
> 3884 tex-thingatpt-exclude-chars))
> 3885 "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
>
> This is not a correct way to build a regexp; `regexp-quote` can only be used to quote strings that should match literally, not characters inside [...], where backslashes have no escaping power.
>
> There are various ways of doing this properly. I would suggest something like
>
> (rx-to-string `(or (in "\"#$%&'()*,=[]`|" cntrl blank)
> ,@tex-thingatpt-exclude-chars)
> t))
>
> but it also depends on what you want that `tex-thingatpt-exclude-chars` variable to be. Should it be a user option (defcustom)? The variable's doc string is a wall of text that basically says that it can be set to whatever you want but things will stop working so you'd better not.
>
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-09-16 8:33 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-09-16 13:30 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-21 2:07 ` Stefan Kangas
2024-09-17 12:35 ` Mattias Engdegård
1 sibling, 1 reply; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-09-16 13:30 UTC (permalink / raw)
To: Mattias Engdegård
Cc: 53749, Ikumi Keita, Dmitry Gutov, Arash Esbati, Stefan Kangas,
Tassilo Horn, Eli Zaretskii, Stefan Monnier
[-- Attachment #1: Type: text/plain, Size: 3263 bytes --]
Hi Mattias, Arash,
Here's a patch to fix the regexps and delete the unnecessary variable.
Any thoughts?
I'll look at adding new vars for the TeX escape and grouping chars,
creating a new bug number when I have a working patch.
Thanks, David.
On Mon, 16 Sept 2024 at 09:33, David Fussner <dfussner@googlemail.com> wrote:
>
> Hi Mattias,
>
> Thanks for this, and of course you are quite right on both counts:
>
> > but it also depends on what you want that `tex-thingatpt-exclude-chars` variable to be
>
> I believe it's time I abandoned this piece of idiocy, already flagged
> by several commentators before you. The basic motivation was to allow
> using the new xref code in TeX files that used non-standard escape and
> grouping characters. Both etags and AUCTeX address this possibility,
> but the latter does it right by having three separate variables:
> TeX-esc, TeX-grop, and TeX-grcl, so that these can be part of the
> whole regular expression apparatus for syntax highlighting and
> everything else. I had in the back of my mind to implement something
> similar in tex-mode, but the half-measure of
> `tex-thingatpt-exclude-chars` is the wrong way to go.
>
> I propose, therefore, to eliminate this variable from tex-mode and
> just hard code the standard escape and grouping characters for the
> time being, as in the rest of tex-mode.el, then to submit later a
> patch to implement something similar to what AUCTeX does, and one
> interoperable with AUCTeX, also.
>
> > This is not a correct way to build a regexp;
>
> Given the above changes, would you and your electronic servant be OK
> with code like the following?
>
> (re-search-forward "[][\\{}\"*`'#=&()%,|$[:cntrl:][:blank:]]")
>
> (I still, I'm ashamed to confess, find the traditional regexp syntax
> easier to read than rx notation, but could overcome this if you think
> rx is a better fit here.)
>
> What do you think?
>
> Best, David.
>
> On Sat, 14 Sept 2024 at 18:26, Mattias Engdegård
> <mattias.engdegard@gmail.com> wrote:
> >
> > Thanks for the contribution, David! My electronic servant complained about some regexps:
> >
> > 3881 (re-search-backward (concat "[]["
> > 3882 (mapconcat #'regexp-quote
> > 3883 (mapcar #'char-to-string
> > 3884 tex-thingatpt-exclude-chars))
> > 3885 "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
> >
> > This is not a correct way to build a regexp; `regexp-quote` can only be used to quote strings that should match literally, not characters inside [...], where backslashes have no escaping power.
> >
> > There are various ways of doing this properly. I would suggest something like
> >
> > (rx-to-string `(or (in "\"#$%&'()*,=[]`|" cntrl blank)
> > ,@tex-thingatpt-exclude-chars)
> > t))
> >
> > but it also depends on what you want that `tex-thingatpt-exclude-chars` variable to be. Should it be a user option (defcustom)? The variable's doc string is a wall of text that basically says that it can be set to whatever you want but things will stop working so you'd better not.
> >
[-- Attachment #2: 0001-Fix-regexps-for-TeX-xref-backend-Bug-53749.patch --]
[-- Type: text/x-patch, Size: 3821 bytes --]
From 1c607543556a7b79615dbc5e8384e10d92d081d5 Mon Sep 17 00:00:00 2001
From: David Fussner <dfussner@googlemail.com>
Date: Mon, 16 Sep 2024 14:05:01 +0100
Subject: [PATCH] Fix regexps for TeX xref backend (Bug#53749)
* lisp/textmodes/tex-mode.el (tex-thingatpt-exclude-chars): Remove
var.
(tex-thingatpt--beginning-of-symbol, tex-thingatpt--end-of-symbol):
Use hard-coded chars instead of var.
---
lisp/textmodes/tex-mode.el | 43 ++------------------------------------
1 file changed, 2 insertions(+), 41 deletions(-)
diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el
index ec0c0c47a2d..6fc49800018 100644
--- a/lisp/textmodes/tex-mode.el
+++ b/lisp/textmodes/tex-mode.el
@@ -3814,37 +3814,6 @@ tex-chktex
;; Emacs and `etags' this way aims to improve the user experience "out
;; of the box."
-(defvar tex-thingatpt-exclude-chars '(?\\ ?\{ ?\})
- "Exclude these chars by default from TeX thing-at-point.
-
-The TeX `xref-backend-identifier-at-point' method uses the characters
-listed in this variable to decide on the default search string to
-present to the user who calls an `xref' command. These characters
-become part of a regexp which always excludes them from that default
-string. For the `xref' commands to function properly in TeX buffers, at
-least the TeX escape and the two TeX grouping characters should be
-listed here. Should your TeX documents contain other characters which
-you want to exclude by default, then you can add them to the list,
-though you may wish to consult the functions
-`tex-thingatpt--beginning-of-symbol' and `tex-thingatpt--end-of-symbol'
-to see what the regexp already contains. If your documents contain
-non-standard escape and grouping characters, then you can replace the
-three listed here with your own, thereby allowing the three standard
-characters to appear by default in search strings. Please be aware,
-however, that the `etags' program only recognizes `\\' (92) and `!' (33)
-as escape characters in TeX documents, and if it detects the latter it
-also uses `<>' as the TeX grouping construct rather than `{}'. Setting
-the escape and grouping chars to anything other than `\\=\\{}' or `!<>'
-will not be useful without changes to `etags', at least for commands
-that search tags tables, such as \\[xref-find-definitions] and \
-\\[xref-find-apropos].
-
-Should you wish to change the defaults, please also be aware that,
-without further modifications to tex-mode.el, the usual text-parsing
-routines for `font-lock' and the like won't work correctly, as the
-default escape and grouping characters are currently hard coded in many
-places.")
-
;; Populate `semantic-symref-filepattern-alist' for the in-tree modes;
;; AUCTeX is doing the same for its modes.
(with-eval-after-load 'semantic/symref/grep
@@ -3878,20 +3847,12 @@ tex--thing-at-point
(defun tex-thingatpt--beginning-of-symbol ()
(and
- (re-search-backward (concat "[]["
- (mapconcat #'regexp-quote
- (mapcar #'char-to-string
- tex-thingatpt-exclude-chars))
- "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (re-search-backward "[][\\{}\"*`'#=&()%,|$[:cntrl:][:blank:]]" nil t)
(forward-char)))
(defun tex-thingatpt--end-of-symbol ()
(and
- (re-search-forward (concat "[]["
- (mapconcat #'regexp-quote
- (mapcar #'char-to-string
- tex-thingatpt-exclude-chars))
- "\"*`'#=&()%,|$[:cntrl:][:blank:]]"))
+ (re-search-forward "[][\\{}\"*`'#=&()%,|$[:cntrl:][:blank:]]" nil t)
(backward-char)))
(defun tex--bounds-of-symbol-at-point ()
--
2.39.4
^ permalink raw reply related [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-09-16 8:33 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-16 13:30 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-09-17 12:35 ` Mattias Engdegård
1 sibling, 0 replies; 106+ messages in thread
From: Mattias Engdegård @ 2024-09-17 12:35 UTC (permalink / raw)
To: David Fussner
Cc: 53749, Ikumi Keita, Dmitry Gutov, Arash Esbati, Stefan Kangas,
Tassilo Horn, Eli Zaretskii, Stefan Monnier
16 sep. 2024 kl. 10.33 skrev David Fussner <dfussner@googlemail.com>:
> (re-search-forward "[][\\{}\"*`'#=&()%,|$[:cntrl:][:blank:]]")
Fine as far as I'm concerned.
> (I still, I'm ashamed to confess, find the traditional regexp syntax
> easier to read than rx notation, but could overcome this if you think
> rx is a better fit here.)
There is not a big difference in this case so stick to what you prefer.
Otherwise, I encourage you to try using rx from time to time – it's habit-forming!
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-09-16 13:30 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2024-09-21 2:07 ` Stefan Kangas
2024-09-21 16:44 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 1 reply; 106+ messages in thread
From: Stefan Kangas @ 2024-09-21 2:07 UTC (permalink / raw)
To: David Fussner, Mattias Engdegård
Cc: 53749, Ikumi Keita, Dmitry Gutov, Arash Esbati, Stefan Monnier,
Tassilo Horn, Eli Zaretskii
David Fussner <dfussner@googlemail.com> writes:
> Hi Mattias, Arash,
>
> Here's a patch to fix the regexps and delete the unnecessary variable.
> Any thoughts?
Thanks, installed on master.
> I'll look at adding new vars for the TeX escape and grouping chars,
> creating a new bug number when I have a working patch.
Thanks in advance for this also.
^ permalink raw reply [flat|nested] 106+ messages in thread
* bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers
2024-09-21 2:07 ` Stefan Kangas
@ 2024-09-21 16:44 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
0 siblings, 0 replies; 106+ messages in thread
From: David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-09-21 16:44 UTC (permalink / raw)
To: Stefan Kangas
Cc: 53749, Ikumi Keita, Mattias Engdegård, Dmitry Gutov,
Arash Esbati, Stefan Monnier, Tassilo Horn, Eli Zaretskii
[-- Attachment #1: Type: text/plain, Size: 488 bytes --]
Thanks for installing it, Stefan.
On Sat, 21 Sept 2024, 03:07 Stefan Kangas, <stefankangas@gmail.com> wrote:
> David Fussner <dfussner@googlemail.com> writes:
>
> > Hi Mattias, Arash,
> >
> > Here's a patch to fix the regexps and delete the unnecessary variable.
> > Any thoughts?
>
> Thanks, installed on master.
>
> > I'll look at adding new vars for the TeX escape and grouping chars,
> > creating a new bug number when I have a working patch.
>
> Thanks in advance for this also.
>
[-- Attachment #2: Type: text/html, Size: 920 bytes --]
^ permalink raw reply [flat|nested] 106+ messages in thread
end of thread, other threads:[~2024-09-21 16:44 UTC | newest]
Thread overview: 106+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-03 15:09 bug#53749: 29.0.50; [PATCH] Xref backend for TeX buffers David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-21 2:11 ` Dmitry Gutov
2022-02-21 9:48 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-21 17:28 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-21 23:56 ` Dmitry Gutov
2022-02-22 15:19 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-23 2:21 ` Dmitry Gutov
2022-02-23 10:45 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-24 2:23 ` Dmitry Gutov
2022-02-24 13:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-21 23:55 ` Dmitry Gutov
2022-09-08 13:25 ` Lars Ingebrigtsen
2022-09-08 13:34 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-08 13:39 ` Lars Ingebrigtsen
2022-09-08 15:50 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-03 9:08 ` Stefan Kangas
2023-09-03 10:03 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-03 10:46 ` Stefan Kangas
2023-09-13 11:10 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-13 13:42 ` Stefan Kangas
2023-09-13 15:23 ` Dmitry Gutov
2023-09-13 17:01 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-13 23:59 ` Dmitry Gutov
2023-09-14 6:10 ` Eli Zaretskii
2023-09-15 18:45 ` Tassilo Horn
2023-09-16 5:53 ` Ikumi Keita
2023-09-17 8:49 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 13:06 ` Arash Esbati
2024-04-22 14:56 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 16:15 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 16:37 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 17:16 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-22 17:25 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-24 0:09 ` Dmitry Gutov
2024-04-24 9:02 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-23 12:04 ` Arash Esbati
2024-04-23 13:21 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-04-29 14:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-02 0:43 ` Dmitry Gutov
2024-05-02 13:32 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-03 13:42 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-07 2:27 ` Dmitry Gutov
2024-05-09 3:00 ` Dmitry Gutov
2024-05-09 6:38 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-09 10:49 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-13 20:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-14 21:24 ` Dmitry Gutov
2024-05-16 18:18 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-20 0:21 ` Dmitry Gutov
2024-05-20 2:38 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-25 7:57 ` Eli Zaretskii
2024-06-05 9:46 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-08 12:38 ` Eli Zaretskii
2024-06-08 20:54 ` Dmitry Gutov
2024-06-09 11:10 ` Stefan Kangas
2024-06-09 11:36 ` Stefan Kangas
2024-06-09 18:42 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-09 18:45 ` Dmitry Gutov
2024-06-09 21:03 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-06-09 22:13 ` Dmitry Gutov
2024-06-10 13:29 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-07-27 15:39 ` Arash Esbati
2024-07-28 23:57 ` Dmitry Gutov
2024-07-29 10:31 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-14 13:43 ` Stefan Kangas
2024-09-14 14:06 ` Eli Zaretskii
2024-09-14 15:02 ` Dmitry Gutov
2024-09-14 15:08 ` Stefan Kangas
2024-09-14 15:28 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-25 23:01 ` Dmitry Gutov
2024-05-07 2:06 ` Dmitry Gutov
2024-05-02 6:47 ` Arash Esbati
2024-05-02 13:34 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-03 14:10 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-04 8:26 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-04 14:32 ` Arash Esbati
2024-05-04 14:54 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-04 21:15 ` Arash Esbati
2024-05-07 13:15 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-15 15:47 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-05-16 7:53 ` Arash Esbati
2024-05-16 12:56 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-14 16:11 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-14 23:55 ` Dmitry Gutov
2023-09-15 6:47 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-13 19:16 ` Eli Zaretskii
2023-09-13 20:25 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-14 5:14 ` Eli Zaretskii
2022-02-21 12:35 ` Arash Esbati
2022-02-21 14:03 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-25 20:16 ` Augusto Stoffel
2022-02-26 9:29 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-26 10:56 ` Augusto Stoffel
2022-02-27 18:42 ` Arash Esbati
2022-02-28 9:09 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-28 11:54 ` Arash Esbati
2022-02-28 13:11 ` Augusto Stoffel
2022-02-28 19:04 ` Arash Esbati
2022-03-01 8:46 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-02-28 13:05 ` Augusto Stoffel
2024-09-14 17:26 ` Mattias Engdegård
2024-09-16 8:33 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-16 13:30 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-21 2:07 ` Stefan Kangas
2024-09-21 16:44 ` David Fussner via Bug reports for GNU Emacs, the Swiss army knife of text editors
2024-09-17 12:35 ` Mattias Engdegård
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).