diff options
author | Yuuki Harano <masm+github@masm11.me> | 2021-05-19 22:02:06 +0900 |
---|---|---|
committer | Yuuki Harano <masm+github@masm11.me> | 2021-05-19 22:02:06 +0900 |
commit | e48372f8e5722643e37185b004469acd174663f7 (patch) | |
tree | b77ec71bb51856f98d34182eca56322750533017 | |
parent | d0fa569b7303c2d893b54d0a7af7a521308a5ed4 (diff) | |
parent | 61291e06cc804de2075305c220d31ef6072f28c8 (diff) | |
download | emacs-e48372f8e5722643e37185b004469acd174663f7.tar.gz emacs-e48372f8e5722643e37185b004469acd174663f7.tar.bz2 emacs-e48372f8e5722643e37185b004469acd174663f7.zip |
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs into feature/pgtk
196 files changed, 9253 insertions, 7247 deletions
diff --git a/Makefile.in b/Makefile.in index 3115e63025f..71f761eb40f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -96,6 +96,8 @@ NTDIR=@NTDIR@ top_builddir = @top_builddir@ -include ${top_builddir}/src/verbose.mk +FIND_DELETE = @FIND_DELETE@ + HAVE_NATIVE_COMP = @HAVE_NATIVE_COMP@ # ==================== Where To Install Things ==================== @@ -850,12 +852,11 @@ endef ### target for GCC does not delete 'libgcc.a', because recompiling it ### is rarely necessary and takes a lot of time. mostlyclean_dirs = src oldXMenu lwlib lib lib-src nt doc/emacs doc/misc \ - doc/lispref doc/lispintro + doc/lispref doc/lispintro test $(foreach dir,$(mostlyclean_dirs),$(eval $(call submake_template,$(dir),mostlyclean))) mostlyclean: $(mostlyclean_dirs:=_mostlyclean) - [ ! -d test ] || $(MAKE) -C test $@ ### 'clean' ### Delete all files from the current directory that are normally @@ -870,7 +871,6 @@ clean_dirs = $(mostlyclean_dirs) nextstep admin/charsets admin/unidata $(foreach dir,$(clean_dirs),$(eval $(call submake_template,$(dir),clean))) clean: $(clean_dirs:=_clean) clean-gsettings-schemas - [ ! -d test ] || $(MAKE) -C test $@ -rm -f ./*.tmp etc/*.tmp* -rm -rf info-dir.* -rm -rf native-lisp @@ -896,7 +896,6 @@ distclean_dirs = $(clean_dirs) leim lisp admin/grammars $(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),distclean))) distclean: $(distclean_dirs:=_distclean) - [ ! -d test ] || $(MAKE) -C test $@ ${top_distclean} ### 'bootstrap-clean' @@ -905,7 +904,6 @@ distclean: $(distclean_dirs:=_distclean) $(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),bootstrap-clean))) bootstrap-clean: $(distclean_dirs:=_bootstrap-clean) - [ ! -d test ] || $(MAKE) -C test $@ [ ! -f config.log ] || mv -f config.log config.log~ rm -rf ${srcdir}/info rm -f ${srcdir}/etc/refcards/emacsver.tex @@ -924,34 +922,25 @@ bootstrap-clean: $(distclean_dirs:=_bootstrap-clean) ### begin to build the program. top_maintainer_clean=\ ${top_distclean}; \ - rm -fr autom4te.cache - -maintainer_clean_dirs = src leim lisp admin/charsets admin/grammars \ - admin/unidata + rm -fr ${srcdir}/autom4te.cache -$(foreach dir,$(maintainer_clean_dirs),$(eval $(call submake_template,$(dir),maintainer-clean))) +$(foreach dir,$(distclean_dirs),$(eval $(call submake_template,$(dir),maintainer-clean))) -maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:=_maintainer-clean) - [ ! -d test ] || $(MAKE) -C test $@ +maintainer-clean: $(distclean_dirs:=_maintainer-clean) + rm -rf ${srcdir}/info + rm -f ${srcdir}/etc/refcards/emacsver.tex ${top_maintainer_clean} ### This doesn't actually appear in the coding standards, but Karl ### says GCC supports it, and that's where the configuration part of ### the coding standards seem to come from. It's like distclean, but ### it deletes backup and autosave files too. -### Note that we abuse this in some subdirectories (eg leim), -### to delete some generated files that are slow to rebuild. -extraclean_dirs = ${NTDIR} lib-src src leim \ - admin/charsets admin/grammars admin/unidata lisp lib lwlib - -$(foreach dir,$(extraclean_dirs),$(eval $(call submake_template,$(dir),extraclean))) - -extraclean: $(extraclean_dirs:=_extraclean) - ${top_maintainer_clean} - -rm -f config-tmp-* aclocal.m4 configure - -rm -f ./*~ \#* etc/refcards/emacsver.tex doc/emacs/emacsver.texi - -rm -f info/*.info info/dir - -rmdir info 2>/dev/null +extraclean: maintainer-clean + -rm -f config-tmp-* ${srcdir}/aclocal.m4 ${srcdir}/configure \ + ${srcdir}/src/config.in + -[ "${srcdir}" = "." ] || \ + find ${srcdir} '(' -name '*~' -o -name '#*' ')' ${FIND_DELETE} + -find . '(' -name '*~' -o -name '#*' ')' ${FIND_DELETE} # The src subdir knows how to do the right thing # even when the build directory and source dir are different. @@ -968,12 +957,7 @@ TAGS tags: lib lib-src # src CHECK_TARGETS = check check-maybe check-expensive check-all .PHONY: $(CHECK_TARGETS) $(CHECK_TARGETS): all -ifeq ($(wildcard test),test) $(MAKE) -C test $@ -else - @echo "You do not seem to have the test/ directory." - @echo "Maybe you used a release tarfile that lacks tests." -endif test/%: $(MAKE) -C test $* diff --git a/admin/charsets/Makefile.in b/admin/charsets/Makefile.in index 00424843bc4..f043077e318 100644 --- a/admin/charsets/Makefile.in +++ b/admin/charsets/Makefile.in @@ -297,7 +297,7 @@ ${charsetdir}/%.map: ${GLIBC_CHARMAPS}/%.gz ${mapconv} ${compact} ${AM_V_GEN}${run_mapconv} $< '/^<.*[ ]\/x/' GLIBC-1 ${compact} > $@ -.PHONY: clean bootstrap-clean distclean maintainer-clean extraclean gen-clean +.PHONY: clean bootstrap-clean distclean maintainer-clean gen-clean clean: @@ -312,4 +312,3 @@ gen-clean: maintainer-clean: gen-clean distclean -extraclean: maintainer-clean diff --git a/admin/grammars/Makefile.in b/admin/grammars/Makefile.in index 4172411e034..aaf95c08973 100644 --- a/admin/grammars/Makefile.in +++ b/admin/grammars/Makefile.in @@ -95,7 +95,7 @@ ${cedetdir}/srecode/srt-wy.el: ${srcdir}/srecode-template.wy ${grammar_wisent} $(AM_V_GEN)[ ! -f "$@" ] || chmod +w "$@" $(AM_V_at)${make_wisent} -o "$@" $< -.PHONY: distclean bootstrap-clean maintainer-clean extraclean gen-clean +.PHONY: distclean bootstrap-clean maintainer-clean gen-clean distclean: rm -f Makefile @@ -108,7 +108,6 @@ gen-clean: maintainer-clean: gen-clean distclean -extraclean: maintainer-clean # Makefile.in ends here diff --git a/admin/notes/years b/admin/notes/years index b56d94a1eda..19c72c39184 100644 --- a/admin/notes/years +++ b/admin/notes/years @@ -5,6 +5,12 @@ rolls around, add that year to every FSF (and AIST) copyright notice. Do this by running the 'admin/update-copyright' script on a fresh repo checkout. Inspect the results for plausibility, then commit them. +You should also run the etags test suite in test/manual/etags/. It +will most probably fail because the contents of the test files changes +due to copyright years update, so you need to move each ETAGS and +CTAGS file produced by the test runs into the corresponding +ETAGS.good* and CTAGS.good files, and then commit the new test files. + There's no need to worry about whether an individual file has changed in a given year - it's sufficient that Emacs as a whole has changed. diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in index b7a927d1919..357b8126783 100644 --- a/admin/unidata/Makefile.in +++ b/admin/unidata/Makefile.in @@ -85,7 +85,7 @@ ${unidir}/charscript.el: ${srcdir}/Blocks.txt ${blocks} $(AM_V_GEN)$(AWK) -f ${blocks} < $< > $@ -.PHONY: clean bootstrap-clean distclean maintainer-clean extraclean gen-clean +.PHONY: clean bootstrap-clean distclean maintainer-clean gen-clean clean: rm -f ${srcdir}/*.elc unidata.txt @@ -107,4 +107,3 @@ gen-clean: maintainer-clean: gen-clean distclean -extraclean: maintainer-clean diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi index 4a34fd36c5d..ba8d822b18e 100644 --- a/doc/emacs/basic.texi +++ b/doc/emacs/basic.texi @@ -112,7 +112,7 @@ just like digits. Case is ignored. @cindex curly quotes, inserting @cindex curved quotes, inserting A few common Unicode characters can be inserted via a command -starting with @kbd{C-x 8}. For example, @kbd{C-x 8 [} inserts @t{‘} +starting with @w{@kbd{C-x 8}}. For example, @kbd{C-x 8 [} inserts @t{‘} which is Unicode code-point U+2018 @sc{left single quotation mark}, sometimes called a left single ``curved quote'' or ``curly quote''. Similarly, @w{@kbd{C-x 8 ]}}, @kbd{C-x 8 @{} and @kbd{C-x 8 @}} insert the @@ -895,4 +895,7 @@ Currently supported shorter key sequences are @kbd{C-x u u} instead of v v} to resize the selected window interactively, @kbd{M-g n n p p} to navigate @code{next-error} matches. Any other key exits transient mode and then is executed normally. The user option @code{repeat-exit-key} -defines an additional key to exit this transient mode. +defines an additional key to exit this transient mode. Also it's +possible to break the repetition chain automatically after idle time +by customizing the user option @code{repeat-exit-timeout} to a number +of seconds. diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 7194eb90ca9..8de93867baa 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -1486,6 +1486,13 @@ Emacs Lisp code goes in a separate file whose name ends in @file{foo.elc}. @xref{Byte Compilation,, Byte Compilation, elisp, the Emacs Lisp Reference Manual}. +@cindex native compilation + Emacs Lisp code can also be compiled into @dfn{native code}: machine +code not unlike the one produced by a C or Fortran compiler. Native +code runs even faster than byte-code. Natively-compiled Emacs Lisp +code is stored in files whose names end in @samp{.eln}. @xref{Native +Compilation,, Byte Compilation, elisp, the Emacs Lisp Reference Manual}. + @findex load-file To @dfn{load} an Emacs Lisp file, type @kbd{M-x load-file}. This command reads a file name using the minibuffer, and executes the diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index f57606dc799..36257030c88 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi @@ -862,21 +862,24 @@ Compress the specified files (@code{dired-do-compress}). If the file appears to be a compressed file already, uncompress it instead. Each marked file is compressed into its own archive; this uses the @command{gzip} program if it is available, otherwise it uses -@command{compress}. On a directory name, this command produces a -compressed @file{.tar.gz} archive containing all of the directory's -files, by running the @command{tar} command with output piped to -@command{gzip}. To allow decompression of compressed directories, -typing @kbd{Z} on a @file{.tar.gz} or @file{.tgz} archive file unpacks -all the files in the archive into a directory whose name is the -archive name with the extension removed. +@command{compress}. + +On a directory name, this command produces a compressed archive +depending on the @code{dired-compress-directory-default-suffix} user +option. The default is a @file{.tar.gz} archive containing all of the +directory's files, by running the @command{tar} command with output +piped to @command{gzip}. To allow decompression of compressed +directories, typing @kbd{Z} on a @file{.tar.gz} or @file{.tgz} archive +file unpacks all the files in the archive into a directory whose name +is the archive name with the extension removed. @findex dired-do-compress-to @kindex c @r{(Dired)} @item c Compress the specified files (@code{dired-do-compress-to}) into a -single archive anywhere on the file system. The compression algorithm -is determined by the extension of the archive, see -@code{dired-compress-files-alist}. +single archive anywhere on the file system. The default archive is +controlled by the @code{dired-compress-directory-default-suffix} user +option. Also see @code{dired-compress-files-alist}. @findex epa-dired-do-decrypt @kindex :d @r{(Dired)} diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index 58d08b43c0e..5fccdaa8343 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -1649,10 +1649,10 @@ for details. @cindex curved quotes, and terminal capabilities @cindex @code{homoglyph} face -Emacs tries to determine if the curved quotes @samp{‘} and @samp{’} +Emacs tries to determine if the curved quotes @t{‘} and @t{’} can be displayed on the current display. By default, if this seems to -be so, then Emacs will translate the @acronym{ASCII} quotes (@samp{`} -and @samp{'}), when they appear in messages and help texts, to these +be so, then Emacs will translate the @acronym{ASCII} quotes @w{(@samp{`} +and @samp{'})}, when they appear in messages and help texts, to these curved quotes. You can influence or inhibit this translation by customizing the user option @code{text-quoting-style} (@pxref{Keys in Documentation,,, elisp, The Emacs Lisp Reference Manual}). @@ -1661,7 +1661,7 @@ Documentation,,, elisp, The Emacs Lisp Reference Manual}). known to look just like @acronym{ASCII} characters, they are shown with the @code{homoglyph} face. Curved quotes that are known not to be displayable are shown as their @acronym{ASCII} approximations -@t{`}, @t{'}, and @t{"} with the @code{homoglyph} face. +@samp{`}, @samp{'}, and @samp{"} with the @code{homoglyph} face. @node Cursor Display @section Displaying the Cursor diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index 590dc42d155..e0de3bb43aa 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -99,6 +99,7 @@ Cover art by Etienne Suvasa; cover design by Matt Lee. @end titlepage +@headings double @summarycontents @contents diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 8434040bcea..89de9af13e5 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi @@ -289,8 +289,9 @@ way to move or copy text is to kill it and then yank it elsewhere. @item C-y Yank the last kill into the buffer, at point (@code{yank}). @item M-y -Replace the text just yanked with an earlier batch of killed text -(@code{yank-pop}). @xref{Earlier Kills}. +Either replace the text just yanked with an earlier batch of killed +text (@code{yank-pop}), or allow to select from the list of +previously-killed batches of text. @xref{Earlier Kills}. @item C-M-w Cause the following command, if it is a kill command, to append to the previous kill (@code{append-next-kill}). @xref{Appending Kills}. @@ -354,7 +355,7 @@ with @kbd{C-h v kill-ring}. @kbd{C-y} to yank text that is no longer the most recent kill. This is useful if you remember which kill ring entry you want. If you don't, you can use the @kbd{M-y} (@code{yank-pop}) command to cycle -through the possibilities. +through the possibilities or to select one of the earlier kills. @kindex M-y @findex yank-pop @@ -363,26 +364,29 @@ that was yanked and replaces it with the text from an earlier kill. So, to recover the text of the next-to-the-last kill, first use @kbd{C-y} to yank the last kill, and then use @kbd{M-y} to replace it with the previous kill. This works only after a @kbd{C-y} -or another @kbd{M-y}. - - You can understand @kbd{M-y} in terms of a last-yank pointer which -points at an entry in the kill ring. Each time you kill, the last-yank -pointer moves to the newly made entry at the front of the ring. -@kbd{C-y} yanks the entry which the last-yank pointer points to. -@kbd{M-y} moves the last-yank pointer to a different entry, and the -text in the buffer changes to match. Enough @kbd{M-y} commands can move -the pointer to any entry in the ring, so you can get any entry into the -buffer. Eventually the pointer reaches the end of the ring; the next -@kbd{M-y} loops back around to the first entry again. +or another @kbd{M-y}. (If @kbd{M-y} is invoked after some other +command, it works differently, see below.) + + You can understand this operation mode of @kbd{M-y} in terms of a +last-yank pointer which points at an entry in the kill ring. Each +time you kill, the last-yank pointer moves to the newly made entry at +the front of the ring. @kbd{C-y} yanks the entry which the last-yank +pointer points to. @kbd{M-y} moves the last-yank pointer to a +different entry, and the text in the buffer changes to match. Enough +@kbd{M-y} commands can move the pointer to any entry in the ring, so +you can get any entry into the buffer. Eventually the pointer reaches +the end of the ring; the next @kbd{M-y} loops back around to the first +entry again. @kbd{M-y} moves the last-yank pointer around the ring, but it does not change the order of the entries in the ring, which always runs from the most recent kill at the front to the oldest one still remembered. - @kbd{M-y} can take a numeric argument, which tells it how many entries -to advance the last-yank pointer by. A negative argument moves the -pointer toward the front of the ring; from the front of the ring, it -moves around to the last entry and continues forward from there. + When used after @kbd{C-y} or @kbd{M-y}, @kbd{M-y} can take a numeric +argument, which tells it how many entries to advance the last-yank +pointer by. A negative argument moves the pointer toward the front of +the ring; from the front of the ring, it moves around to the last +entry and continues forward from there. Once the text you are looking for is brought into the buffer, you can stop doing @kbd{M-y} commands and it will stay there. It's just a copy @@ -394,14 +398,22 @@ pointer remains at the same place in the kill ring, so repeating When you call @kbd{C-y} with a numeric argument, that also sets the last-yank pointer to the entry that it yanks. - Alternatively, when the previous command was not a yank command, -@kbd{M-y} activates the minibuffer where you can browse previous kills -using the minibuffer history commands (@pxref{Minibuffer History}), or -you can use completion commands (@pxref{Completion}) on a list of -previously killed blocks of text from the kill ring. Exiting the -minibuffer will insert the selected text to the buffer. With a plain -prefix argument (@kbd{C-u M-y}), this command leaves the cursor in -front of the inserted text, and sets the mark at the end. + You can also invoke @kbd{M-y} after a command that is not a yank +command. In that case, @kbd{M-y} prompts you in the minibuffer for +one of the previous kills. You can use the minibuffer history +commands (@pxref{Minibuffer History}) to navigate or search through +the entries in the kill ring until you find the one you want to +reinsert. Or you can use completion commands (@pxref{Completion +Commands}) to complete on the list of entries in the kill ring or pop +up the @file{*Completions*} buffer with the candidate entries from +which you can choose. After selecting the kill-ring entry, you can +optionally edit it in the minibuffer. Finally, type @kbd{RET} to exit +the minibuffer and insert the selected text. + + When invoked with a plain prefix argument (@kbd{C-u M-y}) after a +command that is not a yank command, @kbd{M-y} leaves the cursor in +front of the inserted text, and sets the mark at the end, like +@kbd{C-y} does. @node Appending Kills @subsection Appending Kills diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index 880829aa5ad..0065098976f 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -2657,6 +2657,10 @@ generate a tag. @item In Ruby code, @code{def} or @code{class} or @code{module} at the beginning of a line generate a tag. Constants also generate tags. + +@item +In Rust code, tags anything defined with @code{fn}, @code{enum}, +@code{struct} or @code{macro_rules!}. @end itemize You can also generate tags based on regexp matching (@pxref{Etags diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index fbb8122a1b8..c8027792505 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -2576,6 +2576,17 @@ Other Hexl commands let you insert strings (sequences) of binary bytes, move by @code{short}s or @code{int}s, etc.; type @kbd{C-h a hexl-@key{RET}} for details. + Hexl mode can also be used for editing text files. This could come +in handy if the text file includes unusual characters or uses unusual +encoding (@pxref{Coding Systems}). For this purpose, Hexl commands +that insert bytes can also insert @acronym{ASCII} and +non-@acronym{ASCII} characters, including multibyte characters. To +edit a text file with Hexl, visit the file as usual, and then type +@w{@kbd{M-x hexl-mode @key{RET}}} to switch to Hexl mode. You can now +insert text characters by typing them. However, inserting multibyte +characters requires special care, to avoid the danger of creating +invalid multibyte sequences: you should start typing such characters +when point is on the first byte of a multibyte sequence in the file. @node Saving Emacs Sessions @section Saving Emacs Sessions diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index c2bd5cb9c27..d419a4e24b5 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -416,12 +416,12 @@ just make some new commands available, while others have more wide-ranging effects on the Emacs session. For such information, consult the package's help buffer. - After a package is installed, it is automatically made available by -Emacs in all subsequent sessions. This happens at startup, before -processing the init file but after processing the early init file -(@pxref{Early Init File}). As an exception, Emacs does not make -packages available at startup if invoked with the @samp{-q} or -@samp{--no-init-file} options (@pxref{Initial Options}). + Installed packages are automatically made available by Emacs in all +subsequent sessions. This happens at startup, before processing the +init file but after processing the early init file (@pxref{Early Init +File}). As an exception, Emacs does not make packages available at +startup if invoked with the @samp{-q} or @samp{--no-init-file} options +(@pxref{Initial Options}). @vindex package-enable-at-startup To keep Emacs from automatically making packages available at @@ -430,6 +430,17 @@ startup, change the variable @code{package-enable-at-startup} to is read before loading the regular init file. Currently this variable cannot be set via Customize. +@findex package-quickstart-refresh +@vindex package-quickstart + If you have many packages installed, you can improve startup times +by setting the user option @code{package-quickstart} to @code{t}. +Setting this option will make Emacs precompute many things instead of +re-computing them on every Emacs startup. However, if you do this, +then you have to manually run the command +@code{package-quickstart-refresh} when the activations need to be +changed, such as when you change the value of +@code{package-load-list}. + @findex package-activate-all If you have set @code{package-enable-at-startup} to @code{nil}, you can still make packages available either during or after startup. To diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 38430a2ab15..e6b066e9737 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -301,13 +301,11 @@ from point to the @var{n}th occurrence of the specified character. @findex isearch-yank-x-selection Within incremental search, @kbd{C-y} (@code{isearch-yank-kill}) appends the current kill to the search string. @kbd{M-y} -(@code{isearch-yank-pop}), if called after @kbd{C-y}, replaces that -appended text with an earlier kill, similar to the usual @kbd{M-y} -(@code{yank-pop}) command. When @kbd{M-y} is called not after -@kbd{C-y}, then it activates the minibuffer where you can select -a previous kill to append to the search string (@pxref{Earlier -Kills}). Clicking @kbd{mouse-2} in the echo area appends the current -X selection (@pxref{Primary Selection}) to the search string +(@code{isearch-yank-pop}), if called after @kbd{C-y} during +incremental search, replaces that appended text with an earlier kill, +similar to the usual @kbd{M-y} (@code{yank-pop}) command. Clicking +@kbd{mouse-2} in the echo area appends the current X selection +(@pxref{Primary Selection}) to the search string (@code{isearch-yank-x-selection}). @kindex C-M-d @r{(Incremental search)} diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index 2c9d486c331..f2fe2480154 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@ -421,13 +421,12 @@ beginning of a line. @cindex curved quotes @cindex guillemets @findex electric-quote-mode -@c The funny quoting below is to make the printed version look -@c correct. FIXME. + One common way to quote is the typewriter convention, which quotes -using straight apostrophes @t{'like this'} or double-quotes @t{"like +using straight apostrophes @samp{'like this'} or double-quotes @samp{"like this"}. Another common way is the curved quote convention, which uses -left and right single or double quotation marks `@t{like this}' or -``@t{like this}''@footnote{ +left and right single or double quotation marks @t{‘like this’} or +@t{“like this”}@footnote{ The curved single quote characters are U+2018 @sc{left single quotation mark} and U+2019 @sc{right single quotation mark}; the curved double quotes are U+201C @sc{left double quotation mark} and U+201D @sc{right double @@ -445,7 +444,7 @@ default quotes listed above, by customizing the variable @code{electric-quote-chars}, a list of four characters, where the items correspond to the left single quote, the right single quote, the left double quote and the right double quote, respectively, whose -default value is @code{'(?@r{`} ?@r{'} ?@r{``} ?@r{''})}. +default value is @w{@code{'(@w{?}‘ ?’ ?“ ?”)}}. @vindex electric-quote-paragraph @vindex electric-quote-comment @@ -461,7 +460,7 @@ variables. @vindex electric-quote-replace-double You can also set the option @code{electric-quote-replace-double} to -a non-@code{nil} value. Then, typing @t{"} insert an appropriate +a non-@code{nil} value. Then, typing @kbd{"} insert an appropriate curved double quote depending on context: @t{“} at the beginning of the buffer or after a line break, whitespace, opening parenthesis, or quote character, and @t{”} otherwise. @@ -473,7 +472,7 @@ To toggle it globally, type type @kbd{C-q `} or @kbd{C-q '} instead of @kbd{`} or @kbd{'}. To insert a curved quote even when Electric Quote is disabled or inactive, you can type @kbd{C-x 8 [} for @t{‘}, @kbd{C-x 8 ]} for -@t{’}, @kbd{C-x 8 @{} for ``, and @kbd{C-x 8 @}} for ''. +@t{’}, @kbd{C-x 8 @{} for @t{“}, and @kbd{C-x 8 @}} for @t{”}. @xref{Inserting Text}. Note that the value of @code{electric-quote-chars} does not affect these keybindings, they are not keybindings of @code{electric-quote-mode} but bound in diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi index c0a4065bdbf..85a4f9e0acc 100644 --- a/doc/lispref/backups.texi +++ b/doc/lispref/backups.texi @@ -481,6 +481,12 @@ all directory separators were changed to @samp{!} to prevent clashes. (This will not work correctly if your filesystem truncates the resulting name.) +If @var{uniquify} is one of the members of +@code{secure-hash-algorithms}, Emacs constructs the nondirectory part +of the auto-save file name by applying that @code{secure-hash} to the +buffer file name. This avoids any risk of excessively long file +names. + All the transforms in the list are tried, in the order they are listed. When one transform applies, its result is final; no further transforms are tried. diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi index bf420040950..ee31b17af72 100644 --- a/doc/lispref/compile.texi +++ b/doc/lispref/compile.texi @@ -793,3 +793,248 @@ The @code{silly-loop} function is somewhat more complex: 17 return ; @r{Return value of the top of stack.} @end group @end example + +@node Native Compilation +@chapter Compilation of Lisp to Native Code +@cindex native compilation +@cindex compilation to native code (Emacs Lisp) + +@cindex native code + In addition to the byte-compilation, described in @ref{Byte +Compilation, the previous chapter}, Emacs can also optionally compile +Lisp function definitions into a true compiled code, known as +@dfn{native code}. This feature uses the @file{libgccjit} library, +which is part of the GCC distribution, and requires that Emacs be +built with support for using that library. It also requires to have +GCC and Binutils (the assembler and linker) available on your system +for you to be able to native-compile Lisp code. + +@vindex native-compile@r{, a Lisp feature} + To determine whether the current Emacs process can produce and load +natively-compiled Lisp code, test whether the @code{native-compile} +feature is available (@pxref{Named Features}). Alternatively, call +@code{native-comp-available-p} (@pxref{Native-Compilation Functions}). + + Unlike byte-compiled code, natively-compiled Lisp code is executed +directly by the machine's hardware, and therefore runs at full speed +that the host CPU can provide. The resulting speedup generally +depends on what the Lisp code does, but is usually 2.5 to 5 times +faster than the corresponding byte-compiled code. + + Since native code is generally incompatible between different +systems, the natively-compiled code is @emph{not} transportable from +one machine to another, it can only be used on the same machine where +it was produced or on very similar ones (having the same CPU and +run-time libraries). The transportability of natively-compiled code +is the same as that of shared libraries (@file{.so} or @file{.dll} +files). + + Libraries of natively-compiled code include crucial dependencies on +Emacs Lisp primitives (@pxref{What Is a Function}) and their calling +conventions, and thus Emacs usually won't load natively-compiled code +produced by earlier or later Emacs versions; native compilation of the +same Lisp code by a different Emacs version will usually produce a +natively-compiled library under a unique file name that only that +version of Emacs will be able to load. However, the use of unique +file names allows to have in the same directory several versions of +the same Lisp library natively-compiled by several different versions +of Emacs. + +@vindex no-native-compile + A non-@code{nil} file-local variable binding of +@code{no-byte-compile} (@pxref{Byte Compilation}) also disables the +native compilation of that file. In addition, a similar variable +@code{no-native-compile} disables just the native compilation of the +file. If both @code{no-byte-compile} and @code{no-native-compile} are +specified, the former takes precedence. + +@menu +* Native-Compilation Functions:: Functions to natively-compile Lisp. +* Native-Compilation Variables:: Variables controlling native compilation. +@end menu + +@node Native-Compilation Functions +@section Native-Compilation Functions +@cindex native-compilation functions + + Native-Compilation is implemented as a side effect of +byte-compilation (@pxref{Byte Compilation}). Thus, compiling Lisp +code natively always produces its byte code as well, and therefore all +the rules and caveats of preparing Lisp code for byte compilation +(@pxref{Compilation Functions}) are valid for native-compilation as +well. + + You can natively-compile either a single function or macro +definition, or a whole file of Lisp code, with the +@code{native-compile} function. Natively-compiling a file will +produce both the corresponding @file{.elc} file with byte code and the +@file{.eln} file with native code. + +@findex native-comp-limple-mode +@vindex native-comp-verbose + Native compilation might produce warning or error messages; these +are normally recorded in the buffer called +@file{*Native-compile-Log*}. In interactive sessions, it uses the +special LIMPLE mode (@code{native-comp-limple-mode}), which sets up +@code{font-lock} as appropriate for this log, and is otherwise the +same as Fundamental mode. Logging of messages resulting from +native-compilation can be controlled by the @code{native-comp-verbose} +variable (@pxref{Native-Compilation Variables}). + + When Emacs is run non-interactively, messages produced by +native-compilation are reported by calling @code{message} +(@pxref{Displaying Messages}), and are usually displayed on the +standard error stream of the terminal from which Emacs was invoked. + +@defun native-compile function-or-file &optional output +This function compiles @var{function-or-file} into native code. The +argument @var{function-or-file} can be a function symbol, a Lisp form, +or a name (a string) of the file which contains the Emacs Lisp source +code to compile. If the optional argument @var{output} is provided, +it must be a string specifying the name of the file to write the +compiled code into. Otherwise, if @var{function-or-file} is a +function or a Lisp form, this function returns the compiled object, +and if @var{function-or-file} is a file name, the function returns the +full absolute name of the file it created for the compiled code. The +output file is by default given the @file{.eln} extension. + +This function runs the final phase of the native compilation, which +invokes GCC via @file{libgccjit}, in a separate subprocess, which +invokes the same Emacs executable as the process that called this +function. +@end defun + +@defun batch-native-compile +This function runs native-compilation on files specified on the Emacs +command line in batch mode. It must be used only in a batch execution +of Emacs, as it kills Emacs upon completion of the compilation. If +one or more of the files fail to compile, the Emacs process will +attempt to compile all the other files, and will terminate with a +non-zero status code. +@end defun + +Native compilation can be run entirely asynchronously, in a subprocess +of the main Emacs process. This leaves the main Emacs process free to +use while the compilation runs in the background. This is the method +used by Emacs to natively-compile any Lisp file or byte-compiled Lisp +file that is loaded into Emacs, when no natively-compiled file for it +is available. + +@defun native-compile-async files &optional recursively load selector +This function compiles the named @var{files} asynchronously. The +argument @var{files} should be a single file name (a string) or a list +of one or more file and/or directory names. If directories are +present in the list, the optional argument @var{recursively} should be +non-@code{nil} to cause the compilation to recurse into those +directories. If @var{load} is non-@code{nil}, Emacs will load each +file that it succeeded to compile. The optional argument +@var{selector} allows control of which of @var{files} will be +compiled; it can have one of the following values: + +@table @asis +@item @code{nil} or omitted +Select all the files and directories in @var{files}. +@item a regular expression string +Select the files and directories whose names match the regexp. +@item a function +A predicate function, which will be called with each file and +directory in @var{files}, and should return non-@code{nil} if the file +or the directory should be selected for compilation. +@end table + +On systems with multiple CPU execution units, when @var{files} names +more than one file, this function will normally start several +compilation subprocesses in parallel, under the control of +@code{native-comp-async-jobs-number} (@pxref{Native-Compilation +Variables}). +@end defun + + The following function allows Lisp programs to test whether +native-compilation is available at runtime. + +@defun native-comp-available-p +This function returns non-@code{nil} if the running Emacs process has +the native-compilation support compiled into it. On systems that load +@file{libgccjit} dynamically, it also makes sure that library is +available and can be loaded. Lisp programs that need to know up front +whether native-compilation is available should use this predicate. +@end defun + +@node Native-Compilation Variables +@section Native-Compilation Variables +@cindex native-compilation variables + + This section documents the variables that control +native-compilation. + +@defopt native-comp-speed +This variable specifies the optimization level for native compilation. +Its value should be a number between @minus{}1 and 3. Values between +0 and 3 specify the optimization levels equivalent to the +corresponding compiler @option{-O0}, @option{-O1}, etc.@: command-line +options of the compiler. The value @minus{}1 means disable +native-compilation; functions and files will be only byte-compiled. +The default value is 2. +@end defopt + +@defopt native-comp-debug +This variable specifies the level of debugging information produced by +native-compilation. Its value should be a number between zero and 3, +with the following meaning: + +@table @asis +@item 0 +No debugging output. This is the default. +@item 1 +Emit debugging symbols with the native code. This allows easier +debugging of the native code with debuggers such as @command{gdb}. +@item 2 +Like 1, and in addition dump pseudo-C code. +@item 3 +Like 2, and in addition dump the GCC intermediate passes and +@file{libgccjit} log file. +@end table +@end defopt + +@defopt native-comp-verbose +This variable controls the verbosity of native-compilation by +suppressing some or all of the log messages emitted by it. If its +value is zero, the default, all of the log messages are suppressed. +Setting it to a value between 1 and 3 will allow logging of the +messages whose level is above the value. The values have the +following interpretations: + +@table @asis +@item 0 +No logging. This is the default. +@item 1 +Log the final @acronym{LIMPLE} representation of the code. +@item 2 +Log the @acronym{LAP}, the final @acronym{LIMPLE}, and some additional +pass info. +@item 3 +Maximum verbosity: log everything. +@end table +@end defopt + +@defopt native-comp-async-jobs-number +This variable determines the maximum number of native-compilation +subprocesses that will be started simultaneously. It should be a +non-negative number. The default value is zero, which means use half +the number of the CPU execution units, or 1 if the CPU has only one +execution unit. +@end defopt + +@defopt native-comp-async-report-warnings-errors +If this variable's value is non-@code{nil}, warnings and errors from +asynchronous native-compilation subprocesses are reported in the main +Emacs session. The default is @code{t}. +@end defopt + +@defopt native-comp-async-query-on-exit +If this variable's value is non-nil, Emacs will query upon exiting +whether to exit and kill any asynchronous native-compilation +subprocesses that are still running, thus preventing the corresponding +@file{.eln} files from being written. If the value is @code{nil}, the +default, Emacs will kill these subprocesses without querying. +@end defopt diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index be0c835b035..8b440c79774 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi @@ -197,6 +197,7 @@ To view this manual in other formats, click * Loading:: Reading files of Lisp code into Lisp. * Byte Compilation:: Compilation makes programs run faster. +* Native Compilation:: Compile Lisp into native machine code. * Debugging:: Tools and tips for debugging Lisp programs. * Read and Print:: Converting Lisp objects to text and back. @@ -646,6 +647,11 @@ Byte Compilation * Byte-Code Objects:: The data type used for byte-compiled functions. * Disassembly:: Disassembling byte-code; how to read byte-code. +Native Compilation + +* Native-Compilation Functions:: Functions to natively-compile Lisp. +* Native-Compilation Variables:: Variables controlling native compilation. + Debugging Lisp Programs * Debugger:: A debugger for the Emacs Lisp evaluator. diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index e68a1ef314a..4d683da1ad3 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -71,7 +71,11 @@ forms in it, and closes the file. To find the file, @code{load} first looks for a file named @file{@var{filename}.elc}, that is, for a file whose name is @var{filename} with the extension @samp{.elc} appended. If such a -file exists, it is loaded. If there is no file by that name, then +file exists, and Emacs was compiled with native-compilation support +(@pxref{Native Compilation}), @code{load} attempts to find a +corresponding @samp{.eln} file, and if found, loads it instead of +@file{@var{filename}.elc}. Otherwise, it loads +@file{@var{filename}.elc}. If there is no file by that name, then @code{load} looks for a file named @file{@var{filename}.el}. If that file exists, it is loaded. If Emacs was compiled with support for dynamic modules (@pxref{Dynamic Modules}), @code{load} next looks for @@ -109,6 +113,8 @@ explicit directory name. If the option @code{load-prefer-newer} is non-@code{nil}, then when searching suffixes, @code{load} selects whichever version of a file (@samp{.elc}, @samp{.el}, etc.)@: has been modified most recently. +In this case, @code{load} doesn't load the @samp{.eln} +natively-compiled file even if it exists. If @var{filename} is a relative file name, such as @file{foo} or @file{baz/foo.bar}, @code{load} searches for the file using the variable @@ -153,7 +159,8 @@ during compilation. @xref{Compiling Macros}. Messages like @samp{Loading foo...} and @samp{Loading foo...done} appear in the echo area during loading unless @var{nomessage} is -non-@code{nil}. +non-@code{nil}. If a natively-compiled @samp{.eln} file is loaded, +the message says so. @cindex load errors Any unhandled errors while loading a file terminate loading. If the @@ -430,6 +437,28 @@ optional argument @code{stringp} is non-@code{nil}, it instead returns the shadowed files as a string. @end deffn + If Emacs was compiled with support for native compilation +(@pxref{Native Compilation}), then when a @samp{.elc} byte-compiled +file is found by searching @code{load-path}, Emacs will try to look +for a corresponding @samp{.eln} file holding the corresponding +natively-compiled code. The natively-compiled files are looked up in +the directories listed by the @code{native-comp-eln-load-path}. + +@vindex comp-native-version-dir +@defvar native-comp-eln-load-path +This variable holds a list of directories where Emacs looks for +natively-compiled @samp{.eln} files. File names in the list that are +not absolute are interpreted as relative to @code{invocation-directory} +(@pxref{System Environment}). The last directory in the list is the +system directory, i.e.@: the directory with @samp{.eln} files +installed by the Emacs build and installation procedure. In each of +the directories in the list, Emacs looks for @samp{.eln} files in a +subdirectory whose name is constructed from the Emacs version and an +8-character hash that depends on the current native-compilation +@acronym{ABI}; the name of this subdirectory is stored in the variable +@code{comp-native-version-dir}. +@end defvar + @node Loading Non-ASCII @section Loading Non-@acronym{ASCII} Characters @cindex loading, and non-ASCII characters diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index 16a8e56e90a..b38ee995abe 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -251,6 +251,11 @@ matches in the target buffer are highlighted. Each parenthesized sub-expression of the regexp is shown in a distinct face, which makes it easier to verify even very complex regexps. + Note that by default Emacs search ignores case (@pxref{Searching and +Case}). To enable case-sensitive regexp search and match, bind +@code{case-fold-search} to @code{nil} around the code you want to be +case-sensitive. + @menu * Syntax of Regexps:: Rules for writing regular expressions. * Regexp Example:: Illustrates regular expression syntax. diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 44c4b90b2fc..c90a95980dc 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -1118,25 +1118,32 @@ one, it rotates the kill ring to place the yanked string at the front. @end deffn @deffn Command yank-pop &optional arg -This command replaces the just-yanked entry from the kill ring with a -different entry from the kill ring. - -This works only immediately after a @code{yank} or another -@code{yank-pop}. At such a time, the region contains text that was just -inserted by yanking. @code{yank-pop} deletes that text and inserts in -its place a different piece of killed text. It does not add the deleted -text to the kill ring, since it is already in the kill ring somewhere. -It does however rotate the kill ring to place the newly yanked string at -the front. +When invoked immediately after a @code{yank} or another +@code{yank-pop}, this command replaces the just-yanked entry from the +kill ring with a different entry from the kill ring. When this +command is invoked like that, the region contains text that was just +inserted by another yank command. @code{yank-pop} deletes that text +and inserts in its place a different piece of killed text. It does +not add the deleted text to the kill ring, since it is already in the +kill ring somewhere. It does however rotate the kill ring to place +the newly yanked string at the front. If @var{arg} is @code{nil}, then the replacement text is the previous element of the kill ring. If @var{arg} is numeric, the replacement is the @var{arg}th previous kill. If @var{arg} is negative, a more recent kill is the replacement. -The sequence of kills in the kill ring wraps around, so that after the -oldest one comes the newest one, and before the newest one goes the -oldest. +The sequence of kills in the kill ring wraps around, so if +@code{yank-pop} is invoked repeatedly and reaches the oldest kill, the +one that comes after it is the newest one, and the one before the +newest one is the oldest one. + +This command can also be invoked after a command that is not a yank +command. In that case, it prompts in the minibuffer for a kill-ring +entry, with completion, and uses the kill ring elements as the +minibuffer history (@pxref{Minibuffer History}). This allows the user +to interactively select one of the previous kills recorded in the kill +ring. The return value is always @code{nil}. @end deffn diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index b25eea12a53..36abc316cbb 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -1885,6 +1885,14 @@ any form of file-local variable. For examples of why you might want to use this, @pxref{Auto Major Mode}. @end defvar +@defvar permanently-enabled-local-variables +Some local variable settings will, by default, be heeded even if +@code{enable-local-variables} is @code{nil}. By default, this is only +the case for the @code{lexical-binding} local variable setting, but +this can be controlled by using this variable, which is a list of +symbols. +@end defvar + @defun hack-local-variables &optional handle-mode This function parses, and binds or evaluates as appropriate, any local variables specified by the contents of the current buffer. The variable diff --git a/doc/man/etags.1 b/doc/man/etags.1 index c5c15fb1826..354f6ca88b4 100644 --- a/doc/man/etags.1 +++ b/doc/man/etags.1 @@ -51,7 +51,7 @@ format understood by \&. Both forms of the program understand the syntax of C, Objective C, C++, Java, Fortran, Ada, Cobol, Erlang, Forth, Go, HTML, LaTeX, Emacs Lisp/Common Lisp, Lua, Makefile, Pascal, Perl, -Ruby, PHP, PostScript, Python, Prolog, Scheme and +Ruby, Rust, PHP, PostScript, Python, Prolog, Scheme and most assembler\-like syntaxes. Both forms read the files specified on the command line, and write a tag table (defaults: \fBTAGS\fP for \fBetags\fP, \fBtags\fP for diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index b409c1f9c45..e11267e7a20 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi @@ -588,7 +588,7 @@ there are Quick mode, Keypad mode, and Embedded mode. * Other C-x * Commands:: @end menu -@node Starting Calc, The Standard Interface, Using Calc, Using Calc +@node Starting Calc @subsection Starting Calc @noindent @@ -619,7 +619,7 @@ type the full command (like @kbd{calc-keypad}) and press Return. The same commands (like @kbd{C-x * c} or @kbd{C-x * *}) that start the Calculator also turn it off if it is already on. -@node The Standard Interface, Quick Mode Overview, Starting Calc, Using Calc +@node The Standard Interface @subsection The Standard Calc Interface @noindent @@ -713,7 +713,7 @@ switch you to the Calc Trail window. So @kbd{C-x * o} is a handy way to switch out of Calc momentarily to edit your file; you can then type @kbd{C-x * c} to switch back into Calc when you are done. -@node Quick Mode Overview, Keypad Mode Overview, The Standard Interface, Using Calc +@node Quick Mode Overview @subsection Quick Mode (Overview) @noindent @@ -736,7 +736,7 @@ go into regular Calc (with @kbd{C-x * c}) to change the mode settings. @c [fix-ref Quick Calculator mode] @xref{Quick Calculator}, for further information. -@node Keypad Mode Overview, Standalone Operation, Quick Mode Overview, Using Calc +@node Keypad Mode Overview @subsection Keypad Mode (Overview) @noindent @@ -814,7 +814,7 @@ left, the stack in the lower right, and the trail on top. @c [fix-ref Keypad Mode] @xref{Keypad Mode}, for further information. -@node Standalone Operation, Embedded Mode Overview, Keypad Mode Overview, Using Calc +@node Standalone Operation @subsection Standalone Operation @noindent @@ -841,7 +841,7 @@ In standalone operation, quitting the Calculator (by pressing @kbd{q} or clicking on the keypad @key{EXIT} button) quits Emacs itself. -@node Embedded Mode Overview, Other C-x * Commands, Standalone Operation, Using Calc +@node Embedded Mode Overview @subsection Embedded Mode (Overview) @noindent @@ -972,7 +972,7 @@ A slope of one-third corresponds to an angle of 18.4349488229 degrees. @c [fix-ref Embedded Mode] @xref{Embedded Mode}, for full details. -@node Other C-x * Commands, , Embedded Mode Overview, Using Calc +@node Other C-x * Commands @subsection Other @kbd{C-x *} Commands @noindent @@ -1329,7 +1329,7 @@ Calc. * Answers to Exercises:: @end menu -@node Basic Tutorial, Arithmetic Tutorial, Tutorial, Tutorial +@node Basic Tutorial @section Basic Tutorial @noindent @@ -1344,7 +1344,7 @@ to control various modes of the Calculator. * Modes Tutorial:: Common mode-setting commands. @end menu -@node RPN Tutorial, Algebraic Tutorial, Basic Tutorial, Basic Tutorial +@node RPN Tutorial @subsection RPN Calculations and the Stack @cindex RPN notation @@ -1738,7 +1738,7 @@ Another common idiom is @kbd{M-0 @key{DEL}}, which clears the stack. (The @kbd{M-0} numeric prefix tells @key{DEL} to operate on the entire stack.) -@node Algebraic Tutorial, Undo Tutorial, RPN Tutorial, Basic Tutorial +@node Algebraic Tutorial @subsection Algebraic-Style Calculations @noindent @@ -2038,7 +2038,7 @@ You can also ``unstore'' a variable when you are through with it: We will encounter formulas involving variables and functions again when we discuss the algebra and calculus features of the Calculator. -@node Undo Tutorial, Modes Tutorial, Algebraic Tutorial, Basic Tutorial +@node Undo Tutorial @subsection Undo and Redo @noindent @@ -2175,7 +2175,7 @@ new number. This works for formulas, vectors, and all other types of values you can put on the stack. The @kbd{`} key also works during entry of a number or algebraic formula. -@node Modes Tutorial, , Undo Tutorial, Basic Tutorial +@node Modes Tutorial @subsection Mode-Setting Commands @noindent @@ -2655,7 +2655,7 @@ again when we change to Fraction mode. All @samp{=>} expressions on the stack are recomputed every time you change any mode that might affect their values. -@node Arithmetic Tutorial, Vector/Matrix Tutorial, Basic Tutorial, Tutorial +@node Arithmetic Tutorial @section Arithmetic Tutorial @noindent @@ -3041,7 +3041,7 @@ like @code{pv}, @code{rate}, and @code{sln}). @xref{Binary Functions}, to read about the commands for operating on binary numbers (like @code{and}, @code{xor}, and @code{lsh}). -@node Vector/Matrix Tutorial, Types Tutorial, Arithmetic Tutorial, Tutorial +@node Vector/Matrix Tutorial @section Vector/Matrix Tutorial @noindent @@ -3056,7 +3056,7 @@ a vector as a list of objects. * List Tutorial:: @end menu -@node Vector Analysis Tutorial, Matrix Tutorial, Vector/Matrix Tutorial, Vector/Matrix Tutorial +@node Vector Analysis Tutorial @subsection Vector Analysis @noindent @@ -3181,7 +3181,7 @@ probabilities for the particle to be at the corresponding positions. Find the average position of the particle. @xref{Vector Answer 2, 2}. (@bullet{}) -@node Matrix Tutorial, List Tutorial, Vector Analysis Tutorial, Vector/Matrix Tutorial +@node Matrix Tutorial @subsection Matrices @noindent @@ -3507,7 +3507,7 @@ $$ @noindent @xref{Matrix Answer 3, 3}. (@bullet{}) -@node List Tutorial, , Matrix Tutorial, Vector/Matrix Tutorial +@node List Tutorial @subsection Vectors as Lists @noindent @@ -4214,7 +4214,7 @@ walk to walk a unit distance, but in a random direction, at each step. (Hint: The @code{sincos} function returns a vector of the cosine and sine of an angle.) @xref{List Answer 14, 14}. (@bullet{}) -@node Types Tutorial, Algebra Tutorial, Vector/Matrix Tutorial, Tutorial +@node Types Tutorial @section Types Tutorial @noindent @@ -4738,7 +4738,7 @@ Power Pill he eats doubles his speed. How many Power Pills can he swallow and still travel legally on most US highways? @xref{Types Answer 15, 15}. (@bullet{}) -@node Algebra Tutorial, Programming Tutorial, Types Tutorial, Tutorial +@node Algebra Tutorial @section Algebra and Calculus Tutorial @noindent @@ -4751,7 +4751,7 @@ formulas. * Rewrites Tutorial:: @end menu -@node Basic Algebra Tutorial, Rewrites Tutorial, Algebra Tutorial, Algebra Tutorial +@node Basic Algebra Tutorial @subsection Basic Algebra @noindent @@ -5246,7 +5246,7 @@ details and examples. @c hard exercise: simplify (2^(n r) - 2^(r*(n - 1))) / (2^r - 1) 2^(n - 1) @c to 2^((n-1)*(r-1)). -@node Rewrites Tutorial, , Basic Algebra Tutorial, Algebra Tutorial +@node Rewrites Tutorial @subsection Rewrite Rules @noindent @@ -5687,7 +5687,7 @@ a nasty surprise when you use Calc to balance your checkbook!) @xref{Rewrite Rules}, for the whole story on rewrite rules. -@node Programming Tutorial, Answers to Exercises, Algebra Tutorial, Tutorial +@node Programming Tutorial @section Programming Tutorial @noindent @@ -6346,7 +6346,7 @@ The rest of this manual tells the whole story. @c Volume II of this manual, the @dfn{Calc Reference}, tells the whole story. @page -@node Answers to Exercises, , Programming Tutorial, Tutorial +@node Answers to Exercises @section Answers to Exercises @noindent @@ -6433,7 +6433,7 @@ This section includes answers to all the exercises in the Calc tutorial. \gdef\chapternofonts{\let\write=\skipwrite\oldchapternofonts} @end tex -@node RPN Answer 1, RPN Answer 2, Answers to Exercises, Answers to Exercises +@node RPN Answer 1 @subsection RPN Tutorial Exercise 1 @noindent @@ -6443,7 +6443,7 @@ The result is @texline @math{1 - (2 \times (3 + 4)) = -13}. @infoline @expr{1 - (2 * (3 + 4)) = -13}. -@node RPN Answer 2, RPN Answer 3, RPN Answer 1, Answers to Exercises +@node RPN Answer 2 @subsection RPN Tutorial Exercise 2 @noindent @@ -6500,7 +6500,7 @@ advantage of using only three stack levels. But since Calc's stack can grow arbitrarily large this isn't really an issue. Which method you choose is purely a matter of taste. -@node RPN Answer 3, RPN Answer 4, RPN Answer 2, Answers to Exercises +@node RPN Answer 3 @subsection RPN Tutorial Exercise 3 @noindent @@ -6531,7 +6531,7 @@ Similarly, @kbd{M-@key{TAB}} gives you access to the number in level 3. @end group @end smallexample -@node RPN Answer 4, Algebraic Answer 1, RPN Answer 3, Answers to Exercises +@node RPN Answer 4 @subsection RPN Tutorial Exercise 4 @noindent @@ -6569,7 +6569,7 @@ enough that Calc provides a special key, @kbd{M-@key{DEL}}, to do just that. @kbd{M-@key{DEL}} is just like @kbd{@key{TAB} @key{DEL}}, except that it doesn't exhibit the ``feature'' that tripped poor Joe.) -@node Algebraic Answer 1, Algebraic Answer 2, RPN Answer 4, Answers to Exercises +@node Algebraic Answer 1 @subsection Algebraic Entry Tutorial Exercise 1 @noindent @@ -6582,7 +6582,7 @@ Or, RPN style, @kbd{0.5 ^}. a closer equivalent, since @samp{9^0.5} yields @expr{3.0} whereas @samp{sqrt(9)} and @samp{9^1:2} yield the exact integer @expr{3}.) -@node Algebraic Answer 2, Algebraic Answer 3, Algebraic Answer 1, Answers to Exercises +@node Algebraic Answer 2 @subsection Algebraic Entry Tutorial Exercise 2 @noindent @@ -6591,7 +6591,7 @@ name with @samp{1+y} as its argument. Assigning a value to a variable has no relation to a function by the same name. Joe needed to use an explicit @samp{*} symbol here: @samp{2 x*(1+y)}. -@node Algebraic Answer 3, Modes Answer 1, Algebraic Answer 2, Answers to Exercises +@node Algebraic Answer 3 @subsection Algebraic Entry Tutorial Exercise 3 @noindent @@ -6608,7 +6608,7 @@ multiply infinity by zero, Calc uses another special new symbol to show that the answer is ``indeterminate.'' @xref{Infinities}, for further discussion of infinite and indeterminate values. -@node Modes Answer 1, Modes Answer 2, Algebraic Answer 3, Answers to Exercises +@node Modes Answer 1 @subsection Modes Tutorial Exercise 1 @noindent @@ -6669,7 +6669,7 @@ in binary, octal, or hexadecimal is also exact in decimal, so the kinds of problems we saw in this exercise are likely to be severe only when you use a relatively unusual radix like 3. -@node Modes Answer 2, Modes Answer 3, Modes Answer 1, Answers to Exercises +@node Modes Answer 2 @subsection Modes Tutorial Exercise 2 If the radix is 15 or higher, we can't use the letter @samp{e} to mark @@ -6689,7 +6689,7 @@ it by the floating-point @samp{16#1.23}). While this wouldn't normally matter for display purposes, it could give you a nasty surprise if you copied that number into a file and later moved it back into Calc. -@node Modes Answer 3, Modes Answer 4, Modes Answer 2, Answers to Exercises +@node Modes Answer 3 @subsection Modes Tutorial Exercise 3 @noindent @@ -6731,7 +6731,7 @@ exactly was the quantity 45 degrees, so the precision must be raised before anything is done after the number 45 has been entered in order for the higher precision to be meaningful. -@node Modes Answer 4, Arithmetic Answer 1, Modes Answer 3, Answers to Exercises +@node Modes Answer 4 @subsection Modes Tutorial Exercise 4 @noindent @@ -6752,7 +6752,7 @@ Also, rational numbers cannot express the results of all calculations. There is no fractional form for the square root of two, so if you type @w{@kbd{2 Q}}, Calc has no choice but to give you a floating-point answer. -@node Arithmetic Answer 1, Arithmetic Answer 2, Modes Answer 4, Answers to Exercises +@node Arithmetic Answer 1 @subsection Arithmetic Tutorial Exercise 1 @noindent @@ -6772,7 +6772,7 @@ produces the exact fraction @expr{123456789:2}, which can be rounded down by the @kbd{F} command without ever switching to floating-point format. -@node Arithmetic Answer 2, Vector Answer 1, Arithmetic Answer 1, Answers to Exercises +@node Arithmetic Answer 2 @subsection Arithmetic Tutorial Exercise 2 @noindent @@ -6784,7 +6784,7 @@ or (when in Fraction mode) the reciprocal of an integer. But there is no efficient way to search the space of all possible rational numbers for an exact answer, so Calc doesn't try. -@node Vector Answer 1, Vector Answer 2, Arithmetic Answer 2, Answers to Exercises +@node Vector Answer 1 @subsection Vector Tutorial Exercise 1 @noindent @@ -6804,7 +6804,7 @@ by its length: @kbd{@key{RET} A /}. The final @kbd{A} command shows that the normalized vector does indeed have unit length. -@node Vector Answer 2, Matrix Answer 1, Vector Answer 1, Answers to Exercises +@node Vector Answer 2 @subsection Vector Tutorial Exercise 2 @noindent @@ -6813,14 +6813,14 @@ positions times their corresponding probabilities. This is the definition of the dot product operation. So all you need to do is to put the two vectors on the stack and press @kbd{*}. -@node Matrix Answer 1, Matrix Answer 2, Vector Answer 2, Answers to Exercises +@node Matrix Answer 1 @subsection Matrix Tutorial Exercise 1 @noindent The trick is to multiply by a vector of ones. Use @kbd{r 4 [1 1 1] *} to get the row sum. Similarly, use @kbd{[1 1] r 4 *} to get the column sum. -@node Matrix Answer 2, Matrix Answer 3, Matrix Answer 1, Answers to Exercises +@node Matrix Answer 2 @subsection Matrix Tutorial Exercise 2 @ifnottex @@ -6866,7 +6866,7 @@ mode: Type @kbd{d N} to return to Normal display mode afterwards. -@node Matrix Answer 3, List Answer 1, Matrix Answer 2, Answers to Exercises +@node Matrix Answer 3 @subsection Matrix Tutorial Exercise 3 @noindent @@ -6984,7 +6984,7 @@ the original system of equations to see how well they match. This is reasonably close to our original @expr{B} vector, @expr{[6, 2, 3, 11]}. -@node List Answer 1, List Answer 2, Matrix Answer 3, Answers to Exercises +@node List Answer 1 @subsection List Tutorial Exercise 1 @noindent @@ -7016,7 +7016,7 @@ vector. @end group @end smallexample -@node List Answer 2, List Answer 3, List Answer 1, Answers to Exercises +@node List Answer 2 @subsection List Tutorial Exercise 2 @noindent @@ -7099,7 +7099,7 @@ arithmetic functions! In fact, there is a built-in @kbd{a F} command that does least-squares fits. @xref{Curve Fitting}. -@node List Answer 3, List Answer 4, List Answer 2, Answers to Exercises +@node List Answer 3 @subsection List Tutorial Exercise 3 @noindent @@ -7143,7 +7143,7 @@ how many numbers are in this list. Then we could type: You could also type @kbd{& ^} to take the reciprocal of 9 and then raise the number to that power.) -@node List Answer 4, List Answer 5, List Answer 3, Answers to Exercises +@node List Answer 4 @subsection List Tutorial Exercise 4 @noindent @@ -7183,7 +7183,7 @@ The first divisor function is the sum of the divisors. Once again, the last two steps just compute a dot product for which a simple @kbd{*} would have worked equally well. -@node List Answer 5, List Answer 6, List Answer 4, Answers to Exercises +@node List Answer 5 @subsection List Tutorial Exercise 5 @noindent @@ -7222,14 +7222,14 @@ Incidentally, Calc provides the @dfn{Möbius μ} function which is zero if and only if its argument is square-free. It would be a much more convenient way to do the above test in practice. -@node List Answer 6, List Answer 7, List Answer 5, Answers to Exercises +@node List Answer 6 @subsection List Tutorial Exercise 6 @noindent First use @kbd{v x 6 @key{RET}} to get a list of integers, then @kbd{V M v x} to get a list of lists of integers! -@node List Answer 7, List Answer 8, List Answer 6, Answers to Exercises +@node List Answer 7 @subsection List Tutorial Exercise 7 @noindent @@ -7302,7 +7302,7 @@ triangular list. since each element of the main vector is itself a small vector, @kbd{V R +} computes the sum of its elements.) -@node List Answer 8, List Answer 9, List Answer 7, Answers to Exercises +@node List Answer 8 @subsection List Tutorial Exercise 8 @noindent @@ -7391,7 +7391,7 @@ The output from @kbd{a X} is a vector containing the value of @expr{x} that maximizes the function, and the function's value at that maximum. As you can see, our simple search got quite close to the right answer. -@node List Answer 9, List Answer 10, List Answer 8, Answers to Exercises +@node List Answer 9 @subsection List Tutorial Exercise 9 @noindent @@ -7513,7 +7513,7 @@ Another way to do this final step would be to reduce the formula @end group @end smallexample -@node List Answer 10, List Answer 11, List Answer 9, Answers to Exercises +@node List Answer 10 @subsection List Tutorial Exercise 10 @noindent @@ -7544,7 +7544,7 @@ Here's a more correct method: @end group @end smallexample -@node List Answer 11, List Answer 12, List Answer 10, Answers to Exercises +@node List Answer 11 @subsection List Tutorial Exercise 11 @noindent @@ -7611,7 +7611,7 @@ will be slightly different from the one shown here!) If you typed @kbd{v .} and @kbd{t .} before, type them again to return to full-sized display of vectors. -@node List Answer 12, List Answer 13, List Answer 11, Answers to Exercises +@node List Answer 12 @subsection List Tutorial Exercise 12 @noindent @@ -7722,7 +7722,7 @@ exercise 10, of Knuth's @emph{Art of Computer Programming}, volume II. If you typed @kbd{v .} and @kbd{t .} before, type them again to return to full-sized display of vectors. -@node List Answer 13, List Answer 14, List Answer 12, Answers to Exercises +@node List Answer 13 @subsection List Tutorial Exercise 13 @noindent @@ -7862,7 +7862,7 @@ Later in the tutorial we will encounter @dfn{modulo forms}, which basically automate the idea of reducing every intermediate result modulo some value @var{m}. -@node List Answer 14, Types Answer 1, List Answer 13, Answers to Exercises +@node List Answer 14 @subsection List Tutorial Exercise 14 We want to use @kbd{H V U} to nest a function which adds a random @@ -7927,7 +7927,7 @@ and in the second we could use polar complex numbers with random phase angles. (This exercise was first suggested in this form by Randal Schwartz.) -@node Types Answer 1, Types Answer 2, List Answer 14, Answers to Exercises +@node Types Answer 1 @subsection Types Tutorial Exercise 1 @noindent @@ -7971,7 +7971,7 @@ Notice that we didn't need to re-round the number when we reduced the precision. Remember, arithmetic operations always round their inputs to the current precision before they begin. -@node Types Answer 2, Types Answer 3, Types Answer 1, Answers to Exercises +@node Types Answer 2 @subsection Types Tutorial Exercise 2 @noindent @@ -8007,7 +8007,7 @@ input. As in the @expr{1 / 0} case, Calc will only use infinities here if you have turned on Infinite mode. Otherwise, it will treat @samp{ln(0)} as an error. -@node Types Answer 3, Types Answer 4, Types Answer 2, Answers to Exercises +@node Types Answer 3 @subsection Types Tutorial Exercise 3 @noindent @@ -8029,7 +8029,7 @@ for infinities (only the direction counts, not the ``size''); but Calc is careful to write @code{nan} any time this simple model is unable to tell what the true answer is. -@node Types Answer 4, Types Answer 5, Types Answer 3, Answers to Exercises +@node Types Answer 4 @subsection Types Tutorial Exercise 4 @smallexample @@ -8058,7 +8058,7 @@ The average song length is two minutes and 47.4 seconds. @noindent The album would be 53 minutes and 6 seconds long. -@node Types Answer 5, Types Answer 6, Types Answer 4, Answers to Exercises +@node Types Answer 5 @subsection Types Tutorial Exercise 5 @noindent @@ -8110,7 +8110,7 @@ Et voilà, September 13, 1991 is a Friday. @noindent And the answer to our original question: 242 days to go. -@node Types Answer 6, Types Answer 7, Types Answer 5, Answers to Exercises +@node Types Answer 6 @subsection Types Tutorial Exercise 6 @noindent @@ -8156,7 +8156,7 @@ of course, that the algorithm for computing leap years remains unchanged for that long. @xref{Date Forms}, for some interesting background information in that regard.) -@node Types Answer 7, Types Answer 8, Types Answer 6, Answers to Exercises +@node Types Answer 7 @subsection Types Tutorial Exercise 7 @noindent @@ -8201,7 +8201,7 @@ well as a vector. This saves us some retyping of numbers. @noindent Thus the volume is 6316 cubic centimeters, within about 11 percent. -@node Types Answer 8, Types Answer 9, Types Answer 7, Answers to Exercises +@node Types Answer 8 @subsection Types Tutorial Exercise 8 @noindent @@ -8233,7 +8233,7 @@ It may be disappointing to hear ``the answer lies somewhere between minus infinity and plus infinity, inclusive,'' but that's the best that interval arithmetic can do in this case. -@node Types Answer 9, Types Answer 10, Types Answer 8, Answers to Exercises +@node Types Answer 9 @subsection Types Tutorial Exercise 9 @smallexample @@ -8257,7 +8257,7 @@ for different numbers. The same issue arises when you try to square an error form. -@node Types Answer 10, Types Answer 11, Types Answer 9, Answers to Exercises +@node Types Answer 10 @subsection Types Tutorial Exercise 10 @noindent @@ -8305,7 +8305,7 @@ numbers it does an exact test; for large numbers it uses a variant of the Fermat test we used here. You can use @kbd{k p} repeatedly to prove that a large integer is prime with any desired probability. -@node Types Answer 11, Types Answer 12, Types Answer 10, Answers to Exercises +@node Types Answer 11 @subsection Types Tutorial Exercise 11 @noindent @@ -8353,7 +8353,7 @@ HMS form: The @kbd{=} key is necessary to evaluate the symbol @samp{pi} to the actual number 3.14159... -@node Types Answer 12, Types Answer 13, Types Answer 11, Answers to Exercises +@node Types Answer 12 @subsection Types Tutorial Exercise 12 @noindent @@ -8383,13 +8383,13 @@ each. @noindent No matter how long it is, the album will fit nicely on one CD. -@node Types Answer 13, Types Answer 14, Types Answer 12, Answers to Exercises +@node Types Answer 13 @subsection Types Tutorial Exercise 13 @noindent Type @kbd{' 1 yr @key{RET} u c s @key{RET}}. The answer is 31557600 seconds. -@node Types Answer 14, Types Answer 15, Types Answer 13, Answers to Exercises +@node Types Answer 14 @subsection Types Tutorial Exercise 14 @noindent @@ -8423,7 +8423,7 @@ Thus a signal could take up to 81 percent of a clock cycle just to go from one place to another inside the computer, assuming the signal could actually attain the full speed of light. Pretty tight! -@node Types Answer 15, Algebra Answer 1, Types Answer 14, Answers to Exercises +@node Types Answer 15 @subsection Types Tutorial Exercise 15 @noindent @@ -8457,7 +8457,7 @@ answer, assuming that each successive pill doubles his speed. @noindent Thus Sam can take up to 14 pills without a worry. -@node Algebra Answer 1, Algebra Answer 2, Types Answer 15, Answers to Exercises +@node Algebra Answer 1 @subsection Algebra Tutorial Exercise 1 @noindent @@ -8469,7 +8469,7 @@ simplified to @samp{abs(x)}, but for general complex arguments even that is not safe. (@xref{Declarations}, for a way to tell Calc that @expr{x} is known to be real.) -@node Algebra Answer 2, Algebra Answer 3, Algebra Answer 1, Answers to Exercises +@node Algebra Answer 2 @subsection Algebra Tutorial Exercise 2 @noindent @@ -8512,7 +8512,7 @@ familiar form. Sure enough, our answer (multiplied by a suitable constant) is the same as the original polynomial. -@node Algebra Answer 3, Algebra Answer 4, Algebra Answer 2, Answers to Exercises +@node Algebra Answer 3 @subsection Algebra Tutorial Exercise 3 @smallexample @@ -8575,7 +8575,7 @@ same as the original polynomial. @end group @end smallexample -@node Algebra Answer 4, Rewrites Answer 1, Algebra Answer 3, Answers to Exercises +@node Algebra Answer 4 @subsection Algebra Tutorial Exercise 4 @noindent @@ -8645,7 +8645,7 @@ same thing. @noindent Wow! That's even better than the result from the Taylor series method. -@node Rewrites Answer 1, Rewrites Answer 2, Algebra Answer 4, Answers to Exercises +@node Rewrites Answer 1 @subsection Rewrites Tutorial Exercise 1 @noindent @@ -8697,7 +8697,7 @@ The multiply-by-conjugate rule turns out to be useful in many different circumstances, such as when the denominator involves sines and cosines or the imaginary constant @code{i}. -@node Rewrites Answer 2, Rewrites Answer 3, Rewrites Answer 1, Answers to Exercises +@node Rewrites Answer 2 @subsection Rewrites Tutorial Exercise 2 @noindent @@ -8733,7 +8733,7 @@ help keep this from happening by accident would be to use something like @samp{ZzFib} instead of @code{fib} as the name of the three-argument function. -@node Rewrites Answer 3, Rewrites Answer 4, Rewrites Answer 2, Answers to Exercises +@node Rewrites Answer 3 @subsection Rewrites Tutorial Exercise 3 @noindent @@ -8755,7 +8755,7 @@ to it. While this may seem odd, it's just as valid a solution as the on the lefthand side, so that the rule matches the actual variable @samp{x} rather than letting @samp{x} stand for something else.) -@node Rewrites Answer 4, Rewrites Answer 5, Rewrites Answer 3, Answers to Exercises +@node Rewrites Answer 4 @subsection Rewrites Tutorial Exercise 4 @noindent @@ -8828,7 +8828,7 @@ will not get into an infinite loop. Calc will not be able to prove the symbol @samp{x} is either even or odd, so none of the rules will apply and the rewrites will stop right away. -@node Rewrites Answer 5, Rewrites Answer 6, Rewrites Answer 4, Answers to Exercises +@node Rewrites Answer 5 @subsection Rewrites Tutorial Exercise 5 @noindent @@ -8852,7 +8852,7 @@ Here we have taken advantage of the fact that earlier rules always match before later rules; @samp{nterms(x)} will only be tried if we already know that @samp{x} is not a sum. -@node Rewrites Answer 6, Programming Answer 1, Rewrites Answer 5, Answers to Exercises +@node Rewrites Answer 6 @subsection Rewrites Tutorial Exercise 6 @noindent @@ -8927,7 +8927,7 @@ for a way to do this in Calc, although for something as involved as this it would probably be better to write the formatting routine in Lisp.) -@node Programming Answer 1, Programming Answer 2, Rewrites Answer 6, Answers to Exercises +@node Programming Answer 1 @subsection Programming Tutorial Exercise 1 @noindent @@ -8940,7 +8940,7 @@ to be used within @code{ninteg}. The exact keystrokes are @kbd{Z F s Si @key{RET} @key{RET} C-b C-b @key{DEL} @key{DEL} @key{RET} y}. (The @kbd{C-b C-b @key{DEL} @key{DEL}} are what fix the argument list.) -@node Programming Answer 2, Programming Answer 3, Programming Answer 1, Answers to Exercises +@node Programming Answer 2 @subsection Programming Tutorial Exercise 2 @noindent @@ -8957,7 +8957,7 @@ which is just what we want: @kbd{C-x ( M-- 3 n C-x )}. Just for kicks, let's also do it algebraically: @w{@kbd{C-x ( ' -$$$, $$, $ @key{RET} C-x )}}. -@node Programming Answer 3, Programming Answer 4, Programming Answer 2, Answers to Exercises +@node Programming Answer 3 @subsection Programming Tutorial Exercise 3 @noindent @@ -8993,13 +8993,13 @@ next command.) Using algebraic entry: @kbd{C-x ( ' index($) @key{RET} C-x )}. -@node Programming Answer 4, Programming Answer 5, Programming Answer 3, Answers to Exercises +@node Programming Answer 4 @subsection Programming Tutorial Exercise 4 @noindent Here's one way: @kbd{C-x ( @key{RET} V R + @key{TAB} v l / C-x )}. -@node Programming Answer 5, Programming Answer 6, Programming Answer 4, Answers to Exercises +@node Programming Answer 5 @subsection Programming Tutorial Exercise 5 @smallexample @@ -9015,7 +9015,7 @@ Here's one way: @kbd{C-x ( @key{RET} V R + @key{TAB} v l / C-x )}. @noindent This answer is quite accurate. -@node Programming Answer 6, Programming Answer 7, Programming Answer 5, Answers to Exercises +@node Programming Answer 6 @subsection Programming Tutorial Exercise 6 @noindent @@ -9044,7 +9044,7 @@ number (a 209-digit integer!)@: in about 10 steps; even though the @kbd{Z < ... Z >} solution had much simpler steps, it would have required so many steps that it would not have been practical. -@node Programming Answer 7, Programming Answer 8, Programming Answer 6, Answers to Exercises +@node Programming Answer 7 @subsection Programming Tutorial Exercise 7 @noindent @@ -9085,7 +9085,7 @@ loop counter exceeds 4. Thus we find that the 30th harmonic number is 3.99, and the 31st harmonic number is 4.02. -@node Programming Answer 8, Programming Answer 9, Programming Answer 7, Answers to Exercises +@node Programming Answer 8 @subsection Programming Tutorial Exercise 8 @noindent @@ -9201,7 +9201,7 @@ Also, of course, @kbd{a R} is a built-in command that uses Newton's method (among others) to look for numerical solutions to any equation. @xref{Root Finding}. -@node Programming Answer 9, Programming Answer 10, Programming Answer 8, Answers to Exercises +@node Programming Answer 9 @subsection Programming Tutorial Exercise 9 @noindent @@ -9324,7 +9324,7 @@ C-x ) @end group @end example -@node Programming Answer 10, Programming Answer 11, Programming Answer 9, Answers to Exercises +@node Programming Answer 10 @subsection Programming Tutorial Exercise 10 @noindent @@ -9422,7 +9422,7 @@ C-x ( 1 + 0 @key{RET} 1 C-u v x ' x @key{RET} @key{TAB} V M ^ * C-x ) @end group @end example -@node Programming Answer 11, Programming Answer 12, Programming Answer 10, Answers to Exercises +@node Programming Answer 11 @subsection Programming Tutorial Exercise 11 @noindent @@ -9527,7 +9527,7 @@ first, because @code{read-kbd-macro} doesn't need to execute the definition as it reads it in. For this reason, @code{C-x * m} is often the easiest way to create recursive programs in Calc. -@node Programming Answer 12, , Programming Answer 11, Answers to Exercises +@node Programming Answer 12 @subsection Programming Tutorial Exercise 12 @noindent @@ -9568,7 +9568,7 @@ the last rule. @c [reference] -@node Introduction, Data Types, Tutorial, Top +@node Introduction @chapter Introduction @noindent @@ -9593,7 +9593,7 @@ numeric entry, undo, numeric prefix arguments, etc. * Troubleshooting Commands:: @end menu -@node Basic Commands, Help Commands, Introduction, Introduction +@node Basic Commands @section Basic Commands @noindent @@ -9762,7 +9762,7 @@ the stack but resets everything else to its initial state; with a negative prefix argument, @kbd{C-x * 0} preserves the contents of the stack but resets everything else to its default state. -@node Help Commands, Stack Basics, Basic Commands, Introduction +@node Help Commands @section Help Commands @noindent @@ -9907,7 +9907,7 @@ distribution, and warranty information about Calc. These work by pulling up the appropriate parts of the ``Copying'' or ``Reporting Bugs'' sections of the manual. -@node Stack Basics, Numeric Entry, Help Commands, Introduction +@node Stack Basics @section Stack Basics @noindent @@ -9959,7 +9959,7 @@ The @key{TAB} key swaps the top two objects on the stack. @xref{Stack and Trail}, for descriptions of these and other stack-related commands. -@node Numeric Entry, Algebraic Entry, Stack Basics, Introduction +@node Numeric Entry @section Numeric Entry @noindent @@ -9996,7 +9996,7 @@ data types. @xref{Data Types}. During numeric entry, the only editing key available is @key{DEL}. -@node Algebraic Entry, Quick Calculator, Numeric Entry, Introduction +@node Algebraic Entry @section Algebraic Entry @noindent @@ -10114,7 +10114,7 @@ is being pushed on the stack. Thus @kbd{' 1+2 @key{RET}} pushes 3 on the stack, but @kbd{' 1+2 @key{LFD}} pushes the formula @expr{1+2}; you might then press @kbd{=} when it is time to evaluate this formula. -@node Quick Calculator, Prefix Arguments, Algebraic Entry, Introduction +@node Quick Calculator @section ``Quick Calculator'' Mode @noindent @@ -10183,7 +10183,7 @@ or computing the answer than the full Calculator; the name ``quick'' merely refers to the fact that it's much less hassle to use for small calculations. -@node Prefix Arguments, Undo, Quick Calculator, Introduction +@node Prefix Arguments @section Numeric Prefix Arguments @noindent @@ -10231,7 +10231,7 @@ to the fourth power and set the precision to that value. Conversely, if you have typed a numeric prefix argument the @kbd{~} key pushes it onto the stack in the form of an integer. -@node Undo, Error Messages, Prefix Arguments, Introduction +@node Undo @section Undoing Mistakes @noindent @@ -10289,7 +10289,7 @@ It is also possible to recall previous results or inputs using the trail. The standard Emacs @kbd{C-_} undo key is recognized as a synonym for @kbd{U}. -@node Error Messages, Multiple Calculators, Undo, Introduction +@node Error Messages @section Error Messages @noindent @@ -10320,7 +10320,7 @@ after your computation finishes.) By default, this occurs only for @emph{all} messages automatically, or to report none automatically (so that you must always press @kbd{w} yourself to see the messages). -@node Multiple Calculators, Troubleshooting Commands, Error Messages, Introduction +@node Multiple Calculators @section Multiple Calculators @noindent @@ -10347,7 +10347,7 @@ the stack and mode settings of the buffer being quit as the new defaults. There is only one trail buffer, @file{*Calc Trail*}, used by all Calculator buffers. -@node Troubleshooting Commands, , Multiple Calculators, Introduction +@node Troubleshooting Commands @section Troubleshooting Commands @noindent @@ -10364,7 +10364,7 @@ to a bug or deficiency in Calc. * Debugging Calc:: @end menu -@node Autoloading Problems, Recursion Depth, Troubleshooting Commands, Troubleshooting Commands +@node Autoloading Problems @subsection Autoloading Problems @noindent @@ -10381,7 +10381,7 @@ If this happens, the easiest workaround is to type @kbd{C-x * L} loaded right away. This will cause Emacs to take up a lot more memory than it would otherwise, but it's guaranteed to fix the problem. -@node Recursion Depth, Caches, Autoloading Problems, Troubleshooting Commands +@node Recursion Depth @subsection Recursion Depth @noindent @@ -10409,7 +10409,7 @@ The default value is 1000. These commands also double or halve @code{max-specpdl-size}, another internal Lisp recursion limit. The minimum value for this limit is 600. -@node Caches, Debugging Calc, Recursion Depth, Troubleshooting Commands +@node Caches @subsection Caches @noindent @@ -10438,7 +10438,7 @@ If you suspect a Calculator cache has become corrupt, you can use the The @kbd{C-x * 0} (with the zero key) command also resets caches along with all other aspects of the Calculator's state. -@node Debugging Calc, , Caches, Troubleshooting Commands +@node Debugging Calc @subsection Debugging Calc @noindent @@ -10491,7 +10491,7 @@ error. After you have executed @code{calc-pass-errors}, Lisp errors will be reported correctly but the user-friendly message will be lost. -@node Data Types, Stack and Trail, Introduction, Top +@node Data Types @chapter Data Types @noindent @@ -10526,7 +10526,7 @@ matrices, or algebraic formulas. * Formulas:: @end menu -@node Integers, Fractions, Data Types, Data Types +@node Integers @section Integers @noindent @@ -10552,7 +10552,7 @@ to set the default radix for display of integers. Numbers of any radix may be entered at any time. If you press @kbd{#} at the beginning of a number, the current display radix is used. -@node Fractions, Floats, Integers, Data Types +@node Fractions @section Fractions @noindent @@ -10573,7 +10573,7 @@ Non-decimal fractions are entered and displayed as @samp{@var{radix}#@var{num}:@var{denom}} (or in the analogous three-part form). The numerator and denominator always use the same radix. -@node Floats, Complex Numbers, Fractions, Data Types +@node Floats @section Floats @noindent @@ -10647,7 +10647,7 @@ the letter @samp{e} is a digit, so scientific notation must be written out, e.g., @samp{16#123.4567*16^2}. The first two exercises of the Modes Tutorial explore some of the properties of non-decimal floats. -@node Complex Numbers, Infinities, Floats, Data Types +@node Complex Numbers @section Complex Numbers @noindent @@ -10685,7 +10685,7 @@ A complex result in which the imaginary part is zero (or the phase angle is 0 or 180 degrees or @cpi{} radians) is automatically converted to a real number. -@node Infinities, Vectors and Matrices, Complex Numbers, Data Types +@node Infinities @section Infinities @noindent @@ -10772,7 +10772,7 @@ expressions are @samp{inf - inf} and @samp{inf ^ 0}. Also, Infinities are especially useful as parts of @dfn{intervals}. @xref{Interval Forms}. -@node Vectors and Matrices, Strings, Infinities, Data Types +@node Vectors and Matrices @section Vectors and Matrices @noindent @@ -10814,7 +10814,7 @@ to build @samp{[a, b, c]}, @samp{cvec(a, n, m)} to build an matrix of @samp{a}s, and @samp{index(n)} to build a vector of integers from 1 to @samp{n}. -@node Strings, HMS Forms, Vectors and Matrices, Data Types +@node Strings @section Strings @noindent @@ -10891,7 +10891,7 @@ the resulting string is breakable across multiple lines if it doesn't fit all on one line. Potential break points occur at every space character in the string. -@node HMS Forms, Date Forms, Strings, Data Types +@node HMS Forms @section HMS Forms @noindent @@ -10953,7 +10953,7 @@ two HMS forms produces a real-valued ratio of the two angles. Just for kicks, @kbd{M-x calc-time} pushes the current time of day on the stack as an HMS form. -@node Date Forms, Modulo Forms, HMS Forms, Data Types +@node Date Forms @section Date Forms @noindent @@ -11109,7 +11109,7 @@ for California time. The same is usually true of Julian day counts.) The built-in @kbd{t U} command performs these conversions. -@node Modulo Forms, Error Forms, Date Forms, Data Types +@node Modulo Forms @section Modulo Forms @noindent @@ -11193,7 +11193,7 @@ You can use @kbd{v p} and @kbd{%} to modify modulo forms. The algebraic function @samp{makemod(a, m)} builds the modulo form @w{@samp{a mod m}}. -@node Error Forms, Interval Forms, Modulo Forms, Data Types +@node Error Forms @section Error Forms @noindent @@ -11308,7 +11308,7 @@ the mean and the error should be HMS forms if either one is. @tindex sdev The algebraic function @samp{sdev(a, b)} builds the error form @samp{a +/- b}. -@node Interval Forms, Incomplete Objects, Error Forms, Data Types +@node Interval Forms @section Interval Forms @noindent @@ -11423,7 +11423,7 @@ should yield the interval @samp{[1..2]} again, but in fact it yields the (slightly too small) interval @samp{[1..1.9999999]} due to roundoff error. -@node Incomplete Objects, Variables, Interval Forms, Data Types +@node Incomplete Objects @section Incomplete Objects @noindent @@ -11486,7 +11486,7 @@ the @code{calc-dots} command. If you find incomplete entry distracting, you may wish to enter vectors and complex numbers as algebraic formulas by pressing the apostrophe key. -@node Variables, Formulas, Incomplete Objects, Data Types +@node Variables @section Variables @noindent @@ -11557,7 +11557,7 @@ a value into any of these special variables. @xref{Store and Recall}, for a discussion of commands dealing with variables. -@node Formulas, , Variables, Data Types +@node Formulas @section Formulas @noindent @@ -11715,7 +11715,7 @@ formats. @xref{Algebra}, for commands for manipulating formulas symbolically. -@node Stack and Trail, Mode Settings, Data Types, Top +@node Stack and Trail @chapter Stack and Trail Commands @noindent @@ -11730,7 +11730,7 @@ type, such as numbers, vectors, formulas, and incomplete objects.) * Keep Arguments:: @end menu -@node Stack Manipulation, Editing Stack Entries, Stack and Trail, Stack and Trail +@node Stack Manipulation @section Stack Manipulation Commands @noindent @@ -11859,7 +11859,7 @@ the line containing @samp{30}, @kbd{C-u 2 C-x C-t} creates @samp{10 40 20 30 50}. With an argument of 0, @kbd{C-x C-t} will switch the stack objects at the levels determined by the point and the mark. -@node Editing Stack Entries, Trail Commands, Stack Manipulation, Stack and Trail +@node Editing Stack Entries @section Editing Stack Entries @noindent @@ -11913,7 +11913,7 @@ The @kbd{`} key also works during numeric or algebraic entry. The text entered so far is moved to the @file{*Calc Edit*} buffer for more extensive editing than is convenient in the minibuffer. -@node Trail Commands, Keep Arguments, Editing Stack Entries, Stack and Trail +@node Trail Commands @section Trail Commands @noindent @@ -12034,7 +12034,7 @@ kills the @var{n} lines below or above the selected one. The @kbd{t .} (@code{calc-full-trail-vectors}) command is described elsewhere; @pxref{Vector and Matrix Formats}. -@node Keep Arguments, , Trail Commands, Stack and Trail +@node Keep Arguments @section Keep Arguments @noindent @@ -12077,7 +12077,7 @@ onto the stack. Note that the order of things on the stack will be different than with @kbd{K}: @kbd{2 @key{RET} 3 + M-@key{RET}} leaves @samp{5 2 3} on the stack instead of @samp{2 3 5}. @xref{Undo}. -@node Mode Settings, Arithmetic, Stack and Trail, Top +@node Mode Settings @chapter Mode Settings @noindent @@ -12098,7 +12098,7 @@ the @emph{appearance} or @emph{interpretation} of the stack's contents. * Calc Mode Line:: @end menu -@node General Mode Commands, Precision, Mode Settings, Mode Settings +@node General Mode Commands @section General Mode Commands @noindent @@ -12180,7 +12180,7 @@ the @kbd{z} and @kbd{Z} prefix keys are always distinct. Also, the @kbd{h} prefix is not affected by this mode. Press @kbd{m S} again to disable shifted-prefix mode. -@node Precision, Inverse and Hyperbolic, General Mode Commands, Mode Settings +@node Precision @section Precision @noindent @@ -12237,7 +12237,7 @@ would round this to 150 cents, i.e., $1.50. @xref{Floats}, for still more on floating-point precision and related issues. -@node Inverse and Hyperbolic, Calculation Modes, Precision, Mode Settings +@node Inverse and Hyperbolic @section Inverse and Hyperbolic Flags @noindent @@ -12280,7 +12280,7 @@ to subtract and keep arguments). Another Calc prefix flag, @kbd{K} (keep-arguments), is discussed elsewhere. @xref{Keep Arguments}. -@node Calculation Modes, Simplification Modes, Inverse and Hyperbolic, Mode Settings +@node Calculation Modes @section Calculation Modes @noindent @@ -12300,7 +12300,7 @@ The @samp{m a} (@code{calc-algebraic-mode}) command is described elsewhere * Working Message:: @end menu -@node Angular Modes, Polar Mode, Calculation Modes, Calculation Modes +@node Angular Modes @subsection Angular Modes @noindent @@ -12331,7 +12331,7 @@ and @kbd{m h} (@code{calc-hms-mode}) commands control the angular mode. The current angular mode is displayed on the Emacs mode line. The default angular mode is Degrees. -@node Polar Mode, Fraction Mode, Angular Modes, Calculation Modes +@node Polar Mode @subsection Polar Mode @noindent @@ -12348,7 +12348,7 @@ The @kbd{m p} (@code{calc-polar-mode}) command toggles complex-number preference between rectangular and polar forms. In Polar mode, all of the above example situations would produce polar complex numbers. -@node Fraction Mode, Infinite Mode, Polar Mode, Calculation Modes +@node Fraction Mode @subsection Fraction Mode @noindent @@ -12374,7 +12374,7 @@ At any time you can use @kbd{c f} (@code{calc-float}) to convert a fraction to a float, or @kbd{c F} (@code{calc-fraction}) to convert a float to a fraction. @xref{Conversions}. -@node Infinite Mode, Symbolic Mode, Fraction Mode, Calculation Modes +@node Infinite Mode @subsection Infinite Mode @noindent @@ -12414,7 +12414,7 @@ single symbol, @samp{0}. One consequence of this is that, while you might expect @samp{1 / -0 = -inf}, actually @samp{1 / -0} is equivalent to @samp{1 / 0}, which is equal to positive @code{inf}. -@node Symbolic Mode, Matrix Mode, Infinite Mode, Calculation Modes +@node Symbolic Mode @subsection Symbolic Mode @noindent @@ -12447,7 +12447,7 @@ contains, you can use the key sequence @kbd{m s a v m s} (this uses @code{calc-alg-evaluate}, which resimplifies but doesn't evaluate variables.) -@node Matrix Mode, Automatic Recomputation, Symbolic Mode, Calculation Modes +@node Matrix Mode @subsection Matrix and Scalar Modes @noindent @@ -12519,7 +12519,7 @@ of the formula without affecting the rest just select that part, change into Scalar mode and press @kbd{=} to resimplify the part under this mode, then change back to Matrix mode before deselecting. -@node Automatic Recomputation, Working Message, Matrix Mode, Calculation Modes +@node Automatic Recomputation @subsection Automatic Recomputation @noindent @@ -12543,7 +12543,7 @@ To update @samp{=>} operators in an Embedded buffer while automatic recomputation is off, use @w{@kbd{C-x * u}}. @xref{Embedded Mode}. -@node Working Message, , Automatic Recomputation, Calculation Modes +@node Working Message @subsection Working Messages @noindent @@ -12570,7 +12570,7 @@ considerably, experiments have shown that their impact is actually quite small. But if your terminal is slow you may find that it helps to turn the messages off. -@node Simplification Modes, Declarations, Calculation Modes, Mode Settings +@node Simplification Modes @section Simplification Modes @noindent @@ -12651,7 +12651,7 @@ A common technique is to set the simplification mode down to the lowest amount of simplification you will allow to be applied automatically, then use manual commands like @kbd{a s} and @kbd{c c} (@code{calc-clean}) to perform higher types of simplifications on demand. -@node Declarations, Display Modes, Simplification Modes, Mode Settings +@node Declarations @section Declarations @noindent @@ -12666,7 +12666,7 @@ take the fully general situation into account. * Functions for Declarations:: @end menu -@node Declaration Basics, Kinds of Declarations, Declarations, Declarations +@node Declaration Basics @subsection Declaration Basics @noindent @@ -12731,7 +12731,7 @@ are explicitly declared without @code{real} in some other row. The @kbd{s d} command declares @code{All} if you give a blank response to the variable-name prompt. -@node Kinds of Declarations, Functions for Declarations, Declaration Basics, Declarations +@node Kinds of Declarations @subsection Kinds of Declarations @noindent @@ -12921,7 +12921,7 @@ using a variable for a new purpose, it is best to use @kbd{s d} or @kbd{s D} to check to make sure you don't still have an old declaration for the variable that will conflict with its new meaning. -@node Functions for Declarations, , Kinds of Declarations, Declarations +@node Functions for Declarations @subsection Functions for Declarations @noindent @@ -13060,7 +13060,7 @@ provably scalar, and @samp{!dscalar(a)} is ``true'' only if @code{a} is provably non-scalar; both are ``false'' if there is insufficient information to tell. -@node Display Modes, Language Modes, Declarations, Mode Settings +@node Display Modes @section Display Modes @noindent @@ -13105,7 +13105,7 @@ words, @kbd{I d s} is equivalent to @kbd{H d s d @key{RET} H d (@var{old mode})} * Labels:: @end menu -@node Radix Modes, Grouping Digits, Display Modes, Display Modes +@node Radix Modes @subsection Radix Modes @noindent @@ -13190,7 +13190,7 @@ to will be represented using Calc's usual notation (in the appropriate radix). -@node Grouping Digits, Float Formats, Radix Modes, Display Modes +@node Grouping Digits @subsection Grouping Digits @noindent @@ -13228,7 +13228,7 @@ if re-read in textual form, say by the use of @kbd{C-x * y} and @kbd{C-x * g}. the @samp{\,} separator, which doesn't interfere with parsing because it is ignored by @TeX{} language mode. -@node Float Formats, Complex Formats, Grouping Digits, Display Modes +@node Float Formats @subsection Float Formats @noindent @@ -13294,7 +13294,7 @@ may wish to change this to a comma. Note that this is only a display style; on entry, periods must always be used to denote floating-point numbers, and commas to separate elements in a list. -@node Complex Formats, Fraction Formats, Float Formats, Display Modes +@node Complex Formats @subsection Complex Formats @noindent @@ -13325,7 +13325,7 @@ to @samp{(2,3)}. Other commands (like @code{calc-sin}) will @emph{not} interpret the formula @samp{2 + 3 * i} as a complex number. @xref{Variables}, under ``special constants.'' -@node Fraction Formats, HMS Formats, Complex Formats, Display Modes +@node Fraction Formats @subsection Fraction Formats @noindent @@ -13362,7 +13362,7 @@ The fraction format does not affect the way fractions or integers are stored, only the way they appear on the screen. The fraction format never affects floats. -@node HMS Formats, Date Formats, Fraction Formats, Display Modes +@node HMS Formats @subsection HMS Formats @noindent @@ -13389,7 +13389,7 @@ The @kbd{'} key is recognized as ``minutes'' only if @kbd{@@} (or @kbd{h} or @kbd{o}) has already been pressed; otherwise it means to switch to algebraic entry. -@node Date Formats, Truncating the Stack, HMS Formats, Display Modes +@node Date Formats @subsection Date Formats @noindent @@ -13420,7 +13420,7 @@ functions, your date formats should avoid using the @samp{#} character. * Standard Date Formats:: @end menu -@node ISO 8601, Date Formatting Codes, Date Formats, Date Formats +@node ISO 8601 @subsubsection ISO 8601 @noindent @@ -13498,7 +13498,7 @@ and seconds can be omitted, and decimals can be added. If a date with a time is represented, they should be separated by a literal ``T'', so noon on December 13, 2012 can be represented as 2012-12-13T12:00. -@node Date Formatting Codes, Free-Form Dates, ISO 8601, Date Formats +@node Date Formatting Codes @subsubsection Date Formatting Codes @noindent @@ -13689,7 +13689,7 @@ The ``j,'' ``J,'' and ``U'' formats do not make any time zone adjustment. They effectively use @samp{julian(x,0)} and @samp{unixtime(x,0)} to make the conversion; @pxref{Date Arithmetic}. -@node Free-Form Dates, Standard Date Formats, Date Formatting Codes, Date Formats +@node Free-Form Dates @subsubsection Free-Form Dates @noindent @@ -13755,7 +13755,7 @@ minus sign on the year value. If you always enter a four-digit year, and use a name instead of a number for the month, there is no danger of ambiguity. -@node Standard Date Formats, , Free-Form Dates, Date Formats +@node Standard Date Formats @subsubsection Standard Date Formats @noindent @@ -13798,7 +13798,7 @@ command (@pxref{Mode Settings}). @samp{IYYY-Iww-w<Thh:mm:ss>} (ISO 8601 week numbering format) @end table -@node Truncating the Stack, Justification, Date Formats, Display Modes +@node Truncating the Stack @subsection Truncating the Stack @noindent @@ -13833,7 +13833,7 @@ The @kbd{d [} (@code{calc-truncate-up}) and @kbd{d ]} (@code{calc-truncate-down}) commands move the @samp{.} up or down one line at a time (or several lines with a prefix argument). -@node Justification, Labels, Truncating the Stack, Display Modes +@node Justification @subsection Justification @noindent @@ -13894,7 +13894,7 @@ when positioning by explicit origins and widths. In the latter case, the display is formatted as specified, and then uniformly shifted over four spaces to fit the line numbers. -@node Labels, , Justification, Display Modes +@node Labels @subsection Labels @noindent @@ -13925,7 +13925,7 @@ document (possibly using Embedded mode). The equations would typically be centered, and the equation numbers would be on the left or right as you prefer. -@node Language Modes, Modes Variable, Display Modes, Mode Settings +@node Language Modes @section Language Modes @noindent @@ -13978,7 +13978,7 @@ shifted letter key. * Syntax Tables:: @end menu -@node Normal Language Modes, C FORTRAN Pascal, Language Modes, Language Modes +@node Normal Language Modes @subsection Normal Language Modes @noindent @@ -14080,7 +14080,7 @@ all four modes, and unformatted notation works in any language mode (except that Mathematica mode expects square brackets instead of parentheses). -@node C FORTRAN Pascal, TeX and LaTeX Language Modes, Normal Language Modes, Language Modes +@node C FORTRAN Pascal @subsection C, FORTRAN, and Pascal Modes @noindent @@ -14155,7 +14155,7 @@ modes will use upper-case letters exclusively for display, and will convert to lower-case on input. With a negative prefix, these modes convert to lower-case for display and input. -@node TeX and LaTeX Language Modes, Eqn Language Mode, C FORTRAN Pascal, Language Modes +@node TeX and LaTeX Language Modes @subsection @TeX{} and @LaTeX{} Language Modes @noindent @@ -14575,7 +14575,7 @@ $$ \pmatrix{ {a \over b} & 0 \cr 0 & 2^{(x + 1)} } $$ @sp 2 @end iftex -@node Eqn Language Mode, Yacas Language Mode, TeX and LaTeX Language Modes, Language Modes +@node Eqn Language Mode @subsection Eqn Language Mode @noindent @@ -14651,7 +14651,7 @@ The words @code{lcol} and @code{rcol} are recognized as synonyms for @code{ccol} during input, and are generated instead of @code{ccol} if the matrix justification mode so specifies. -@node Yacas Language Mode, Maxima Language Mode, Eqn Language Mode, Language Modes +@node Yacas Language Mode @subsection Yacas Language Mode @noindent @@ -14681,7 +14681,7 @@ use square brackets. If, for example, @samp{A} represents the list @samp{@{a,2,c,4@}}, then @samp{A[3]} would equal @samp{c}. -@node Maxima Language Mode, Giac Language Mode, Yacas Language Mode, Language Modes +@node Maxima Language Mode @subsection Maxima Language Mode @noindent @@ -14706,7 +14706,7 @@ Maxima uses square brackets for lists and vectors, and matrices are written as calls to the function @code{matrix}, given the row vectors of the matrix as arguments. Square brackets are also used as subscripts. -@node Giac Language Mode, Mathematica Language Mode, Maxima Language Mode, Language Modes +@node Giac Language Mode @subsection Giac Language Mode @noindent @@ -14731,7 +14731,7 @@ Calc reads @samp{2 .. 3} as the closed interval @samp{[2 .. 3]} and writes any kind of interval as @samp{2 .. 3}. This means you cannot see the difference between an open and a closed interval while in Giac mode. -@node Mathematica Language Mode, Maple Language Mode, Giac Language Mode, Language Modes +@node Mathematica Language Mode @subsection Mathematica Language Mode @noindent @@ -14754,7 +14754,7 @@ Non-decimal numbers are written, e.g., @samp{16^^7fff}. Floating-point numbers in scientific notation are written @samp{1.23*10.^3}. Subscripts use double square brackets: @samp{a[[i]]}. -@node Maple Language Mode, Compositions, Mathematica Language Mode, Language Modes +@node Maple Language Mode @subsection Maple Language Mode @noindent @@ -14788,7 +14788,7 @@ Among things not currently handled by Calc's Maple mode are the various quote symbols, procedures and functional operators, and inert (@samp{&}) operators. -@node Compositions, Syntax Tables, Maple Language Mode, Language Modes +@node Compositions @subsection Compositions @noindent @@ -14824,7 +14824,7 @@ the language modes. * User-Defined Compositions:: @end menu -@node Composition Basics, Horizontal Compositions, Compositions, Compositions +@node Composition Basics @subsubsection Composition Basics @noindent @@ -14965,7 +14965,7 @@ in a function call), then the break points in that @code{bstring} will be on the same level as the break points of the surrounding object. -@node Horizontal Compositions, Vertical Compositions, Composition Basics, Compositions +@node Horizontal Compositions @subsubsection Horizontal Compositions @noindent @@ -15009,7 +15009,7 @@ formats as @samp{2 (a + b c + (d = e))}. The baseline of a horizontal composition is the same as the baselines of the component compositions, which are all aligned. -@node Vertical Compositions, Other Compositions, Horizontal Compositions, Compositions +@node Vertical Compositions @subsubsection Vertical Compositions @noindent @@ -15130,7 +15130,7 @@ Like @code{choriz}, the vertical compositions accept a second argument which gives the precedence to use when formatting the components. Vertical compositions do not support separator strings. -@node Other Compositions, Information about Compositions, Vertical Compositions, Compositions +@node Other Compositions @subsubsection Other Compositions @noindent @@ -15224,7 +15224,7 @@ b - @end group @end example -@node Information about Compositions, User-Defined Compositions, Other Compositions, Compositions +@node Information about Compositions @subsubsection Information about Compositions @noindent @@ -15266,7 +15266,7 @@ For @samp{a / b} in Big mode, @code{cascent} returns 2 and @code{cdescent} returns 1. The only formula for which @code{cascent} will return zero is @samp{cvspace(0)} or equivalents. -@node User-Defined Compositions, , Information about Compositions, Compositions +@node User-Defined Compositions @subsubsection User-Defined Compositions @noindent @@ -15397,7 +15397,7 @@ produce a large, unwieldy integer. You can save your display formats permanently using the @kbd{Z P} command (@pxref{Creating User Keys}). -@node Syntax Tables, , Compositions, Language Modes +@node Syntax Tables @subsection Syntax Tables @noindent @@ -15427,7 +15427,7 @@ the syntax tables along with the other mode settings; * Conditional Syntax Rules:: @end menu -@node Syntax Table Basics, Precedence in Syntax Tables, Syntax Tables, Syntax Tables +@node Syntax Table Basics @subsubsection Syntax Table Basics @noindent @@ -15575,7 +15575,7 @@ respectively). Finally, the notation @samp{%%} anywhere in a syntax table causes the rest of the line to be ignored as a comment. -@node Precedence in Syntax Tables, Advanced Syntax Patterns, Syntax Table Basics, Syntax Tables +@node Precedence in Syntax Tables @subsubsection Precedence @noindent @@ -15610,7 +15610,7 @@ can create a right-associative operator. standard Calc operators. For the precedences of operators in other language modes, look in the Calc source file @file{calc-lang.el}. -@node Advanced Syntax Patterns, Conditional Syntax Rules, Precedence in Syntax Tables, Syntax Tables +@node Advanced Syntax Patterns @subsubsection Advanced Syntax Patterns @noindent @@ -15730,7 +15730,7 @@ backs up and tries the other alternative. Thus Calc has ``partial'' backtracking. A fully backtracking parser would go on to make sure the rest of the pattern matched before finalizing the choice. -@node Conditional Syntax Rules, , Advanced Syntax Patterns, Syntax Tables +@node Conditional Syntax Rules @subsubsection Conditional Syntax Rules @noindent @@ -15804,7 +15804,7 @@ Normal language mode for editing expressions in syntax rules, so we must use regular Calc notation for the interval @samp{[b..c]} that will correspond to the Maple mode interval @samp{1..10}. -@node Modes Variable, Calc Mode Line, Language Modes, Mode Settings +@node Modes Variable @section The @code{Modes} Variable @noindent @@ -15906,7 +15906,7 @@ would not work for fixed-point mode, but it wouldn't be hard to do a full emulation with the help of the @kbd{Z [} and @kbd{Z ]} programming commands. @xref{Conditionals in Macros}.) -@node Calc Mode Line, , Modes Variable, Mode Settings +@node Calc Mode Line @section The Calc Mode Line @noindent @@ -16125,7 +16125,7 @@ Stack is truncated (@kbd{d t}; @pxref{Truncating the Stack}). In addition, the symbols @code{Active} and @code{~Active} can appear as minor modes on an Embedded buffer's mode line. @xref{Embedded Mode}. -@node Arithmetic, Scientific Functions, Mode Settings, Top +@node Arithmetic @chapter Arithmetic Functions @noindent @@ -16155,7 +16155,7 @@ interpret a prefix argument. * Binary Functions:: @end menu -@node Basic Arithmetic, Integer Truncation, Arithmetic, Arithmetic +@node Basic Arithmetic @section Basic Arithmetic @noindent @@ -16512,7 +16512,7 @@ way floating-point numbers work. Incrementing a date/time form adjusts it by a certain number of seconds. Incrementing a pure date form adjusts it by a certain number of days. -@node Integer Truncation, Complex Number Functions, Basic Arithmetic, Arithmetic +@node Integer Truncation @section Integer Truncation @noindent @@ -16635,7 +16635,7 @@ and @kbd{f Q} (integer square root) commands, which are analogous to @kbd{/}, @kbd{B}, and @kbd{Q}, respectively, except that they take integer arguments and return the result rounded down to an integer. -@node Complex Number Functions, Conversions, Integer Truncation, Arithmetic +@node Complex Number Functions @section Complex Number Functions @noindent @@ -16703,7 +16703,7 @@ The @kbd{v u} (@code{calc-unpack}) command takes the complex number (or other composite object) on the top of the stack and unpacks it into its separate components. -@node Conversions, Date Arithmetic, Complex Number Functions, Arithmetic +@node Conversions @section Conversions @noindent @@ -16866,7 +16866,7 @@ you wouldn't want it automatically converted to a 100-digit integer). With the Hyperbolic flag, @kbd{H c c} and @kbd{H c 0} through @kbd{H c 9} operate non-pervasively [@code{clean}]. -@node Date Arithmetic, Financial Functions, Conversions, Arithmetic +@node Date Arithmetic @section Date Arithmetic @noindent @@ -16890,11 +16890,11 @@ additional argument from the top of the stack. @menu * Date Conversions:: * Date Functions:: -* Time Zones:: * Business Days:: +* Time Zones:: @end menu -@node Date Conversions, Date Functions, Date Arithmetic, Date Arithmetic +@node Date Conversions @subsection Date Conversions @noindent @@ -16982,7 +16982,7 @@ zone is used for that prompt. You can also answer the first prompt with @kbd{$} to take the two time zone names from the stack (and the date to be converted from the third stack level). -@node Date Functions, Business Days, Date Conversions, Date Arithmetic +@node Date Functions @subsection Date Functions @noindent @@ -17146,7 +17146,7 @@ serves this purpose. Similarly, instead of @code{incday} and @xref{Basic Arithmetic}, for the @kbd{f ]} [@code{incr}] command which can adjust a date/time form by a certain number of seconds. -@node Business Days, Time Zones, Date Functions, Date Arithmetic +@node Business Days @subsection Business Days @noindent @@ -17289,7 +17289,7 @@ any date form and returns 1 if that date falls on a weekend or holiday, as defined in @code{Holidays}, or 0 if the date is a business day. -@node Time Zones, , Business Days, Date Arithmetic +@node Time Zones @subsection Time Zones @noindent @@ -17511,7 +17511,7 @@ daylight saving time (e.g., @code{PDT} or @code{PST}) the the algorithms described above are used. If @var{zone} is omitted, the computation is done for the current time zone. -@node Financial Functions, Binary Functions, Date Arithmetic, Arithmetic +@node Financial Functions @section Financial Functions @noindent @@ -17538,7 +17538,7 @@ of this section to make sure the functions have the meaning you expect. * Definitions of Financial Functions:: @end menu -@node Percentages, Future Value, Financial Functions, Financial Functions +@node Percentages @subsection Percentages @kindex M-% @@ -17603,7 +17603,7 @@ in the second case, we're decreasing by 20% of 50.) The effect of @kbd{40 @key{RET} 50 b %} is to compute @expr{(50-40)/40}, converting the answer to percentage form as if by @kbd{c %}. -@node Future Value, Present Value, Percentages, Financial Functions +@node Future Value @subsection Future Value @noindent @@ -17665,7 +17665,7 @@ now counting the payment at year five (which, since it didn't have a chance to earn interest, counts as $1000). Indeed, @expr{5569.96 = 5870.73 - 1300.78 + 1000} (give or take a bit of roundoff error). -@node Present Value, Related Financial Functions, Future Value, Financial Functions +@node Present Value @subsection Present Value @noindent @@ -17749,7 +17749,7 @@ The @kbd{I b N} [@code{npvb}] command computes the net present value where payments occur at the beginning of each interval rather than at the end. -@node Related Financial Functions, Depreciation Functions, Present Value, Financial Functions +@node Related Financial Functions @subsection Related Financial Functions @noindent @@ -17837,7 +17837,7 @@ this rate is known as the @dfn{internal rate of return}. The @kbd{I b I} [@code{irrb}] command computes the internal rate of return assuming payments occur at the beginning of each period. -@node Depreciation Functions, Definitions of Financial Functions, Related Financial Functions, Financial Functions +@node Depreciation Functions @subsection Depreciation Functions @noindent @@ -17908,7 +17908,7 @@ Summing columns with @kbd{V R : +} yields @expr{[10000, 10000, 10000]}; the total depreciation in any method is (by definition) the difference between the cost and the salvage value. -@node Definitions of Financial Functions, , Depreciation Functions, Financial Functions +@node Definitions of Financial Functions @subsection Definitions @noindent @@ -18062,7 +18062,7 @@ and the depreciation is zero for all subsequent periods. The @code{ddb} function returns the amount the book value decreased in the specified period. -@node Binary Functions, , Financial Functions, Arithmetic +@node Binary Functions @section Binary Number Functions @noindent @@ -18252,7 +18252,7 @@ unpack; type @kbd{31 @key{TAB} -} to replace each bit-number in the set with 31 minus that bit-number; type @kbd{b p} to pack the set back into a binary integer. -@node Scientific Functions, Matrix Functions, Arithmetic, Top +@node Scientific Functions @chapter Scientific Functions @noindent @@ -18319,7 +18319,7 @@ interpret a prefix argument. * Probability Distribution Functions:: @end menu -@node Logarithmic Functions, Trigonometric and Hyperbolic Functions, Scientific Functions, Scientific Functions +@node Logarithmic Functions @section Logarithmic Functions @noindent @@ -18413,7 +18413,7 @@ The @kbd{f L} (@code{calc-lnp1}) [@code{lnp1}] command computes @infoline @expr{ln(x+1)}, producing a more accurate answer when @expr{x} is close to zero. -@node Trigonometric and Hyperbolic Functions, Advanced Math Functions, Logarithmic Functions, Scientific Functions +@node Trigonometric and Hyperbolic Functions @section Trigonometric/Hyperbolic Functions @noindent @@ -18590,7 +18590,7 @@ counterparts, which are also available separately as @code{calc-sech} [@code{sech}], @code{calc-csch} [@code{csch}] and @code{calc-coth} [@code{coth}]. (These commands do not accept the Inverse flag.) -@node Advanced Math Functions, Branch Cuts, Trigonometric and Hyperbolic Functions, Scientific Functions +@node Advanced Math Functions @section Advanced Mathematical Functions @noindent @@ -18727,7 +18727,7 @@ Calc's implementation of the Bessel functions currently limits the precision to 8 digits, and may not be exact even to that precision. Use with care! -@node Branch Cuts, Random Numbers, Advanced Math Functions, Scientific Functions +@node Branch Cuts @section Branch Cuts and Principal Values @noindent @@ -18871,7 +18871,7 @@ The ``advanced math'' functions (gamma, Bessel, etc.@:) are also defined for general complex arguments, but their branch cuts and principal values are not rigorously specified at present. -@node Random Numbers, Combinatorial Functions, Branch Cuts, Scientific Functions +@node Random Numbers @section Random Numbers @noindent @@ -18999,7 +18999,7 @@ elements of this vector. @xref{Matrix Functions}. * Random Number Generator:: (Complete description of Calc's algorithm) @end menu -@node Random Number Generator, , Random Numbers, Random Numbers +@node Random Number Generator @subsection Random Number Generator Calc's random number generator uses several methods to ensure that @@ -19097,7 +19097,7 @@ The Gaussian random numbers generated by @samp{random(0.0)} use the generates a pair of Gaussian random numbers at a time, so only every other call to @samp{random(0.0)} will require significant calculations. -@node Combinatorial Functions, Probability Distribution Functions, Random Numbers, Scientific Functions +@node Combinatorial Functions @section Combinatorial Functions @noindent @@ -19313,7 +19313,7 @@ distinct factors, this is @expr{(-1)^k}. If the input number has any duplicate factors (i.e., can be divided by the same prime more than once), the result is zero. -@node Probability Distribution Functions, , Combinatorial Functions, Scientific Functions +@node Probability Distribution Functions @section Probability Distribution Functions @noindent @@ -19464,7 +19464,7 @@ Since the distribution functions are monotonic, @kbd{a R} is guaranteed to be able to find a solution given any initial guess. @xref{Numerical Solutions}. -@node Matrix Functions, Algebra, Scientific Functions, Top +@node Matrix Functions @chapter Vector/Matrix Functions @noindent @@ -19492,7 +19492,7 @@ vector of matrices, and so on.) * Vector and Matrix Formats:: @end menu -@node Packing and Unpacking, Building Vectors, Matrix Functions, Matrix Functions +@node Packing and Unpacking @section Packing and Unpacking @noindent @@ -19712,7 +19712,7 @@ Subscript notation is a useful way to extract a particular part of an object. For example, to get the numerator of a rational number, you can use @samp{unpack(-10, @var{x})_1}. -@node Building Vectors, Extracting Elements, Packing and Unpacking, Matrix Functions +@node Building Vectors @section Building Vectors @noindent @@ -19880,7 +19880,7 @@ representing the remainder of the vector. Thus the vector Also, @samp{head([a, b, c, d]) = a}, @samp{tail([a, b, c, d]) = [b, c, d]}, @samp{rhead([a, b, c, d]) = [a, b, c]}, and @samp{rtail([a, b, c, d]) = d}. -@node Extracting Elements, Manipulating Vectors, Building Vectors, Matrix Functions +@node Extracting Elements @section Extracting Vector Elements @noindent @@ -19986,7 +19986,7 @@ produces @samp{[a, d, e]}. It is always true that @code{subvec} and @xref{Selecting Subformulas}, for an alternative way to operate on vectors one element at a time. -@node Manipulating Vectors, Vector and Matrix Arithmetic, Extracting Elements, Matrix Functions +@node Manipulating Vectors @section Manipulating Vectors @noindent @@ -20218,7 +20218,7 @@ operation across the two vectors. @xref{Logical Operations}. Note that the @code{? :} operation also discussed there allows other types of masking using vectors. -@node Vector and Matrix Arithmetic, Set Operations, Manipulating Vectors, Matrix Functions +@node Vector and Matrix Arithmetic @section Vector and Matrix Arithmetic @noindent @@ -20340,7 +20340,7 @@ elements of the matrix. The @kbd{V K} (@code{calc-kron}) [@code{kron}] command computes the Kronecker product of two matrices. -@node Set Operations, Statistical Operations, Vector and Matrix Arithmetic, Matrix Functions +@node Set Operations @section Set Operations using Vectors @noindent @@ -20530,7 +20530,7 @@ representation @texline (@math{2^{100}}, a 31-digit integer, in this case). @infoline (@expr{2^100}, a 31-digit integer, in this case). -@node Statistical Operations, Reducing and Mapping, Set Operations, Matrix Functions +@node Statistical Operations @section Statistical Operations on Vectors @noindent @@ -20559,7 +20559,7 @@ probability distribution functions. * Paired-Sample Statistics:: @end menu -@node Single-Variable Statistics, Paired-Sample Statistics, Statistical Operations, Statistical Operations +@node Single-Variable Statistics @subsection Single-Variable Statistics @noindent @@ -20828,7 +20828,7 @@ arguments, interpreted in the same way as the other functions in this section. For example, @samp{vflat(1, [2, [3, 4]], 5)} returns @samp{[1, 2, 3, 4, 5]}. -@node Paired-Sample Statistics, , Single-Variable Statistics, Statistical Operations +@node Paired-Sample Statistics @subsection Paired-Sample Statistics @noindent @@ -20889,7 +20889,7 @@ between sample or population statistics here.) $$ r_{x\!y} = { \sigma_{x\!y}^2 \over \sigma_x^2 \sigma_y^2 } $$ @end tex -@node Reducing and Mapping, Vector and Matrix Formats, Statistical Operations, Matrix Functions +@node Reducing and Mapping @section Reducing and Mapping Vectors @noindent @@ -20919,7 +20919,7 @@ While @kbd{V A} is useful in some cases, you will usually find that either * Generalized Products:: @end menu -@node Specifying Operators, Mapping, Reducing and Mapping, Reducing and Mapping +@node Specifying Operators @subsection Specifying Operators @noindent @@ -21070,7 +21070,7 @@ a function, since the name @code{gcd} corresponds to the Lisp variable automatically makes this translation, so you don't have to worry about it.) -@node Mapping, Reducing, Specifying Operators, Reducing and Mapping +@node Mapping @subsection Mapping @noindent @@ -21167,7 +21167,7 @@ mapping command. The default @kbd{V M} always means map-by-elements. @xref{Storing Variables}, for the @kbd{s m} command which modifies a variable's stored value using a @kbd{V M}-like operator. -@node Reducing, Nesting and Fixed Points, Mapping, Reducing and Mapping +@node Reducing @subsection Reducing @noindent @@ -21248,7 +21248,7 @@ The commands @kbd{C-x * :} and @kbd{C-x * _} are equivalent to typing @kbd{V R : +} or @kbd{V R _ +}, respectively, to sum the columns or rows of the matrix. @xref{Grabbing From Buffers}. -@node Nesting and Fixed Points, Generalized Products, Reducing, Reducing and Mapping +@node Nesting and Fixed Points @subsection Nesting and Fixed Points @noindent @@ -21328,7 +21328,7 @@ computes the square root of @samp{A} given the initial guess @samp{B}, stopping when the result is correct within the specified tolerance, or when 20 steps have been taken, whichever is sooner. -@node Generalized Products, , Nesting and Fixed Points, Reducing and Mapping +@node Generalized Products @subsection Generalized Products @kindex v O @@ -21365,7 +21365,7 @@ use @kbd{$} twice to take both operator formulas from the stack, the first (multiplicative) operator is taken from the top of the stack and the second (additive) operator is taken from second-to-top. -@node Vector and Matrix Formats, , Reducing and Mapping, Matrix Functions +@node Vector and Matrix Formats @section Vector and Matrix Display Formats @noindent @@ -21512,7 +21512,7 @@ line. This mode causes all vectors, whether matrices or not, to be displayed with a single element per line. Sub-vectors within the vectors will still use the normal linear form. -@node Algebra, Units, Matrix Functions, Top +@node Algebra @chapter Algebra @noindent @@ -21552,7 +21552,7 @@ of these modes. You may also wish to select Big display mode (@kbd{d B}). * Rewrite Rules:: @end menu -@node Selecting Subformulas, Algebraic Manipulation, Algebra, Algebra +@node Selecting Subformulas @section Selecting Sub-Formulas @noindent @@ -21578,7 +21578,7 @@ on one element of a vector in-place, simply select that element as a * Rearranging with Selections:: @end menu -@node Making Selections, Changing Selections, Selecting Subformulas, Selecting Subformulas +@node Making Selections @subsection Making Selections @noindent @@ -21739,7 +21739,7 @@ position. The @kbd{j c} (@code{calc-clear-selections}) command unselects all stack elements. -@node Changing Selections, Displaying Selections, Making Selections, Selecting Subformulas +@node Changing Selections @subsection Changing Selections @noindent @@ -21828,7 +21828,7 @@ The Info @kbd{m} command is somewhat similar to Calc's @kbd{j s} and @kbd{j l}; in each case, you can jump directly to a sub-component of the hierarchy simply by pointing to it with the cursor. -@node Displaying Selections, Operating on Selections, Changing Selections, Selecting Subformulas +@node Displaying Selections @subsection Displaying Selections @noindent @@ -21859,7 +21859,7 @@ and the selected sub-formula will be highlighted by using a more noticeable face (@code{calc-selected-face}) instead of @samp{#} signs. (@pxref{Customizing Calc}.) -@node Operating on Selections, Rearranging with Selections, Displaying Selections, Selecting Subformulas +@node Operating on Selections @subsection Operating on Selections @noindent @@ -22016,7 +22016,7 @@ to be simplified. @end group @end smallexample -@node Rearranging with Selections, , Operating on Selections, Selecting Subformulas +@node Rearranging with Selections @subsection Rearranging Formulas using Selections @noindent @@ -22265,7 +22265,7 @@ The @kbd{j "} (@code{calc-sel-expand-formula}) command is to @kbd{a "} You can use the @kbd{j r} (@code{calc-rewrite-selection}) command to define other algebraic operations on sub-formulas. @xref{Rewrite Rules}. -@node Algebraic Manipulation, Simplifying Formulas, Selecting Subformulas, Algebra +@node Algebraic Manipulation @section Algebraic Manipulation @noindent @@ -22429,7 +22429,7 @@ evaluated immediately, even if its arguments are variables, so if you wish to put a call to @code{subst} onto the stack you must turn the default simplifications off first (with @kbd{m O}). -@node Simplifying Formulas, Polynomials, Algebraic Manipulation, Algebra +@node Simplifying Formulas @section Simplifying Formulas @noindent @@ -22478,7 +22478,7 @@ combinations of @samp{sinh}s and @samp{cosh}s before simplifying. * Simplification of Units:: @end menu -@node Basic Simplifications, Algebraic Simplifications, Simplifying Formulas, Simplifying Formulas +@node Basic Simplifications @subsection Basic Simplifications @noindent @@ -22808,7 +22808,7 @@ Most other Calc functions have few if any basic simplifications defined, aside of course from evaluation when the arguments are suitable numbers. -@node Algebraic Simplifications, Unsafe Simplifications, Basic Simplifications, Simplifying Formulas +@node Algebraic Simplifications @subsection Algebraic Simplifications @noindent @@ -23041,7 +23041,7 @@ all simplified to 0, but @expr{x > 3} is simplified to 1. By a similar analysis, @expr{abs(x) >= 0} is simplified to 1, as is @expr{x^2 >= 0} if @expr{x} is known to be real. -@node Unsafe Simplifications, Simplification of Units, Algebraic Simplifications, Simplifying Formulas +@node Unsafe Simplifications @subsection ``Unsafe'' Simplifications @noindent @@ -23134,7 +23134,7 @@ on whether you believe @expr{x} is positive or negative). The @kbd{a M /} command can be used to divide a factor out of both sides of an inequality. -@node Simplification of Units, , Unsafe Simplifications, Simplifying Formulas +@node Simplification of Units @subsection Simplification of Units @noindent @@ -23219,7 +23219,7 @@ that have angular units like @code{rad} or @code{arcmin} are simplified by converting to base units (radians), then evaluating with the angular mode temporarily set to radians. -@node Polynomials, Calculus, Simplifying Formulas, Algebra +@node Polynomials @section Polynomials A @dfn{polynomial} is a sum of terms which are coefficients times @@ -23443,7 +23443,7 @@ polynomial routines used in the above commands. @xref{Decomposing Polynomials}, for several useful functions for extracting the individual coefficients of a polynomial. -@node Calculus, Solving Equations, Polynomials, Algebra +@node Calculus @section Calculus @noindent @@ -23461,7 +23461,7 @@ readable way. * Taylor Series:: @end menu -@node Differentiation, Integration, Calculus, Calculus +@node Differentiation @subsection Differentiation @noindent @@ -23519,7 +23519,7 @@ Various higher-order derivatives can be formed in the obvious way, e.g., @samp{f'@var{}'2'3(x,y,z)} (@code{f} differentiated with respect to each argument once). -@node Integration, Customizing the Integrator, Differentiation, Calculus +@node Integration @subsection Integration @noindent @@ -23606,7 +23606,7 @@ table-lookup solutions of integrals. You might then wish to define rewrite rules for integration by parts, various kinds of substitutions, and so on. @xref{Rewrite Rules}. -@node Customizing the Integrator, Numerical Integration, Integration, Calculus +@node Customizing the Integrator @subsection Customizing the Integrator @noindent @@ -23732,7 +23732,7 @@ of times until no further changes are possible. Rewriting by finished, not at every step as for @code{IntegRules} and @code{IntegSimpRules}. -@node Numerical Integration, Taylor Series, Customizing the Integrator, Calculus +@node Numerical Integration @subsection Numerical Integration @noindent @@ -23770,7 +23770,7 @@ The integral of @samp{1/sqrt(x)} from 0 to 1 exists (it can be found by Calc's symbolic integrator, for example), but @kbd{a I} will fail because the integrand goes to infinity at one of the endpoints. -@node Taylor Series, , Numerical Integration, Calculus +@node Taylor Series @subsection Taylor Series @noindent @@ -23791,7 +23791,7 @@ If the @kbd{a i} command is unable to find a symbolic integral for a function, you can get an approximation by integrating the function's Taylor series. -@node Solving Equations, Numerical Solutions, Calculus, Algebra +@node Solving Equations @section Solving Equations @noindent @@ -23835,7 +23835,7 @@ another formula with @expr{x} set equal to @expr{y/3 - 2}. * Decomposing Polynomials:: @end menu -@node Multiple Solutions, Solving Systems of Equations, Solving Equations, Solving Equations +@node Multiple Solutions @subsection Multiple Solutions @noindent @@ -23949,7 +23949,7 @@ formula on the stack with Symbolic mode temporarily off.) Naturally, @kbd{a P} can only provide numerical roots if the polynomial coefficients are all numbers (real or complex). -@node Solving Systems of Equations, Decomposing Polynomials, Multiple Solutions, Solving Equations +@node Solving Systems of Equations @subsection Solving Systems of Equations @noindent @@ -24016,7 +24016,7 @@ Another way to deal with certain kinds of overdetermined systems of equations is the @kbd{a F} command, which does least-squares fitting to satisfy the equations. @xref{Curve Fitting}. -@node Decomposing Polynomials, , Solving Systems of Equations, Solving Equations +@node Decomposing Polynomials @subsection Decomposing Polynomials @noindent @@ -24160,7 +24160,7 @@ if necessary) by its content. If the input polynomial has rational coefficients, the result will have integer coefficients in simplest terms. -@node Numerical Solutions, Curve Fitting, Solving Equations, Algebra +@node Numerical Solutions @section Numerical Solutions @noindent @@ -24179,7 +24179,7 @@ on numerical data.) * Numerical Systems of Equations:: @end menu -@node Root Finding, Minimization, Numerical Solutions, Numerical Solutions +@node Root Finding @subsection Root Finding @noindent @@ -24255,7 +24255,7 @@ form on the stack, it will normally display an explanation for why no root was found. If you miss this explanation, press @kbd{w} (@code{calc-why}) to get it back. -@node Minimization, Numerical Systems of Equations, Root Finding, Numerical Solutions +@node Minimization @subsection Minimization @noindent @@ -24327,7 +24327,7 @@ the initial guess is a complex number the variable will be minimized over the complex numbers; if it is real or an interval it will be minimized over the reals. -@node Numerical Systems of Equations, , Minimization, Numerical Solutions +@node Numerical Systems of Equations @subsection Systems of Equations @noindent @@ -24353,7 +24353,7 @@ multidimensional @kbd{a R}, the formula being minimized should still be a single formula, @emph{not} a vector. Beware that multidimensional minimization is currently @emph{very} slow. -@node Curve Fitting, Summations, Numerical Solutions, Algebra +@node Curve Fitting @section Curve Fitting @noindent @@ -24379,7 +24379,7 @@ plotted after the formula is determined. This will be indicated by a * Interpolation:: @end menu -@node Linear Fits, Polynomial and Multilinear Fits, Curve Fitting, Curve Fitting +@node Linear Fits @subsection Linear Fits @noindent @@ -24545,7 +24545,7 @@ vector of @expr{y} values. If there is only one independent variable, the @expr{x} values can be either a one-row matrix or a plain vector, in which case the @kbd{C-u} prefix is the same as a @w{@kbd{C-u 2}} prefix. -@node Polynomial and Multilinear Fits, Error Estimates for Fits, Linear Fits, Curve Fitting +@node Polynomial and Multilinear Fits @subsection Polynomial and Multilinear Fits @noindent @@ -24660,7 +24660,7 @@ would enter @kbd{a F ' 2.3 + a x}. Another class of models that will work but must be entered by hand are multinomial fits, e.g., @expr{a + b x + c y + d x^2 + e y^2 + f x y}. -@node Error Estimates for Fits, Standard Nonlinear Models, Polynomial and Multilinear Fits, Curve Fitting +@node Error Estimates for Fits @subsection Error Estimates for Fits @noindent @@ -24821,7 +24821,7 @@ in the input, and thus there is no redundant information left over to use for a confidence test. @end enumerate -@node Standard Nonlinear Models, Curve Fitting Details, Error Estimates for Fits, Curve Fitting +@node Standard Nonlinear Models @subsection Standard Nonlinear Models @noindent @@ -25005,7 +25005,7 @@ Fourier analysis, which is beyond the scope of the @kbd{a F} command. (Unfortunately, Calc does not currently have any facilities for taking Fourier and related transforms.) -@node Curve Fitting Details, Interpolation, Standard Nonlinear Models, Curve Fitting +@node Curve Fitting Details @subsection Curve Fitting Details @noindent @@ -25397,7 +25397,7 @@ linearizer was unable to put the model into the required form. The @code{efit} (corresponding to @kbd{H a F}) and @code{xfit} (for @kbd{I a F}) functions are completely analogous. -@node Interpolation, , Curve Fitting Details, Curve Fitting +@node Interpolation @subsection Polynomial Interpolation @kindex a p @@ -25454,7 +25454,7 @@ used by @kbd{H a p}. (The algorithm never generates these coefficients explicitly, and quotients of polynomials are beyond @w{@kbd{a F}}'s capabilities to fit.) -@node Summations, Logical Operations, Curve Fitting, Algebra +@node Summations @section Summations @noindent @@ -25615,7 +25615,7 @@ like @code{sum} and @code{prod}, but its result is simply a vector of the results. For example, @samp{table(a_i, i, 1, 7, 2)} produces @samp{[a_1, a_3, a_5, a_7]}. -@node Logical Operations, Rewrite Rules, Summations, Algebra +@node Logical Operations @section Logical Operations @noindent @@ -25993,7 +25993,7 @@ declarations are used when deciding whether a formula is true; it returns 0 when @code{dnonzero} would return 0 or leave itself in symbolic form.) -@node Rewrite Rules, , Logical Operations, Algebra +@node Rewrite Rules @section Rewrite Rules @noindent @@ -26035,7 +26035,7 @@ Calc formulas. * Examples of Rewrite Rules:: @end menu -@node Entering Rewrite Rules, Basic Rewrite Rules, Rewrite Rules, Rewrite Rules +@node Entering Rewrite Rules @subsection Entering Rewrite Rules @noindent @@ -26101,7 +26101,7 @@ Calc also accepts an obsolete notation for rules, as vectors @samp{[@var{old}, @var{new}]}. But because it is easily confused with a vector of two rules, the use of this notation is no longer recommended. -@node Basic Rewrite Rules, Conditional Rewrite Rules, Entering Rewrite Rules, Rewrite Rules +@node Basic Rewrite Rules @subsection Basic Rewrite Rules @noindent @@ -26145,7 +26145,7 @@ throughout the target formula until no further changes are possible (up to a limit of 100 times). Use @kbd{C-u 1 a r} to make only one change at a time. -@node Conditional Rewrite Rules, Algebraic Properties of Rewrite Rules, Basic Rewrite Rules, Rewrite Rules +@node Conditional Rewrite Rules @subsection Conditional Rewrite Rules @noindent @@ -26228,7 +26228,7 @@ the condition @samp{1} is always true (nonzero) so it has no effect on the functioning of the rule. (The rewrite compiler will ensure that it doesn't even impact the speed of matching the rule.) -@node Algebraic Properties of Rewrite Rules, Other Features of Rewrite Rules, Conditional Rewrite Rules, Rewrite Rules +@node Algebraic Properties of Rewrite Rules @subsection Algebraic Properties of Rewrite Rules @noindent @@ -26567,7 +26567,7 @@ In this example, we are still allowing the pattern-matcher to use all the algebra it can muster, but the righthand side will always simplify to a literal addition like @samp{f((-y) + x)}. -@node Other Features of Rewrite Rules, Composing Patterns in Rewrite Rules, Algebraic Properties of Rewrite Rules, Rewrite Rules +@node Other Features of Rewrite Rules @subsection Other Features of Rewrite Rules @noindent @@ -26969,7 +26969,7 @@ rule remembers only every fourth result. Note that @samp{remember(1)} is equivalent to @samp{remember}, and @samp{remember(0)} has no effect. @end table -@node Composing Patterns in Rewrite Rules, Nested Formulas with Rewrite Rules, Other Features of Rewrite Rules, Rewrite Rules +@node Composing Patterns in Rewrite Rules @subsection Composing Patterns in Rewrite Rules @noindent @@ -27138,7 +27138,7 @@ disastrous: since @code{a} was unbound so far, the pattern @samp{a} would have matched anything at all, and the pattern @samp{!!!a} therefore would @emph{not} have matched anything at all! -@node Nested Formulas with Rewrite Rules, Multi-Phase Rewrite Rules, Composing Patterns in Rewrite Rules, Rewrite Rules +@node Nested Formulas with Rewrite Rules @subsection Nested Formulas with Rewrite Rules @noindent @@ -27222,7 +27222,7 @@ integer, or @samp{inf} or @samp{-inf}. If @var{n} is omitted the @code{iterations} value from the rule set is used; if both are omitted, 100 is used. -@node Multi-Phase Rewrite Rules, Selections with Rewrite Rules, Nested Formulas with Rewrite Rules, Rewrite Rules +@node Multi-Phase Rewrite Rules @subsection Multi-Phase Rewrite Rules @noindent @@ -27343,7 +27343,7 @@ rules were finished, some components might be put away into vectors before they had a chance to recombine. By putting these rules in two separate phases, this problem is neatly avoided. -@node Selections with Rewrite Rules, Matching Commands, Multi-Phase Rewrite Rules, Rewrite Rules +@node Selections with Rewrite Rules @subsection Selections with Rewrite Rules @noindent @@ -27416,7 +27416,7 @@ purpose rules with @samp{select( )} hints inside them so that they will ``do the right thing'' in both @kbd{a r} and @kbd{j r}, both with and without selections. -@node Matching Commands, Automatic Rewrites, Selections with Rewrite Rules, Rewrite Rules +@node Matching Commands @subsection Matching Commands @noindent @@ -27468,7 +27468,7 @@ the meta-variables instead of the number 1. For example, @samp{vmatches(f(1,2), f(a,b))} returns @samp{[a := 1, b := 2]}. If the match fails, the function returns the number 0. -@node Automatic Rewrites, Debugging Rewrites, Matching Commands, Rewrite Rules +@node Automatic Rewrites @subsection Automatic Rewrites @noindent @@ -27642,7 +27642,7 @@ also apply @code{EvalRules} and @code{AlgSimpRules}. The variable @code{IntegSimpRules} contains simplification rules that are used only during integration by @kbd{a i}. -@node Debugging Rewrites, Examples of Rewrite Rules, Automatic Rewrites, Rewrite Rules +@node Debugging Rewrites @subsection Debugging Rewrites @noindent @@ -27662,7 +27662,7 @@ buffer (with @kbd{C-x k *Trace* @key{RET}}). If you leave it in existence and forget about it, all your future rewrite commands will be needlessly slow. -@node Examples of Rewrite Rules, , Debugging Rewrites, Rewrite Rules +@node Examples of Rewrite Rules @subsection Examples of Rewrite Rules @noindent @@ -27752,7 +27752,7 @@ results in the four-argument form, just append the two items of the rule set. (But remember that multi-phase rule sets don't work in @code{EvalRules}.) -@node Units, Store and Recall, Algebra, Top +@node Units @chapter Operating on Units @noindent @@ -27771,7 +27771,7 @@ begin with the @kbd{u} prefix key. * Musical Notes:: @end menu -@node Basic Operations on Units, The Units Table, Units, Units +@node Basic Operations on Units @section Basic Operations on Units @noindent @@ -27976,7 +27976,7 @@ is also the actual name of another unit; @samp{1e-15 t} would normally be considered a ``femto-ton,'' but it is written as @samp{1000 at} (1000 atto-tons) instead because @code{ft} would be confused with feet. -@node The Units Table, Predefined Units, Basic Operations on Units, Units +@node The Units Table @section The Units Table @noindent @@ -28033,7 +28033,7 @@ for the expression @samp{62 km^2 g / s^2 mol K}, the description is command uses the English descriptions that appear in the righthand column of the Units Table. -@node Predefined Units, User-Defined Units, The Units Table, Units +@node Predefined Units @section Predefined Units @noindent @@ -28130,7 +28130,7 @@ really is unitless.) @c Describe angular units, luminosity vs. steradians problem. -@node User-Defined Units, Logarithmic Units, Predefined Units, Units +@node User-Defined Units @section User-Defined Units @noindent @@ -28214,7 +28214,7 @@ was already a set of user-defined units in your Calc init file, it is replaced by the new set. (@xref{General Mode Commands}, for a way to tell Calc to use a different file for the Calc init file.) -@node Logarithmic Units, Musical Notes, User-Defined Units, Units +@node Logarithmic Units @section Logarithmic Units The units @code{dB} (decibels) and @code{Np} (nepers) are logarithmic @@ -28453,7 +28453,7 @@ number; the @kbd{l /} (@code{calc-lu-divide}) [@code{lupdiv}] and unit by a number. Note that the reference quantities don't play a role in this arithmetic. -@node Musical Notes, , Logarithmic Units, Units +@node Musical Notes @section Musical Notes Calc can convert between musical notes and their associated @@ -28521,7 +28521,7 @@ notation @code{B_3 + 99.9962592773 cents}; with the default value of @code{1}, Calc converts @code{261.625 Hz} to @code{C_4}. -@node Store and Recall, Graphics, Units, Top +@node Store and Recall @chapter Storing and Recalling @noindent @@ -28538,7 +28538,7 @@ to variables use the @kbd{s} prefix key. * Evaluates-To Operator:: @end menu -@node Storing Variables, Recalling Variables, Store and Recall, Store and Recall +@node Storing Variables @section Storing Variables @noindent @@ -28766,7 +28766,7 @@ stored in the Calc variable @code{pi}. If one of the other special variables, @code{inf}, @code{uinf} or @code{nan}, is given a value, its original behavior can be restored by voiding it with @kbd{s u}. -@node Recalling Variables, Operations on Variables, Storing Variables, Store and Recall +@node Recalling Variables @section Recalling Variables @noindent @@ -28789,7 +28789,7 @@ latter will produce an error message. The @kbd{r} prefix may be followed by a digit, so that @kbd{r 9} is equivalent to @kbd{s r 9}. -@node Operations on Variables, Let Command, Recalling Variables, Store and Recall +@node Operations on Variables @section Other Operations on Variables @noindent @@ -28946,7 +28946,7 @@ omits the same set of variables as @w{@kbd{s p @key{RET}}}; the difference is that @kbd{s i} will store the variables in any buffer, and it also stores in a more human-readable format.) -@node Let Command, Evaluates-To Operator, Operations on Variables, Store and Recall +@node Let Command @section The Let Command @noindent @@ -28984,7 +28984,7 @@ example, letting @expr{n=2} in @samp{f(n pi)} with @kbd{a b} will produce @samp{f(2 pi)}, whereas @kbd{s l} would give @samp{f(6.28)} since the evaluation step will also evaluate @code{pi}. -@node Evaluates-To Operator, , Let Command, Store and Recall +@node Evaluates-To Operator @section The Evaluates-To Operator @noindent @@ -29110,7 +29110,7 @@ and value from the stack and replaces them with an assignment. @TeX{} language output. The @dfn{eqn} mode gives similar treatment to @samp{=>}. -@node Graphics, Kill and Yank, Store and Recall, Top +@node Graphics @chapter Graphics @noindent @@ -29141,7 +29141,7 @@ POSIX-compatible terminal. * Devices:: @end menu -@node Basic Graphics, Three Dimensional Graphics, Graphics, Graphics +@node Basic Graphics @section Basic Graphics @noindent @@ -29227,7 +29227,7 @@ to use @kbd{g c} if you don't want to---if you give another @kbd{g f} or @kbd{g p} command later on, it will reuse the existing graphics window if there is one. -@node Three Dimensional Graphics, Managing Curves, Basic Graphics, Graphics +@node Three Dimensional Graphics @section Three-Dimensional Graphics @kindex g F @@ -29295,7 +29295,7 @@ helix (a three-dimensional spiral). As for @kbd{g f}, each of ``x'', ``y'', and ``z'' may instead be variables containing the relevant data. -@node Managing Curves, Graphics Options, Three Dimensional Graphics, Graphics +@node Managing Curves @section Managing Curves @noindent @@ -29454,7 +29454,7 @@ Provided everything is set up properly, @kbd{g p} will plot to the screen unless you have specified otherwise and @kbd{g P} will always plot to the printer. -@node Graphics Options, Devices, Managing Curves, Graphics +@node Graphics Options @section Graphics Options @noindent @@ -29620,7 +29620,7 @@ lines, and the third curve to have lines in style 3. Point styles will still be assigned automatically, but you could store another vector in @code{PointStyles} to define them, too. -@node Devices, , Graphics Options, Graphics +@node Devices @section Graphical Devices @noindent @@ -29813,7 +29813,7 @@ except that it also views the @file{*Gnuplot Trail*} buffer so that you can see the process being killed. This is better if you are killing GNUPLOT because you think it has gotten stuck. -@node Kill and Yank, Keypad Mode, Graphics, Top +@node Kill and Yank @chapter Kill and Yank Functions @noindent @@ -29833,7 +29833,7 @@ work with Calc from a regular editing buffer. @xref{Embedded Mode}. * X Cut and Paste:: @end menu -@node Killing From Stack, Yanking Into Stack, Kill and Yank, Kill and Yank +@node Killing From Stack @section Killing from the Stack @noindent @@ -29877,7 +29877,7 @@ with no argument copies only the number itself into the kill ring, whereas @kbd{C-k} with a prefix argument of 1 copies the number with its trailing newline. -@node Yanking Into Stack, Saving Into Registers, Killing From Stack, Kill and Yank +@node Yanking Into Stack @section Yanking into the Stack @noindent @@ -29909,7 +29909,7 @@ allow the text being yanked to be read in a different base (such as if the text is an algebraic expression), then the prefix will have no effect. -@node Saving Into Registers, Inserting From Registers, Yanking Into Stack, Kill and Yank +@node Saving Into Registers @section Saving into Registers @noindent @@ -29943,7 +29943,7 @@ region to the beginning of the register contents. Both commands take @kbd{C-u} arguments, which will cause the region to be deleted after being added to the register. -@node Inserting From Registers, Grabbing From Buffers, Saving Into Registers, Kill and Yank +@node Inserting From Registers @section Inserting from Registers @noindent @kindex r i @@ -29955,7 +29955,7 @@ within Calc, then the full internal structure of the contents will be inserted into the Calculator, otherwise whatever text is in the register is reparsed and then inserted into the Calculator. -@node Grabbing From Buffers, Yanking Into Buffers, Inserting From Registers, Kill and Yank +@node Grabbing From Buffers @section Grabbing from Other Buffers @noindent @@ -30072,7 +30072,7 @@ handy way to find the product of a vector or matrix of numbers. @xref{Statistical Operations}. Another approach would be to use an explicit column reduction command, @kbd{V R : *}. -@node Yanking Into Buffers, X Cut and Paste, Grabbing From Buffers, Kill and Yank +@node Yanking Into Buffers @section Yanking into Other Buffers @noindent @@ -30126,7 +30126,7 @@ The @kbd{C-x * y} key sequence is equivalent to @kbd{y} except that it can be typed anywhere, not just in Calc. This provides an easy way to guarantee that Calc knows which editing buffer you want to use! -@node X Cut and Paste, , Yanking Into Buffers, Kill and Yank +@node X Cut and Paste @section X Cut and Paste @noindent @@ -30155,7 +30155,7 @@ whole line. So you can usually transfer a single number into Calc just by double-clicking on it in the shell, then middle-clicking in the Calc window. -@node Keypad Mode, Embedded Mode, Kill and Yank, Top +@node Keypad Mode @chapter Keypad Mode @noindent @@ -30207,7 +30207,7 @@ original buffer. * Keypad Modes Menu:: @end menu -@node Keypad Main Menu, Keypad Functions Menu, Keypad Mode, Keypad Mode +@node Keypad Main Menu @section Main Menu @smallexample @@ -30338,7 +30338,7 @@ running standalone (the @code{full-calc-keypad} command appeared in the command line that started Emacs), then @kbd{OFF} is replaced with @kbd{EXIT}; clicking on this actually exits Emacs itself. -@node Keypad Functions Menu, Keypad Binary Menu, Keypad Main Menu, Keypad Mode +@node Keypad Functions Menu @section Functions Menu @smallexample @@ -30381,7 +30381,7 @@ same limit as last time. @key{NXTP} finds the next prime after a number. @kbd{INV NXTP} finds the previous prime. -@node Keypad Binary Menu, Keypad Vectors Menu, Keypad Functions Menu, Keypad Mode +@node Keypad Binary Menu @section Binary Menu @smallexample @@ -30414,7 +30414,7 @@ and allows you to enter a new word size. You can respond to the prompt using either the keyboard or the digits and @key{ENTER} from the keypad. The initial word size is 32 bits. -@node Keypad Vectors Menu, Keypad Modes Menu, Keypad Binary Menu, Keypad Mode +@node Keypad Vectors Menu @section Vectors Menu @smallexample @@ -30496,7 +30496,7 @@ With @key{INV}, @key{HYP}, or @key{INV} and @key{HYP}, the @kbd{"x"} key pushes the variable names @expr{y}, @expr{z}, and @expr{t}, respectively. -@node Keypad Modes Menu, , Keypad Vectors Menu, Keypad Mode +@node Keypad Modes Menu @section Modes Menu @smallexample @@ -30552,7 +30552,7 @@ The @key{STO} and @key{RCL} keys are analogous to @kbd{s t} and variables are not available in Keypad mode.) You can also use, for example, @kbd{STO + 3} to add to register 3. -@node Embedded Mode, Programming, Keypad Mode, Top +@node Embedded Mode @chapter Embedded Mode @noindent @@ -30569,7 +30569,7 @@ linked to the stack and this copying is taken care of automatically. * Customizing Embedded Mode:: @end menu -@node Basic Embedded Mode, More About Embedded Mode, Embedded Mode, Embedded Mode +@node Basic Embedded Mode @section Basic Embedded Mode @noindent @@ -30733,7 +30733,7 @@ own Undo command (typed before you turn Embedded mode back off) will not do you any good, because as far as Calc is concerned you haven't done anything with this formula yet. -@node More About Embedded Mode, Assignments in Embedded Mode, Basic Embedded Mode, Embedded Mode +@node More About Embedded Mode @section More About Embedded Mode @noindent @@ -30917,7 +30917,7 @@ embedded formula at the current point as if by @kbd{`} (@code{calc-edit}). Embedded mode does not have to be enabled for this to work. Press @kbd{C-c C-c} to finish the edit, or @kbd{C-x k} to cancel. -@node Assignments in Embedded Mode, Mode Settings in Embedded Mode, More About Embedded Mode, Embedded Mode +@node Assignments in Embedded Mode @section Assignments in Embedded Mode @noindent @@ -31143,7 +31143,7 @@ Operator}. When you turn automatic recomputation back on, the stack will be updated but the Embedded buffer will not; you must use @kbd{C-x * u} to update the buffer by hand. -@node Mode Settings in Embedded Mode, Customizing Embedded Mode, Assignments in Embedded Mode, Embedded Mode +@node Mode Settings in Embedded Mode @section Mode Settings in Embedded Mode @kindex m e @@ -31288,7 +31288,7 @@ annotations at all. When Embedded mode is not enabled, mode-recording modes except for @code{Save} have no effect. -@node Customizing Embedded Mode, , Mode Settings in Embedded Mode, Embedded Mode +@node Customizing Embedded Mode @section Customizing Embedded Mode @noindent @@ -31440,7 +31440,7 @@ is simply a newline, @code{"\n"}, but may be different for different major modes. If you change this, it is a good idea still to end with a newline so that mode annotations will appear on lines by themselves. -@node Programming, Copying, Embedded Mode, Top +@node Programming @chapter Programming @noindent @@ -31491,7 +31491,7 @@ described elsewhere; @pxref{User-Defined Compositions}.) * Lisp Definitions:: @end menu -@node Creating User Keys, Keyboard Macros, Programming, Programming +@node Creating User Keys @section Creating User Keys @noindent @@ -31566,7 +31566,7 @@ of a user key. This works for keys that have been defined by either keyboard macros or formulas; further details are contained in the relevant following sections. -@node Keyboard Macros, Invocation Macros, Creating User Keys, Programming +@node Keyboard Macros @section Programming with Keyboard Macros @noindent @@ -31609,7 +31609,7 @@ analogous to those provided by a traditional programmable calculator. * Queries in Macros:: @end menu -@node Naming Keyboard Macros, Conditionals in Macros, Keyboard Macros, Keyboard Macros +@node Naming Keyboard Macros @subsection Naming Keyboard Macros @noindent @@ -31659,7 +31659,7 @@ of spelled-out keystrokes and defines it as the current keyboard macro. It is a convenient way to define a keyboard macro that has been stored in a file, or to define a macro without executing it at the same time. -@node Conditionals in Macros, Loops in Macros, Naming Keyboard Macros, Keyboard Macros +@node Conditionals in Macros @subsection Conditionals in Keyboard Macros @noindent @@ -31735,7 +31735,7 @@ If Calc gets stuck while skipping characters during the definition of a macro, type @kbd{Z C-g} to cancel the definition. (Typing plain @kbd{C-g} actually adds a @kbd{C-g} keystroke to the macro.) -@node Loops in Macros, Local Values in Macros, Conditionals in Macros, Keyboard Macros +@node Loops in Macros @subsection Loops in Keyboard Macros @noindent @@ -31828,7 +31828,7 @@ as easily as in a macro definition. @xref{Conditionals in Macros}, for some additional notes about conditional and looping commands. -@node Local Values in Macros, Queries in Macros, Loops in Macros, Keyboard Macros +@node Local Values in Macros @subsection Local Values in Macros @noindent @@ -31893,7 +31893,7 @@ The contents of the stack and trail, values of non-quick variables, and other settings such as the language mode and the various display modes, are @emph{not} affected by @kbd{Z `} and @kbd{Z '}. -@node Queries in Macros, , Local Values in Macros, Keyboard Macros +@node Queries in Macros @subsection Queries in Keyboard Macros @c @noindent @@ -31933,7 +31933,7 @@ keyboard input during a keyboard macro. In particular, you can use any Calculator operations interactively before pressing @kbd{C-M-c} to return control to the keyboard macro. -@node Invocation Macros, Algebraic Definitions, Keyboard Macros, Programming +@node Invocation Macros @section Invocation Macros @kindex C-x * z @@ -31966,7 +31966,7 @@ The @kbd{m m} command saves the last invocation macro defined by @kbd{Z I} along with all the other Calc mode settings. @xref{General Mode Commands}. -@node Algebraic Definitions, Lisp Definitions, Invocation Macros, Programming +@node Algebraic Definitions @section Programming with Formulas @noindent @@ -32078,7 +32078,7 @@ default simplifications cures this problem: The definition will be stored in symbolic form without ever activating the @code{deriv} function. Press @kbd{m D} to turn the default simplifications back on afterwards. -@node Lisp Definitions, , Algebraic Definitions, Programming +@node Lisp Definitions @section Programming with Lisp @noindent @@ -32114,7 +32114,7 @@ for the true Lisp enthusiast. * Internals:: @end menu -@node Defining Functions, Defining Simple Commands, Lisp Definitions, Lisp Definitions +@node Defining Functions @subsection Defining New Functions @noindent @@ -32335,7 +32335,7 @@ property are @code{defmath} calls, @code{define-key} calls that modify the Calc key map, and any calls that redefine things defined inside Calc. Ordinary @code{defun}s need not be enclosed with @code{calc-define}. -@node Defining Simple Commands, Defining Stack Commands, Defining Functions, Lisp Definitions +@node Defining Simple Commands @subsection Defining New Simple Commands @noindent @@ -32497,7 +32497,7 @@ decreases the precision. (run-hooks 'calc-check-defines) @end smallexample -@node Defining Stack Commands, Argument Qualifiers, Defining Simple Commands, Lisp Definitions +@node Defining Stack Commands @subsection Defining New Stack-Based Commands @noindent @@ -32599,7 +32599,7 @@ number of objects to remove from the stack and pass to the function. In this case, the integer @var{num} serves as a default number of arguments to be used when no prefix is supplied. -@node Argument Qualifiers, Example Definitions, Defining Stack Commands, Lisp Definitions +@node Argument Qualifiers @subsection Argument Qualifiers @noindent @@ -32686,7 +32686,7 @@ expands to which performs the necessary checks and conversions before executing the body of the function. -@node Example Definitions, Calling Calc from Your Programs, Argument Qualifiers, Lisp Definitions +@node Example Definitions @subsection Example Definitions @noindent @@ -32699,7 +32699,7 @@ These programs make use of some of the Calculator's internal functions; * Sine Example:: @end menu -@node Bit Counting Example, Sine Example, Example Definitions, Example Definitions +@node Bit Counting Example @subsubsection Bit-Counting @noindent @@ -32739,7 +32739,7 @@ Emacs Lisp function: count)) @end smallexample -@node Sine Example, , Bit Counting Example, Example Definitions +@node Sine Example @subsubsection The Sine Function @noindent @@ -32823,7 +32823,7 @@ it carefully as shown in this second example. For quick-and-dirty programs, when you know that your own use of the sine function will never encounter a large argument, a simpler program like the first one shown is fine. -@node Calling Calc from Your Programs, Internals, Example Definitions, Lisp Definitions +@node Calling Calc from Your Programs @subsection Calling Calc from Your Lisp Programs @noindent @@ -33217,7 +33217,7 @@ Note the use of @code{insert-before-markers} when changing between ``F'' and ``C'', so that the character winds up before the cursor instead of after it. -@node Internals, , Calling Calc from Your Programs, Lisp Definitions +@node Internals @subsection Calculator Internals @noindent @@ -33257,7 +33257,7 @@ you can't prove this file will already be loaded. * Hooks:: @end menu -@node Data Type Formats, Interactive Lisp Functions, Internals, Internals +@node Data Type Formats @subsubsection Data Type Formats @noindent @@ -33377,7 +33377,7 @@ functions which are the outer-level call in an expression whose value is about to be pushed on the stack; this feature is considered obsolete and is not used by any built-in Calc functions.) -@node Interactive Lisp Functions, Stack Lisp Functions, Data Type Formats, Internals +@node Interactive Lisp Functions @subsubsection Interactive Functions @noindent @@ -33438,7 +33438,7 @@ i.e., if the Inverse (@kbd{I} key) flag was set. This predicate is the analogous function for the @kbd{H} key. @end defun -@node Stack Lisp Functions, Predicates, Interactive Lisp Functions, Internals +@node Stack Lisp Functions @subsubsection Stack-Oriented Functions @noindent @@ -33625,7 +33625,7 @@ is suppressed, but a flag is set so that the entire stack will be refreshed rather than just the top few elements when the macro finishes.) @end defun -@node Predicates, Computational Lisp Functions, Stack Lisp Functions, Internals +@node Predicates @subsubsection Predicates @noindent @@ -33893,7 +33893,7 @@ This signals an error that will be reported as a floating-point overflow. This signals a floating-point underflow. @end defun -@node Computational Lisp Functions, Vector Lisp Functions, Predicates, Internals +@node Computational Lisp Functions @subsubsection Computational Functions @noindent @@ -34233,7 +34233,7 @@ it returns 1 or 3. If @var{n} is anything else, this function returns @code{nil}. @end defun -@node Vector Lisp Functions, Symbolic Lisp Functions, Computational Lisp Functions, Internals +@node Vector Lisp Functions @subsubsection Vector Functions @noindent @@ -34370,7 +34370,7 @@ is true, with the side effect of exchanging the first two rows of @var{m}. @end defun -@node Symbolic Lisp Functions, Formatting Lisp Functions, Vector Lisp Functions, Internals +@node Symbolic Lisp Functions @subsubsection Symbolic Functions @noindent @@ -34941,7 +34941,7 @@ Return a copy of @var{expr} with everything but units variables replaced by ones. @end defun -@node Formatting Lisp Functions, Hooks, Symbolic Lisp Functions, Internals +@node Formatting Lisp Functions @subsubsection I/O and Formatting Functions @noindent @@ -35087,7 +35087,7 @@ If composition @var{c} is a ``flat'' composition, return the last @comment @noindent @comment (This section is currently unfinished.) -@node Hooks, , Formatting Lisp Functions, Internals +@node Hooks @subsubsection Hooks @noindent @@ -35242,15 +35242,15 @@ used the first time, your hook should add a variable to the list and also call @code{make-local-variable} itself. @end defvar -@node Copying, GNU Free Documentation License, Programming, Top +@node Copying @appendix GNU GENERAL PUBLIC LICENSE @include gpl.texi -@node GNU Free Documentation License, Customizing Calc, Copying, Top +@node GNU Free Documentation License @appendix GNU Free Documentation License @include doclicense.texi -@node Customizing Calc, Reporting Bugs, GNU Free Documentation License, Top +@node Customizing Calc @appendix Customizing Calc The usual prefix for Calc is the key sequence @kbd{C-x *}. If you wish @@ -35644,7 +35644,7 @@ choose from, or the user can enter their own date. The default value of @code{calc-gregorian-switch} is @code{nil}. @end defvar -@node Reporting Bugs, Summary, Customizing Calc, Top +@node Reporting Bugs @appendix Reporting Bugs @noindent @@ -35669,7 +35669,7 @@ The latest version of Calc is available from Savannah, in the Emacs repository. See @uref{https://savannah.gnu.org/projects/emacs}. @c [summary] -@node Summary, Key Index, Reporting Bugs, Top +@node Summary @appendix Calc Summary @noindent @@ -36940,12 +36940,12 @@ grabs the @var{n}th mode value only. @c [end-summary] -@node Key Index, Command Index, Summary, Top +@node Key Index @unnumbered Index of Key Sequences @printindex ky -@node Command Index, Function Index, Key Index, Top +@node Command Index @unnumbered Index of Calculator Commands Since all Calculator commands begin with the prefix @samp{calc-}, the @@ -36955,7 +36955,7 @@ types @samp{calc-} for you. Thus, @kbd{x last-args} is short for @printindex pg -@node Function Index, Concept Index, Command Index, Top +@node Function Index @unnumbered Index of Algebraic Functions This is a list of built-in functions and operators usable in algebraic @@ -36968,12 +36968,12 @@ Calc keystrokes and can also be found in the Calc Summary. @printindex tp -@node Concept Index, Variable Index, Function Index, Top +@node Concept Index @unnumbered Concept Index @printindex cp -@node Variable Index, Lisp Function Index, Concept Index, Top +@node Variable Index @unnumbered Index of Variables The variables in this list that do not contain dashes are accessible @@ -36985,7 +36985,7 @@ in your Calc init file or @file{.emacs} file. @printindex vr -@node Lisp Function Index, , Variable Index, Top +@node Lisp Function Index @unnumbered Index of Lisp Math Functions The following functions are meant to be used with @code{defmath}, not diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi index a53f879c961..a0f316f8480 100644 --- a/doc/misc/ede.texi +++ b/doc/misc/ede.texi @@ -67,7 +67,7 @@ modify this GNU manual.'' @contents -@node Top, EDE Project Concepts, (dir), (dir) +@node Top @top EDE @comment node-name, next, previous, up @@ -95,7 +95,7 @@ learn and adopt GNU ways of doing things. * GNU Free Documentation License:: The license for this documentation. @end menu -@node EDE Project Concepts, EDE Mode, Top, Top +@node EDE Project Concepts @chapter @ede{} Project Concepts @ede{} is a generic interface for managing projects. It specifies a @@ -130,7 +130,7 @@ of search to files in a single target, or to discover the location of documentation or interface files. @ede{} can provide this information. -@node EDE Mode, Quick Start, EDE Project Concepts, Top +@node EDE Mode @chapter @ede{} Mode @ede{} is implemented as a minor mode, which augments other modes such @@ -147,7 +147,7 @@ bar. This menu provides several menu items for high-level @ede{} commands. These menu items, and their corresponding keybindings, are independent of the type of project you are actually working on. -@node Quick Start, Creating a project, EDE Mode, Top +@node Quick Start @chapter Quick Start Once you have @ede{} enabled, you can create a project. This chapter @@ -443,7 +443,7 @@ C-c . R @key{RET} @key{RET} If your program takes command line arguments, you can type them in when it offers the command line you want to use to run your program. -@node Creating a project, Modifying your project, Quick Start, Top +@node Creating a project @chapter Creating a project To create a new project, first visit a file that you want to include @@ -488,7 +488,7 @@ the top-most project's makefile as a starting place for the build. How the toplevel project handles subprojects in the build process is dependent on that project's type. -@node Modifying your project, Building and Debugging, Creating a project, Top +@node Modifying your project @chapter Modifying your project In this chapter, we describe the generic features for manipulating @@ -504,7 +504,7 @@ detailed information about exactly what these features do. * EDE Project Features:: @end menu -@node Add/Remove target, Add/Remove files, Modifying your project, Modifying your project +@node Add/Remove target @section Add/Remove target To create a new target, type @kbd{C-c . t} (@code{ede-new-target}) or @@ -520,7 +520,7 @@ To remove a target from the project, type @kbd{M-x ede-delete-target}, or use the @samp{Remove Target} menu item in the @samp{Project Options} submenu. -@node Add/Remove files, Customize Features, Add/Remove target, Modifying your project +@node Add/Remove files @section Add/Remove files To add the current file to an existing target, type @kbd{C-c . a} @@ -541,7 +541,7 @@ not wish to add the file to any target, you can choose @samp{none}. You can customize this behavior with the variable @command{ede-auto-add-method}. -@node Customize Features, Project Local Variables, Add/Remove files, Modifying your project +@node Customize Features @section Customize Features A project, and its targets, are objects using the @samp{EIEIO} object @@ -561,7 +561,7 @@ object, you can edit the file by typing @kbd{C-c . e} (@code{ede-edit-file-target}). You should ``rescan'' the project afterwards (@pxref{Miscellaneous commands}). -@node Project Local Variables, EDE Project Features, Customize Features, Modifying your project +@node Project Local Variables @section Project Local Variables EDE projects can store and manager project local variables. The @@ -598,7 +598,7 @@ the format is an association list. For example: (compile-command . "make -f MyCustomMakefile all"))) @end example -@node EDE Project Features, , Project Local Variables, Modifying your project +@node EDE Project Features @section EDE Project Features This section details user facing features of an @ede{} @samp{Make} @@ -618,7 +618,7 @@ additional details. * Configurations:: @end menu -@node Changing Compilers and Flags, Configurations, EDE Project Features, EDE Project Features +@node Changing Compilers and Flags @subsection Changing Compilers and Flags Targets that build stuff need compilers. To change compilers, you @@ -638,7 +638,7 @@ see what commands are inserted. Once you have determined the variable you need to modify, you can add a configuration for it. @xref{Configurations}. -@node Configurations, , Changing Compilers and Flags, EDE Project Features +@node Configurations @subsection Configurations Configurations specify different ways to build a project. For @@ -658,7 +658,7 @@ block for ``configurations''. Add a new named configuration here. To switch between different active configurations, modify the ``configuration default'' slot. -@node Building and Debugging, Miscellaneous commands, Modifying your project, Top +@node Building and Debugging @chapter Building and Debugging @ede{} provides the following ``project-aware'' compilation and @@ -677,7 +677,7 @@ Build a distribution file for your project. These commands are also available from the @samp{Development} menu. -@node Miscellaneous commands, Extending EDE, Building and Debugging, Top +@node Miscellaneous commands @chapter Miscellaneous commands If you opt to go in and edit @ede{} project files directly---for @@ -716,7 +716,7 @@ To activate the speedbar in this mode, type @kbd{C-c . s} * Simple projects:: Projects @ede{} doesn't manage. @end menu -@node Make and Automake projects, Automake direct projects, Miscellaneous commands, Miscellaneous commands +@node Make and Automake projects @section Make and Automake projects A project of @samp{ede-project} type creates a file called @@ -728,7 +728,7 @@ in @samp{Makefile} mode, then this project will autogenerate a routines will also import and maintain a configure.am script and a host of other files required by Automake. -@node Automake direct projects, Simple projects, Make and Automake projects, Miscellaneous commands +@node Automake direct projects @section Automake direct projects The project type that reads @file{Makefile.am} directly is derived @@ -738,7 +738,7 @@ distributed independently. This mode eventually became @ede{}. The not generate them automatically, or create new ones. As such, it is useful as a browsing tool, or as maintenance in managing file lists. -@node Simple projects, , Automake direct projects, Miscellaneous commands +@node Simple projects @section Simple Projects There is a wide array of simple projects. In this case a simple @@ -756,7 +756,7 @@ belonging to a project, but doesn't provide many features of a typical * Custom Locate:: Customizing how to locate files in a simple project @end menu -@node ede-cpp-root, ede-emacs, Simple projects, Simple projects +@node ede-cpp-root @subsection ede-cpp-root The @code{ede-cpp-root} project type allows you to create a single @@ -897,7 +897,7 @@ of project. @xref{ede-cpp-root-project}, for details about the class that defines the @code{ede-cpp-root} project type. -@node ede-emacs, ede-linux, ede-cpp-root, Simple projects +@node ede-emacs @subsection ede-emacs The @code{ede-emacs} project automatically identifies an Emacs source @@ -906,7 +906,7 @@ tree, and enables EDE project mode for it. It pre-populates the C Preprocessor symbol map for correct parsing, and has an optimized include file identification function. -@node ede-linux, ede-generic-project, ede-emacs, Simple projects +@node ede-linux @subsection ede-linux The @code{ede-linux} project will automatically identify a Linux @@ -921,7 +921,7 @@ directory and its architecture, respectively. The default is to assume that the build happens in the source directory and to auto-detect the architecture; if the auto-detection fails, you will be asked. -@node ede-generic-project, Custom Locate, ede-linux, Simple projects +@node ede-generic-project @subsection ede-generic-project The @code{ede-generic-project} is a project system that makes it easy @@ -972,7 +972,7 @@ This example project will detect any directory with the file Customization of the project will allow you to make build and debug commands more precise. -@node Custom Locate, , ede-generic-project, Simple projects +@node Custom Locate @subsection Custom Locate The various simple project styles all have one major drawback, which @@ -1014,7 +1014,7 @@ simple example. More on idutils and cscope is in the CEDET manual, and they each have their own section. -@node Extending EDE, GNU Free Documentation License, Miscellaneous commands, Top +@node Extending EDE @chapter Extending @ede{} This chapter is intended for users who want to write new parts or fix @@ -1069,7 +1069,7 @@ examples. * Compilers:: Details of compiler classes. @end menu -@node Development Overview, Detecting a Project, Extending EDE, Extending EDE +@node Development Overview @section Development Overview @ede{} is made up of a series of classes implemented with @eieio{}. @@ -1161,7 +1161,7 @@ Here is a high-level UML diagram for the @ede{} system created with @cogre{}.. @end example -@node Detecting a Project, User interface methods, Development Overview, Extending EDE +@node Detecting a Project @section Detecting a Project Project detection happens with the list of @code{ede-project-autoload} @@ -1226,7 +1226,7 @@ to the global list of all projects. All subprojects are then created and assembled into the project data structures. -@node User interface methods, Base project methods, Detecting a Project, Extending EDE +@node User interface methods @section User interface methods These methods are core behaviors associated with user commands. @@ -1258,7 +1258,7 @@ Make a distribution (tar archive) of the project. Rescan a project file, changing the data in the existing objects. @end table -@node Base project methods, Sourcecode objects, User interface methods, Extending EDE +@node Base project methods @section Base project methods These methods are important for querying base information from project @@ -1296,7 +1296,7 @@ stored in. List all documentation a project or target is responsible for. @end table -@node Sourcecode objects, Compiler and Linker objects, Base project methods, Extending EDE +@node Sourcecode objects @section Sourcecode objects @ede{} projects track source file / target associates via source code @@ -1342,7 +1342,7 @@ In this case, the garbage pattern is the same. @xref{Sourcecode}. -@node Compiler and Linker objects, Project, Sourcecode objects, Extending EDE +@node Compiler and Linker objects @section Compiler and Linker objects In order for a target to create a @file{Makefile}, it must know how to @@ -1403,7 +1403,7 @@ See @file{ede-proj-obj.el} for examples of the combination. @defindex sc @defindex cm -@node Project, Targets, Compiler and Linker objects, Extending EDE +@node Project @section Project @menu @@ -1417,7 +1417,7 @@ See @file{ede-proj-obj.el} for examples of the combination. * ede-step-project:: @end menu -@node ede-project-placeholder, ede-project, Project, Project +@node ede-project-placeholder @subsection ede-project-placeholder @pjindex ede-project-placeholder @@ -1503,7 +1503,7 @@ Make sure placeholder @var{THIS} is replaced with the real thing, and pass throu Make sure placeholder @var{THIS} is replaced with the real thing, and pass through. @end deffn -@node ede-project, ede-cpp-root-project, ede-project-placeholder, Project +@node ede-project @subsection ede-project @pjindex ede-project @@ -1789,7 +1789,7 @@ Retrieves the slot @code{menu} from an object of class @code{ede-project} Commit change to local variables in @var{PROJ}. @end deffn -@node ede-cpp-root-project, ede-simple-project, ede-project, Project +@node ede-cpp-root-project @subsection ede-cpp-root-project @pjindex ede-cpp-root-project @@ -1911,7 +1911,7 @@ Within this project @var{PROJ}, find the file @var{NAME}. This knows details about or source tree. @end deffn -@node ede-simple-project, ede-simple-base-project, ede-cpp-root-project, Project +@node ede-simple-project @subsection ede-simple-project @pjindex ede-simple-project @@ -1941,7 +1941,7 @@ No children Commit any change to @var{PROJ} to its file. @end deffn -@node ede-simple-base-project, ede-proj-project, ede-simple-project, Project +@node ede-simple-base-project @subsection ede-simple-base-project @pjindex ede-simple-base-project @@ -1971,7 +1971,7 @@ This one project could control a tree of subdirectories. @table @asis @end table -@node ede-proj-project, project-am-makefile, ede-simple-base-project, Project +@node ede-proj-project @subsection ede-proj-project @pjindex ede-proj-project @@ -2161,7 +2161,7 @@ Return a list of files that constitutes a distribution of @var{THIS} project. Commit change to local variables in @var{PROJ}. @end deffn -@node project-am-makefile, ede-step-project, ede-proj-project, Project +@node project-am-makefile @subsection project-am-makefile @pjindex project-am-makefile @@ -2203,7 +2203,7 @@ Despite the fact that this is a method, it depends on the current buffer being in order to provide a smart default target type. @end deffn -@node ede-step-project, , project-am-makefile, Project +@node ede-step-project @subsection ede-step-project @pjindex ede-step-project @@ -2328,7 +2328,7 @@ Return a list of files that constitutes a distribution of @var{THIS} project. Commit change to local variables in @var{PROJ}. @end deffn -@node Targets, Sourcecode, Project, Extending EDE +@node Targets @section Targets @menu @@ -2356,7 +2356,7 @@ Commit change to local variables in @var{PROJ}. @end menu -@node ede-target, ede-proj-target, Targets, Targets +@node ede-target @subsection ede-target @tgindex ede-target @@ -2565,7 +2565,7 @@ Return the name of @var{THIS} target, suitable for make or debug style commands. Retrieves the slot @code{menu} from an object of class @code{ede-target} @end deffn -@node ede-proj-target, ede-proj-target-makefile, ede-target, Targets +@node ede-proj-target @subsection ede-proj-target @tgindex ede-proj-target @@ -2754,7 +2754,7 @@ sources variable. @end deffn -@node ede-proj-target-makefile, semantic-ede-proj-target-grammar, ede-proj-target, Targets +@node ede-proj-target-makefile @subsection ede-proj-target-makefile @tgindex ede-proj-target-makefile @@ -2852,7 +2852,7 @@ Return a list of configuration variables from @var{THIS}. Use @var{CONFIGURATION} as the current configuration to query. @end deffn -@node semantic-ede-proj-target-grammar, ede-proj-target-makefile-objectcode, ede-proj-target-makefile, Targets +@node semantic-ede-proj-target-grammar @subsection semantic-ede-proj-target-grammar @tgindex semantic-ede-proj-target-grammar @@ -2906,7 +2906,7 @@ Argument @var{THIS} is the target that should insert stuff. @end deffn -@node ede-proj-target-makefile-objectcode, ede-proj-target-makefile-archive, semantic-ede-proj-target-grammar, Targets +@node ede-proj-target-makefile-objectcode @subsection ede-proj-target-makefile-objectcode @tgindex ede-proj-target-makefile-objectcode @@ -2968,7 +2968,7 @@ Argument @var{THIS} is the target to get sources from. @end deffn -@node ede-proj-target-makefile-archive, ede-proj-target-makefile-program, ede-proj-target-makefile-objectcode, Targets +@node ede-proj-target-makefile-archive @subsection ede-proj-target-makefile-archive @tgindex ede-proj-target-makefile-archive @@ -3011,7 +3011,7 @@ Makefile.am generator, so use it to add this important bin program. @end deffn -@node ede-proj-target-makefile-program, ede-proj-target-makefile-shared-object, ede-proj-target-makefile-archive, Targets +@node ede-proj-target-makefile-program @subsection ede-proj-target-makefile-program @tgindex ede-proj-target-makefile-program @@ -3090,7 +3090,7 @@ Insert bin_PROGRAMS variables needed by target @var{THIS}. @end deffn -@node ede-proj-target-makefile-shared-object, ede-proj-target-elisp, ede-proj-target-makefile-program, Targets +@node ede-proj-target-makefile-shared-object @subsection ede-proj-target-makefile-shared-object @tgindex ede-proj-target-makefile-shared-object @@ -3150,7 +3150,7 @@ Makefile.am generator, so use it to add this important bin program. @end deffn -@node ede-proj-target-elisp, ede-proj-target-elisp-autoloads, ede-proj-target-makefile-shared-object, Targets +@node ede-proj-target-elisp @subsection ede-proj-target-elisp @tgindex ede-proj-target-elisp @@ -3226,7 +3226,7 @@ There are standards in Elisp files specifying how the version string is found, such as a @code{-version} variable, or the standard header. @end deffn -@node ede-proj-target-elisp-autoloads, ede-proj-target-makefile-miscelaneous, ede-proj-target-elisp, Targets +@node ede-proj-target-elisp-autoloads @subsection ede-proj-target-elisp-autoloads @tgindex ede-proj-target-elisp-autoloads @@ -3341,7 +3341,7 @@ sources variable. @end deffn -@node ede-proj-target-makefile-miscelaneous, ede-proj-target-makefile-info, ede-proj-target-elisp-autoloads, Targets +@node ede-proj-target-makefile-miscelaneous @subsection ede-proj-target-makefile-miscelaneous @tgindex ede-proj-target-makefile-miscelaneous @@ -3397,7 +3397,7 @@ Return a list of files which @var{THIS} target depends on. @end deffn -@node ede-proj-target-makefile-info, ede-proj-target-scheme, ede-proj-target-makefile-miscelaneous, Targets +@node ede-proj-target-makefile-info @subsection ede-proj-target-makefile-info @tgindex ede-proj-target-makefile-info @@ -3483,7 +3483,7 @@ Does the usual for Makefile mode, but splits source into two variables when working in Automake mode. @end deffn -@node ede-proj-target-scheme, project-am-target, ede-proj-target-makefile-info, Targets +@node ede-proj-target-scheme @subsection ede-proj-target-scheme @tgindex ede-proj-target-scheme @@ -3527,7 +3527,7 @@ Tweak the configure file (current buffer) to accommodate @var{THIS}. @end deffn -@node project-am-target, project-am-objectcode, ede-proj-target-scheme, Targets +@node project-am-target @subsection project-am-target @tgindex project-am-target @@ -3565,7 +3565,7 @@ Run the current project in the debugger. Edit the target associated w/ this file. @end deffn -@node project-am-objectcode, project-am-program, project-am-target, Targets +@node project-am-objectcode @subsection project-am-objectcode @tgindex project-am-objectcode @@ -3610,7 +3610,7 @@ Default target to use when compiling an object code target. There are no default header files. @end deffn -@node project-am-program, project-am-header-noinst, project-am-objectcode, Targets +@node project-am-program @subsection project-am-program @tgindex project-am-program @@ -3648,7 +3648,7 @@ Additional LD args. @end table @end table -@node project-am-header-noinst, project-am-header-inst, project-am-program, Targets +@node project-am-header-noinst @subsection project-am-header-noinst @tgindex project-am-header-noinst @@ -3681,7 +3681,7 @@ No children Return the default macro to 'edit' for this object. @end deffn -@node project-am-header-inst, project-am-lisp, project-am-header-noinst, Targets +@node project-am-header-inst @subsection project-am-header-inst @tgindex project-am-header-inst @@ -3714,7 +3714,7 @@ No children Return the default macro to 'edit' for this object. @end deffn -@node project-am-lisp, project-am-texinfo, project-am-header-inst, Targets +@node project-am-lisp @subsection project-am-lisp @tgindex project-am-lisp @@ -3744,7 +3744,7 @@ No children Return the default macro to 'edit' for this object. @end deffn -@node project-am-texinfo, project-am-man, project-am-lisp, Targets +@node project-am-texinfo @subsection project-am-texinfo @tgindex project-am-texinfo @@ -3795,7 +3795,7 @@ Documentation is not for object @var{THIS}, but is provided by @var{THIS} for ot files in the project. @end deffn -@node project-am-man, , project-am-texinfo, Targets +@node project-am-man @comment node-name, next, previous, up @subsection project-am-man @tgindex project-am-man @@ -3826,7 +3826,7 @@ No children Return the default macro to 'edit' for this object type. @end deffn -@node Sourcecode, Compilers, Targets, Extending EDE +@node Sourcecode @section Sourcecode The source code type is an object designed to associated files with @@ -3837,7 +3837,7 @@ targets. @end menu -@node ede-sourcecode, , Sourcecode, Sourcecode +@node ede-sourcecode @subsection ede-sourcecode @scindex ede-sourcecode @@ -3934,7 +3934,7 @@ Return non-@code{nil} if @var{THIS} will take @var{FILENAME} as an auxiliary . Return non-@code{nil} if @var{THIS} will take @var{FILENAME} as an auxiliary . @end deffn -@node Compilers, , Sourcecode, Extending EDE +@node Compilers @section Compilers The compiler object is designed to associate source code with @@ -3950,7 +3950,7 @@ compile commands. @end menu -@node ede-compilation-program, ede-compiler, Compilers, Compilers +@node ede-compilation-program @subsection ede-compilation-program @cmindex ede-compilation-program @@ -4061,7 +4061,7 @@ Tweak the configure file (current buffer) to accommodate @var{THIS}. @end deffn -@node ede-compiler, ede-object-compiler, ede-compilation-program, Compilers +@node ede-compiler @subsection ede-compiler @cmindex ede-compiler @@ -4169,7 +4169,7 @@ Return a string based on @var{THIS} representing a make object variable. @end deffn -@node ede-object-compiler, ede-linker, ede-compiler, Compilers +@node ede-object-compiler @subsection ede-object-compiler @cmindex ede-object-compiler @@ -4212,7 +4212,7 @@ A variable dedicated to dependency generation. Insert variables needed by the compiler @var{THIS}. @end deffn -@node ede-linker, , ede-object-compiler, Compilers +@node ede-linker @subsection ede-linker @cmindex ede-linker @@ -4274,7 +4274,7 @@ For example, C code uses .o on unix, and Emacs Lisp uses .elc. @end table @end table -@node GNU Free Documentation License, , Extending EDE, Top +@node GNU Free Documentation License @appendix GNU Free Documentation License @include doclicense.texi diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi index cca0d300fa7..e777771cf73 100644 --- a/doc/misc/epa.texi +++ b/doc/misc/epa.texi @@ -42,7 +42,7 @@ modify this GNU manual.'' @contents -@node Top, Overview, (dir), (dir) +@node Top @top EasyPG Assistant user's manual EasyPG Assistant is an Emacs user interface to GNU Privacy Guard @@ -60,8 +60,8 @@ called EasyPG Library. * Overview:: * Quick start:: * Commands:: -* Caching Passphrases:: * GnuPG version compatibility:: +* Caching Passphrases:: * Bug Reports:: * GNU Free Documentation License:: The license for this documentation. * Key Index:: @@ -69,7 +69,7 @@ called EasyPG Library. * Variable Index:: @end menu -@node Overview, Quick start, Top, Top +@node Overview @chapter Overview EasyPG Assistant provides the following features. @@ -83,7 +83,7 @@ EasyPG Assistant provides the following features. @item Automatic encryption/decryption of *.gpg files. @end itemize -@node Quick start, Commands, Overview, Top +@node Quick start @chapter Quick start EasyPG Assistant commands are prefixed by @samp{epa-}. For example, @@ -94,13 +94,15 @@ EasyPG Assistant commands are prefixed by @samp{epa-}. For example, @item To create a cleartext signature of the region, type @kbd{M-x epa-sign-region} @item To encrypt a file, type @kbd{M-x epa-encrypt-file} + +@item To query a key server for keys, type @kbd{M-x epa-search-keys} @end itemize EasyPG Assistant provides several cryptographic features which can be integrated into other Emacs functionalities. For example, automatic encryption/decryption of @file{*.gpg} files. -@node Commands, GnuPG version compatibility, Quick start, Top +@node Commands @chapter Commands This chapter introduces various commands for typical use cases. @@ -112,9 +114,10 @@ This chapter introduces various commands for typical use cases. * Dired integration:: * Mail-mode integration:: * Encrypting/decrypting gpg files:: +* Querying a key server:: @end menu -@node Key management, Cryptographic operations on regions, Commands, Commands +@node Key management @section Key management Probably the first step of using EasyPG Assistant is to browse your keyring. @kbd{M-x epa-list-keys} is corresponding to @samp{gpg @@ -197,7 +200,7 @@ Delete selected keys. If @var{allow-secret} is non-@code{nil}, it also delete the secret keys. @end deffn -@node Cryptographic operations on regions, Cryptographic operations on files, Key management, Commands +@node Cryptographic operations on regions @section Cryptographic operations on regions @deffn Command epa-decrypt-region start end @@ -242,7 +245,7 @@ also ask you whether or not to sign the text before encryption and if you answered yes, it will let you select the signing keys. @end deffn -@node Cryptographic operations on files, Dired integration, Cryptographic operations on regions, Commands +@node Cryptographic operations on files @section Cryptographic operations on files @deffn Command epa-decrypt-file file &optional output @@ -263,7 +266,7 @@ select signing keys, and then a signature type. Encrypt @var{file}. It will let you select recipients. @end deffn -@node Dired integration, Mail-mode integration, Cryptographic operations on files, Commands +@node Dired integration @section Dired integration EasyPG Assistant extends Dired Mode for GNU Emacs to allow users to @@ -302,7 +305,7 @@ Encrypt marked files. @end table -@node Mail-mode integration, Encrypting/decrypting gpg files, Dired integration, Commands +@node Mail-mode integration @section Mail-mode integration EasyPG Assistant provides a minor mode @code{epa-mail-mode} to help @@ -357,7 +360,7 @@ With prefix argument, asks you to select the recipients interactively, whether to sign, and which key(s) to sign with. @end table -@node Encrypting/decrypting gpg files, , Mail-mode integration, Commands +@node Encrypting/decrypting gpg files @section Encrypting/decrypting gpg files By default, every file whose name ends with @file{.gpg} will be treated as encrypted. That is, when you open such a file, the @@ -440,7 +443,22 @@ If non-@code{nil}, disable auto-saving when opening an encrypted file. The default value is @code{t}. @end defvar -@node GnuPG version compatibility, Caching Passphrases, Commands, Top +@node Querying a key server +@section Querying a key server + +The @code{epa-search-keys} command can be used to query a +@acronym{GPG} key server. Emacs will then pop up a buffer that lists +the matches, and you can then fetch (and add) keys to your personal +key ring. + +In the key search buffer, you can use the @kbd{f} command to mark keys +for fetching, and then @kbd{x} to fetch the keys (and incorporate them +into your key ring). + +The @code{epa-keyserver} variable says which server to query. + + +@node GnuPG version compatibility @chapter GnuPG version compatibility As of February 2016, there are three active branches of GnuPG: 2.1, @@ -472,7 +490,7 @@ specifically, with 2.0 (as of 2.0.29), there is no way to avoid the graphical prompt. @end itemize -@node Caching Passphrases, Bug Reports, GnuPG version compatibility, Top +@node Caching Passphrases @chapter Caching Passphrases Typing passphrases is a troublesome task if you frequently open and @@ -512,7 +530,7 @@ To set up elisp passphrase cache, set @code{epa-file-cache-passphrase-for-symmetric-encryption}. @xref{Encrypting/decrypting gpg files}. -@node Bug Reports, GNU Free Documentation License, Caching Passphrases, Top +@node Bug Reports @chapter Bug Reports Bugs and problems with EasyPG Assistant are actively worked on by the @@ -534,19 +552,19 @@ Before reporting the bug, you should set @code{epg-debug} in the of the @file{ *epg-debug*} buffer. Note that the first letter of the buffer name is a whitespace. -@node GNU Free Documentation License, Key Index, Bug Reports, Top +@node GNU Free Documentation License @appendix GNU Free Documentation License @include doclicense.texi -@node Key Index, Function Index, GNU Free Documentation License, Top +@node Key Index @unnumbered Key Index @printindex ky -@node Function Index, Variable Index, Key Index, Top +@node Function Index @unnumbered Function Index @printindex fn -@node Variable Index, , Function Index, Top +@node Variable Index @unnumbered Variable Index @printindex vr diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi index 45a753d43ea..213b69e1ef2 100644 --- a/doc/misc/erc.texi +++ b/doc/misc/erc.texi @@ -557,7 +557,7 @@ and the second element is the file name of the client certificate itself to use when connecting over TLS, or @code{t}, which means that @code{auth-source} will be queried for the private key and the certificate. Authenticating using a TLS client certificate is also -refered to as ``CertFP'' (Certificate Fingerprint) authentication by +referred to as ``CertFP'' (Certificate Fingerprint) authentication by various IRC networks. Examples of use: @@ -588,6 +588,9 @@ line like the following to your authinfo file @example machine chat.freenode.net key /home/bandali/my-cert.key cert /home/bandali/my-cert.crt @end example + +@xref{Help for users,,,auth, Emacs auth-source Library}, for more on the +@file{.authinfo}/@file{.netrc} backend of @code{auth-source}. @end defun @subheading Server diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index a31411ef8e8..7d6fa4cb5ca 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -5230,7 +5230,16 @@ Newsgroups:full @end example to the end of her @file{overview.fmt} file, then you can use that just -as you would the extra headers from the mail groups. +as you would the extra headers from the mail groups. Otherwise, you +have to disable fetching headers with @samp{XOVER}: + +@lisp +(setq nntp-nov-is-evil t + gnus-nov-is-evil t) +@end lisp + +Be aware, though, that this will make entering an @acronym{NNTP} group +much, much slower, so this is not recommended. @node Summary Buffer Mode Line diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi index 308ea3f34c9..62540284312 100644 --- a/doc/misc/mh-e.texi +++ b/doc/misc/mh-e.texi @@ -78,7 +78,7 @@ Public License.'' @html <!-- @end html -@node Top, Preface, (dir), (dir) +@node Top @top The MH-E Manual @html --> @@ -197,7 +197,7 @@ History of MH-E --> @end html -@node Preface, Conventions, Top, Top +@node Preface @unnumbered Preface @cindex Emacs @@ -272,7 +272,7 @@ Bill Wohler <@i{wohler at newt.com}>@* 8 February 1995@* 24 February 2006 -@node Conventions, Getting Started, Preface, Top +@node Conventions @chapter GNU Emacs Terms and Conventions @cindex Emacs @@ -513,7 +513,7 @@ you enter something in the minibuffer, but then you change your mind, type @kbd{C-g} and you'll be back where you started. If you want to exit Emacs entirely, use @kbd{C-x C-c}. -@node Getting Started, Tour Through MH-E, Conventions, Top +@node Getting Started @chapter Getting Started @cindex MH-E, versions @@ -658,7 +658,7 @@ after these variables have been set. This hook can be used the change the value of these variables if you need to run with different values between MH and MH-E. -@node Tour Through MH-E, Using This Manual, Getting Started, Top +@node Tour Through MH-E @chapter Tour Through MH-E @cindex introduction @@ -684,7 +684,7 @@ get the big picture, and then you can read the manual as you wish. * More About MH-E:: @end menu -@node Sending Mail Tour, Reading Mail Tour, Tour Through MH-E, Tour Through MH-E +@node Sending Mail Tour @section Sending Mail @cindex MH-Letter mode @@ -750,7 +750,7 @@ more complete help with the @kbd{C-h m} (@code{describe-mode}) command.}, but at this time we'll only use @kbd{C-c C-c} to send your message. Type @kbd{C-c C-c} now. That's all there is to it! -@node Reading Mail Tour, Processing Mail Tour, Sending Mail Tour, Tour Through MH-E +@node Reading Mail Tour @section Receiving Mail @cindex @command{inc} @@ -823,7 +823,7 @@ This is a test message to get the wheels churning... If you typed a long message, you can view subsequent pages with @key{SPC} and previous pages with @key{DEL}. -@node Processing Mail Tour, Leaving MH-E, Reading Mail Tour, Tour Through MH-E +@node Processing Mail Tour @section Processing Mail @cindex processing mail @@ -949,7 +949,7 @@ available via the prefix characters, type the prefix character followed by a @kbd{?}, for example, @kbd{F ?}. More complete help is available with the @kbd{C-h m} (@code{describe-mode}) command. -@node Leaving MH-E, More About MH-E, Processing Mail Tour, Tour Through MH-E +@node Leaving MH-E @section Leaving MH-E @cindex Emacs, quitting @@ -988,7 +988,7 @@ already exists, so you can use @samp{folders -recurse -fast} in a script to copy all of your messages into a single file, or using the @samp{-file} argument, a file for each folder. -@node More About MH-E, , Leaving MH-E, Tour Through MH-E +@node More About MH-E @section More About MH-E These are the basic commands to get you going, but there are plenty @@ -1054,7 +1054,7 @@ Place messages in a file (@pxref{Files and Pipes}). Remember that you can also use MH commands when you're not running MH-E (and when you are!). -@node Using This Manual, Incorporating Mail, Tour Through MH-E, Top +@node Using This Manual @chapter Using This Manual This chapter begins the meat of the manual which goes into more detail @@ -1150,7 +1150,7 @@ your initials. (Unless, of course, your initials happen to be @emph{mh}!) * Folder Selection:: @end menu -@node Options, Ranges, Using This Manual, Using This Manual +@node Options @section Options @cindex Emacs, customizing @@ -1210,7 +1210,7 @@ function. Try entering @kbd{M-x customize-group @key{RET} mh the MH-E customization groups. Another way to view the MH-E customization group is to use @kbd{M-x mh-customize @key{RET}}. -@node Ranges, Folder Selection, Options, Using This Manual +@node Ranges @section Ranges @c Sync with mh-folder-mode docstring. @@ -1279,7 +1279,7 @@ interpret input such as @samp{200} as @samp{last:200} if the default). If you need to scan just the message 200, then use the range @samp{200:1} or @samp{200-200}. -@node Folder Selection, , Ranges, Using This Manual +@node Folder Selection @section Folder Selection @cindex completion, folders @@ -1359,7 +1359,7 @@ folder name used is suggested. This is useful if you get mail from various people for whom you have an alias, but file them all in the same project folder. -@node Incorporating Mail, Reading Mail, Using This Manual, Top +@node Incorporating Mail @chapter Incorporating Your Mail @cindex @samp{Folder} menu @@ -1535,7 +1535,7 @@ the message numbers from outside of MH-E. @end group @end smalllisp -@node Reading Mail, Folders, Incorporating Mail, Top +@node Reading Mail @chapter Reading Your Mail @cindex @samp{+inbox} @@ -2003,7 +2003,7 @@ detail in the following sections. * Miscellaneous Commands and Options:: @end menu -@node Viewing, Viewing Attachments, Reading Mail, Reading Mail +@node Viewing @section Viewing Your Mail @findex mh-header-display @@ -2276,7 +2276,7 @@ of @code{"@{show-%s@} %d"} yields a mode line of -----@{show-+inbox@} 4 (MH-Show)--Bot-------------------------------- @end smallexample -@node Viewing Attachments, HTML, Viewing, Reading Mail +@node Viewing Attachments @section Viewing Attachments @cindex attachments @@ -2516,7 +2516,7 @@ Article Buttons} and in the @cite{The Gnus Manual}. @end ifnotinfo -@node HTML, Digests, Viewing Attachments, Reading Mail +@node HTML @section HTML @cindex HTML @@ -2670,7 +2670,7 @@ buffer, including HTML buffers. (global-set-key [S-mouse-2] 'browse-url-at-mouse) @end smalllisp -@node Digests, Reading PGP, HTML, Reading Mail +@node Digests @section Digests @cindex digests @@ -2714,7 +2714,7 @@ preceded with a @samp{>} so that your reply can't create the @samp{To:} field yourself. This is described later (@pxref{Editing Drafts}). -@node Reading PGP, Printing, Digests, Reading Mail +@node Reading PGP @section Signed and Encrypted Messages @cindex GPG @@ -2848,7 +2848,7 @@ See @cite{The PGG Manual}}. @end ifhtml -@node Printing, Files and Pipes, Reading PGP, Reading Mail +@node Printing @section Printing Your Mail @cindex printing @@ -2933,7 +2933,7 @@ If you do this, do not delete the message until it is printed or else the output may be truncated. These options are not used by the commands @kbd{P p} or @kbd{P f}. -@node Files and Pipes, Navigating, Printing, Reading Mail +@node Files and Pipes @section Files and Pipes @cindex files @@ -2993,7 +2993,7 @@ through @command{uuencode} or @command{shar}. For example, you can extract the contents of the current buffer in your home directory by typing @kbd{M-x mh-store-buffer @key{RET} ~ @key{RET}}. -@node Navigating, Miscellaneous Commands and Options, Files and Pipes, Reading Mail +@node Navigating @section Navigating @cindex moving between messages @@ -3094,7 +3094,7 @@ The hook @code{mh-delete-msg-hook} is called after you mark a message for deletion. For example, a past maintainer of MH-E used this once when he kept statistics on his mail usage. -@node Miscellaneous Commands and Options, , Navigating, Reading Mail +@node Miscellaneous Commands and Options @section Miscellaneous Commands and Options This section contains a few more miscellaneous commands and options. @@ -3207,7 +3207,7 @@ displayed or @code{mh-rmail} is run, and the MH-E window configuration is shown. Otherwise, the MH-E window configuration is saved and the original configuration is displayed. -@node Folders, Sending Mail, Reading Mail, Top +@node Folders @chapter Organizing Your Mail with Folders @cindex @samp{Folder} menu @@ -3842,7 +3842,7 @@ running dired on my mail directory (@kbd{M-x dired @key{RET} ~/Mail @key{RET}}), moving my cursor to @samp{out} and using the command @kbd{R} (@code{dired-do-rename}). -@node Sending Mail, Editing Drafts, Folders, Top +@node Sending Mail @chapter Sending Mail @cindex sending mail @@ -4002,7 +4002,7 @@ more detail in the following sections. * Editing Again:: @end menu -@node Composing, Replying, Sending Mail, Sending Mail +@node Composing @section Composing @cindex @file{.emacs} @@ -4125,7 +4125,7 @@ is that you can write a function to write and send the message for you. This function is passed three arguments: the contents of the @samp{To:}, @samp{Subject:}, and @samp{Cc:} header fields. -@node Replying, Forwarding, Composing, Sending Mail +@node Replying @section Replying to Mail @cindex @command{mhl} @@ -4221,7 +4221,7 @@ buffer by turning off the option @code{mh-reply-show-message-flag}. If you wish to customize the header or other parts of the reply draft, please see @command{repl}(1) and @code{mh-format}(5). -@node Forwarding, Redistributing, Replying, Sending Mail +@node Forwarding @section Forwarding Mail @cindex @command{forw} @@ -4283,7 +4283,7 @@ and creates a subject header field of: Subject: Greg DesBrisay: Re: 49er football @end smallexample -@node Redistributing, Editing Again, Forwarding, Sending Mail +@node Redistributing @section Redistributing Your Mail @cindex @command{dist} @@ -4323,7 +4323,7 @@ a message that has been redistributed before, turn off this option. The hook @code{mh-annotate-msg-hook} is run after annotating the message and scan line (@pxref{Sending Mail}). -@node Editing Again, , Redistributing, Sending Mail +@node Editing Again @section Editing Old Drafts and Bounced Messages @cindex @file{draft} @@ -4359,7 +4359,7 @@ the message for editing by removing the @i{Mailer-Daemon} envelope and unneeded header fields. Fix whatever addressing problem you had, and send the message again with @kbd{C-c C-c}. -@node Editing Drafts, Aliases, Sending Mail, Top +@node Editing Drafts @chapter Editing a Draft @cindex @samp{Letter} menu @@ -4754,7 +4754,7 @@ detail in the following sections. * Killing Draft:: @end menu -@node Editing Message, Inserting Letter, Editing Drafts, Editing Drafts +@node Editing Message @section Editing the Message @cindex @samp{Bcc} header field @@ -4929,7 +4929,7 @@ the first period in the paragraph above, the result would be this: @end group @end smallexample -@node Inserting Letter, Inserting Messages, Editing Message, Editing Drafts +@node Inserting Letter @section Inserting Letter to Which You're Replying @cindex inserting messages @@ -5055,7 +5055,7 @@ For example, if you use the hook function @code{trivial-cite}} (which is NOT part of Emacs), set @code{mh-yank-behavior} to @samp{Body and Header}. -@node Inserting Messages, Signature, Inserting Letter, Editing Drafts +@node Inserting Messages @section Inserting Messages @cindex inserting messages @@ -5081,7 +5081,7 @@ left intact, the message is not indented, and @samp{> } is not inserted before each line. This command leaves the mark before the letter and point after it. -@node Signature, Picture, Inserting Messages, Editing Drafts +@node Signature @section Inserting Your Signature @cindex signature @@ -5136,7 +5136,7 @@ function used to insert the signature with The signature can also be inserted using Identities. @xref{Identities}. -@node Picture, Adding Attachments, Signature, Editing Drafts +@node Picture @section Inserting Your Picture @cindex @file{.face} @@ -5186,7 +5186,7 @@ defined by this option doesn't exist. @xref{Viewing}, to see how these header fields are displayed in MH-E. -@node Adding Attachments, Sending PGP, Picture, Editing Drafts +@node Adding Attachments @section Adding Attachments @cindex @command{mhbuild} @@ -5530,7 +5530,7 @@ prefix argument (as in @kbd{C-u C-c C-e}). The hook @code{mh-mh-to-mime-hook} is called after the message has been formatted by @kbd{C-c C-e}. -@node Sending PGP, Checking Recipients, Adding Attachments, Editing Drafts +@node Sending PGP @section Signing and Encrypting Messages @cindex signing messages @@ -5621,7 +5621,7 @@ all messages I encrypt are encrypted with my public key as well. If you keep a copy of all of your outgoing mail with a @samp{Fcc:} header field, this setting is vital so that you can read the mail you write! -@node Checking Recipients, Sending Message, Sending PGP, Editing Drafts +@node Checking Recipients @section Checking Recipients @cindex @file{*MH-E Recipients*} @@ -5640,7 +5640,7 @@ you can check the actual address(es) in the alias. A new buffer named @uref{@value{MH-BOOK-HOME}/senove.html#WhaPro, What now?---and the whatnow Program} in the MH book.}. -@node Sending Message, Killing Draft, Checking Recipients, Editing Drafts +@node Sending Message @section Sending a Message @cindex buffers, @file{*MH-E Mail Delivery*} @@ -5678,7 +5678,7 @@ in the MH book.} is installed under a different name, use The hook @code{mh-annotate-msg-hook} is run after annotating the message and scan line (@pxref{Sending Mail}). -@node Killing Draft, , Sending Message, Editing Drafts +@node Killing Draft @section Killing the Draft @cindex killing draft @@ -5692,7 +5692,7 @@ command @kbd{C-c C-q} (@code{mh-fully-kill-draft}) to kill the draft buffer and delete the draft message. Use the command @kbd{C-x k} (@code{kill-buffer}) if you don't want to delete the draft message. -@node Aliases, Identities, Editing Drafts, Top +@node Aliases @chapter Aliases @cindex aliases @@ -6019,7 +6019,7 @@ Syntax of Regular Expressions} in @cite{The GNU Emacs Manual}). @end ifhtml -@node Identities, Speedbar, Aliases, Top +@node Identities @chapter Identities @cindex identities @@ -6256,7 +6256,7 @@ example, @samp{:signature}), and the action @samp{'remove} or @samp{'add}. If the action is @samp{'add}, an additional argument containing the value for the field is given. -@node Speedbar, Menu Bar, Identities, Top +@node Speedbar @chapter The Speedbar @cindex folder navigation @@ -6354,7 +6354,7 @@ Selected folder face. Selected folder face when folder contains unread messages. @end vtable -@node Menu Bar, Tool Bar, Speedbar, Top +@node Menu Bar @chapter The Menu Bar @cindex @samp{Folder} menu @@ -6414,7 +6414,7 @@ manual in two ways: all of the menu items are listed alphabetically, and you can also browse all of the items under the index entry @samp{menu item}. -@node Tool Bar, Searching, Menu Bar, Top +@node Tool Bar @chapter The Tool Bar @cindex tool bar @@ -6498,7 +6498,7 @@ variable is set to anything other than @samp{Same As Default Tool Bar} and the default tool bar is in a different location, then two tool bars will be displayed: the MH-E tool bar and the default tool bar. -@node Searching, Threading, Tool Bar, Top +@node Searching @chapter Searching Through Messages @cindex @samp{Search} menu @@ -7037,7 +7037,7 @@ MH-Search buffer. Instead, you simply enter a regular expression in the minibuffer. For help in constructing regular expressions, see your man page for @command{grep}. -@node Threading, Limits, Searching, Top +@node Threading @chapter Viewing Message Threads @cindex threading @@ -7166,7 +7166,7 @@ ensure that the byte-compiled version appears first in the installed MH-E yourself, please refer to the installation directions in the file @file{README} in the distribution.}. -@node Limits, Sequences, Threading, Top +@node Limits @chapter Limiting Display @cindex limits @@ -7274,7 +7274,7 @@ command to limit the display to messages in a range (@pxref{Ranges}). Each limit can be undone in turn with the @kbd{/ w} (@code{mh-widen}) command. Give this command a prefix argument to remove all limits. -@node Sequences, Junk, Limits, Top +@node Sequences @chapter Using Sequences @cindex @samp{Sequence} menu @@ -7528,7 +7528,7 @@ command dealing with sequences is @command{mark}@footnote{See the section @uref{@value{MH-BOOK-HOME}/mmbwm.html, Make Message Bookmarks with mark} in the MH book.}. -@node Junk, Miscellaneous, Sequences, Top +@node Junk @chapter Dealing With Junk Mail @cindex Marshall Rose @@ -7966,7 +7966,7 @@ spam/unreadable/. spam/unreadable/. @end smallexample -@node Miscellaneous, Scan Line Formats, Junk, Top +@node Miscellaneous @chapter Miscellaneous Commands, Variables, and Buffers This chapter covers the following command and the various MH-E @@ -8053,7 +8053,7 @@ it is hidden because the first character in the name is a space. You'll generally not have any need for this buffer. @end table -@node Scan Line Formats, Procmail, Miscellaneous, Top +@node Scan Line Formats @appendix Scan Line Formats @cindex scan line formats @@ -8521,7 +8521,7 @@ Finally, add the following to delete and refile messages. This is just a bare minimum; it's best to adjust all of the regular expressions to ensure that MH-E and highlighting perform well. -@node Procmail, Odds and Ends, Scan Line Formats, Top +@node Procmail @appendix Reading Mailing Lists Effectively @cindex @command{procmail} @@ -8680,7 +8680,7 @@ example above, you would tell Gnus about it the first time only with @kbd{G m gnucash @key{RET} nnml @key{RET}}. In MH-E, this folder is known as @samp{+gnucash}. -@node Odds and Ends, History, Procmail, Top +@node Odds and Ends @appendix Odds and Ends This appendix covers a few topics that don't fit elsewhere. Here I @@ -8694,7 +8694,7 @@ I also point out some additional sources of information. * Getting MH-E:: @end menu -@node Bug Reports, Mailing Lists, Odds and Ends, Odds and Ends +@node Bug Reports @appendixsec Bug Reports @cindex bugs @@ -8708,7 +8708,7 @@ to do that it shouldn't be a restriction for you. Please include the output of @kbd{M-x mh-version} (@pxref{Miscellaneous}) in any bug report you send unless you're 110% positive we won't ask for it. -@node Mailing Lists, MH FAQ and Support, Bug Reports, Odds and Ends +@node Mailing Lists @appendixsec MH-E Mailing Lists @cindex SourceForge @@ -8721,7 +8721,7 @@ the archives at @uref{https://sourceforge.net/p/mh-e/mailman/, SourceForge}. Do not report bugs on these lists; please submit them via SourceForge (@pxref{Bug Reports}). -@node MH FAQ and Support, Getting MH-E, Mailing Lists, Odds and Ends +@node MH FAQ and Support @appendixsec MH FAQ and Support @cindex FAQ @@ -8740,7 +8740,7 @@ You can find FAQs on MH-E by searching for @i{labels:support} on the Tickets} page on SourceForge. If you don't find the answer to your question, file a ticket and your question will become a new FAQ! -@node Getting MH-E, , MH FAQ and Support, Odds and Ends +@node Getting MH-E @appendixsec Getting MH-E @cindex MH-E, obtaining @@ -8795,7 +8795,7 @@ also contains doc and contrib packages. The former is the latest release of this manual, and the latter contains a few contributed packages you might find useful. -@node History, GFDL, Odds and Ends, Top +@node History @appendix History of MH-E @cindex Bill Wohler @@ -8826,7 +8826,7 @@ lives today. * From Bill Wohler:: @end menu -@node From Brian Reid, From Jim Larus, History, History +@node From Brian Reid @appendixsec From Brian Reid @cindex Brian Reid @@ -8858,7 +8858,7 @@ the ideas as well. Perhaps one day, MH-E will again resemble MHE Brian Reid, June 1994 -@node From Jim Larus, From Stephen Gildea, From Brian Reid, History +@node From Jim Larus @appendixsec From Jim Larus @cindex Jim Larus @@ -8904,7 +8904,7 @@ since then. Jim Larus, June 1994 -@node From Stephen Gildea, From Bill Wohler, From Jim Larus, History +@node From Stephen Gildea @appendixsec From Stephen Gildea @cindex Gildea, Stephen @@ -8946,7 +8946,7 @@ version 5 was released. Stephen Gildea, June 1994 -@node From Bill Wohler, , From Stephen Gildea, History +@node From Bill Wohler @appendixsec From Bill Wohler @cindex Wohler, Bill @@ -8993,27 +8993,27 @@ new features and several bug fixes. Bill Wohler, August 2008 -@node GFDL, GPL, History, Top +@node GFDL @appendix GNU Free Documentation License @include doclicense.texi -@node GPL, Key Index, GFDL, Top +@node GPL @appendix GNU General Public License @include gpl.texi -@node Key Index, Command Index, GPL, Top +@node Key Index @unnumbered Key (Character) Index @printindex ky -@node Command Index, Option Index, Key Index, Top +@node Command Index @unnumbered Command Index @printindex fn -@node Option Index, Concept Index, Command Index, Top +@node Option Index @unnumbered Option (Variable) Index @printindex vr -@node Concept Index, , Option Index, Top +@node Concept Index @unnumbered Concept Index @printindex cp diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi index f1074d3d143..88ca4450d59 100644 --- a/doc/misc/reftex.texi +++ b/doc/misc/reftex.texi @@ -4609,7 +4609,7 @@ Footer to insert in BibTeX files generated by @end defopt -@node Options - Index Support, Options - Viewing Cross-References, Options - Creating Citations, Options +@node Options - Index Support @section Index Support @cindex Options, Index support @cindex Index support, options diff --git a/doc/misc/todo-mode.texi b/doc/misc/todo-mode.texi index dbd7f3d02f7..b3ea652a7ec 100644 --- a/doc/misc/todo-mode.texi +++ b/doc/misc/todo-mode.texi @@ -122,7 +122,7 @@ Todo Display Features @end detailmenu @end menu -@node Overview, Todo Mode Entry Points, Top, Top +@node Overview @chapter Overview The Todo mode package provides facilities for making and maintaining @@ -146,7 +146,7 @@ most important differences, @ref{Legacy Todo Mode Files}. * Todo Items as Diary Entries:: @end menu -@node Levels of Organization, Todo Items as Diary Entries, , Overview +@node Levels of Organization @section Levels of Organization In Todo mode each todo list is identified with a named category, so you @@ -184,7 +184,7 @@ associating various kinds of metadata with it, e.g., the category it belongs to, its priority, whether it is to be included in the Emacs diary, date and time stamps, whether it is done or still to do. -@node Todo Items as Diary Entries, , Levels of Organization, Overview +@node Todo Items as Diary Entries @section Todo Items as Diary Entries You can have todo items show up in the Emacs Fancy Diary display by @@ -213,7 +213,7 @@ from a Todo mode file, clicking or typing @key{RET} on this item will switch to the buffer visiting that file and properly display the item's category, with point on the item. -@node Todo Mode Entry Points, Key Binding Conventions, Overview, Top +@node Todo Mode Entry Points @chapter Todo Mode Entry Points To initialize your first todo file, invoke the command @code{todo-show}. @@ -275,7 +275,7 @@ that was displayed on quitting current for subsequent Todo mode commands category in Todo mode, in which case the latter become current for Todo mode commands). -@node Key Binding Conventions, Navigation, Todo Mode Entry Points, Top +@node Key Binding Conventions @chapter Key Binding Conventions For Todo mode commands to function properly, it is essential to maintain @@ -301,7 +301,7 @@ those beginning with @kbd{A} apply to archives (a special type of Todo file; @ref{Todo Archive Mode}). Todo commands applying to items, which constitute the majority, are bound to lower case key sequences. -@node Navigation, Editing, Key Binding Conventions, Top +@node Navigation @chapter Navigation The navigation commands are for making another todo file, category, or @@ -389,7 +389,7 @@ or higher than the current one. Navigation to other types of Todo files is discussed in the relevant sections below. -@node Editing, Todo Archives, Navigation, Top +@node Editing @chapter Editing Editing in Todo mode means making structural or textual changes at one @@ -412,7 +412,7 @@ Todo mode with @kbd{q}. * Item Editing:: @end menu -@node File Editing, Category Editing, , Editing +@node File Editing @section File Editing and Todo Edit Mode There are four file-level editing commands: @@ -470,7 +470,7 @@ containing inconsistent information (see the cautionary note in displays a warning to this effect. @end table -@node Category Editing, Item Editing, File Editing, Editing +@node Category Editing @section Category Editing The following commands are available for editing specifically at the @@ -520,7 +520,7 @@ i.e., typing @kbd{C-u C g}, prompts for a file and confines merging to a category in that file. @end table -@node Item Editing, , Category Editing, Editing +@node Item Editing @section Item Editing Todo mode provides commands for adding new items as well as textually @@ -534,7 +534,7 @@ you a lot of flexibility to fine-tune these operations to your needs. * Relocating and Removing Items:: @end menu -@node Inserting New Items, Editing Item Headers and Text, , Item Editing +@node Inserting New Items @subsection Inserting New Items To add a new todo item to a category, type @kbd{i}, which is bound to @@ -761,7 +761,7 @@ calendar after you have entered the item's text, and then you can choose a date from the calendar.) -@node Editing Item Headers and Text, Relocating and Removing Items, Inserting New Items, Item Editing +@node Editing Item Headers and Text @subsection Editing Item Headers and Text To make changes to an existing item's content or header, type @kbd{e}, @@ -945,7 +945,7 @@ really want to toggle the diary-inclusion and calendar-marking status of all items in the category, you can do this by marking all the items and then invoking @kbd{e y} or @kbd{e k}, @pxref{Marked Items}). -@node Relocating and Removing Items, , Editing Item Headers and Text, Item Editing +@node Relocating and Removing Items @subsection Relocating and Removing Items In addition to inserting a new todo item and changing the text or header @@ -960,7 +960,7 @@ removes it from the todo list but does not delete it. * Done Items:: @end menu -@node Reprioritizing Items, Moving and Deleting Items, , Relocating and Removing Items +@node Reprioritizing Items @subsubsection Reprioritizing Items There are three ways to change a todo item's priority: @@ -986,7 +986,7 @@ highest priority without prompting. (Prefix arguments have no effect with @kbd{r} or @kbd{l}.) @end table -@node Moving and Deleting Items, Done Items, Reprioritizing Items, Relocating and Removing Items +@node Moving and Deleting Items @subsubsection Moving and Deleting Items You can move an item to another category, thereby recategorizing it: @@ -1032,7 +1032,7 @@ Todo command to undo a deletion. If you want to be able to use @key{SPC} for confirmation, enable the option @code{todo-y-with-space}. @end quotation -@node Done Items, , Moving and Deleting Items, Relocating and Removing Items +@node Done Items @subsubsection Done Items When the activity or thing that a todo item is about has been done, it @@ -1118,7 +1118,7 @@ item has a comment, you are asked whether to delete it from the restored item. @end table -@node Todo Archives, Marked Items, Editing, Top +@node Todo Archives @chapter Todo Archives When the done items section of a category itself starts to become @@ -1134,7 +1134,7 @@ the extension @samp{.toda} instead of @samp{.todo}. * Todo Archive Mode:: @end menu -@node Creating and Visiting Archives, Todo Archive Mode, , Todo Archives +@node Creating and Visiting Archives @section Creating and Visiting Archives Todo mode provides the following command for archiving items: @@ -1207,7 +1207,7 @@ As with todo files, you can also visit a Todo archive by invoking a standard Emacs file-visiting command; this displays the first (on the initial invocation) or current category of the archive. -@node Todo Archive Mode, , Creating and Visiting Archives, Todo Archives +@node Todo Archive Mode @section Todo Archive Mode When you visit a Todo archive, the buffer is in Todo Archive mode. It @@ -1264,7 +1264,7 @@ The command @kbd{F k} (@pxref{File Editing}) is also available in Todo Archive mode. It deletes the current archive file and prompts you whether to delete the corresponding todo file. -@node Marked Items, Todo Categories Mode, Todo Archives, Top +@node Marked Items @chapter Marked Items For many item editing commands it can make sense and be convenient to @@ -1329,7 +1329,7 @@ todo or marked done items, so if both types of items are marked, invoking these commands has no effect and informs you of your erroneous attempt. -@node Todo Categories Mode, Searching for Items, Marked Items, Top +@node Todo Categories Mode @chapter Todo Categories Mode It can be helpful to have a compact overview of the categories in a @@ -1367,7 +1367,7 @@ to visit another todo file). To do this customize the option * Reordering Categories:: @end menu -@node Table of Item Counts, Reordering Categories, , Todo Categories Mode +@node Table of Item Counts @section Table of Item Counts Above each column of the table is a labeled button you can press by @@ -1428,7 +1428,7 @@ Typing @kbd{q} exits Todo Categories mode, killing the buffer and returning to the current category in the Todo mode or Todo Archive mode buffer from which you had invoked @kbd{F c}. -@node Reordering Categories, , Table of Item Counts, Todo Categories Mode +@node Reordering Categories @section Reordering Categories Todo Categories mode provide commands with which you can change the @@ -1479,7 +1479,7 @@ have to renumber them again. This is one reason why you should exercise caution when using @kbd{F e}. @end quotation -@node Searching for Items, Todo Filtered Items Mode, Todo Categories Mode, Top +@node Searching for Items @chapter Searching for Items It can be useful to be able to locate and examine all todo items that @@ -1506,7 +1506,7 @@ search and remove the highlighting later. These commands are also available in Todo Archive mode. -@node Todo Filtered Items Mode, Todo Display Features, Searching for Items, Top +@node Todo Filtered Items Mode @chapter Todo Filtered Items Mode A more powerful alternative to sequential searching is item filtering, @@ -1520,7 +1520,7 @@ category in a distinct mode, Todo Filtered Items mode. * Files of Filtered Items:: @end menu -@node Filtering Items, Todo Filtered Items Mode Commands, , Todo Filtered Items Mode +@node Filtering Items @section Filtering Items Todo mode provides three ways to filter items: a general filter for @@ -1593,7 +1593,7 @@ this invocation, overriding both @code{todo-top-priorities-overrides} and @code{todo-top-priorities}. @end itemize -@node Todo Filtered Items Mode Commands, Files of Filtered Items, Filtering Items, Todo Filtered Items Mode +@node Todo Filtered Items Mode Commands @section Todo Filtered Items Mode Commands The output of the item filtering commands looks similar to a regular @@ -1650,7 +1650,7 @@ change the relative priorities of items from the same real category, since that would make the filtered list inconsistent with the source todo list. -@node Files of Filtered Items, , Todo Filtered Items Mode Commands, Todo Filtered Items Mode +@node Files of Filtered Items @section Files of Filtered Items Typing @kbd{s} in Todo Filtered Items mode saves the buffer of filtered @@ -1701,7 +1701,7 @@ displaying its first category, as usual. The command @kbd{F k} (@pxref{File Editing}) is also available in Todo Filtered Items mode. It deletes the current filtered items file. -@node Todo Display Features, Printing Todo Buffers, Todo Filtered Items Mode, Top +@node Todo Display Features @chapter Todo Display Features You can change the appearance of Todo mode buffers in a variety of ways. @@ -1712,7 +1712,7 @@ You can change the appearance of Todo mode buffers in a variety of ways. * Other Display Commands and Options:: @end menu -@node Faces, Item Prefix, , Todo Display Features +@node Faces @section Faces Each of the Todo modes uses faces to distinguish various aspects of @@ -1737,7 +1737,7 @@ The @code{todo-faces} customization group contains a complete list of Todo mode faces and brief descriptions of their use. -@node Item Prefix, Other Display Commands and Options, Faces, Todo Display Features +@node Item Prefix @section Item Prefix In the default display of (real or virtual) categories in Todo mode, @@ -1776,7 +1776,7 @@ displayed in a face (@code{todo-top-priority}) different from the face of the prefix of non-top-priority items, so you see at a glance how many items in the category are top priorities. -@node Other Display Commands and Options, , Item Prefix, Todo Display Features +@node Other Display Commands and Options @section Other Display Commands and Options There are two additional toggle commands that affect display in the @@ -1842,7 +1842,7 @@ Categories mode and Todo Filtered Items mode, beyond those mentioned above in the sections on these modes; see the customization groups @code{todo-categories} and @code{todo-filtered} for details. -@node Printing Todo Buffers, Legacy Todo Mode Files, Todo Display Features, Top +@node Printing Todo Buffers @chapter Printing Todo Buffers If you print a Todo buffer using one of the standard Emacs printing @@ -1865,7 +1865,7 @@ By default, Todo uses @code{ps-print-buffer-with-faces} to make the printable version; you can change this by setting the option @code{todo-print-function}. -@node Legacy Todo Mode Files, GNU Free Documentation License, Printing Todo Buffers, Top +@node Legacy Todo Mode Files @chapter Legacy Todo Mode Files Users of the original version of Todo mode will recognize from the @@ -1912,7 +1912,7 @@ it often). (A delicate part of the conversion concerns the customizable format of item date/time headers in the old-style; see the documentation string of @code{todo-legacy-date-time-regexp} for details.) -@node GNU Free Documentation License, , Legacy Todo Mode Files, Top +@node GNU Free Documentation License @appendix GNU Free Documentation License @include doclicense.texi diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index ebfc14d9368..e5a0bb9a8b6 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -2166,7 +2166,7 @@ commands for those hosts, the property @t{"posix"} should be set to The default value of this property is @code{t} (not specified in @code{tramp-methods}). If the remote host runs native MS Windows, -this propery has no effect. +this property has no effect. @item @t{"mount-point"} @@ -4504,9 +4504,9 @@ Note how @samp{%r}, @samp{%h} and @samp{%p} must be encoded as @samp{%%r}, @samp{%%h} and @samp{%%p}. @vindex tramp-use-ssh-controlmaster-options -If the @file{~/.ssh/config} is configured appropriately for the above -behavior, then any changes to @command{ssh} can be suppressed with -this @code{nil} setting: +If the @file{~/.ssh/config} file is configured appropriately for the +above behavior, then any changes to @command{ssh} can be suppressed +with this @code{nil} setting: @lisp (customize-set-variable 'tramp-use-ssh-controlmaster-options nil) @@ -4518,6 +4518,10 @@ This should also be set to @code{nil} if you use the @option{ProxyCommand} or @option{ProxyJump} options in your @command{ssh} configuration. +On MS Windows, @code{tramp-use-ssh-controlmaster-options} is set to +@code{nil} by default, because the MS Windows and MSYS2 +implementations of @command{OpenSSH} do not support this option properly. + @item On multi-hop connections, @value{tramp} does not use @command{ssh} @@ -5336,6 +5340,7 @@ The verbosity levels are @*@indent @w{ 8} connection properties @*@indent @w{ 9} test commands @*@indent @w{10} traces (huge) +@*@indent @w{11} call traces (maintainer only) With @code{tramp-verbose} greater than or equal to 4, messages are also written to a @value{tramp} debug buffer. Such debug buffers are @@ -5384,21 +5389,8 @@ The debug buffer is written as a file in your this option with care, because it could decrease the performance of @value{tramp} actions. -To enable stepping through @value{tramp} function call traces, they -have to be specifically enabled as shown in this code: - -@lisp -@group -(require 'trace) -(dolist (elt (all-completions "tramp-" obarray 'functionp)) - (trace-function-background (intern elt))) -(untrace-function 'tramp-read-passwd) -@end group -@end lisp - -The buffer @file{*trace-output*} contains the output from the function -call traces. Disable @code{tramp-read-passwd} to stop password -strings from being written to @file{*trace-output*}. +If @code{tramp-verbose} is greater than or equal to 11, @value{tramp} +function call traces are written to the buffer @file{*trace-output*}. @node GNU Free Documentation License @@ -26,7 +26,10 @@ applies, and please also update docstrings as needed. ** Emacs now optionally supports native compilation of Lisp files. To enable this, configure Emacs with the '--with-native-compilation' option. -This requires the libgccjit library to be installed and functional. +This requires the libgccjit library to be installed and functional, +and also requires GCC and Binutils to be available when Lisp code is +natively compiled. See the Info node "(elisp) Native Compilation" for +more details. --- ** Support for building with Motif has been removed. @@ -181,7 +184,7 @@ commands. ** Support for '(box . SIZE)' 'cursor-type'. By default, 'box' cursor always has a filled box shape. But if you specify 'cursor-type' to be '(box . SIZE)', the cursor becomes a hollow -box if the point is on an image larger than 'SIZE' pixels in any +box if the point is on an image larger than SIZE pixels in any dimension. +++ @@ -277,7 +280,7 @@ commands. The new keystrokes are 'C-x x g' ('revert-buffer'), input using the minibuffer. --- -** New user option 'bookmark-menu-confirm-deletion' +** New user option 'bookmark-menu-confirm-deletion'. In Bookmark Menu mode, Emacs by default does not prompt for confirmation when you type 'x' to execute the deletion of bookmarks that have been marked for deletion. However, if this new option is @@ -296,7 +299,10 @@ prompt, and how you can tweak the file size threshold. * Editing Changes in Emacs 28.1 +++ -** A prefix arg now causes 'delete-other-frames' to only iconify frames +** A prefix arg now causes 'delete-other-frames' to only iconify frames. + ++++ +** The "Edit => Clear" menu item now obeys a rectangular region. +++ ** New command 'execute-extended-command-for-buffer'. @@ -328,12 +334,13 @@ forms, but this command has now been changed to work more like 'eval-defun', and reset the values as specified. +++ -** Standalone 'M-y' uses the minibuffer to complete previous kills. -When 'M-y' is typed not after a yank command, it activates the minibuffer -where you can browse previous kills using the minibuffer history or -completion. In Isearch, you can bind 'C-s M-y' to the command -'isearch-yank-pop' that uses the minibuffer with completion on -previous kills to read a string and append it to the search string. +** Standalone 'M-y' allows interactive selection from previous kills. +'M-y' can now be typed after a command that is not a yank command. +When invoked like that, it prompts in the minibuffer for one of the +previous kills, offering completion and minibuffer-history navigation +through previous kills recorded in the kill ring. A similar feature +in Isearch can be invoked if you bind 'C-s M-y' to the command +'isearch-yank-pop'. --- ** New user options 'copy-region-blink-delay' and 'delete-pair-blink-delay'. @@ -383,9 +390,10 @@ setting the variable 'auto-save-visited-mode' buffer-locally to nil. description of the properties. Likewise 'button-describe' does the same for a button. -** Obsolete commands are no longer hidden from command completion. +** Obsolete aliases are no longer hidden from command completion. Completion of command names now considers obsolete aliases as -candidates. Invoking a command via an obsolete alias now mentions the +candidates, if they were marked obsolete in the current major version +of Emacs. Invoking a command via an obsolete alias now mentions the obsolescence fact and shows the new name of the command. +++ @@ -520,7 +528,7 @@ indentation is done using SMIE or with the old ad-hoc code. ** Icomplete +++ -*** New minor mode Icomplete-Vertical mode. +*** New minor mode 'icomplete-vertical-mode'. This mode is intended to be used with Icomplete or Fido, to display the list of completions candidates vertically instead of horizontally. @@ -704,6 +712,18 @@ line, and allows truncating them (to preserve space on the mode line) or showing them literally, either instead of, or in addition to, displaying "by name" or "by date" sort order. ++++ +*** New user option 'dired-compress-directory-default-suffix'. +This user option controls default suffix for compressing a directory. +If it's nil, ".tar.gz" will be used. Refer to +'dired-compress-files-alist' for a list of supported suffixes. + ++++ +*** New user option 'dired-compress-file-default-suffix'. +This user option controls the default suffix for compressing files. +If it's nil, ".gz" will be used. Refer to 'dired-compress-file-alist' +for a list of supported suffixes. + --- *** Broken and circular links are shown with the 'dired-broken-symlink' face. @@ -1141,7 +1161,6 @@ the variables 'bookmark-bmenu-use-header-line' and If non-nil, setting a bookmark will colorize the current line with 'bookmark-face'. - ** Edebug *** Obsoletions @@ -1225,7 +1244,8 @@ command line under point (and any following output). --- *** Environment variable 'INSIDE_EMACS' is now copied to subprocesses. -Its value equals the result of evaluating '(format "%s,eshell" emacs-version)'. +Its value contains the result of evaluating '(format "%s,eshell" +emacs-version)'. Other package names, like "tramp", could also be included. --- *** Eshell no longer re-initializes its keymap every call. @@ -1339,16 +1359,16 @@ See the new user options 'package-name-column-width', *** gdb-mi can now store and restore window configurations. Use 'gdb-save-window-configuration' to save window configuration to a file and 'gdb-load-window-configuration' to load from a file. These -commands can also be accessed through the menu bar under 'Gud -- -GDB-Windows'. 'gdb-default-window-configuration-file', when non-nil, +commands can also be accessed through the menu bar under "Gud => +GDB-Windows". 'gdb-default-window-configuration-file', when non-nil, is loaded when GDB starts up. +++ *** gdb-mi can now restore window configuration after quit. Set 'gdb-restore-window-configuration-after-quit' to non-nil and Emacs will remember the window configuration before GDB started and restore -it after GDB quits. A toggle button is also provided under 'Gud -- -GDB-Windows'. +it after GDB quits. A toggle button is also provided under "Gud => +GDB-Windows". +++ *** gdb-mi now has a better logic for displaying source buffers. @@ -1619,7 +1639,7 @@ This feature relies on librsvg 2.48 or above being available. Size image properties, for example ':height', ':max-height', etc., can be given a cons of the form '(SIZE . em)', where SIZE is an integer or float which is multiplied by the font size to calculate the image -size, and em is a symbol. +size, and 'em' is a symbol. ** EWW @@ -1726,8 +1746,8 @@ If chosen, file names in "*xref*" buffers will be displayed relative to the 'project-root' of the current project, when available. +++ -*** The TAB key binding in *xref* buffers is obsolete. -Use 'C-u RET' instead. The TAB binding in *xref* buffers is still +*** The 'TAB' key binding in "*xref*" buffers is obsolete. +Use 'C-u RET' instead. The 'TAB' binding in "*xref*" buffers is still supported, but we plan on removing it in a future version; at that time, the command 'xref-quit-and-goto-xref' will no longer have a key binding in 'xref--xref-buffer-mode-map'. @@ -1798,36 +1818,10 @@ activity overview sidebar for joined IRC channels is now part of ERC. The 'erc-tls' function has been updated to allow specifying a TLS client certificate for authentication, as an alternative to NickServ password-based authentication. This is referred to as "CertFP" (short -for Certificate Fingerprint) by several IRC networks. - -To use a certificate with 'erc-tls', specify the ':client-certificate' -optional parameter, whose value should be as described in the -documentation of 'open-network-stream': if non-nil, it should either -be a list where the first element is the file name of the private key -corresponding to a client certificate and the second element is the -file name of the client certificate itself to use when connecting over -TLS, or t, which means that 'auth-source' will be queried for the -private key and the certificate. - -Examples of use: - - (erc-tls :server "chat.freenode.net" :port 6697 - :client-certificate - '("/home/bandali/my-cert.key" - "/home/bandali/my-cert.crt")) - - (erc-tls :server "chat.freenode.net" :port 6697 - :client-certificate - `(,(expand-file-name "~/cert-freenode.key") - ,(expand-file-name "~/cert-freenode.crt"))) - - (erc-tls :server "chat.freenode.net" :port 6697 - :client-certificate t) - -In the case of ':client-certificate t', you will need to add a line -like the following to your authinfo file (e.g. "~/.authinfo.gpg"): - - machine chat.freenode.net key /home/bandali/my-cert.key cert /home/bandali/my-cert.crt +for Certificate Fingerprint) by several IRC networks. See the Info +node "(erc) Connecting" in the ERC manual for more details and +examples on how to specify and use TLS client certificates with +'erc-tls'. ** Battery @@ -2391,10 +2385,19 @@ You can type 'C-x u u' instead of 'C-x u C-x u' to undo many changes, 'M-g n n p p' to navigate next-error matches. Any other key exits transient mode and then is executed normally. 'repeat-exit-key' defines an additional key to exit mode like 'isearch-exit' ('RET'). -With 'repeat-keep-prefix' you can keep the prefix arg of the previous command. -For example, this can help to reverse the window navigation direction -with e.g. 'C-x o M-- o o'. Also it can help to set a new step with -e.g. 'C-x { C-5 { { {' will set the window resizing step to 5 columns. +The user option 'repeat-exit-timeout' specifies the number of +seconds of idle time to break the repetition chain automatically. +With 'repeat-keep-prefix' you can keep the prefix arg of the previous +command. For example, this can help to reverse the window navigation +direction with e.g. 'C-x o M-- o o'. Also it can help to set a new +step with e.g. 'C-x { C-5 { { {', which will set the window resizing +step to 5 columns. + ++++ +** EasyPG +GPG key servers can now be queried for keys with the +'M-x epa-search-keys' command. Keys can then be added to your +personal key ring. * New Modes and Packages in Emacs 28.1 @@ -2479,13 +2482,20 @@ This is to keep the same behavior as Eshell. * Incompatible Lisp Changes in Emacs 28.1 +++ +** The 'lexical-binding' local variable is always enabled. +Previously, if 'enable-local-variables' was nil, a 'lexical-binding' +local variable would not be heeded. This has now changed, and a file +with a 'lexical-binding' cookie is always heeded. To revert to the +old behavior, set 'permanently-enabled-local-variables' to nil. + ++++ ** 'completing-read-default' sets completion variables buffer-locally. 'minibuffer-completion-table' and related variables are now set buffer-locally in the minibuffer instead of being set via a global let-binding. +++ ** The use of positional arguments in 'define-minor-mode' is obsolete. -These were actually rendered obsolete in Emacs-21 but were never +These were actually rendered obsolete in Emacs 21 but were never marked as such. ** 'facemenu-color-alist' is now obsolete, and is not used. @@ -2610,16 +2620,16 @@ ledit.el, lmenu.el, lucid.el and old-whitespace.el. 'icalendar--datetime-to-noneuropean-date', 'image-mode-maybe', 'imenu-example--name-and-position', 'ispell-aspell-supports-utf8', 'lisp-mode-auto-fill', 'locate-file-completion', 'make-coding-system', -'minibuffer-local-must-match-filename-map', 'mouse-choose-completion', -'mouse-major-mode-menu', 'mouse-popup-menubar', -'mouse-popup-menubar-stuff', 'newsticker-groups-filename', -'nnir-swish-e-index-file', 'nnmail-fix-eudora-headers', -'non-iso-charset-alist', 'nonascii-insert-offset', -'nonascii-translation-table', 'password-read-and-add', -'pre-abbrev-expand-hook', 'princ-list', 'print-help-return-message', -'process-filter-multibyte-p', 'read-file-name-predicate', -'remember-buffer', 'rmail-highlight-face', 'rmail-message-filter', -'semantic-after-idle-scheduler-reparse-hooks', +'menu-bar-files-menu', 'minibuffer-local-must-match-filename-map', +'mouse-choose-completion', 'mouse-major-mode-menu', +'mouse-popup-menubar', 'mouse-popup-menubar-stuff', +'newsticker-groups-filename', 'nnir-swish-e-index-file', +'nnmail-fix-eudora-headers', 'non-iso-charset-alist', +'nonascii-insert-offset', 'nonascii-translation-table', +'password-read-and-add', 'pre-abbrev-expand-hook', 'princ-list', +'print-help-return-message', 'process-filter-multibyte-p', +'read-file-name-predicate', 'remember-buffer', 'rmail-highlight-face', +'rmail-message-filter', 'semantic-after-idle-scheduler-reparse-hooks', 'semantic-after-toplevel-bovinate-hook', 'semantic-before-idle-scheduler-reparse-hooks', 'semantic-before-toplevel-bovination-hook', @@ -2673,8 +2683,8 @@ back in Emacs 23.1. The affected functions are: 'make-obsolete', +++ ** The '&define' keyword in an Edebug specification now disables backtracking. -The implementation was buggy, and multiple &define forms in an &or -form should be exceedingly rare. See the Info node 'Backtracking' in +The implementation was buggy, and multiple '&define' forms in an '&or' +form should be exceedingly rare. See the Info node "(elisp) Backtracking" in the Emacs Lisp reference manual for background. @@ -3065,9 +3075,16 @@ The special events 'dbus-event' and 'file-notify' are now ignored in +++ ** 'condition-case' now allows for a success handler. -It is written as (:success BODY...) where BODY is executed whenever -the protected form terminates without error, with the specified -variable bound to the the value of the protected form. +It is written as '(:success BODY...)' where BODY is executed +whenever the protected form terminates without error, with the +specified variable bound to the the value of the protected form. + ++++ +** 'The 'uniquify' argument in 'auto-save-file-name-transforms' can be a symbol. +If this symbol is one of the members of 'secure-hash-algorithms', +Emacs constructs the nondirectory part of the auto-save file name by +applying that 'secure-hash' to the buffer file name. This avoids any +risk of excessively long file names. * Changes in Emacs 28.1 on Non-Free Operating Systems diff --git a/etc/NEWS.27 b/etc/NEWS.27 index 55045d10ee3..4b4c1a31455 100644 --- a/etc/NEWS.27 +++ b/etc/NEWS.27 @@ -2701,7 +2701,7 @@ days there are in a month in a specific year), 'date-ordinal-to-time' (that computes the date of an ordinal day), 'decoded-time-add' (for doing computations on a decoded time structure), 'make-decoded-time' (for making a decoded time structure with only the given keywords -filled out), and 'encoded-time-set-defaults' (which fills in nil +filled out), and 'decoded-time-set-defaults' (which fills in nil elements as if it's midnight January 1st, 1970) have been added. *** In the DST slot, 'encode-time' and 'parse-time-string' now return -1 @@ -1763,8 +1763,17 @@ apparently loses under Solaris, at least. [fx has mostly done this.] (Obsolete, since gmalloc.c is nowadays only used on MS-DOS.) ** Rewrite make-docfile to be clean and maintainable -It might be better to replace it with Lisp, using the byte compiler. +It might be better to replace with Lisp the part of make-docfile that +produces the etc/DOC file by scanning *.el files, for example by +reusing the code in the byte compiler or in autoload.el that already +scans *.el files. https://lists.gnu.org/r/emacs-devel/2012-06/msg00037.html +https://lists.gnu.org/r/emacs-devel/2021-05/msg00235.html + +** Eliminate the etc/DOC file altogether +As an alternative to the previous item, we could try and eliminate the +DOC file altogether. See +https://lists.gnu.org/r/emacs-devel/2021-05/msg00237.html ** Add an inferior-comint-minor-mode The purpose is to have a mode to capture the common set of operations diff --git a/leim/Makefile.in b/leim/Makefile.in index 2646abcfff9..ce1029abcfa 100644 --- a/leim/Makefile.in +++ b/leim/Makefile.in @@ -137,7 +137,7 @@ ${srcdir}/../lisp/language/pinyin.el: ${srcdir}/MISC-DIC/pinyin.map $(AM_V_GEN)${RUN_EMACS} -l titdic-cnv -f pinyin-convert $< $@ -.PHONY: bootstrap-clean distclean maintainer-clean extraclean gen-clean +.PHONY: bootstrap-clean distclean maintainer-clean gen-clean ## Perhaps this should run gen-clean. bootstrap-clean: @@ -154,6 +154,4 @@ gen-clean: rm -f ${TIT_MISC} ${leimdir}/leim-list.el rm -rf ${leimdir}/ja-dic -extraclean: maintainer-clean - ### Makefile.in ends here diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in index 923d0cf5e72..7af89eb380d 100644 --- a/lib-src/Makefile.in +++ b/lib-src/Makefile.in @@ -315,7 +315,7 @@ $(DESTDIR)${archlibdir}: all fi .PHONY: install uninstall mostlyclean clean distclean maintainer-clean -.PHONY: bootstrap-clean extraclean check tags +.PHONY: bootstrap-clean check tags install: $(DESTDIR)${archlibdir} @echo @@ -343,6 +343,7 @@ mostlyclean: rm -f core ./*.o ./*.res clean: mostlyclean + -rm -f seccomp-filter.bpf seccomp-filter.pfc seccomp-filter-exec.bpf seccomp-filter-exec.pfc rm -f ${EXE_FILES} distclean: clean @@ -350,8 +351,6 @@ distclean: clean bootstrap-clean maintainer-clean: distclean -extraclean: maintainer-clean - rm -f ./*~ \#* ## Test the contents of the directory. check: diff --git a/lib-src/etags.c b/lib-src/etags.c index b5c18e0e019..d703183cef7 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -366,6 +366,7 @@ static void PS_functions (FILE *); static void Prolog_functions (FILE *); static void Python_functions (FILE *); static void Ruby_functions (FILE *); +static void Rust_entries (FILE *); static void Scheme_functions (FILE *); static void TeX_commands (FILE *); static void Texinfo_nodes (FILE *); @@ -752,6 +753,12 @@ a line generate a tag. Constants also generate a tag."; static const char *Ruby_interpreters [] = { "ruby", NULL }; +static const char *Rust_suffixes [] = + { "rs", NULL }; +static const char Rust_help [] = + "In Rust code, tags anything defined with 'fn', 'enum', \n\ +'struct' or 'macro_rules!'."; + /* Can't do the `SCM' or `scm' prefix with a version number. */ static const char *Scheme_suffixes [] = { "oak", "sch", "scheme", "SCM", "scm", "SM", "sm", "ss", "t", NULL }; @@ -836,6 +843,7 @@ static language lang_names [] = NULL, Python_interpreters }, { "ruby", Ruby_help, Ruby_functions, Ruby_suffixes, Ruby_filenames, Ruby_interpreters }, + { "rust", Rust_help, Rust_entries, Rust_suffixes }, { "scheme", Scheme_help, Scheme_functions, Scheme_suffixes }, { "tex", TeX_help, TeX_commands, TeX_suffixes }, { "texinfo", Texinfo_help, Texinfo_nodes, Texinfo_suffixes }, @@ -5021,6 +5029,49 @@ Ruby_functions (FILE *inf) /* + * Rust support + * Look for: + * - fn: Function + * - struct: Structure + * - enum: Enumeration + * - macro_rules!: Macro + */ +static void +Rust_entries (FILE *inf) +{ + char *cp, *name; + bool is_func = false; + + LOOP_ON_INPUT_LINES(inf, lb, cp) + { + cp = skip_spaces(cp); + name = cp; + + // Skip 'pub' keyworld + (void)LOOKING_AT (cp, "pub"); + + // Look for define + if ((is_func = LOOKING_AT (cp, "fn")) + || LOOKING_AT (cp, "enum") + || LOOKING_AT (cp, "struct") + || (is_func = LOOKING_AT (cp, "macro_rules!"))) + { + cp = skip_spaces (cp); + name = cp; + + while (!notinname (*cp)) + cp++; + + make_tag (name, cp - name, is_func, + lb.buffer, cp - lb.buffer + 1, + lineno, linecharno); + is_func = false; + } + } +} + + +/* * PHP support * Look for: * - /^[ \t]*function[ \t\n]+[^ \t\n(]+/ diff --git a/lib/Makefile.in b/lib/Makefile.in index 68a0247e9cb..6c7a4430999 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -113,8 +113,7 @@ distclean bootstrap-clean: mostlyclean rm -fr $(DEPDIR) maintainer-clean: distclean rm -f TAGS gnulib.mk -extraclean: distclean - -rmdir malloc sys 2>/dev/null + -rmdir malloc sys 2>/dev/null || true .PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean diff --git a/lisp/Makefile.in b/lisp/Makefile.in index b970451dd20..8e0d9c4e5be 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -202,7 +202,7 @@ $(lisp)/loaddefs.el: gen-lisp $(LOADDEFS) # regeneration of all these files. .PHONY: autoloads-force autoloads-force: - rm loaddefs.el + rm -f $(lisp)/loaddefs.el $(MAKE) autoloads # This is required by the bootstrap-emacs target in ../src/Makefile, so @@ -467,7 +467,7 @@ $(CAL_DIR)/hol-loaddefs.el: $(CAL_SRC) $(CAL_DIR)/diary-loaddefs.el --eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \ -f batch-update-autoloads $(CAL_DIR) -.PHONY: bootstrap-clean distclean maintainer-clean extraclean +.PHONY: bootstrap-clean distclean maintainer-clean bootstrap-clean: find $(lisp) -name '*.elc' $(FIND_DELETE) @@ -479,12 +479,6 @@ distclean: maintainer-clean: distclean bootstrap-clean rm -f TAGS -extraclean: bootstrap-clean distclean - -for file in $(loaddefs); do rm -f $${file}~; done - -rm -f $(lisp)/loaddefs.el~ - -find $(lisp) -name '*~' $(FIND_DELETE) - -find $(lisp) -name '#*' $(FIND_DELETE) - .PHONY: check-declare check-declare: diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el index 497f3329055..ef84bfadd31 100644 --- a/lisp/calendar/cal-menu.el +++ b/lisp/calendar/cal-menu.el @@ -104,9 +104,9 @@ ;; The bug has since been fixed. (dotimes (i 11) (push (vector (format "hol-year-%d" i) - `(lambda () - (interactive) - (holiday-list (+ displayed-year ,(- i 5)))) + (lambda () + (interactive) + (holiday-list (+ displayed-year (- i 5)))) :label `(format "For Year %d" (+ displayed-year ,(- i 5)))) l)) diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el index 2df57a3c33d..1c169b78fd6 100644 --- a/lisp/calendar/time-date.el +++ b/lisp/calendar/time-date.el @@ -525,6 +525,8 @@ changes in daylight saving time are not taken into account." (defun decoded-time-set-defaults (time &optional default-zone) "Set any nil values in `decoded-time' TIME to default values. The default value is based on January 1st, 1970 at midnight. +This year is used to guarantee portability; see Info +node `(elisp) Time of Day'. TIME is modified and returned." (unless (decoded-time-second time) @@ -539,7 +541,7 @@ TIME is modified and returned." (unless (decoded-time-month time) (setf (decoded-time-month time) 1)) (unless (decoded-time-year time) - (setf (decoded-time-year time) 0)) + (setf (decoded-time-year time) 1970)) ;; When we don't have a time zone, default to DEFAULT-ZONE without ;; DST if DEFAULT-ZONE if given, and to unknown DST otherwise. diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el index 13fb9f34fa0..dfa22264037 100644 --- a/lisp/cus-theme.el +++ b/lisp/cus-theme.el @@ -657,10 +657,12 @@ Theme files are named *-theme.el in `")) (insert-file-contents fn) (let ((sexp (let ((read-circle nil)) (condition-case nil - (read (current-buffer)) - (end-of-file nil))))) - (and (eq (car-safe sexp) 'deftheme) - (setq doc (nth 2 sexp)))))))) + (progn + (re-search-forward "^(deftheme") + (beginning-of-line) + (read (current-buffer))) + (error nil))))) + (setq doc (nth 2 sexp))))))) (cond ((null doc) "(no documentation available)") ((string-match ".*" doc) diff --git a/lisp/custom.el b/lisp/custom.el index 614f8cf822d..078e3a8cf8e 100644 --- a/lisp/custom.el +++ b/lisp/custom.el @@ -207,7 +207,22 @@ set to nil, as the value is no longer rogue." (put symbol 'custom-requests requests) ;; Do the actual initialization. (unless custom-dont-initialize - (funcall initialize symbol default)) + (funcall initialize symbol default) + ;; If there is a value under saved-value that wasn't saved by the user, + ;; reset it: we used that property to stash the value, but we don't need + ;; it anymore. + ;; This can happen given the following: + ;; 1. The user loaded a theme that had a setting for an unbound + ;; variable, so we stashed the theme setting under the saved-value + ;; property in `custom-theme-recalc-variable'. + ;; 2. Then, Emacs evaluated the defcustom for the option + ;; (e.g., something required the file where the option is defined). + ;; If we don't reset it and the user later sets this variable via + ;; Customize, we might end up saving the theme setting in the custom-file. + ;; See the test `custom-test-no-saved-value-after-customizing-option'. + (let ((theme (caar (get symbol 'theme-value)))) + (when (and theme (not (eq theme 'user)) (get symbol 'saved-value)) + (put symbol 'saved-value nil)))) (when buffer-local (make-variable-buffer-local symbol))) (run-hooks 'custom-define-hook) @@ -1516,7 +1531,15 @@ See `custom-enabled-themes' for a list of enabled themes." (custom-push-theme prop symbol theme 'reset) (cond ((eq prop 'theme-value) - (custom-theme-recalc-variable symbol)) + (custom-theme-recalc-variable symbol) + ;; We might have to reset the stashed value of the variable, if + ;; no other theme is customizing it. Without this, loading a theme + ;; that has a setting for an unbound user option and then disabling + ;; it will leave this lingering setting for the option, and if then + ;; Emacs evaluates the defcustom the saved-value might be used to + ;; set the variable. (Bug#20766) + (unless (get symbol 'theme-value) + (put symbol 'saved-value nil))) ((eq prop 'theme-face) ;; If the face spec specified by this theme is in the ;; saved-face property, reset that property. @@ -1565,8 +1588,16 @@ This function returns nil if no custom theme specifies a value for VARIABLE." (defun custom-theme-recalc-variable (variable) "Set VARIABLE according to currently enabled custom themes." (let ((valspec (custom-variable-theme-value variable))) - (if valspec - (put variable 'saved-value valspec) + ;; We used to save VALSPEC under the saved-value property unconditionally, + ;; but that is a recipe for trouble because we might end up saving session + ;; customizations if the user loads a theme. (Bug#21355) + ;; It's better to only use the saved-value property to stash the value only + ;; if we really need to stash it (i.e., VARIABLE is void). + (condition-case nil + (default-toplevel-value variable) ; See if it doesn't fail. + (void-variable (when valspec + (put variable 'saved-value valspec)))) + (unless valspec (setq valspec (get variable 'standard-value))) (if (and valspec (or (get variable 'force-value) diff --git a/lisp/delsel.el b/lisp/delsel.el index 982320340d8..96a9dcc0c79 100644 --- a/lisp/delsel.el +++ b/lisp/delsel.el @@ -84,9 +84,11 @@ information on adapting behavior of commands in Delete Selection mode." (defvar delsel--replace-text-or-position nil) +;;;###autoload (defun delete-active-region (&optional killp) "Delete the active region. If KILLP in not-nil, the active region is killed instead of deleted." + (interactive "P") (cond (killp ;; Don't allow `kill-region' to change the value of `this-command'. diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 8fce402c7ad..eb43ab187d5 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -1132,6 +1132,7 @@ present. A FMT of \"\" will suppress the messaging." ;; Solaris 10 version of tar (obsolete in 2024?). ;; Same thing on AIX 7.1 (obsolete 2023?) and 7.2 (obsolete 2022?). ("\\.tar\\.gz\\'" "" "gzip -dc %i | tar -xf -") + ("\\.tar\\.xz\\'" "" "xz -dc %i | tar -xf -") ("\\.tgz\\'" "" "gzip -dc %i | tar -xf -") ("\\.gz\\'" "" "gunzip") ("\\.lz\\'" "" "lzip -d") @@ -1149,10 +1150,7 @@ present. A FMT of \"\" will suppress the messaging." ("\\.zst\\'" "" "unzstd --rm") ("\\.7z\\'" "" "7z x -aoa -o%o %i") ;; This item controls naming for compression. - ("\\.tar\\'" ".tgz" nil) - ;; This item controls the compression of directories. Its REGEXP - ;; element should never match any valid file name. - ("\000" ".tar.gz" "tar -cf - %i | gzip -c9 > %o")) + ("\\.tar\\'" ".tgz" nil)) "Control changes in file name suffixes for compression and uncompression. Each element specifies one transformation rule, and has the form: (REGEXP NEW-SUFFIX PROGRAM) @@ -1168,6 +1166,34 @@ output file. Otherwise, the rule is a compression rule, and compression is done with gzip. ARGS are command switches passed to PROGRAM.") +(defcustom dired-compress-file-default-suffix nil + "Default suffix for compressing a single file. +If nil, \".gz\" will be used." + :type 'string + :group 'dired + :version "28.1") + +(defvar dired-compress-file-alist + '(("\\.gz\\'" . "gzip -9f %i") + ("\\.bz2\\'" . "bzip2 -9f %i") + ("\\.xz\\'" . "xz -9f %i") + ("\\.zst\\'" . "zstd -qf -19 --rm -o %o %i")) + "Controls the compression shell command for `dired-do-compress-to'. + +Each element is (REGEXP . CMD), where REGEXP is the name of the +archive to which you want to compress, and CMD is the +corresponding command. + +Within CMD, %i denotes the input file(s), and %o denotes the +output file. %i path(s) are relative, while %o is absolute.") + +(defcustom dired-compress-directory-default-suffix nil + "Default suffix for compressing a directory. +If nil, \".tar.gz\" will be used." + :type 'string + :group 'dired + :version "28.1") + (defvar dired-compress-files-alist '(("\\.tar\\.gz\\'" . "tar -cf - %i | gzip -c9 > %o") ("\\.tar\\.bz2\\'" . "tar -cf - %i | bzip2 -c9 > %o") @@ -1177,7 +1203,7 @@ ARGS are command switches passed to PROGRAM.") ("\\.tar\\.lzo\\'" . "tar -cf - %i | lzop -c9 > %o") ("\\.zip\\'" . "zip %o -r --filesync %i") ("\\.pax\\'" . "pax -wf %o %i")) - "Control the compression shell command for `dired-do-compress-to'. + "Controls the compression shell command for `dired-do-compress-to'. Each element is (REGEXP . CMD), where REGEXP is the name of the archive to which you want to compress, and CMD is the @@ -1275,37 +1301,62 @@ Return nil if no change in files." ;; Try gzip; if we don't have that, use compress. (condition-case nil (if (file-directory-p file) - (progn - (setq suffix (cdr (assoc "\000" dired-compress-file-suffixes))) - (when suffix - (let ((out-name (concat file (car suffix))) - (default-directory (file-name-directory file))) - (dired-shell-command - (replace-regexp-in-string - "%o" (shell-quote-argument out-name) + (let* ((suffix + (or dired-compress-directory-default-suffix + ".tar.gz")) + (rule (cl-find-if + (lambda (x) (string-match-p (car x) suffix)) + dired-compress-files-alist))) + (if rule + (let ((out-name (concat file suffix)) + (default-directory (file-name-directory file))) + (dired-shell-command + (replace-regexp-in-string + "%o" (shell-quote-argument out-name) + (replace-regexp-in-string + "%i" (shell-quote-argument + (file-name-nondirectory file)) + (cdr rule) + nil t) + nil t)) + out-name) + (user-error + "No compression rule found for \ +`dired-compress-directory-default-suffix' %s, see `dired-compress-files-alist' for\ + the supported suffixes list." + dired-compress-directory-default-suffix))) + (let* ((suffix (or dired-compress-file-default-suffix ".gz")) + (out-name (concat file suffix)) + (rule (cl-find-if + (lambda (x) (string-match-p (car x) suffix)) + dired-compress-file-alist))) + (if (not rule) + (user-error "No compression rule found for suffix %s, \ +see `dired-compress-file-alist' for the supported suffixes list." + dired-compress-file-default-suffix) + (and (file-exists-p file) + (or (not (file-exists-p out-name)) + (y-or-n-p + (format + "File %s already exists. Really compress? " + out-name))) + (dired-shell-command (replace-regexp-in-string - "%i" (shell-quote-argument (file-name-nondirectory file)) - (cadr suffix) - nil t) - nil t)) - out-name))) - (let ((out-name (concat file ".gz"))) - (and (or (not (file-exists-p out-name)) - (y-or-n-p - (format "File %s already exists. Really compress? " - out-name))) - (not - (dired-check-process (concat "Compressing " file) - "gzip" "-f" file)) - (or (file-exists-p out-name) - (setq out-name (concat file ".z"))) - ;; Rename the compressed file to NEWNAME - ;; if it hasn't got that name already. - (if (and newname (not (equal newname out-name))) - (progn - (rename-file out-name newname t) - newname) - out-name)))) + "%o" (shell-quote-argument out-name) + (replace-regexp-in-string + "%i" (shell-quote-argument file) + (cdr rule) + nil t) + nil t)) + (or (file-exists-p out-name) + (setq out-name (concat file ".z"))) + ;; Rename the compressed file to NEWNAME + ;; if it hasn't got that name already. + (if (and newname (not (equal newname out-name))) + (progn + (rename-file out-name newname t) + newname) + out-name))))) (file-error (if (not (dired-check-process (concat "Compressing " file) "compress" "-f" file)) diff --git a/lisp/dired.el b/lisp/dired.el index 11df93ec3bb..8527634760a 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -3425,11 +3425,16 @@ confirmation. To disable the confirmation, see (let ((buf-list (dired-buffers-for-dir (expand-file-name fn)))) (and buf-list (or (and dired-clean-confirm-killing-deleted-buffers - (y-or-n-p (format - (ngettext "Kill Dired buffer of %s, too? " - "Kill Dired buffers of %s, too? " - (length buf-list)) - (file-name-nondirectory fn)))) + (y-or-n-p + (format + (ngettext "Kill Dired buffer of %s, too? " + "Kill Dired buffers of %s, too? " + (length buf-list)) + (file-name-nondirectory + ;; FN may end in a / if `dired-listing-switches' + ;; contains -p, so we need to strip that + ;; (bug#48301). + (directory-file-name fn))))) (not dired-clean-confirm-killing-deleted-buffers)) (dolist (buf buf-list) (kill-buffer buf)))))) diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index 33b4d4b3c87..28b53d05890 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el @@ -951,12 +951,20 @@ Same format as `byte-optimize--lexvars', with shared structure and contents.") "Whether EXPR is a constant symbol." (and (macroexp-const-p expr) (symbolp (eval expr)))) +(defun byte-optimize--fixnump (o) + "Return whether O is guaranteed to be a fixnum in all Emacsen. +See Info node `(elisp) Integer Basics'." + (and (fixnump o) (<= -536870912 o 536870911))) + (defun byte-optimize-equal (form) - ;; Replace `equal' or `eql' with `eq' if at least one arg is a symbol. + ;; Replace `equal' or `eql' with `eq' if at least one arg is a + ;; symbol or fixnum. (byte-optimize-binary-predicate (if (= (length (cdr form)) 2) (if (or (byte-optimize--constant-symbol-p (nth 1 form)) - (byte-optimize--constant-symbol-p (nth 2 form))) + (byte-optimize--constant-symbol-p (nth 2 form)) + (byte-optimize--fixnump (nth 1 form)) + (byte-optimize--fixnump (nth 2 form))) (cons 'eq (cdr form)) form) ;; Arity errors reported elsewhere. @@ -964,14 +972,19 @@ Same format as `byte-optimize--lexvars', with shared structure and contents.") (defun byte-optimize-member (form) ;; Replace `member' or `memql' with `memq' if the first arg is a symbol, - ;; or the second arg is a list of symbols. + ;; or the second arg is a list of symbols. Same with fixnums. (if (= (length (cdr form)) 2) (if (or (byte-optimize--constant-symbol-p (nth 1 form)) + (byte-optimize--fixnump (nth 1 form)) (let ((arg2 (nth 2 form))) (and (macroexp-const-p arg2) (let ((listval (eval arg2))) (and (listp listval) - (not (memq nil (mapcar #'symbolp listval)))))))) + (not (memq nil (mapcar + (lambda (o) + (or (symbolp o) + (byte-optimize--fixnump o))) + listval)))))))) (cons 'memq (cdr form)) form) ;; Arity errors reported elsewhere. @@ -979,11 +992,12 @@ Same format as `byte-optimize--lexvars', with shared structure and contents.") (defun byte-optimize-assoc (form) ;; Replace 2-argument `assoc' with `assq', `rassoc' with `rassq', - ;; if the first arg is a symbol. + ;; if the first arg is a symbol or fixnum. (cond ((/= (length form) 3) form) - ((byte-optimize--constant-symbol-p (nth 1 form)) + ((or (byte-optimize--constant-symbol-p (nth 1 form)) + (byte-optimize--fixnump (nth 1 form))) (cons (if (eq (car form) 'assoc) 'assq 'rassq) (cdr form))) (t (byte-optimize-constant-args form)))) diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index e93cee99249..86c5d32c726 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -1758,7 +1758,7 @@ It is too wide if it has any lines longer than the largest of overriding-plist-environment))))) (defmacro displaying-byte-compile-warnings (&rest body) - (declare (debug t)) + (declare (debug (def-body))) `(let* ((--displaying-byte-compile-warnings-fn (lambda () ,@body)) (warning-series-started (and (markerp warning-series) @@ -2238,12 +2238,12 @@ With argument ARG, insert value in current buffer after the form." (setq byte-compile-noruntime-functions nil) (setq byte-compile-new-defuns nil) (when byte-native-compiling - (defvar comp-speed) - (push `(comp-speed . ,comp-speed) byte-native-qualities) - (defvar comp-debug) - (push `(comp-debug . ,comp-debug) byte-native-qualities) - (defvar comp-native-driver-options) - (push `(comp-native-driver-options . ,comp-native-driver-options) + (defvar native-comp-speed) + (push `(native-comp-speed . ,native-comp-speed) byte-native-qualities) + (defvar native-comp-debug) + (push `(native-comp-debug . ,native-comp-debug) byte-native-qualities) + (defvar native-comp-driver-options) + (push `(native-comp-driver-options . ,native-comp-driver-options) byte-native-qualities) (defvar no-native-compile) (push `(no-native-compile . ,no-native-compile) diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index d7e6c307ed3..283c5e4a74e 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -1924,7 +1924,8 @@ from OBARRAY. \(fn (VAR [OBARRAY [RESULT]]) BODY...)" (declare (indent 1) - (debug ((symbolp &optional form form) cl-declarations body))) + (debug ((symbolp &optional form form) cl-declarations + def-body))) ;; Apparently this doesn't have an implicit block. `(cl-block nil (let (,(car spec)) @@ -1964,7 +1965,7 @@ Each symbol in the first list is bound to the corresponding value in the second list (or to nil if VALUES is shorter than SYMBOLS); then the BODY forms are executed and their result is returned. This is much like a `let' form, except that the list of symbols can be computed at run-time." - (declare (indent 2) (debug (form form body))) + (declare (indent 2) (debug (form form def-body))) (let ((bodyfun (make-symbol "body")) (binds (make-symbol "binds")) (syms (make-symbol "syms")) diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index f700faa38b3..8c638312b05 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -43,7 +43,7 @@ "Emacs Lisp native compiler." :group 'lisp) -(defcustom comp-speed 2 +(defcustom native-comp-speed 2 "Optimization level for native compilation, a number between -1 and 3. -1 functions are kept in bytecode form and no native compilation is performed. 0 native compilation is performed with no optimizations. @@ -55,7 +55,7 @@ :safe #'integerp :version "28.1") -(defcustom comp-debug (if (eq 'windows-nt system-type) 1 0) +(defcustom native-comp-debug (if (eq 'windows-nt system-type) 1 0) "Debug level for native compilation, a number between 0 and 3. This is intended for debugging the compiler itself. 0 no debug output. @@ -67,7 +67,7 @@ This is intended for debugging the compiler itself. :safe #'natnump :version "28.1") -(defcustom comp-verbose 0 +(defcustom native-comp-verbose 0 "Compiler verbosity for native compilation, a number between 0 and 3. This is intended for debugging the compiler itself. 0 no logging. @@ -78,19 +78,19 @@ This is intended for debugging the compiler itself. :risky t :version "28.1") -(defcustom comp-always-compile nil +(defcustom native-comp-always-compile nil "Non-nil means unconditionally (re-)compile all files." :type 'boolean :version "28.1") -(defcustom comp-deferred-compilation-deny-list +(defcustom native-comp-deferred-compilation-deny-list '() "List of regexps to exclude matching files from deferred native compilation. Files whose names match any regexp are excluded from native compilation." :type '(repeat regexp) :version "28.1") -(defcustom comp-bootstrap-deny-list +(defcustom native-comp-bootstrap-deny-list '() "List of regexps to exclude files from native compilation during bootstrap. Files whose names match any regexp are excluded from native compilation @@ -98,7 +98,7 @@ during bootstrap." :type '(repeat regexp) :version "28.1") -(defcustom comp-never-optimize-functions +(defcustom native-comp-never-optimize-functions '(;; The following two are mandatory for Emacs to be working ;; correctly (see comment in `advice--add-function'). DO NOT ;; REMOVE. @@ -107,7 +107,7 @@ during bootstrap." :type '(repeat symbol) :version "28.1") -(defcustom comp-async-jobs-number 0 +(defcustom native-comp-async-jobs-number 0 "Default number of subprocesses used for async native compilation. Value of zero means to use half the number of the CPU's execution units, or one if there's just one execution unit." @@ -115,26 +115,26 @@ or one if there's just one execution unit." :risky t :version "28.1") -(defcustom comp-async-cu-done-functions nil +(defcustom native-comp-async-cu-done-functions nil "List of functions to call after asynchronously compiling one compilation unit. Called with one argument FILE, the filename used as input to compilation." :type 'hook :version "28.1") -(defcustom comp-async-all-done-hook nil +(defcustom native-comp-async-all-done-hook nil "Hook run after completing asynchronous compilation of all input files." :type 'hook :version "28.1") -(defcustom comp-async-env-modifier-form nil +(defcustom native-comp-async-env-modifier-form nil "Form evaluated before compilation by each asynchronous compilation subprocess. Used to modify the compiler environment." :type 'sexp :risky t :version "28.1") -(defcustom comp-async-report-warnings-errors t +(defcustom native-comp-async-report-warnings-errors t "Whether to report warnings and errors from asynchronous native compilation. When native compilation happens asynchronously, it can produce @@ -148,11 +148,16 @@ As asynchronous native compilation always starts from a pristine environment, it is more sensitive to such omissions, and might be unable to compile such Lisp source files correctly. -Set this variable to nil if these warnings annoy you." - :type 'boolean +Set this variable to nil to suppress warnings altogether, or to +the symbol `silent' to log warnings but not pop up the *Warnings* +buffer." + :type '(choice + (const :tag "Do not report warnings" nil) + (const :tag "Report and display warnings" t) + (const :tag "Report but do not display warnings" 'silent)) :version "28.1") -(defcustom comp-async-query-on-exit nil +(defcustom native-comp-async-query-on-exit nil "Whether to query the user about killing async compilations when exiting. If this is non-nil, Emacs will ask for confirmation to exit and kill the asynchronous native compilations if any are running. If nil, when you @@ -161,7 +166,7 @@ if `confirm-kill-processes' is non-nil." :type 'boolean :version "28.1") -(defcustom comp-native-driver-options nil +(defcustom native-comp-driver-options nil "Options passed verbatim to the native compiler's back-end driver. Note that not all options are meaningful; typically only the options affecting the assembler and linker are likely to be useful. @@ -178,7 +183,7 @@ the .eln output directory." :type 'boolean :version "28.1") -(defcustom comp-warning-on-missing-source t +(defcustom native-comp-warning-on-missing-source t "Emit a warning if a byte-code file being loaded has no corresponding source. The source file is necessary for native code file look-up and deferred compilation mechanism." @@ -662,7 +667,7 @@ Useful to hook into pass checkers.") (defun comp-subr-trampoline-install (subr-name) "Make SUBR-NAME effectively advice-able when called from native code." (unless (or (null comp-enable-subr-trampolines) - (memq subr-name comp-never-optimize-functions) + (memq subr-name native-comp-never-optimize-functions) (gethash subr-name comp-installed-trampolines-h)) (cl-assert (subr-primitive-p (symbol-function subr-name))) (comp--install-trampoline @@ -743,11 +748,11 @@ Returns ELT." "Lisp side of the compiler context." (output nil :type string :documentation "Target output file-name for the compilation.") - (speed comp-speed :type number + (speed native-comp-speed :type number :documentation "Default speed for this compilation unit.") - (debug comp-debug :type number + (debug native-comp-debug :type number :documentation "Default debug level for this compilation unit.") - (driver-options comp-native-driver-options :type list + (driver-options native-comp-driver-options :type list :documentation "Options for the GCC driver.") (top-level-forms () :type list :documentation "List of spilled top level forms.") @@ -899,7 +904,7 @@ CFG is mutated by a pass.") (has-non-local nil :type boolean :documentation "t if non local jumps are present.") (speed nil :type number - :documentation "Optimization level (see `comp-speed').") + :documentation "Optimization level (see `native-comp-speed').") (pure nil :type boolean :documentation "t if pure nil otherwise.") (type nil :type (or null comp-mvar) @@ -1028,18 +1033,18 @@ Assume allocation class 'd-default as default." (,(rx-to-string `(seq "(" (group-n 1 (or ,@(mapcar #'symbol-name comp-limple-ops))))) (1 font-lock-keyword-face))) - "Highlights used by `comp-limple-mode'.") + "Highlights used by `native-comp-limple-mode'.") -(define-derived-mode comp-limple-mode fundamental-mode "LIMPLE" +(define-derived-mode native-comp-limple-mode fundamental-mode "LIMPLE" "Syntax-highlight LIMPLE IR." (setf font-lock-defaults '(comp-limple-lock-keywords))) (cl-defun comp-log (data &optional (level 1) quoted) "Log DATA at LEVEL. LEVEL is a number from 1-3, and defaults to 1; if it is less -than `comp-verbose', do nothing. If `noninteractive', log +than `native-comp-verbose', do nothing. If `noninteractive', log with `message'. Otherwise, log with `comp-log-to-buffer'." - (when (>= comp-verbose level) + (when (>= native-comp-verbose level) (if noninteractive (cl-typecase data (atom (message "%s" data)) @@ -1059,8 +1064,8 @@ with `message'. Otherwise, log with `comp-log-to-buffer'." (inhibit-read-only t) at-end-p) (with-current-buffer log-buffer - (unless (eq major-mode 'comp-limple-mode) - (comp-limple-mode)) + (unless (eq major-mode 'native-comp-limple-mode) + (native-comp-limple-mode)) (when (= (point) (point-max)) (setf at-end-p t)) (save-excursion @@ -1091,7 +1096,7 @@ with `message'. Otherwise, log with `comp-log-to-buffer'." (defun comp-log-func (func verbosity) "Log function FUNC at VERBOSITY. VERBOSITY is a number between 0 and 3." - (when (>= comp-verbose verbosity) + (when (>= native-comp-verbose verbosity) (comp-log (format "\nFunction: %s\n" (comp-func-name func)) verbosity) (cl-loop for block-name being each hash-keys of (comp-func-blocks func) @@ -1333,12 +1338,12 @@ clashes." (setf (comp-ctxt-output comp-ctxt) (comp-el-to-eln-filename filename (when byte-native-for-bootstrap - (car (last comp-eln-load-path)))))) - (setf (comp-ctxt-speed comp-ctxt) (alist-get 'comp-speed + (car (last native-comp-eln-load-path)))))) + (setf (comp-ctxt-speed comp-ctxt) (alist-get 'native-comp-speed byte-native-qualities) - (comp-ctxt-debug comp-ctxt) (alist-get 'comp-debug + (comp-ctxt-debug comp-ctxt) (alist-get 'native-comp-debug byte-native-qualities) - (comp-ctxt-driver-options comp-ctxt) (alist-get 'comp-native-driver-options + (comp-ctxt-driver-options comp-ctxt) (alist-get 'native-comp-driver-options byte-native-qualities) (comp-ctxt-top-level-forms comp-ctxt) (cl-loop @@ -3250,14 +3255,14 @@ Return t if something was changed." ;; funcall trampoline gets optimized into normal indirect calls. ;; This makes effectively this calls equivalent to all the subrs that got ;; dedicated byte-code ops. -;; Triggered at comp-speed >= 2. +;; Triggered at native-comp-speed >= 2. ;; - Recursive calls gets optimized into direct calls. -;; Triggered at comp-speed >= 2. +;; Triggered at native-comp-speed >= 2. ;; - Intra compilation unit procedure calls gets optimized into direct calls. ;; This can be a big win and even allow gcc to inline but does not make ;; function in the compilation unit re-definable safely without recompiling ;; the full compilation unit. -;; For this reason this is triggered only at comp-speed == 3. +;; For this reason this is triggered only at native-comp-speed == 3. (defun comp-func-in-unit (func) "Given FUNC return the `comp-fun' definition in the current context. @@ -3275,7 +3280,7 @@ FUNCTION can be a function-name or byte compiled function." (when (and callee (or (symbolp callee) (gethash callee (comp-ctxt-byte-func-to-func-h comp-ctxt))) - (not (memq callee comp-never-optimize-functions))) + (not (memq callee native-comp-never-optimize-functions))) (let* ((f (if (symbolp callee) (symbol-function callee) (cl-assert (byte-code-function-p callee)) @@ -3650,14 +3655,14 @@ Prepare every function for final compilation and drive the C back-end." (print-circle t) (print-escape-multibyte t) (expr `((require 'comp) - (setf comp-verbose ,comp-verbose + (setf native-comp-verbose ,native-comp-verbose comp-libgccjit-reproducer ,comp-libgccjit-reproducer comp-ctxt ,comp-ctxt - comp-eln-load-path ',comp-eln-load-path - comp-native-driver-options - ',comp-native-driver-options + native-comp-eln-load-path ',native-comp-eln-load-path + native-comp-driver-options + ',native-comp-driver-options load-path ',load-path) - ,comp-async-env-modifier-form + ,native-comp-async-env-modifier-form (message "Compiling %s..." ',output) (comp-final1))) (temp-file (make-temp-file @@ -3703,12 +3708,12 @@ Prepare every function for final compilation and drive the C back-end." (defun comp-eln-load-path-eff () "Return a list of effective eln load directories. -Account for `comp-eln-load-path' and `comp-native-version-dir'." +Account for `native-comp-eln-load-path' and `comp-native-version-dir'." (mapcar (lambda (dir) (expand-file-name comp-native-version-dir (file-name-as-directory (expand-file-name dir invocation-directory)))) - comp-eln-load-path)) + native-comp-eln-load-path)) (defun comp-trampoline-filename (subr-name) "Given SUBR-NAME return the filename containing the trampoline." @@ -3756,7 +3761,7 @@ Return the trampoline if found or nil otherwise." ;; Use speed 0 to maximize compilation speed and not to ;; optimize away funcall calls! (byte-optimize nil) - (comp-speed 1) + (native-comp-speed 1) (lexical-binding t)) (comp--native-compile form nil @@ -3772,14 +3777,14 @@ Return the trampoline if found or nil otherwise." when (file-writable-p f) do (cl-return f) finally (error "Cannot find suitable directory for output in \ -`comp-eln-load-path'"))))) +`native-comp-eln-load-path'"))))) ;; Some entry point support code. ;;;###autoload (defun comp-clean-up-stale-eln (file) - "Given FILE remove all its *.eln files in `comp-eln-load-path' + "Given FILE remove all its *.eln files in `native-comp-eln-load-path' sharing the original source filename (including FILE)." (when (string-match (rx "-" (group-n 1 (1+ hex)) "-" (1+ hex) ".eln" eos) file) @@ -3851,7 +3856,7 @@ processes from `comp-async-compilations'" (defvar comp-num-cpus nil) (defun comp-effective-async-max-jobs () "Compute the effective number of async jobs." - (if (zerop comp-async-jobs-number) + (if (zerop native-comp-async-jobs-number) (or comp-num-cpus (setf comp-num-cpus ;; FIXME: we already have a function to determine @@ -3867,26 +3872,30 @@ processes from `comp-async-compilations'" (shell-command-to-string "sysctl -n hw.ncpu"))) (t 1)) 2)))) - comp-async-jobs-number)) + native-comp-async-jobs-number)) (defvar comp-last-scanned-async-output nil) (make-variable-buffer-local 'comp-last-scanned-async-output) (defun comp-accept-and-process-async-output (process) "Accept PROCESS output and check for diagnostic messages." - (if comp-async-report-warnings-errors - (with-current-buffer (process-buffer process) - (save-excursion - (accept-process-output process) - (goto-char (or comp-last-scanned-async-output (point-min))) - (while (re-search-forward "^.*?\\(?:Error\\|Warning\\): .*$" - nil t) - (display-warning 'comp (match-string 0))) - (setq comp-last-scanned-async-output (point-max)))) + (if native-comp-async-report-warnings-errors + (let ((warning-suppress-types + (if (eq native-comp-async-report-warnings-errors 'silent) + (cons '(comp) warning-suppress-types) + warning-suppress-types))) + (with-current-buffer (process-buffer process) + (save-excursion + (accept-process-output process) + (goto-char (or comp-last-scanned-async-output (point-min))) + (while (re-search-forward "^.*?\\(?:Error\\|Warning\\): .*$" + nil t) + (display-warning 'comp (match-string 0))) + (setq comp-last-scanned-async-output (point-max))))) (accept-process-output process))) (defun comp-run-async-workers () "Start compiling files from `comp-files-queue' asynchronously. -When compilation is finished, run `comp-async-all-done-hook' and +When compilation is finished, run `native-comp-async-all-done-hook' and display a message." (if (or comp-files-queue (> (comp-async-runnings) 0)) @@ -3897,7 +3906,7 @@ display a message." do (cl-assert (string-match-p comp-valid-source-re source-file) nil "`comp-files-queue' should be \".el\" files: %s" source-file) - when (or comp-always-compile + when (or native-comp-always-compile load ; Always compile when the compilation is ; commanded for late load. (file-newer-than-file-p @@ -3905,17 +3914,17 @@ display a message." do (let* ((expr `((require 'comp) ,(when (boundp 'backtrace-line-length) `(setf backtrace-line-length ,backtrace-line-length)) - (setf comp-speed ,comp-speed - comp-debug ,comp-debug - comp-verbose ,comp-verbose + (setf native-comp-speed ,native-comp-speed + native-comp-debug ,native-comp-debug + native-comp-verbose ,native-comp-verbose comp-libgccjit-reproducer ,comp-libgccjit-reproducer comp-async-compilation t - comp-eln-load-path ',comp-eln-load-path - comp-native-driver-options - ',comp-native-driver-options + native-comp-eln-load-path ',native-comp-eln-load-path + native-comp-driver-options + ',native-comp-driver-options load-path ',load-path warning-fill-column most-positive-fixnum) - ,comp-async-env-modifier-form + ,native-comp-async-env-modifier-form (message "Compiling %s..." ,source-file) (comp--native-compile ,source-file ,(and load t)))) (source-file1 source-file) ;; Make the closure works :/ @@ -3940,7 +3949,7 @@ display a message." :sentinel (lambda (process _event) (run-hook-with-args - 'comp-async-cu-done-functions + 'native-comp-async-cu-done-functions source-file) (comp-accept-and-process-async-output process) (ignore-errors (delete-file temp-file)) @@ -3953,12 +3962,12 @@ display a message." (native-elisp-load eln-file (eq load1 'late)))) (comp-run-async-workers)) - :noquery (not comp-async-query-on-exit)))) + :noquery (not native-comp-async-query-on-exit)))) (puthash source-file process comp-async-compilations)) when (>= (comp-async-runnings) (comp-effective-async-max-jobs)) do (cl-return))) ;; No files left to compile and all processes finished. - (run-hooks 'comp-async-all-done-hook) + (run-hooks 'native-comp-async-all-done-hook) (with-current-buffer (get-buffer-create comp-async-buffer-name) (save-excursion (goto-char (point-max)) @@ -4044,11 +4053,11 @@ LOAD and SELECTOR work as described in `native--compile-async'." (t (error "SELECTOR must be a function a regexp or nil"))) ;; Also exclude files from deferred compilation if ;; any of the regexps in - ;; `comp-deferred-compilation-deny-list' matches. + ;; `native-comp-deferred-compilation-deny-list' matches. (and (eq load 'late) (cl-some (lambda (re) (string-match-p re file)) - comp-deferred-compilation-deny-list)))) + native-comp-deferred-compilation-deny-list)))) (defun native--compile-async (files &optional recursively load selector) "Compile FILES asynchronously. @@ -4066,7 +4075,7 @@ nil -- Select all files. a string -- A regular expression selecting files with matching names. a function -- A function selecting files with matching names. -The variable `comp-async-jobs-number' specifies the number +The variable `native-comp-async-jobs-number' specifies the number of (commands) to run simultaneously. LOAD can also be the symbol `late'. This is used internally if @@ -4123,10 +4132,10 @@ bytecode definition was not changed in the meantime)." ;;;###autoload (defun comp-lookup-eln (filename) "Given a Lisp source FILENAME return the corresponding .eln file if found. -Search happens in `comp-eln-load-path'." +Search happens in `native-comp-eln-load-path'." (cl-loop with eln-filename = (comp-el-to-eln-rel-filename filename) - for dir in comp-eln-load-path + for dir in native-comp-eln-load-path for f = (expand-file-name eln-filename (expand-file-name comp-native-version-dir (expand-file-name @@ -4159,7 +4168,7 @@ Native compilation equivalent to `batch-byte-compile'." (cl-loop for file in command-line-args-left if (or (null byte-native-for-bootstrap) (cl-notany (lambda (re) (string-match re file)) - comp-bootstrap-deny-list)) + native-comp-bootstrap-deny-list)) do (comp--native-compile file) else do (byte-compile-file file))) @@ -4169,7 +4178,7 @@ Native compilation equivalent to `batch-byte-compile'." "Like `batch-native-compile', but used for bootstrap. Generate .elc files in addition to the .eln files. Force the produced .eln to be outputted in the eln system -directory (the last entry in `comp-eln-load-path'). +directory (the last entry in `native-comp-eln-load-path'). If the environment variable 'NATIVE_DISABLED' is set, only byte compile." (comp-ensure-native-compiler) @@ -4200,7 +4209,7 @@ nil -- Select all files. a string -- A regular expression selecting files with matching names. a function -- A function selecting files with matching names. -The variable `comp-async-jobs-number' specifies the number +The variable `native-comp-async-jobs-number' specifies the number of (commands) to run simultaneously." ;; Normalize: we only want to pass t or nil, never e.g. `late'. (let ((load (not (not load)))) diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index b08ee3c4a17..2aec8197dc9 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -88,6 +88,7 @@ using, but only when you also use Edebug." ;; because the byte compiler binds them; as a result, if edebug ;; is first loaded for a require in a compilation, they will be left unbound. +;;;###autoload (defcustom edebug-all-defs nil "If non-nil, evaluating defining forms instruments for Edebug. This applies to `eval-defun', `eval-region', `eval-buffer', and @@ -100,6 +101,7 @@ variable. You may wish to make it local to each buffer with `emacs-lisp-mode-hook'." :type 'boolean) +;;;###autoload (defcustom edebug-all-forms nil "Non-nil means evaluation of all forms will instrument for Edebug. This doesn't apply to loading or evaluations in the minibuffer. diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el index 2923dffd951..34b4575182e 100644 --- a/lisp/emacs-lisp/eieio-core.el +++ b/lisp/emacs-lisp/eieio-core.el @@ -347,19 +347,20 @@ See `defclass' for more information." (when eieio-backward-compatibility (let ((csym (intern (concat (symbol-name cname) "-list-p")))) (defalias csym - `(lambda (obj) - ,(format - "Test OBJ to see if it a list of objects which are a child of type %s" - cname) - (when (listp obj) - (let ((ans t)) ;; nil is valid - ;; Loop over all the elements of the input list, test - ;; each to make sure it is a child of the desired object class. - (while (and obj ans) - (setq ans (and (eieio-object-p (car obj)) - (object-of-class-p (car obj) ,cname))) - (setq obj (cdr obj))) - ans)))) + (lambda (obj) + (:documentation + (format + "Test OBJ to see if it a list of objects which are a child of type %s" + cname)) + (when (listp obj) + (let ((ans t)) ;; nil is valid + ;; Loop over all the elements of the input list, test + ;; each to make sure it is a child of the desired object class. + (while (and obj ans) + (setq ans (and (eieio-object-p (car obj)) + (object-of-class-p (car obj) 'cname))) + (setq obj (cdr obj))) + ans)))) (make-obsolete csym (format "use (cl-typep ... \\='(list-of %s)) instead" cname) diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el index b4f068cf3ae..cec89cf3bc5 100644 --- a/lisp/emacs-lisp/eldoc.el +++ b/lisp/emacs-lisp/eldoc.el @@ -538,7 +538,7 @@ documentation to potentially appear in the echo are is truncated." (and truncatedp (eq eldoc-echo-area-prefer-doc-buffer 'maybe))) - (get-buffer-window eldoc--doc-buffer))) + (get-buffer-window eldoc--doc-buffer 'visible))) (defun eldoc-display-in-echo-area (docs _interactive) "Display DOCS in echo area. diff --git a/lisp/emacs-lisp/ert-x.el b/lisp/emacs-lisp/ert-x.el index 1191fb8f8de..59ec4d24849 100644 --- a/lisp/emacs-lisp/ert-x.el +++ b/lisp/emacs-lisp/ert-x.el @@ -98,7 +98,7 @@ To be used in ERT tests. If BODY finishes successfully, the test buffer is killed; if there is an error, the test buffer is kept around on error for further inspection. Its name is derived from the name of the test and the result of NAME-FORM." - (declare (debug ((":name" form) body)) + (declare (debug ((":name" form) def-body)) (indent 1)) `(ert--call-with-test-buffer ,name-form (lambda () ,@body))) diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el index ce48e578e0b..f08f7ac1153 100644 --- a/lisp/emacs-lisp/gv.el +++ b/lisp/emacs-lisp/gv.el @@ -135,7 +135,7 @@ The returned value will then be an Elisp expression that first evaluates all the parts of PLACE that can be evaluated and then runs E. \(fn (GETTER SETTER) PLACE &rest BODY)" - (declare (indent 2) (debug (sexp form body))) + (declare (indent 2) (debug (sexp form def-body))) `(gv-get ,place (lambda ,vars ,@body))) ;; Different ways to declare a generalized variable. diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 67b75460941..59325d647d8 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -682,10 +682,16 @@ font-lock keywords will not be case sensitive." (defun lisp-outline-level () "Lisp mode `outline-level' function." + ;; Expects outline-regexp is ";;;\\(;* [^ \t\n]\\|###autoload\\)\\|(" + ;; and point is at the beginning of a matching line. (let ((len (- (match-end 0) (match-beginning 0)))) - (if (looking-at "(\\|;;;###autoload") - 1000 - len))) + (cond ((looking-at "(\\|;;;###autoload") + 1000) + ((looking-at ";;\\(;+\\) ") + (- (match-end 1) (match-beginning 1))) + ;; Above should match everything but just in case. + (t + len)))) (defun lisp-current-defun-name () "Return the name of the defun at point, or nil." diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el index 747572a3363..4804e859ebe 100644 --- a/lisp/emacs-lisp/nadvice.el +++ b/lisp/emacs-lisp/nadvice.el @@ -324,13 +324,13 @@ is also interactive. There are 3 cases: (subr-primitive-p (gv-deref ref))) (let ((subr-name (intern (subr-name (gv-deref ref))))) ;; Requiring the native compiler to advice `macroexpand' cause a - ;; circular dependency in eager macro expansion. - ;; uniquify is advising `rename-buffer' while being loaded in - ;; loadup.el. This would require the whole native compiler - ;; machinery but we don't want to include it in the dump. - ;; Because these two functions are already handled in - ;; `comp-never-optimize-functions' we hack the problem this way - ;; for now :/ + ;; circular dependency in eager macro expansion. uniquify is + ;; advising `rename-buffer' while being loaded in loadup.el. + ;; This would require the whole native compiler machinery but we + ;; don't want to include it in the dump. Because these two + ;; functions are already handled in + ;; `native-comp-never-optimize-functions' we hack the problem + ;; this way for now :/ (unless (memq subr-name '(macroexpand rename-buffer)) ;; Must require explicitly as during bootstrap we have no ;; autoloads. @@ -503,7 +503,7 @@ arguments. Note if NAME is nil the advice is anonymous; otherwise it is named `SYMBOL@NAME'. \(fn SYMBOL (WHERE LAMBDA-LIST &optional NAME DEPTH) &rest BODY)" - (declare (indent 2) (doc-string 3) (debug (sexp sexp body))) + (declare (indent 2) (doc-string 3) (debug (sexp sexp def-body))) (or (listp args) (signal 'wrong-type-argument (list 'listp args))) (or (<= 2 (length args) 4) (signal 'wrong-number-of-arguments (list 2 4 (length args)))) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index e1339177519..5df9b53657b 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -1305,7 +1305,10 @@ is non-nil, don't propagate connection errors (does not apply to errors signaled by ERROR-FORM or by BODY). \(fn URL &key ASYNC FILE ERROR-FORM NOERROR &rest BODY)" - (declare (indent defun) (debug t)) + (declare (indent defun) + ;; FIXME: This should be something like + ;; `form def-body &rest form', but that doesn't work. + (debug (form &rest sexp))) (while (keywordp (car body)) (setq body (cdr (cdr body)))) `(package--with-response-buffer-1 ,url (lambda () ,@body) @@ -2267,7 +2270,7 @@ Clean-up the corresponding .eln files if Emacs is native compiled." (when (featurep 'native-compile) (cl-loop - for file in (directory-files-recursively dir ".el\\'") + for file in (directory-files-recursively dir "\\.el\\'") do (comp-clean-up-stale-eln (comp-el-to-eln-filename file)))) (delete-directory dir t)) diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el index 455fcac701f..7d042a9102e 100644 --- a/lisp/emacs-lisp/re-builder.el +++ b/lisp/emacs-lisp/re-builder.el @@ -341,7 +341,12 @@ the regexp builder. It displays a buffer named \"*RE-Builder*\" in another window, initially containing an empty regexp. As you edit the regexp in the \"*RE-Builder*\" buffer, the -matching parts of the target buffer will be highlighted." +matching parts of the target buffer will be highlighted. + +Case-sensitivity can be toggled with \\[reb-toggle-case]. The +regexp builder supports three different forms of input which can +be set with \\[reb-change-syntax]. More options and details are +provided in the Commentary section of this library." (interactive) (if (and (string= (buffer-name) reb-buffer) (reb-mode-buffer-p)) diff --git a/lisp/emacs-lisp/rmc.el b/lisp/emacs-lisp/rmc.el index 6aa169c0323..8abe570e64b 100644 --- a/lisp/emacs-lisp/rmc.el +++ b/lisp/emacs-lisp/rmc.el @@ -27,36 +27,37 @@ ;;;###autoload (defun read-multiple-choice (prompt choices &optional help-string) - "Ask user a multiple choice question. -PROMPT should be a string that will be displayed as the prompt. - -CHOICES is a list of (KEY NAME [DESCRIPTION]). KEY is a -character to be entered. NAME is a short name for the entry to -be displayed while prompting (if there's room, it might be -shortened). DESCRIPTION is an optional longer explanation for -the entry that will be displayed in a help buffer if the user -requests more help. This help description has a fixed format in -columns, but, for greater flexibility, instead of passing a -DESCRIPTION, the user can use the optional argument HELP-STRING. -This argument is a string that contains the text with the -complete description of all choices. `read-multiple-choice' will -display that description in a help buffer if the user requests -it. + "Ask user to select an entry from CHOICES, promting with PROMPT. +This function allows to ask the user a multiple-choice question. + +CHOICES should be a list of the form (KEY NAME [DESCRIPTION]). +KEY is a character the user should type to select the entry. +NAME is a short name for the entry to be displayed while prompting +\(if there's no room, it might be shortened). +DESCRIPTION is an optional longer description of the entry; it will +be displayed in a help buffer if the user requests more help. This +help description has a fixed format in columns. For greater +flexibility, instead of passing a DESCRIPTION, the caller can pass +the optional argument HELP-STRING. This argument is a string that +should contain a more detailed description of all of the possible +choices. `read-multiple-choice' will display that description in a +help buffer if the user requests that. This function translates user input into responses by consulting the bindings in `query-replace-map'; see the documentation of -that variable for more information. In this case, the useful -bindings are `recenter', `scroll-up', `scroll-down', and `edit'. -If the user enters `recenter', `scroll-up', or `scroll-down' -responses, perform the requested window recentering or scrolling -and ask again. If the user enters `edit', start a recursive -edit. When the user exit the recursive edit, the multiple choice -prompt gains focus again. - -When `use-dialog-box' is t (the default), this function can pop -up a dialog window to collect the user input. That functionality -requires `display-popup-menus-p' to return t. Otherwise, a -text dialog will be used. +that variable for more information. The relevant bindings for the +purposes of this function are `recenter', `scroll-up', `scroll-down', +and `edit'. +If the user types the `recenter', `scroll-up', or `scroll-down' +responses, the function performs the requested window recentering or +scrolling, and then asks the question again. If the user enters `edit', +the function starts a recursive edit. When the user exit the recursive +edit, the multiple-choice prompt gains focus again. + +When `use-dialog-box' is t (the default), and the command using this +function was invoked via the mouse, this function pops up a GUI dialog +to collect the user input, but only if Emacs is capable of using GUI +dialogs. Otherwise, the function will always use text-mode dialogs. The return value is the matching entry from the CHOICES list. @@ -146,7 +147,7 @@ Usage example: (save-excursion (message "%s" (substitute-command-keys - "Recursive edit. Resume with \\[exit-recursive-edit]")) + "Recursive edit; type \\[exit-recursive-edit] to return to help screen")) (recursive-edit)))) (t tchar))) (when (eq tchar t) diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el index 1e3eb9c12b1..43bd84d9990 100644 --- a/lisp/emacs-lisp/rx.el +++ b/lisp/emacs-lisp/rx.el @@ -1445,12 +1445,23 @@ following constructs: (regexp (rx--to-expr (rx--pcase-transform (cons 'seq regexps)))) (nvars (length rx--pcase-vars))) `(and (pred stringp) - ,(if (zerop nvars) - ;; No variables bound: a single predicate suffices. - `(pred (string-match ,regexp)) + ,(pcase nvars + (0 + ;; No variables bound: a single predicate suffices. + `(pred (string-match ,regexp))) + (1 + ;; Create a match value that on a successful regexp match + ;; is the submatch value, 0 on failure. We can't use nil + ;; for failure because it is a valid submatch value. + `(app (lambda (s) + (if (string-match ,regexp s) + (match-string 1 s) + 0)) + (and ,(car rx--pcase-vars) (pred (not numberp))))) + (_ ;; Pack the submatches into a dotted list which is then ;; immediately destructured into individual variables again. - ;; This is of course slightly inefficient when NVARS > 1. + ;; This is of course slightly inefficient. ;; A dotted list is used to reduce the number of conses ;; to create and take apart. `(app (lambda (s) @@ -1463,7 +1474,7 @@ following constructs: (rx--reduce-right #'cons (mapcar (lambda (name) (list '\, name)) - (reverse rx--pcase-vars))))))))) + (reverse rx--pcase-vars)))))))))) ;; Obsolete internal symbol, used in old versions of the `flycheck' package. (define-obsolete-function-alias 'rx-submatch-n 'rx-to-string "27.1") diff --git a/lisp/emacs-lisp/shortdoc.el b/lisp/emacs-lisp/shortdoc.el index 9b31d687035..0320e171825 100644 --- a/lisp/emacs-lisp/shortdoc.el +++ b/lisp/emacs-lisp/shortdoc.el @@ -625,7 +625,7 @@ There can be any number of :example/:result elements." (length> :eval (length> '(a b c) 1)) (length= - :eval (length> '(a b c) 3)) + :eval (length= '(a b c) 3)) (safe-length :eval (safe-length '(a b c)))) diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index 9c8c967ee9c..fb890509ad7 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -174,8 +174,8 @@ As a special case, interprets a SPEC of the form \(SYMBOL SOMETHING) like \((SYMBOL SOMETHING)). This exists for backward compatibility with an old syntax that accepted only one binding." (declare (indent 2) - (debug ([&or (&rest [&or symbolp (symbolp form) (form)]) - (symbolp form)] + (debug ([&or (symbolp form) ; must be first, Bug#48489 + (&rest [&or symbolp (symbolp form) (form)])] form body))) (when (and (<= (length spec) 2) (not (listp (car spec)))) @@ -289,6 +289,18 @@ than this function." (let ((result nil) (result-length 0) (index (if end (1- (length string)) 0))) + ;; FIXME: This implementation, which uses encode-coding-char + ;; to encode the string one character at a time, is in general + ;; incorrect: coding-systems that produce prefix or suffix + ;; bytes, such as ISO-2022-based or UTF-8/16 with BOM, will + ;; produce those bytes for each character, instead of just + ;; once for the entire string. encode-coding-char attempts to + ;; remove those extra bytes at least in some situations, but + ;; it cannot do that in all cases. And in any case, producing + ;; what is supposed to be a UTF-16 or ISO-2022-CN encoded + ;; string which lacks the BOM bytes at the beginning and the + ;; charset designation sequences at the head and tail of the + ;; result will definitely surprise the callers in some cases. (while (let ((encoded (encode-coding-char (aref string index) coding-system))) (and (<= (+ (length encoded) result-length) length) diff --git a/lisp/emacs-lisp/text-property-search.el b/lisp/emacs-lisp/text-property-search.el index 69943a83f1c..7da02a9cb2d 100644 --- a/lisp/emacs-lisp/text-property-search.el +++ b/lisp/emacs-lisp/text-property-search.el @@ -31,28 +31,40 @@ (defun text-property-search-forward (property &optional value predicate not-current) - "Search for the next region of text whose PROPERTY matches VALUE. - -If not found, return nil and don't move point. -If found, move point to the start of the region and return a -`prop-match' object describing the match. To access the details -of the match, use `prop-match-beginning' and `prop-match-end' for -the buffer positions that limit the region, and -`prop-match-value' for the value of PROPERTY in the region. - + "Search for the next region of text where PREDICATE is true. PREDICATE is used to decide whether a value of PROPERTY should be considered as matching VALUE. -If PREDICATE is t, that means a value must `equal' VALUE to be -considered a match. -If PREDICATE is nil, a value will match if it is non-nil and -is NOT `equal' to VALUE. + If PREDICATE is a function, it will be called with two arguments: VALUE and the value of PROPERTY. The function should return non-nil if these two values are to be considered a match. +Two special values of PREDICATE can also be used: +If PREDICATE is t, that means a value must `equal' VALUE to be +considered a match. +If PREDICATE is nil (which is the default value), a value will +match if is not `equal' to VALUE. Furthermore, a nil PREDICATE +means that the match region is ended if the value changes. For +instance, this means that if you loop with + + (while (setq prop (text-property-search-forward 'face)) + ...) + +you will get all distinct regions with non-nil `face' values in +the buffer, and the `prop' object will have the details about the +match. See the manual for more details and examples about how +VALUE and PREDICATE interact. + If NOT-CURRENT is non-nil, the function will search for the first region that doesn't include point and has a value of PROPERTY -that matches VALUE." +that matches VALUE. + +If no matches can be found, return nil and don't move point. +If found, move point to the end of the region and return a +`prop-match' object describing the match. To access the details +of the match, use `prop-match-beginning' and `prop-match-end' for +the buffer positions that limit the region, and +`prop-match-value' for the value of PROPERTY in the region." (interactive (list (let ((string (completing-read "Search for property: " obarray))) @@ -125,7 +137,7 @@ that matches VALUE." "Search for the previous region of text whose PROPERTY matches VALUE. Like `text-property-search-forward', which see, but searches backward, -and if a matching region is found, place point at its end." +and if a matching region is found, place point at the start of the region." (interactive (list (let ((string (completing-read "Search for property: " obarray))) diff --git a/lisp/emacs-lisp/thunk.el b/lisp/emacs-lisp/thunk.el index 83e0fa75aa7..7e349d22a49 100644 --- a/lisp/emacs-lisp/thunk.el +++ b/lisp/emacs-lisp/thunk.el @@ -52,7 +52,7 @@ (defmacro thunk-delay (&rest body) "Delay the evaluation of BODY." - (declare (debug t)) + (declare (debug (def-body))) (cl-assert lexical-binding) `(let (forced (val (lambda () ,@body))) diff --git a/lisp/epa-ks.el b/lisp/epa-ks.el new file mode 100644 index 00000000000..a33025b1125 --- /dev/null +++ b/lisp/epa-ks.el @@ -0,0 +1,337 @@ +;;; epa-ks.el --- EasyPG Key Server Client -*- lexical-binding: t -*- + +;; Copyright (C) 2021 Free Software Foundation, Inc. + +;; Author: Philip K. <philipk@posteo.net> +;; Keywords: PGP, GnuPG + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; Keyserver client in Emacs. + +;;; Code: + +(require 'cl-lib) +(require 'epa) +(require 'subr-x) +(require 'tabulated-list) +(require 'url) +(require 'url-http) + +(defgroup epa-ks nil + "The EasyPG Assistant Keyserver client." + :version "28.1" + :group 'epa) + +(defcustom epa-keyserver "pgp.mit.edu" + "Domain of keyserver. + +This is used by `epa-ks-lookup-key', for looking up public keys." + :type '(choice :tag "Keyserver" + (const random) + (const "keyring.debian.org") + (const "keys.gnupg.net") + (const "keyserver.ubuntu.com") + (const "pgp.mit.edu") + (const "pool.sks-keyservers.net") + (const "zimmermann.mayfirst.org") + (string :tag "Custom keyserver")) + :version "28.1") + +(cl-defstruct epa-ks-key + "Structure to hold key data." + id algo len created expires names flags) + +(cl-defstruct epa-ks-name + "Structure to hold user associated with keys data." + uid created expires flags) + +(defvar epa-ks-last-query nil + "List of arguments to pass to `epa-search-keys'. +This is used when reverting a buffer to restart search.") + +(defvar epa-ks-search-mode-map + (let ((map (make-sparse-keymap))) + (suppress-keymap map) + (define-key map (kbd "f") #'epa-ks-mark-key-to-fetch) + (define-key map (kbd "i") #'epa-ks-inspect-key-to-fetch) + (define-key map (kbd "u") #'epa-ks-unmark-key-to-fetch) + (define-key map (kbd "x") #'epa-ks-do-key-to-fetch) + map)) + +(define-derived-mode epa-ks-search-mode tabulated-list-mode "Keyserver" + "Major mode for listing public key search results." + (buffer-disable-undo) + (setq tabulated-list-format [("ID" 8 t) + ("Algo." 5 nil) + ("Created" 10 t) + ("Expires" 10 t) + ("User" 0 t)] + tabulated-list-sort-key '("User" . nil) + tabulated-list-padding 2) + (add-hook 'tabulated-list-revert-hook + #'epa-ks--restart-search + nil t) + (tabulated-list-init-header)) + +(defun epa-ks-inspect-key-to-fetch () + "Display full ID of key under point in the minibuffer." + (interactive) + (message "Full ID: %s" (epa-ks-key-id (car (tabulated-list-get-id))))) + +(defun epa-ks-unmark-key-to-fetch () + "Remove fetch mark for key under point. + +If a region is active, unmark all keys in active region." + (interactive) + (epa-ks-mark-key-to-fetch "")) + +(defun epa-ks-mark-key-to-fetch (tag) + "Add fetch-mark to key under point. + +If a region is active, mark all keys in active region. + +When all keys have been selected, use \\[epa-ks-do-key-to-fetch] to +actually import the keys. + +When called interactively, `epa-ks-mark-key-to-fetch' will always +add a \"F\" tag. Non-interactivly the tag must be specified by +setting the TAG parameter." + (interactive (list "F")) + (if (region-active-p) + (save-mark-and-excursion + (save-restriction + (narrow-to-region (region-beginning) (1- (region-end))) + (goto-char (point-min)) + (while (not (eobp)) + (tabulated-list-put-tag tag t)))) + (tabulated-list-put-tag tag t))) + +(defun epa-ks-do-key-to-fetch () + "Fetch all marked keys from keyserver and import them. + +Keys are marked using `epa-ks-mark-key-to-fetch'." + (interactive) + (save-excursion + (let (keys) + (goto-char (point-min)) + (while (not (eobp)) + (when (looking-at-p (rx bol "F")) + (push (epa-ks-key-id (car (tabulated-list-get-id))) + keys)) + (forward-line)) + (when (yes-or-no-p (format "Proceed with fetching all %d key(s)? " + (length keys)))) + (dolist (id keys) + (epa-ks--fetch-key id)))) + (tabulated-list-clear-all-tags)) + +(defun epa-ks--fetch-key (id) + "Send request to import key with specified ID." + (url-retrieve + (format "https://%s/pks/lookup?%s" + epa-keyserver + (url-build-query-string + `(("search" ,(concat "0x" (url-hexify-string id))) + ("options" "mr") + ("op" "get")))) + (lambda (status) + (when (plist-get status :error) + (error "Request failed: %s" + (caddr (assq (caddr (plist-get status :error)) + url-http-codes)))) + (forward-paragraph) + (save-excursion + (goto-char (point-max)) + (while (memq (char-before) '(?\s ?\t ?\n)) + (forward-char -1)) + (delete-region (point) (point-max))) + (let ((epa-popup-info-window nil)) + (epa-import-armor-in-region (point) (point-max))) + (kill-buffer)))) + +(defun epa-ks--display-keys (buf keys) + "Prepare KEYS for `tabulated-list-mode', for buffer BUF. + +KEYS is a list of `epa-ks-key' structures, as parsed by +`epa-ks-parse-result'." + (when (buffer-live-p buf) + (let (entries) + (dolist (key keys) + (dolist (name (epa-ks-key-names key)) + (push (list (cons key name) + (vector + (substring (epa-ks-key-id key) -8) + (cdr (epa-ks-key-algo key)) + (if (epa-ks-key-created key) + (format-time-string "%F" (epa-ks-key-created key)) + "N/A") + (if (epa-ks-key-expires key) + (let* ((date (epa-ks-key-expires key)) + (str (format-time-string "%F" date))) + (when (< 0 (time-to-seconds (time-since date))) + (setq str (propertize str 'face + 'font-lock-warning-face))) + str) + (propertize "N/A" 'face 'shadow)) + (decode-coding-string + (epa-ks-name-uid name) + (select-safe-coding-system (epa-ks-name-uid name) + nil 'utf-8)))) + entries))) + (with-current-buffer buf + (setq tabulated-list-entries entries) + (tabulated-list-print t t)) + (message "Press `f' to mark a key, `x' to fetch all marked keys.")))) + +(defun epa-ks--restart-search () + (when epa-ks-last-query + (apply #'epa-search-keys epa-ks-last-query))) + +;;;###autoload +(defun epa-search-keys (query exact) + "Ask a keyserver for all keys matching QUERY. + +The keyserver to be used is specified by `epa-keyserver'. + +If EXACT is non-nil (interactively, prefix argument), require +exact matches. + +Note that the request may fail if the query is not specific +enough, since keyservers have strict timeout settings." + (interactive (list (read-string "Search for: ") + current-prefix-arg)) + (when (string-empty-p query) + (user-error "No query")) + (let ((buf (get-buffer-create "*Key search*"))) + (with-current-buffer buf + (let ((inhibit-read-only t)) + (erase-buffer)) + (epa-ks-search-mode)) + (url-retrieve + (format "https://%s/pks/lookup?%s" + epa-keyserver + (url-build-query-string + (append `(("search" ,query) + ("options" "mr") + ("op" "index")) + (and exact '(("exact" "on")))))) + (lambda (status) + (when (plist-get status :error) + (when buf + (kill-buffer buf)) + (error "Request failed: %s" + (caddr (assq (caddr (plist-get status :error)) + url-http-codes)))) + (goto-char (point-min)) + (while (search-forward "\r\n" nil t) + (replace-match "\n" t t)) + (goto-char (point-min)) + (re-search-forward "\n\n") + (let (keys) + (save-match-data + (setq keys (epa-ks--parse-buffer)) + (kill-buffer (current-buffer))) + (when buf + (epa-ks--display-keys buf keys) keys)))) + (pop-to-buffer buf) + (setq epa-ks-last-query (list query exact))) + (message "Searching keys...")) + +(defun epa-ks--parse-buffer () + ;; parse machine readable response according to + ;; https://tools.ietf.org/html/draft-shaw-openpgp-hkp-00#section-5.2 + (when (looking-at (rx bol "info:" (group (+ digit)) + ":" (* digit) eol)) + (unless (string= (match-string 1) "1") + (error "Unsupported keyserver version"))) + (forward-line 1) + (let (key keys) + (while (and (not (eobp)) + (not (looking-at "[ \t]*\n"))) + (cond + ((looking-at (rx bol "pub:" (group (+ alnum)) + ":" (group (* digit)) + ":" (group (* digit)) + ":" (group (* digit)) + ":" (group (* digit)) + ":" (group (* (any ?r ?d ?e))) + eol)) + (setq key + (make-epa-ks-key + :id (match-string 1) + :algo + (and (match-string 2) + (not (string-empty-p (match-string 2))) + (assoc (string-to-number (match-string 2)) + epg-pubkey-algorithm-alist)) + :len + (and (match-string 3) + (not (string-empty-p (match-string 3))) + (string-to-number (match-string 3))) + :created + (and (match-string 4) + (not (string-empty-p (match-string 4))) + (seconds-to-time + (string-to-number (match-string 4)))) + :expires + (and (match-string 5) + (not (string-empty-p (match-string 5))) + (seconds-to-time + (string-to-number (match-string 5)))) + :flags + (mapcar (lambda (flag) + (cdr (assq flag '((?r revoked) + (?d disabled) + (?e expired))))) + (match-string 6)))) + (push key keys)) + ((looking-at (rx bol "uid:" (group (+ (not ":"))) + ":" (group (* digit)) + ":" (group (* digit)) + ":" (group (* (any ?r ?d ?e))) + eol)) + (push (make-epa-ks-name + :uid (url-unhex-string (match-string 1) t) + :created + (and (match-string 2) + (not (string-empty-p (match-string 2))) + (decode-time (seconds-to-time + (string-to-number + (match-string 2))))) + :expires + (and (match-string 3) + (not (string-empty-p (match-string 3))) + (decode-time (seconds-to-time + (string-to-number + (match-string 3))))) + :flags + (mapcar (lambda (flag) + (cdr (assq flag '((?r revoked) + (?d disabled) + (?e expired))))) + (match-string 4))) + (epa-ks-key-names key))) + ((looking-at-p (rx bol "uat:")) + ;; user attribute fields are ignored + nil) + (t (error "Invalid server response"))) + (forward-line)) + keys)) + +;;; epa-ks.el ends here diff --git a/lisp/epa-mail.el b/lisp/epa-mail.el index 7eac1f89986..bed0c065aea 100644 --- a/lisp/epa-mail.el +++ b/lisp/epa-mail.el @@ -108,8 +108,9 @@ use from your key ring." (interactive (save-excursion (goto-char (point-min)) - (if (search-forward mail-header-separator nil t) - (forward-line)) + (rfc822-goto-eoh) + (unless (eobp) + (forward-line)) (setq epa-last-coding-system-specified (or coding-system-for-write (select-safe-coding-system (point) (point-max)))) @@ -135,9 +136,7 @@ If no one is selected, default secret key is used. " (goto-char (point-min)) (save-restriction (narrow-to-region (point) - (if (search-forward mail-header-separator nil 0) - (match-beginning 0) - (point))) + (progn (rfc822-goto-eoh) (point))) (setq recipients-string (mapconcat #'identity (nconc (mail-fetch-field "to" nil nil t) @@ -170,7 +169,7 @@ If no one is selected, default secret key is used. " (apply #'nconc (mapcar (lambda (recipient) - (let ((tem (assoc recipient epa-mail-aliases))) + (let ((tem (assoc (downcase recipient) epa-mail-aliases))) (if tem (copy-sequence (cdr tem)) (list recipient)))) real-recipients))) @@ -236,8 +235,9 @@ If no one is selected, symmetric encryption will be performed. " default-recipients))))) (goto-char (point-min)) - (if (search-forward mail-header-separator nil t) - (forward-line)) + (rfc822-goto-eoh) + (unless (eobp) + (forward-line)) (setq start (point)) (setq epa-last-coding-system-specified diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 6717ee37cc7..547056361a8 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -2278,8 +2278,8 @@ Example usage: (erc-tls :server \"chat.freenode.net\" :port 6697 :client-certificate - '(\"/data/bandali/my-cert.key\" - \"/data/bandali/my-cert.crt\"))" + '(\"/home/bandali/my-cert.key\" + \"/home/bandali/my-cert.crt\"))" (interactive (let ((erc-default-port erc-default-port-tls)) (erc-select-read-args))) (let ((erc-server-connect-function 'erc-open-tls-stream)) diff --git a/lisp/eshell/em-pred.el b/lisp/eshell/em-pred.el index 0780d6ee83a..def52f42e55 100644 --- a/lisp/eshell/em-pred.el +++ b/lisp/eshell/em-pred.el @@ -63,8 +63,7 @@ ordinary strings." (defcustom eshell-pred-load-hook nil "A list of functions to run when `eshell-pred' is loaded." :version "24.1" ; removed eshell-pred-initialize - :type 'hook - :group 'eshell-pred) + :type 'hook) (defcustom eshell-predicate-alist '((?/ . (eshell-pred-file-type ?d)) ; directories @@ -108,8 +107,7 @@ ordinary strings." The format of each entry is (CHAR . PREDICATE-FUNC-SEXP)" - :type '(repeat (cons character sexp)) - :group 'eshell-pred) + :type '(repeat (cons character sexp))) (put 'eshell-predicate-alist 'risky-local-variable t) @@ -146,8 +144,7 @@ The format of each entry is The format of each entry is (CHAR ENTRYWISE-P MODIFIER-FUNC-SEXP)" - :type '(repeat (cons character sexp)) - :group 'eshell-pred) + :type '(repeat (cons character sexp))) (put 'eshell-modifier-alist 'risky-local-variable t) @@ -297,9 +294,9 @@ This function is specially for adding onto `eshell-parse-argument-hook'." (append eshell-current-modifiers (list - `(lambda (lst) - (eshell-apply-modifiers - lst (quote ,preds) (quote ,mods))))))))) + (lambda (lst) + (eshell-apply-modifiers + lst preds mods)))))))) (goto-char (1+ end)) (eshell-finish-arg)))))) @@ -324,7 +321,7 @@ resultant list of strings." (if (looking-at "[^|':]") (let ((func (read (current-buffer)))) (if (and func (functionp func)) - (setq preds (eshell-add-pred-func func preds + (setq preds (eshell-add-pred-func (eval func t) preds negate follow)) (error "Invalid function predicate `%s'" (eshell-stringify func)))) @@ -341,8 +338,7 @@ resultant list of strings." (let ((func (read (current-buffer)))) (if (and func (functionp func)) (setq mods - (cons `(lambda (lst) - (mapcar (function ,func) lst)) + (cons (lambda (lst) (mapcar func lst)) mods)) (error "Invalid function modifier `%s'" (eshell-stringify func)))) @@ -353,14 +349,14 @@ resultant list of strings." (if (not mod) (error "Unknown modifier character `%c'" (char-after)) (forward-char) - (setq mods (cons (eval (cdr mod)) mods))))) + (setq mods (cons (eval (cdr mod) t) mods))))) (t (let ((pred (assq char eshell-predicate-alist))) (if (not pred) (error "Unknown predicate character `%c'" char) (forward-char) (setq preds - (eshell-add-pred-func (eval (cdr pred)) preds + (eshell-add-pred-func (eval (cdr pred) t) preds negate follow)))))))) (end-of-buffer (error "Predicate or modifier ended prematurely"))) @@ -369,11 +365,11 @@ resultant list of strings." (defun eshell-add-pred-func (pred funcs negate follow) "Add the predicate function PRED to FUNCS." (if negate - (setq pred `(lambda (file) - (not (funcall ,pred file))))) + (setq pred (lambda (file) + (not (funcall pred file))))) (if follow - (setq pred `(lambda (file) - (funcall ,pred (file-truename file))))) + (setq pred (lambda (file) + (funcall pred (file-truename file))))) (cons pred funcs)) (defun eshell-pred-user-or-group (mod-char mod-type attr-index get-id-func) @@ -399,10 +395,10 @@ resultant list of strings." (unless ugid (error "Unknown %s name specified for modifier `%c'" mod-type mod-char)) - `(lambda (file) - (let ((attrs (file-attributes file))) - (if attrs - (= (nth ,attr-index attrs) ,ugid)))))) + (lambda (file) + (let ((attrs (file-attributes file))) + (if attrs + (= (nth attr-index attrs) ugid)))))) (defun eshell-pred-file-time (mod-char mod-type attr-index) "Return a predicate to test whether a file matches a certain time." @@ -445,13 +441,13 @@ resultant list of strings." (error "Cannot stat file `%s'" file)) (setq when (nth attr-index attrs))) (goto-char (1+ end))) - `(lambda (file) - (let ((attrs (file-attributes file))) - (if attrs - (,(cond ((eq qual ?-) #'time-less-p) + (let ((f (cond ((eq qual ?-) #'time-less-p) ((eq qual ?+) (lambda (a b) (time-less-p b a))) - (#'time-equal-p)) - ,when (nth ,attr-index attrs))))))) + (#'time-equal-p)))) + (lambda (file) + (let ((attrs (file-attributes file))) + (if attrs + (funcall f when (nth attr-index attrs)))))))) (defun eshell-pred-file-type (type) "Return a test which tests that the file is of a certain TYPE. @@ -462,20 +458,20 @@ that `ls -l' will show in the first column of its display." (if (memq type '(?b ?c)) (forward-char) (setq type ?%))) - `(lambda (file) - (let ((attrs (eshell-file-attributes (directory-file-name file)))) - (if attrs - (memq (aref (file-attribute-modes attrs) 0) - ,(if (eq type ?%) - '(?b ?c) - (list 'quote (list type)))))))) + (let ((set (if (eq type ?%) + '(?b ?c) + (list type)))) + (lambda (file) + (let ((attrs (eshell-file-attributes (directory-file-name file)))) + (if attrs + (memq (aref (file-attribute-modes attrs) 0) set)))))) (defsubst eshell-pred-file-mode (mode) "Return a test which tests that MODE pertains to the file." - `(lambda (file) - (let ((modes (file-modes file 'nofollow))) - (if modes - (not (zerop (logand ,mode modes))))))) + (lambda (file) + (let ((modes (file-modes file 'nofollow))) + (if modes + (not (zerop (logand mode modes))))))) (defun eshell-pred-file-links () "Return a predicate to test whether a file has a given number of links." @@ -487,15 +483,15 @@ that `ls -l' will show in the first column of its display." (error "Invalid file link count modifier `l'")) (setq amount (string-to-number (match-string 0))) (goto-char (match-end 0)) - `(lambda (file) - (let ((attrs (eshell-file-attributes file))) - (if attrs - (,(if (eq qual ?-) - '< - (if (eq qual ?+) - '> - '=)) - (file-attribute-link-number attrs) ,amount)))))) + (let ((f (if (eq qual ?-) + #'< + (if (eq qual ?+) + #'> + #'=)))) + (lambda (file) + (let ((attrs (eshell-file-attributes file))) + (if attrs + (funcall f (file-attribute-link-number attrs) amount))))))) (defun eshell-pred-file-size () "Return a predicate to test whether a file is of a given size." @@ -517,15 +513,15 @@ that `ls -l' will show in the first column of its display." (error "Invalid file size modifier `L'")) (setq amount (* (string-to-number (match-string 0)) quantum)) (goto-char (match-end 0)) - `(lambda (file) - (let ((attrs (eshell-file-attributes file))) - (if attrs - (,(if (eq qual ?-) - '< - (if (eq qual ?+) - '> - '=)) - (file-attribute-size attrs) ,amount)))))) + (let ((f (if (eq qual ?-) + #'< + (if (eq qual ?+) + #'> + #'=)))) + (lambda (file) + (let ((attrs (eshell-file-attributes file))) + (if attrs + (funcall f (file-attribute-size attrs) amount))))))) (defun eshell-pred-substitute (&optional repeat) "Return a modifier function that will substitute matches." @@ -539,22 +535,22 @@ that `ls -l' will show in the first column of its display." replace (buffer-substring-no-properties (point) end)) (goto-char (1+ end)) (if repeat - `(lambda (lst) - (mapcar - (lambda (str) - (let ((i 0)) - (while (setq i (string-match ,match str i)) - (setq str (replace-match ,replace t nil str)))) - str) - lst)) - `(lambda (lst) - (mapcar - (lambda (str) - (if (string-match ,match str) - (setq str (replace-match ,replace t nil str)) - (error (concat str ": substitution failed"))) - str) - lst))))) + (lambda (lst) + (mapcar + (lambda (str) + (let ((i 0)) + (while (setq i (string-match match str i)) + (setq str (replace-match replace t nil str)))) + str) + lst)) + (lambda (lst) + (mapcar + (lambda (str) + (if (string-match match str) + (setq str (replace-match replace t nil str)) + (error (concat str ": substitution failed"))) + str) + lst))))) (defun eshell-include-members (&optional invert-p) "Include only lisp members matching a regexp." @@ -564,12 +560,12 @@ that `ls -l' will show in the first column of its display." (setq end (eshell-find-delimiter delim delim nil nil t) regexp (buffer-substring-no-properties (point) end)) (goto-char (1+ end)) - `(lambda (lst) - (eshell-winnow-list - lst nil '((lambda (elem) - ,(if invert-p - `(not (string-match ,regexp elem)) - `(string-match ,regexp elem)))))))) + (let ((predicates + (list (if invert-p + (lambda (elem) (not (string-match regexp elem))) + (lambda (elem) (string-match regexp elem)))))) + (lambda (lst) + (eshell-winnow-list lst nil predicates))))) (defun eshell-join-members () "Return a modifier function that join matches." @@ -581,8 +577,8 @@ that `ls -l' will show in the first column of its display." (setq end (eshell-find-delimiter delim delim nil nil t) str (buffer-substring-no-properties (point) end)) (goto-char (1+ end))) - `(lambda (lst) - (mapconcat 'identity lst ,str)))) + (lambda (lst) + (mapconcat #'identity lst str)))) (defun eshell-split-members () "Return a modifier function that splits members." @@ -593,10 +589,11 @@ that `ls -l' will show in the first column of its display." (setq end (eshell-find-delimiter delim delim nil nil t) sep (buffer-substring-no-properties (point) end)) (goto-char (1+ end))) - `(lambda (lst) - (mapcar - (lambda (str) - (split-string str ,sep)) lst)))) + (lambda (lst) + (mapcar + (lambda (str) + (split-string str sep)) + lst)))) (provide 'em-pred) diff --git a/lisp/facemenu.el b/lisp/facemenu.el index 8db1b42db44..855ce0be69e 100644 --- a/lisp/facemenu.el +++ b/lisp/facemenu.el @@ -91,12 +91,11 @@ :prefix "facemenu-") (defcustom facemenu-keybindings - (mapcar 'purecopy '((default . "d") (bold . "b") (italic . "i") - (bold-italic . "l") ; {bold} intersect {italic} = {l} - (underline . "u"))) + (bold-italic . "l") ; {bold} intersect {italic} = {l} + (underline . "u")) "Alist of interesting faces and keybindings. Each element is itself a list: the car is the name of the face, the next element is the key to use as a keyboard equivalent of the menu item; @@ -147,7 +146,7 @@ it will remove any faces not explicitly in the list." (defvar facemenu-face-menu (let ((map (make-sparse-keymap "Face"))) - (define-key map "o" (cons (purecopy "Other...") 'facemenu-set-face)) + (define-key map "o" (cons "Other..." 'facemenu-set-face)) map) "Menu keymap for faces.") (defalias 'facemenu-face-menu facemenu-face-menu) @@ -155,7 +154,7 @@ it will remove any faces not explicitly in the list." (defvar facemenu-foreground-menu (let ((map (make-sparse-keymap "Foreground Color"))) - (define-key map "o" (cons (purecopy "Other...") 'facemenu-set-foreground)) + (define-key map "o" (cons "Other..." 'facemenu-set-foreground)) map) "Menu keymap for foreground colors.") (defalias 'facemenu-foreground-menu facemenu-foreground-menu) @@ -163,7 +162,7 @@ it will remove any faces not explicitly in the list." (defvar facemenu-background-menu (let ((map (make-sparse-keymap "Background Color"))) - (define-key map "o" (cons (purecopy "Other...") 'facemenu-set-background)) + (define-key map "o" (cons "Other..." 'facemenu-set-background)) map) "Menu keymap for background colors.") (defalias 'facemenu-background-menu facemenu-background-menu) @@ -186,27 +185,22 @@ return a string which is inserted. It may set `facemenu-end-add-face'." (defvar facemenu-special-menu (let ((map (make-sparse-keymap "Special"))) - (define-key map [?s] (cons (purecopy "Remove Special") - 'facemenu-remove-special)) - (define-key map [?c] (cons (purecopy "Charset") - 'facemenu-set-charset)) - (define-key map [?t] (cons (purecopy "Intangible") - 'facemenu-set-intangible)) - (define-key map [?v] (cons (purecopy "Invisible") - 'facemenu-set-invisible)) - (define-key map [?r] (cons (purecopy "Read-Only") - 'facemenu-set-read-only)) + (define-key map [?s] (cons "Remove Special" 'facemenu-remove-special)) + (define-key map [?c] (cons "Charset" 'facemenu-set-charset)) + (define-key map [?t] (cons "Intangible" 'facemenu-set-intangible)) + (define-key map [?v] (cons "Invisible" 'facemenu-set-invisible)) + (define-key map [?r] (cons "Read-Only" 'facemenu-set-read-only)) map) "Menu keymap for non-face text-properties.") (defalias 'facemenu-special-menu facemenu-special-menu) (defvar facemenu-justification-menu (let ((map (make-sparse-keymap "Justification"))) - (define-key map [?c] (cons (purecopy "Center") 'set-justification-center)) - (define-key map [?b] (cons (purecopy "Full") 'set-justification-full)) - (define-key map [?r] (cons (purecopy "Right") 'set-justification-right)) - (define-key map [?l] (cons (purecopy "Left") 'set-justification-left)) - (define-key map [?u] (cons (purecopy "Unfilled") 'set-justification-none)) + (define-key map [?c] (cons "Center" 'set-justification-center)) + (define-key map [?b] (cons "Full" 'set-justification-full)) + (define-key map [?r] (cons "Right" 'set-justification-right)) + (define-key map [?l] (cons "Left" 'set-justification-left)) + (define-key map [?u] (cons "Unfilled" 'set-justification-none)) map) "Submenu for text justification commands.") (defalias 'facemenu-justification-menu facemenu-justification-menu) @@ -214,13 +208,13 @@ return a string which is inserted. It may set `facemenu-end-add-face'." (defvar facemenu-indentation-menu (let ((map (make-sparse-keymap "Indentation"))) (define-key map [decrease-right-margin] - (cons (purecopy "Indent Right Less") 'decrease-right-margin)) + (cons "Indent Right Less" 'decrease-right-margin)) (define-key map [increase-right-margin] - (cons (purecopy "Indent Right More") 'increase-right-margin)) + (cons "Indent Right More" 'increase-right-margin)) (define-key map [decrease-left-margin] - (cons (purecopy "Indent Less") 'decrease-left-margin)) + (cons "Indent Less" 'decrease-left-margin)) (define-key map [increase-left-margin] - (cons (purecopy "Indent More") 'increase-left-margin)) + (cons "Indent More" 'increase-left-margin)) map) "Submenu for indentation commands.") (defalias 'facemenu-indentation-menu facemenu-indentation-menu) @@ -230,36 +224,33 @@ return a string which is inserted. It may set `facemenu-end-add-face'." "Facemenu top-level menu keymap.") (setq facemenu-menu (make-sparse-keymap "Text Properties")) (let ((map facemenu-menu)) - (define-key map [dc] (cons (purecopy "Display Colors") 'list-colors-display)) - (define-key map [df] (cons (purecopy "Display Faces") 'list-faces-display)) - (define-key map [dp] (cons (purecopy "Describe Properties") - 'describe-text-properties)) - (define-key map [ra] (list 'menu-item (purecopy "Remove Text Properties") + (define-key map [dc] (cons "Display Colors" 'list-colors-display)) + (define-key map [df] (cons "Display Faces" 'list-faces-display)) + (define-key map [dp] (cons "Describe Properties" 'describe-text-properties)) + (define-key map [ra] (list 'menu-item "Remove Text Properties" 'facemenu-remove-all :enable 'mark-active)) - (define-key map [rm] (list 'menu-item (purecopy "Remove Face Properties") + (define-key map [rm] (list 'menu-item "Remove Face Properties" 'facemenu-remove-face-props :enable 'mark-active)) - (define-key map [s1] (list (purecopy "--")))) + (define-key map [s1] (list "--"))) (let ((map facemenu-menu)) - (define-key map [in] (cons (purecopy "Indentation") - 'facemenu-indentation-menu)) - (define-key map [ju] (cons (purecopy "Justification") - 'facemenu-justification-menu)) - (define-key map [s2] (list (purecopy "--"))) - (define-key map [sp] (cons (purecopy "Special Properties") - 'facemenu-special-menu)) - (define-key map [bg] (cons (purecopy "Background Color") - 'facemenu-background-menu)) - (define-key map [fg] (cons (purecopy "Foreground Color") - 'facemenu-foreground-menu)) - (define-key map [fc] (cons (purecopy "Face") - 'facemenu-face-menu))) + (define-key map [in] (cons "Indentation" 'facemenu-indentation-menu)) + (define-key map [ju] (cons "Justification" 'facemenu-justification-menu)) + (define-key map [s2] (list "--")) + (define-key map [sp] (cons "Special Properties" 'facemenu-special-menu)) + (define-key map [bg] (cons "Background Color" 'facemenu-background-menu)) + (define-key map [fg] (cons "Foreground Color" 'facemenu-foreground-menu)) + (define-key map [fc] (cons "Face" 'facemenu-face-menu))) (defalias 'facemenu-menu facemenu-menu) +(easy-menu-add-item + menu-bar-edit-menu nil + ["Text Properties" facemenu-menu]) + (defvar facemenu-keymap (let ((map (make-sparse-keymap "Set face"))) - (define-key map "o" (cons (purecopy "Other...") 'facemenu-set-face)) + (define-key map "o" (cons "Other..." 'facemenu-set-face)) (define-key map "\M-o" 'font-lock-fontify-block) map) "Keymap for face-changing commands. @@ -819,11 +810,11 @@ This is called whenever you create a new face, and at other times." symbol (intern name))) (setq menu 'facemenu-face-menu) (setq docstring - (purecopy (format "Select face `%s' for subsequent insertion. + (format "Select face `%s' for subsequent insertion. If the mark is active and there is no prefix argument, apply face `%s' to the region instead. This command was defined by `facemenu-add-new-face'." - name name))) + name name)) (cond ((facemenu-iterate ; check if equivalent face is already in the menu (lambda (m) (and (listp m) (symbolp (car m)) @@ -836,15 +827,15 @@ This command was defined by `facemenu-add-new-face'." (key (setq function (intern (concat "facemenu-set-" name))) (fset function - `(lambda () - ,docstring - (interactive) - (facemenu-set-face - (quote ,symbol) - (if (and mark-active (not current-prefix-arg)) - (region-beginning)) - (if (and mark-active (not current-prefix-arg)) - (region-end))))) + (lambda () + (:documentation docstring) + (interactive) + (facemenu-set-face + symbol + (if (and mark-active (not current-prefix-arg)) + (region-beginning)) + (if (and mark-active (not current-prefix-arg)) + (region-end))))) (define-key 'facemenu-keymap key (cons name function)) (define-key menu key (cons name function))) ;; Faces with no keyboard equivalent. Figure out where to put it: diff --git a/lisp/faces.el b/lisp/faces.el index fdb47f9b831..138abc10287 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -2119,7 +2119,23 @@ the X resource \"reverseVideo\" is present, handle that." (x-handle-reverse-video frame parameters) (frame-set-background-mode frame t) (face-set-after-frame-default frame parameters) - (if (null visibility-spec) + ;; Mark frame as 'was-invisible' when it was created as + ;; invisible or iconified and PARAMETERS contains either a + ;; width or height specification. This should be sufficient + ;; to handle Bug#24526 (where a frame is initially iconified + ;; to allow manipulating its size in a non-obtrusive way) and + ;; avoid that a tiling window manager for GTK3 gets a resize + ;; request it cannot handle (Bug#48268). The 'was-invisible' + ;; flag is eventually processed in xterm.c after we receive a + ;; MapNotify event; non-X builds ignore it. + (frame--set-was-invisible + frame + (and visibility-spec + (memq (cdr visibility-spec) '(nil icon)) + (or (assq 'width parameters) + (assq 'height parameters)))) + + (if (null visibility-spec) (make-frame-visible frame) (modify-frame-parameters frame (list visibility-spec))) (setq success t)) diff --git a/lisp/files.el b/lisp/files.el index 27074beffc1..4fdafe19db9 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -391,6 +391,10 @@ constructed by taking the directory part of the replaced file-name, concatenated with the buffer file name with all directory separators changed to `!' to prevent clashes. This will not work correctly if your filesystem truncates the resulting name. +If UNIQUIFY is one of the members of `secure-hash-algorithms', +Emacs constructs the nondirectory part of the auto-save file name +by applying that `secure-hash' to the buffer file name. This +avoids any risk of excessively long file names. All the transforms in the list are tried, in the order they are listed. When one transform applies, its result is final; @@ -577,7 +581,9 @@ a -*- line. The command \\[normal-mode], when used interactively, always obeys file local variable specifications and the -*- line, -and ignores this variable." +and ignores this variable. + +Also see the `permanently-enabled-local-variables' variable." :risky t :type '(choice (const :tag "Query Unsafe" t) (const :tag "Safe Only" :safe) @@ -3198,13 +3204,8 @@ we don't actually set it to the same mode the buffer already has." (or (set-auto-mode-0 mode keep-mode-if-same) ;; continuing would call minor modes again, toggling them off (throw 'nop nil)))))) - ;; hack-local-variables checks local-enable-local-variables etc, but - ;; we might as well be explicit here for the sake of clarity. (and (not done) - enable-local-variables - local-enable-local-variables - try-locals - (setq mode (hack-local-variables t)) + (setq mode (hack-local-variables t (not try-locals))) (not (memq mode modes)) ; already tried and failed (if (not (functionp mode)) (message "Ignoring unknown mode `%s'" mode) @@ -3503,6 +3504,10 @@ function is allowed to change the contents of this alist. This hook is called only if there is at least one file-local variable to set.") +(defvar permanently-enabled-local-variables '(lexical-binding) + "A list of local variables that are always enabled. +This overrides any `enable-local-variables' setting.") + (defun hack-local-variables-confirm (all-vars unsafe-vars risky-vars dir-name) "Get confirmation before setting up local variable values. ALL-VARS is the list of all variables to be set up. @@ -3716,25 +3721,26 @@ DIR-NAME is the name of the associated directory. Otherwise it is nil." ;; TODO? Warn once per file rather than once per session? (defvar hack-local-variables--warned-lexical nil) -(defun hack-local-variables (&optional handle-mode) +(defun hack-local-variables (&optional handle-mode inhibit-locals) "Parse and put into effect this buffer's local variables spec. For buffers visiting files, also puts into effect directory-local variables. + Uses `hack-local-variables-apply' to apply the variables. -If HANDLE-MODE is nil, we apply all the specified local -variables. If HANDLE-MODE is neither nil nor t, we do the same, -except that any settings of `mode' are ignored. +See `hack-local-variables--find-variables' for the meaning of +HANDLE-MODE. -If HANDLE-MODE is t, all we do is check whether a \"mode:\" -is specified, and return the corresponding mode symbol, or nil. -In this case, we try to ignore minor-modes, and return only a -major-mode. - -If `enable-local-variables' or `local-enable-local-variables' is nil, -this function does nothing. If `inhibit-local-variables-regexps' +If `enable-local-variables' or `local-enable-local-variables' is +nil, or INHIBIT-LOCALS is non-nil, this function disregards all +normal local variables. If `inhibit-local-variables-regexps' applies to the file in question, the file is not scanned for -local variables, but directory-local variables may still be applied." +local variables, but directory-local variables may still be +applied. + +Variables present in `permanently-enabled-local-variables' will +still be evaluated, even if local variables are otherwise +inhibited." ;; We don't let inhibit-local-variables-p influence the value of ;; enable-local-variables, because then it would affect dir-local ;; variables. We don't want to search eg tar files for file local @@ -3742,9 +3748,18 @@ local variables, but directory-local variables may still be applied." ;; to them. The real meaning of inhibit-local-variables-p is "do ;; not scan this file for local variables". (let ((enable-local-variables - (and local-enable-local-variables enable-local-variables)) - result) - (unless (eq handle-mode t) + (and (not inhibit-locals) + local-enable-local-variables enable-local-variables))) + (if (eq handle-mode t) + ;; We're looking just for the major mode setting. + (and enable-local-variables + (not (inhibit-local-variables-p)) + ;; If HANDLE-MODE is t, and the prop line specifies a + ;; mode, then we're done, and have no need to scan further. + (or (hack-local-variables-prop-line t) + ;; Look for the mode elsewhere in the buffer. + (hack-local-variables--find-variables t))) + ;; Normal handling of local variables. (setq file-local-variables-alist nil) (when (and (file-remote-p default-directory) (fboundp 'hack-connection-local-variables) @@ -3755,133 +3770,138 @@ local variables, but directory-local variables may still be applied." (connection-local-criteria-for-default-directory)))) (with-demoted-errors "Directory-local variables error: %s" ;; Note this is a no-op if enable-local-variables is nil. - (hack-dir-local-variables))) - ;; This entire function is basically a no-op if enable-local-variables - ;; is nil. All it does is set file-local-variables-alist to nil. - (when enable-local-variables - ;; This part used to ignore enable-local-variables when handle-mode - ;; was t. That was inappropriate, eg consider the - ;; (artificial) example of: - ;; (setq local-enable-local-variables nil) - ;; Open a file foo.txt that contains "mode: sh". - ;; It correctly opens in text-mode. - ;; M-x set-visited-file name foo.c, and it incorrectly stays in text-mode. - (unless (or (inhibit-local-variables-p) - ;; If HANDLE-MODE is t, and the prop line specifies a - ;; mode, then we're done, and have no need to scan further. - (and (setq result (hack-local-variables-prop-line - handle-mode)) - (eq handle-mode t))) - ;; Look for "Local variables:" line in last page. - (save-excursion - (goto-char (point-max)) - (search-backward "\n\^L" (max (- (point-max) 3000) (point-min)) - 'move) - (when (let ((case-fold-search t)) - (search-forward "Local Variables:" nil t)) - (skip-chars-forward " \t") - ;; suffix is what comes after "local variables:" in its line. - ;; prefix is what comes before "local variables:" in its line. - (let ((suffix - (concat - (regexp-quote (buffer-substring (point) - (line-end-position))) - "$")) - (prefix - (concat "^" (regexp-quote - (buffer-substring (line-beginning-position) - (match-beginning 0)))))) - - (forward-line 1) - (let ((startpos (point)) - endpos - (thisbuf (current-buffer))) - (save-excursion - (unless (let ((case-fold-search t)) - (re-search-forward - (concat prefix "[ \t]*End:[ \t]*" suffix) - nil t)) - ;; This used to be an error, but really all it means is - ;; that this may simply not be a local-variables section, - ;; so just ignore it. - (message "Local variables list is not properly terminated")) - (beginning-of-line) - (setq endpos (point))) - - (with-temp-buffer - (insert-buffer-substring thisbuf startpos endpos) - (goto-char (point-min)) - (subst-char-in-region (point) (point-max) ?\^m ?\n) - (while (not (eobp)) - ;; Discard the prefix. - (if (looking-at prefix) - (delete-region (point) (match-end 0)) - (error "Local variables entry is missing the prefix")) - (end-of-line) - ;; Discard the suffix. - (if (looking-back suffix (line-beginning-position)) - (delete-region (match-beginning 0) (point)) - (error "Local variables entry is missing the suffix")) - (forward-line 1)) - (goto-char (point-min)) - - (while (not (or (eobp) - (and (eq handle-mode t) result))) - ;; Find the variable name; - (unless (looking-at hack-local-variable-regexp) - (error "Malformed local variable line: %S" - (buffer-substring-no-properties - (point) (line-end-position)))) - (goto-char (match-end 1)) - (let* ((str (match-string 1)) - (var (intern str)) - val val2) - (and (equal (downcase (symbol-name var)) "mode") - (setq var 'mode)) - ;; Read the variable value. - (skip-chars-forward "^:") - (forward-char 1) - ;; As a defensive measure, we do not allow - ;; circular data in the file-local data. - (let ((read-circle nil)) - (setq val (read (current-buffer)))) - (if (eq handle-mode t) - (and (eq var 'mode) - ;; Specifying minor-modes via mode: is - ;; deprecated, but try to reject them anyway. - (not (string-match - "-minor\\'" - (setq val2 (downcase (symbol-name val))))) - (setq result (intern (concat val2 "-mode")))) - (cond ((eq var 'coding)) - ((eq var 'lexical-binding) - (unless hack-local-variables--warned-lexical - (setq hack-local-variables--warned-lexical t) - (display-warning - 'files - (format-message - "%s: `lexical-binding' at end of file unreliable" - (file-name-nondirectory - ;; We are called from - ;; 'with-temp-buffer', so we need - ;; to use 'thisbuf's name in the - ;; warning message. - (or (buffer-file-name thisbuf) "")))))) - ((and (eq var 'mode) handle-mode)) - (t - (ignore-errors - (push (cons (if (eq var 'eval) - 'eval - (indirect-variable var)) - val) - result)))))) - (forward-line 1)))))))) - ;; Now we've read all the local variables. - ;; If HANDLE-MODE is t, return whether the mode was specified. - (if (eq handle-mode t) result - ;; Otherwise, set the variables. - (hack-local-variables-filter result nil) - (hack-local-variables-apply))))) + (hack-dir-local-variables)) + (let ((result (append (hack-local-variables--find-variables) + (hack-local-variables-prop-line)))) + (if (and enable-local-variables + (not (inhibit-local-variables-p))) + (progn + ;; Set the variables. + (hack-local-variables-filter result nil) + (hack-local-variables-apply)) + ;; Handle `lexical-binding' and other special local + ;; variables. + (dolist (variable permanently-enabled-local-variables) + (when-let ((elem (assq variable result))) + (push elem file-local-variables-alist))) + (hack-local-variables-apply)))))) + +(defun hack-local-variables--find-variables (&optional handle-mode) + "Return all local variables in the ucrrent buffer. +If HANDLE-MODE is nil, we gather all the specified local +variables. If HANDLE-MODE is neither nil nor t, we do the same, +except that any settings of `mode' are ignored. + +If HANDLE-MODE is t, all we do is check whether a \"mode:\" +is specified, and return the corresponding mode symbol, or nil. +In this case, we try to ignore minor-modes, and return only a +major-mode." + (let ((result nil)) + ;; Look for "Local variables:" line in last page. + (save-excursion + (goto-char (point-max)) + (search-backward "\n\^L" (max (- (point-max) 3000) (point-min)) + 'move) + (when (let ((case-fold-search t)) + (search-forward "Local Variables:" nil t)) + (skip-chars-forward " \t") + ;; suffix is what comes after "local variables:" in its line. + ;; prefix is what comes before "local variables:" in its line. + (let ((suffix + (concat + (regexp-quote (buffer-substring (point) + (line-end-position))) + "$")) + (prefix + (concat "^" (regexp-quote + (buffer-substring (line-beginning-position) + (match-beginning 0)))))) + + (forward-line 1) + (let ((startpos (point)) + endpos + (thisbuf (current-buffer))) + (save-excursion + (unless (let ((case-fold-search t)) + (re-search-forward + (concat prefix "[ \t]*End:[ \t]*" suffix) + nil t)) + ;; This used to be an error, but really all it means is + ;; that this may simply not be a local-variables section, + ;; so just ignore it. + (message "Local variables list is not properly terminated")) + (beginning-of-line) + (setq endpos (point))) + + (with-temp-buffer + (insert-buffer-substring thisbuf startpos endpos) + (goto-char (point-min)) + (subst-char-in-region (point) (point-max) ?\^m ?\n) + (while (not (eobp)) + ;; Discard the prefix. + (if (looking-at prefix) + (delete-region (point) (match-end 0)) + (error "Local variables entry is missing the prefix")) + (end-of-line) + ;; Discard the suffix. + (if (looking-back suffix (line-beginning-position)) + (delete-region (match-beginning 0) (point)) + (error "Local variables entry is missing the suffix")) + (forward-line 1)) + (goto-char (point-min)) + + (while (not (or (eobp) + (and (eq handle-mode t) result))) + ;; Find the variable name; + (unless (looking-at hack-local-variable-regexp) + (error "Malformed local variable line: %S" + (buffer-substring-no-properties + (point) (line-end-position)))) + (goto-char (match-end 1)) + (let* ((str (match-string 1)) + (var (intern str)) + val val2) + (and (equal (downcase (symbol-name var)) "mode") + (setq var 'mode)) + ;; Read the variable value. + (skip-chars-forward "^:") + (forward-char 1) + ;; As a defensive measure, we do not allow + ;; circular data in the file-local data. + (let ((read-circle nil)) + (setq val (read (current-buffer)))) + (if (eq handle-mode t) + (and (eq var 'mode) + ;; Specifying minor-modes via mode: is + ;; deprecated, but try to reject them anyway. + (not (string-match + "-minor\\'" + (setq val2 (downcase (symbol-name val))))) + (setq result (intern (concat val2 "-mode")))) + (cond ((eq var 'coding)) + ((eq var 'lexical-binding) + (unless hack-local-variables--warned-lexical + (setq hack-local-variables--warned-lexical t) + (display-warning + 'files + (format-message + "%s: `lexical-binding' at end of file unreliable" + (file-name-nondirectory + ;; We are called from + ;; 'with-temp-buffer', so we need + ;; to use 'thisbuf's name in the + ;; warning message. + (or (buffer-file-name thisbuf) "")))))) + ((and (eq var 'mode) handle-mode)) + (t + (ignore-errors + (push (cons (if (eq var 'eval) + 'eval + (indirect-variable var)) + val) + result)))))) + (forward-line 1))))))) + result)) (defun hack-local-variables-apply () "Apply the elements of `file-local-variables-alist'. @@ -6631,14 +6651,20 @@ See also `auto-save-file-name-p'." uniq (car (cddr (car list))))) (setq list (cdr list))) (if result - (if uniq - (setq filename (concat - (file-name-directory result) - (subst-char-in-string - ?/ ?! - (replace-regexp-in-string "!" "!!" - filename)))) - (setq filename result))) + (setq filename + (cond + ((memq uniq (secure-hash-algorithms)) + (concat + (file-name-directory result) + (secure-hash uniq filename))) + (uniq + (concat + (file-name-directory result) + (subst-char-in-string + ?/ ?! + (replace-regexp-in-string + "!" "!!" filename)))) + (t result)))) (setq result (if (and (eq system-type 'ms-dos) (not (msdos-long-file-names))) @@ -7466,12 +7492,7 @@ only these files will be asked to be saved." ;; operations, which return a file name. See Bug#29579. (defun file-name-non-special (operation &rest arguments) - (let (;; In general, we don't want any file name handler. For some - ;; few cases, operations with two file name arguments which - ;; might be bound to different file name handlers, we still - ;; need this. - (saved-file-name-handler-alist file-name-handler-alist) - (inhibit-file-name-handlers + (let ((inhibit-file-name-handlers (cons 'file-name-non-special (and (eq inhibit-file-name-operation operation) inhibit-file-name-handlers))) @@ -7557,69 +7578,73 @@ only these files will be asked to be saved." (when (car pair) (setcar pair (file-name-unquote (car pair) t)))) (setq file-arg-indices (cdr file-arg-indices)))) - (pcase method - ('identity (car arguments)) - ('add (file-name-quote (apply operation arguments) t)) - ('buffer-file-name - (let ((buffer-file-name (file-name-unquote buffer-file-name t))) - (apply operation arguments))) - ('insert-file-contents - (let ((visit (nth 1 arguments))) - (unwind-protect - (apply operation arguments) - (when (and visit buffer-file-name) - (setq buffer-file-name (file-name-quote buffer-file-name t)))))) - ('unquote-then-quote - ;; We can't use `cl-letf' with `(buffer-local-value)' here - ;; because it wouldn't work during bootstrapping. - (let ((buffer (current-buffer))) - ;; `unquote-then-quote' is used only for the - ;; `verify-visited-file-modtime' action, which takes a buffer - ;; as only optional argument. - (with-current-buffer (or (car arguments) buffer) - (let ((buffer-file-name (file-name-unquote buffer-file-name t))) - ;; Make sure to hide the temporary buffer change from the - ;; underlying operation. - (with-current-buffer buffer - (apply operation arguments)))))) - ('local-copy - (let* ((file-name-handler-alist saved-file-name-handler-alist) - (source (car arguments)) - (target (car (cdr arguments))) - (prefix (expand-file-name - "file-name-non-special" temporary-file-directory)) - tmpfile) - (cond - ;; If source is remote, we must create a local copy. - ((file-remote-p source) - (setq tmpfile (make-temp-name prefix)) - (apply operation source tmpfile (cddr arguments)) - (setq source tmpfile)) - ;; If source is quoted, and the unquoted source looks - ;; remote, we must create a local copy. - ((file-name-quoted-p source t) - (setq source (file-name-unquote source t)) - (when (file-remote-p source) + ;; In general, we don't want any file name handler, see Bug#47625, + ;; Bug#48349. For some few cases, operations with two file name + ;; arguments which might be bound to different file name handlers, + ;; we still need this. + (let ((tramp-mode (and tramp-mode (eq method 'local-copy)))) + (pcase method + ('identity (car arguments)) + ('add (file-name-quote (apply operation arguments) t)) + ('buffer-file-name + (let ((buffer-file-name (file-name-unquote buffer-file-name t))) + (apply operation arguments))) + ('insert-file-contents + (let ((visit (nth 1 arguments))) + (unwind-protect + (apply operation arguments) + (when (and visit buffer-file-name) + (setq buffer-file-name (file-name-quote buffer-file-name t)))))) + ('unquote-then-quote + ;; We can't use `cl-letf' with `(buffer-local-value)' here + ;; because it wouldn't work during bootstrapping. + (let ((buffer (current-buffer))) + ;; `unquote-then-quote' is used only for the + ;; `verify-visited-file-modtime' action, which takes a + ;; buffer as only optional argument. + (with-current-buffer (or (car arguments) buffer) + (let ((buffer-file-name (file-name-unquote buffer-file-name t))) + ;; Make sure to hide the temporary buffer change from + ;; the underlying operation. + (with-current-buffer buffer + (apply operation arguments)))))) + ('local-copy + (let ((source (car arguments)) + (target (car (cdr arguments))) + (prefix (expand-file-name + "file-name-non-special" temporary-file-directory)) + tmpfile) + (cond + ;; If source is remote, we must create a local copy. + ((file-remote-p source) (setq tmpfile (make-temp-name prefix)) - (let (file-name-handler-alist) - (apply operation source tmpfile (cddr arguments))) - (setq source tmpfile)))) - ;; If target is quoted, and the unquoted target looks remote, - ;; we must disable the file name handler. - (when (file-name-quoted-p target t) - (setq target (file-name-unquote target t)) - (when (file-remote-p target) - (setq file-name-handler-alist nil))) - ;; Do it. - (setcar arguments source) - (setcar (cdr arguments) target) - (apply operation arguments) - ;; Cleanup. - (when (and tmpfile (file-exists-p tmpfile)) - (if (file-directory-p tmpfile) - (delete-directory tmpfile 'recursive) (delete-file tmpfile))))) - (_ - (apply operation arguments))))) + (apply operation source tmpfile (cddr arguments)) + (setq source tmpfile)) + ;; If source is quoted, and the unquoted source looks + ;; remote, we must create a local copy. + ((file-name-quoted-p source t) + (setq source (file-name-unquote source t)) + (when (file-remote-p source) + (setq tmpfile (make-temp-name prefix)) + (let (file-name-handler-alist) + (apply operation source tmpfile (cddr arguments))) + (setq source tmpfile)))) + ;; If target is quoted, and the unquoted target looks + ;; remote, we must disable the file name handler. + (when (file-name-quoted-p target t) + (setq target (file-name-unquote target t)) + (when (file-remote-p target) + (setq file-name-handler-alist nil))) + ;; Do it. + (setcar arguments source) + (setcar (cdr arguments) target) + (apply operation arguments) + ;; Cleanup. + (when (and tmpfile (file-exists-p tmpfile)) + (if (file-directory-p tmpfile) + (delete-directory tmpfile 'recursive) (delete-file tmpfile))))) + (_ + (apply operation arguments)))))) (defsubst file-name-quoted-p (name &optional top) "Whether NAME is quoted with prefix \"/:\". diff --git a/lisp/find-dired.el b/lisp/find-dired.el index adc5672eca9..87a7407a866 100644 --- a/lisp/find-dired.el +++ b/lisp/find-dired.el @@ -225,8 +225,8 @@ it finishes, type \\[kill-find]." (use-local-map map)) (setq-local dired-sort-inhibit t) (setq-local revert-buffer-function - `(lambda (ignore-auto noconfirm) - (find-dired ,dir ,find-args))) + (lambda (_ignore-auto _noconfirm) + (find-dired dir find-args))) ;; Set subdir-alist so that Tree Dired will work: (if (fboundp 'dired-simple-subdir-alist) ;; will work even with nested dired format (dired-nstd.el,v 1.15 diff --git a/lisp/font-lock.el b/lisp/font-lock.el index 82915d8c8b0..4dc42d9cf6a 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -1604,18 +1604,15 @@ START should be at the beginning of a line." "If non-nil, Font Lock mode uses this instead of `comment-start-skip'.") (defvar font-lock-comment-end-skip nil - "If non-nil, Font Lock mode uses this instead of `comment-end'.") + "If non-nil, Font Lock mode uses this instead of `comment-end-skip'.") (defun font-lock-fontify-syntactically-region (start end &optional loudly) "Put proper face on each string and comment between START and END. START should be at the beginning of a line." (syntax-propertize end) ; Apply any needed syntax-table properties. (with-syntax-table (or syntax-ppss-table (syntax-table)) - (let ((comment-end-regexp - (or font-lock-comment-end-skip - (regexp-quote - (replace-regexp-in-string "^ *" "" comment-end)))) - ;; Find the `start' state. + (when (and comment-start (not comment-end-skip)) (comment-normalize-vars)) + (let (;; Find the `start' state. (state (if (or syntax-ppss-table (not font-lock--syntax-table-affects-ppss)) (syntax-ppss start) @@ -1648,7 +1645,9 @@ START should be at the beginning of a line." comment-start-skip)) (put-text-property beg (match-end 0) 'face font-lock-comment-delimiter-face))) - (if (looking-back comment-end-regexp (point-at-bol) t) + (if (looking-back (or font-lock-comment-end-skip + comment-end-skip) + (point-at-bol) t) (put-text-property (match-beginning 0) (point) 'face font-lock-comment-delimiter-face)))) (< (point) end)) diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el index 61a1d675243..a59d0e57a79 100644 --- a/lisp/gnus/gnus-search.el +++ b/lisp/gnus/gnus-search.el @@ -1294,8 +1294,8 @@ elements are present." ;; First, some common methods. -(cl-defgeneric gnus-search-indexed-parse-output (engine server &optional groups) - "Parse the results of ENGINE's query against SERVER in GROUPS. +(cl-defgeneric gnus-search-indexed-parse-output (engine server query &optional groups) + "Parse the results of ENGINE's QUERY against SERVER in GROUPS. Locally-indexed search engines return results as a list of filenames, sometimes with additional information. Returns a list of viable results, in the form of a list of [group article score] diff --git a/lisp/gnus/nnoo.el b/lisp/gnus/nnoo.el index 7759951662a..4e8490125f1 100644 --- a/lisp/gnus/nnoo.el +++ b/lisp/gnus/nnoo.el @@ -34,6 +34,7 @@ (defmacro defvoo (var init &optional doc &rest map) "The same as `defvar', only takes list of variables to MAP to." (declare (indent 2) + (doc-string 3) (debug (var init &optional doc &rest map))) `(prog1 ,(if doc @@ -44,6 +45,7 @@ (defmacro deffoo (func args &rest forms) "The same as `defun', only register FUNC." (declare (indent 2) + (doc-string 3) (debug (&define name lambda-list def-body))) `(prog1 (defun ,func ,args ,@forms) diff --git a/lisp/gnus/nnselect.el b/lisp/gnus/nnselect.el index 5ac4c3a64e1..ecec705b326 100644 --- a/lisp/gnus/nnselect.el +++ b/lisp/gnus/nnselect.el @@ -777,7 +777,7 @@ If this variable is nil, or if the provided function returns nil, Return an article list." (let ((func (alist-get 'nnselect-function specs)) (args (alist-get 'nnselect-args specs))) - (condition-case err + (condition-case-unless-debug err (funcall func args) (error (gnus-error 3 "nnselect-run: %s on %s gave error %s" func args err) [])))) diff --git a/lisp/help.el b/lisp/help.el index e70041aea4b..babaf4adc75 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -233,7 +233,7 @@ Do not call this in the scope of `with-help-window'." (make-help-screen help-for-help (purecopy "Type a help option: [abcCdefFgiIkKlLmnprstvw.] C-[cdefmnoptw] or ?") (concat - "\(Type " + "(Type " (help--key-description-fontified (kbd "<PageDown>")) " or " (help--key-description-fontified (kbd "<PageUp>")) diff --git a/lisp/hexl.el b/lisp/hexl.el index 85c3a53413d..8bfc1fb89e4 100644 --- a/lisp/hexl.el +++ b/lisp/hexl.el @@ -303,22 +303,30 @@ also supported. There are several ways to change text in hexl mode: -ASCII characters (character between space (0x20) and tilde (0x7E)) are -bound to self-insert so you can simply type the character and it will -insert itself (actually overstrike) into the buffer. +Self-inserting characters are bound to `hexl-self-insert' so you +can simply type the character and it will insert itself (actually +overstrike) into the buffer. However, inserting non-ASCII characters +requires caution: the buffer's coding-system should correspond to +the encoding on disk, and multibyte characters should be inserted +with cursor on the first byte of a multibyte sequence whose length +is identical to the length of the multibyte sequence to be inserted, +otherwise this could produce invalid multibyte sequences. Non-ASCII +characters in ISO-2022 encodings should preferably inserted byte by +byte, to avoid problems caused by the designation sequences before +the actual characters. \\[hexl-quoted-insert] followed by another keystroke allows you to insert the key even if it isn't bound to self-insert. An octal number can be supplied in place of another key to insert the octal number's ASCII representation. -\\[hexl-insert-hex-char] will insert a given hexadecimal value (if it is between 0 and 0xFF) -into the buffer at the current point. +\\[hexl-insert-hex-char] will insert a given hexadecimal value +into the buffer at the current address. -\\[hexl-insert-octal-char] will insert a given octal value (if it is between 0 and 0377) -into the buffer at the current point. +\\[hexl-insert-octal-char] will insert a given octal value +into the buffer at the current address. -\\[hexl-insert-decimal-char] will insert a given decimal value (if it is between 0 and 255) -into the buffer at the current point. +\\[hexl-insert-decimal-char] will insert a given decimal value +into the buffer at the current address.. \\[hexl-mode-exit] will exit `hexl-mode'. @@ -332,26 +340,16 @@ You can use \\[hexl-find-file] to visit a file in Hexl mode. (unless (eq major-mode 'hexl-mode) (let ((modified (buffer-modified-p)) (inhibit-read-only t) - (original-point (- (point) (point-min)))) - (and (eobp) (not (bobp)) - (setq original-point (1- original-point))) + (point-offset (bufferpos-to-filepos (point) 'exact))) ;; If `hexl-mode' is invoked with an argument the buffer is assumed to ;; be in hexl format. (when (memq arg '(1 nil)) - ;; If the buffer's EOL type is -dos, we need to account for - ;; extra CR characters added when hexlify-buffer writes the - ;; buffer to a file. - ;; FIXME: This doesn't take into account multibyte coding systems. - (when (eq (coding-system-eol-type buffer-file-coding-system) 1) - (setq original-point (+ (count-lines (point-min) (point)) - original-point)) - (or (bolp) (setq original-point (1- original-point)))) (hexlify-buffer) (restore-buffer-modified-p modified)) (setq hexl-max-address (+ (* (/ (1- (buffer-size)) (hexl-line-displen)) 16) 15)) (condition-case nil - (hexl-goto-address original-point) + (hexl-goto-address point-offset) (error nil))) (let ((max-address hexl-max-address)) @@ -440,7 +438,8 @@ You can use \\[hexl-find-file] to visit a file in Hexl mode. (defun hexl-find-file (filename) "Edit file FILENAME as a binary file in hex dump format. Switch to a buffer visiting file FILENAME, creating one if none exists, -and edit the file in `hexl-mode'." +and edit the file in `hexl-mode'. The buffer's coding-system will be +no-conversion, unlike if you visit it normally and then invoke `hexl-mode'." (interactive (list (let ((completion-ignored-extensions nil)) @@ -478,17 +477,11 @@ With arg, don't unhexlify buffer." (if (or (eq arg 1) (not arg)) (let ((modified (buffer-modified-p)) (inhibit-read-only t) - (original-point (1+ (hexl-current-address)))) + (point-offset (hexl-current-address))) (dehexlify-buffer) (remove-hook 'write-contents-functions #'hexl-save-buffer t) (restore-buffer-modified-p modified) - (goto-char original-point) - ;; Maybe adjust point for the removed CR characters. - (when (eq (coding-system-eol-type buffer-file-coding-system) 1) - (setq original-point (- original-point - (count-lines (point-min) (point)))) - (or (bobp) (setq original-point (1+ original-point)))) - (goto-char original-point))) + (goto-char (filepos-to-bufferpos point-offset 'exact)))) (remove-hook 'change-major-mode-hook #'hexl-maybe-dehexlify-buffer t) (major-mode-restore)) @@ -499,11 +492,11 @@ Ask the user for confirmation." (if (y-or-n-p "Convert contents back to binary format? ") (let ((modified (buffer-modified-p)) (inhibit-read-only t) - (original-point (1+ (hexl-current-address)))) + (point-offset (hexl-current-address))) (dehexlify-buffer) (remove-hook 'write-contents-functions #'hexl-save-buffer t) (restore-buffer-modified-p modified) - (goto-char original-point)))) + (goto-char (filepos-to-bufferpos point-offset 'exact))))) (defun hexl-current-address (&optional validate) "Return current hexl-address." @@ -879,14 +872,27 @@ This discards the buffer's undo information." "Insert a possibly multibyte character CH NUM times. Non-ASCII characters are first encoded with `buffer-file-coding-system', -and their encoded form is inserted byte by byte." +and their encoded form is inserted byte by byte. Note that if the +hexl buffer was produced by `hexl-find-file', its coding-system +is no-conversion. + +Inserting non-ASCII characters requires caution: the buffer's +coding-system should correspond to the encoding on disk, and +multibyte characters should be inserted with cursor on the first +byte of a multibyte sequence whose length is identical to the +length of the multibyte sequence to be inserted, otherwise this +could produce invalid multibyte sequences. Non-ASCII characters +in ISO-2022 encodings should preferably inserted byte by byte, to +avoid problems caused by the designation sequences before the +actual characters." (let ((charset (char-charset ch)) (coding (if (or (null buffer-file-coding-system) ;; coding-system-type equals t means undecided. (eq (coding-system-type buffer-file-coding-system) t)) (default-value 'buffer-file-coding-system) buffer-file-coding-system))) - (cond ((and (> ch 0) (< ch 256)) + (cond ((and (>= ch 0) (< ch 256) + (coding-system-get coding :ascii-compatible-p)) (hexl-insert-char ch num)) ((eq charset 'unknown) (error @@ -924,7 +930,19 @@ and their encoded form is inserted byte by byte." Interactively, with a numeric argument, insert this character that many times. Non-ASCII characters are first encoded with `buffer-file-coding-system', -and their encoded form is inserted byte by byte." +and their encoded form is inserted byte by byte. Note that if the +hexl buffer was produced by `hexl-find-file', its coding-system +is no-conversion. + +Inserting non-ASCII characters requires caution: the buffer's +coding-system should correspond to the encoding on disk, and +multibyte characters should be inserted with cursor on the first +byte of a multibyte sequence whose length is identical to the +length of the multibyte sequence to be inserted, otherwise this +could produce invalid multibyte sequences. Non-ASCII characters +in ISO-2022 encodings should preferably inserted byte by byte, to +avoid problems caused by the designation sequences before the +actual characters." (interactive "p") (hexl-insert-multibyte-char last-command-event arg)) @@ -964,7 +982,21 @@ CH must be a unibyte character whose value is between 0 and 255." ;; hex conversion (defun hexl-insert-hex-char (arg) - "Insert a character given by its hexadecimal code ARG times at point." + "Insert a character given by its hexadecimal code ARG times at point. + +Values above 0xFF are treated as multibyte characters, and first encoded +using `buffer-file-coding-system'. Note that if the hexl buffer was +produced by `hexl-find-file', its coding-system is no-conversion. + +Inserting non-ASCII characters requires caution: the buffer's +coding-system should correspond to the encoding on disk, and +multibyte characters should be inserted with cursor on the first +byte of a multibyte sequence whose length is identical to the +length of the multibyte sequence to be inserted, otherwise this +could produce invalid multibyte sequences. Non-ASCII characters +in ISO-2022 encodings should preferably inserted byte by byte, to +avoid problems caused by the designation sequences before the +actual characters." (interactive "p") (let ((num (hexl-hex-string-to-integer (read-string "Hex number: ")))) (if (< num 0) @@ -997,7 +1029,21 @@ Embedded whitespace, dashes, and periods in the string are ignored." (setq arg (- arg 1))))) (defun hexl-insert-decimal-char (arg) - "Insert a character given by its decimal code ARG times at point." + "Insert a character given by its decimal code ARG times at point. + +Values above 256 are treated as multibyte characters, and first encoded +using `buffer-file-coding-system'. Note that if the hexl buffer was +produced by `hexl-find-file', its coding-system is no-conversion. + +Inserting non-ASCII characters requires caution: the buffer's +coding-system should correspond to the encoding on disk, and +multibyte characters should be inserted with cursor on the first +byte of a multibyte sequence whose length is identical to the +length of the multibyte sequence to be inserted, otherwise this +could produce invalid multibyte sequences. Non-ASCII characters +in ISO-2022 encodings should preferably inserted byte by byte, to +avoid problems caused by the designation sequences before the +actual characters." (interactive "p") (let ((num (string-to-number (read-string "Decimal Number: ")))) (if (< num 0) @@ -1005,7 +1051,21 @@ Embedded whitespace, dashes, and periods in the string are ignored." (hexl-insert-multibyte-char num arg)))) (defun hexl-insert-octal-char (arg) - "Insert a character given by its octal code ARG times at point." + "Insert a character given by its octal code ARG times at point. + +Values above \377 are treated as multibyte characters, and first encoded +using `buffer-file-coding-system'. Note that if the hexl buffer was +produced by `hexl-find-file', its coding-system is no-conversion. + +Inserting non-ASCII characters requires caution: the buffer's +coding-system should correspond to the encoding on disk, and +multibyte characters should be inserted with cursor on the first +byte of a multibyte sequence whose length is identical to the +length of the multibyte sequence to be inserted, otherwise this +could produce invalid multibyte sequences. Non-ASCII characters +in ISO-2022 encodings should preferably inserted byte by byte, to +avoid problems caused by the designation sequences before the +actual characters." (interactive "p") (let ((num (hexl-octal-string-to-integer (read-string "Octal Number: ")))) (if (< num 0) diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index b484dd717ca..c80222ed0f4 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -988,9 +988,7 @@ one window." (let ((buf (ibuffer-current-buffer t))) (bury-buffer (current-buffer)) (if noselect - (let ((curwin (selected-window))) - (pop-to-buffer buf) - (select-window curwin)) + (display-buffer buf) (switch-to-buffer-other-window buf)))) (defun ibuffer-visit-buffer-other-window-noselect () diff --git a/lisp/imenu.el b/lisp/imenu.el index 7fc57c10526..2024bb1e066 100644 --- a/lisp/imenu.el +++ b/lisp/imenu.el @@ -463,8 +463,8 @@ Non-nil arguments are in recursive calls." ((imenu--subalist-p item) (imenu--create-keymap (car item) (cdr item) cmd)) (t - `(lambda () (interactive) - ,(if cmd `(,cmd ',item) (list 'quote item))))))) + (lambda () (interactive) + (if cmd (funcall cmd item) item)))))) alist))) (defun imenu--in-alist (str alist) diff --git a/lisp/info-xref.el b/lisp/info-xref.el index be1928d692b..538a017f3c0 100644 --- a/lisp/info-xref.el +++ b/lisp/info-xref.el @@ -95,7 +95,7 @@ about local variables or possible weirdness in a major mode. `lm-with-file' does a similar thing, but it sets `emacs-lisp-mode' which is not wanted here." - (declare (debug t) (indent 1)) + (declare (debug (form def-body)) (indent 1)) `(let* ((info-xref-with-file--filename ,filename) (info-xref-with-file--body (lambda () ,@body)) (info-xref-with-file--existing diff --git a/lisp/info.el b/lisp/info.el index 2757ed57826..cdf339ff6fb 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -2148,8 +2148,10 @@ If DIRECTION is `backward', search in the reverse direction." (goto-char (if isearch-forward (point-min) (point-max))))) (defun Info-isearch-push-state () - `(lambda (cmd) - (Info-isearch-pop-state cmd ',Info-current-file ',Info-current-node))) + (let ((file Info-current-file) + (node Info-current-node)) + (lambda (cmd) + (Info-isearch-pop-state cmd file node)))) (defun Info-isearch-pop-state (_cmd file node) (or (and (equal Info-current-file file) diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 7874c2042e6..2ffc2f225cb 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -2963,18 +2963,22 @@ STR should be a unibyte string." str " ")) (defun encode-coding-char (char coding-system &optional charset) - "Encode CHAR by CODING-SYSTEM and return the resulting string. + "Encode CHAR by CODING-SYSTEM and return the resulting string of bytes. If CODING-SYSTEM can't safely encode CHAR, return nil. The 3rd optional argument CHARSET, if non-nil, is a charset preferred on encoding." (let* ((str1 (string char)) (str2 (string char char)) (found (find-coding-systems-string str1)) - enc1 enc2 i1 i2) - (if (eq (car-safe found) 'undecided) ;Aka (not (multibyte-string-p str1)) - ;; `char' is ASCII. + (bom-p (coding-system-get coding-system :bom)) + enc1 enc2 i0 i1 i2) + ;; If CHAR is ASCII and CODING-SYSTEM doesn't prepend a BOM, just + ;; encode CHAR. + (if (and (eq (car-safe found) 'undecided) + (null bom-p)) (encode-coding-string str1 coding-system) - (when (memq (coding-system-base coding-system) found) + (when (or (eq (car-safe found) 'undecided) + (memq (coding-system-base coding-system) found)) ;; We must find the encoded string of CHAR. But, just encoding ;; CHAR will put extra control sequences (usually to designate ;; ASCII charset) at the tail if type of CODING is ISO 2022. @@ -2995,7 +2999,19 @@ on encoding." ;; Now (substring enc1 i1) and (substring enc2 i2) are the same, ;; and they are the extra control sequences at the tail to ;; exclude. - (substring enc2 0 i2))))) + + ;; We also need to exclude the leading 2 or 3 bytes if they + ;; come from a BOM. + (setq i0 + (if bom-p + (cond + ((eq (coding-system-type coding-system) 'utf-8) + 3) + ((eq (coding-system-type coding-system) 'utf-16) + 2) + (t 0)) + 0)) + (substring enc2 i0 i2))))) ;; Backwards compatibility. These might be better with :init-value t, ;; but that breaks loadup. diff --git a/lisp/isearch.el b/lisp/isearch.el index 9f3cfd70fb3..00969e5e2af 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -2538,7 +2538,7 @@ If search string is empty, just beep." "Read a string from the `kill-ring' and append it to the search string." (interactive) (with-isearch-suspended - (let ((string (read-from-kill-ring))) + (let ((string (read-from-kill-ring "Yank from kill-ring: "))) (if (and isearch-case-fold-search (eq 'not-yanks search-upper-case)) (setq string (downcase string))) @@ -3506,9 +3506,8 @@ Optional third argument, if t, means if fail just return nil (no error). (when pos1 ;; When using multiple buffers isearch, switch to the new buffer here, ;; because `save-excursion' above doesn't allow doing it inside funcall. - (if (and multi-isearch-next-buffer-current-function - (buffer-live-p multi-isearch-current-buffer)) - (switch-to-buffer multi-isearch-current-buffer)) + (when multi-isearch-next-buffer-current-function + (multi-isearch-switch-buffer)) (goto-char pos1) pos1))) diff --git a/lisp/isearchb.el b/lisp/isearchb.el index 67020b76ecb..eaf7983cbd8 100644 --- a/lisp/isearchb.el +++ b/lisp/isearchb.el @@ -7,7 +7,6 @@ ;; Created: 16 Apr 2004 ;; Version: 1.5 ;; Keywords: lisp -;; X-URL: http://www.newartisans.com/johnw/emacs.html ;; This file is part of GNU Emacs. diff --git a/lisp/kmacro.el b/lisp/kmacro.el index 3a4ede403a4..3700a1964a6 100644 --- a/lisp/kmacro.el +++ b/lisp/kmacro.el @@ -167,53 +167,53 @@ macro to be executed before appending to it." (defvar kmacro-keymap (let ((map (make-sparse-keymap))) ;; Start, end, execute macros - (define-key map "s" 'kmacro-start-macro) - (define-key map "\C-s" 'kmacro-start-macro) - (define-key map "\C-k" 'kmacro-end-or-call-macro-repeat) - (define-key map "r" 'apply-macro-to-region-lines) - (define-key map "q" 'kbd-macro-query) ;; Like C-x q - (define-key map "Q" 'kdb-macro-redisplay) + (define-key map "s" #'kmacro-start-macro) + (define-key map "\C-s" #'kmacro-start-macro) + (define-key map "\C-k" #'kmacro-end-or-call-macro-repeat) + (define-key map "r" #'apply-macro-to-region-lines) + (define-key map "q" #'kbd-macro-query) ;; Like C-x q + (define-key map "Q" #'kdb-macro-redisplay) ;; macro ring - (define-key map "\C-n" 'kmacro-cycle-ring-next) - (define-key map "\C-p" 'kmacro-cycle-ring-previous) - (define-key map "\C-v" 'kmacro-view-macro-repeat) - (define-key map "\C-d" 'kmacro-delete-ring-head) - (define-key map "\C-t" 'kmacro-swap-ring) - (define-key map "\C-l" 'kmacro-call-ring-2nd-repeat) + (define-key map "\C-n" #'kmacro-cycle-ring-next) + (define-key map "\C-p" #'kmacro-cycle-ring-previous) + (define-key map "\C-v" #'kmacro-view-macro-repeat) + (define-key map "\C-d" #'kmacro-delete-ring-head) + (define-key map "\C-t" #'kmacro-swap-ring) + (define-key map "\C-l" #'kmacro-call-ring-2nd-repeat) ;; macro counter - (define-key map "\C-f" 'kmacro-set-format) - (define-key map "\C-c" 'kmacro-set-counter) - (define-key map "\C-i" 'kmacro-insert-counter) - (define-key map "\C-a" 'kmacro-add-counter) + (define-key map "\C-f" #'kmacro-set-format) + (define-key map "\C-c" #'kmacro-set-counter) + (define-key map "\C-i" #'kmacro-insert-counter) + (define-key map "\C-a" #'kmacro-add-counter) ;; macro editing - (define-key map "\C-e" 'kmacro-edit-macro-repeat) - (define-key map "\r" 'kmacro-edit-macro) - (define-key map "e" 'edit-kbd-macro) - (define-key map "l" 'kmacro-edit-lossage) - (define-key map " " 'kmacro-step-edit-macro) + (define-key map "\C-e" #'kmacro-edit-macro-repeat) + (define-key map "\r" #'kmacro-edit-macro) + (define-key map "e" #'edit-kbd-macro) + (define-key map "l" #'kmacro-edit-lossage) + (define-key map " " #'kmacro-step-edit-macro) ;; naming and binding - (define-key map "b" 'kmacro-bind-to-key) - (define-key map "n" 'kmacro-name-last-macro) - (define-key map "x" 'kmacro-to-register) + (define-key map "b" #'kmacro-bind-to-key) + (define-key map "n" #'kmacro-name-last-macro) + (define-key map "x" #'kmacro-to-register) map) "Keymap for keyboard macro commands.") (defalias 'kmacro-keymap kmacro-keymap) ;;; Provide some binding for startup: -;;;###autoload (global-set-key "\C-x(" 'kmacro-start-macro) -;;;###autoload (global-set-key "\C-x)" 'kmacro-end-macro) -;;;###autoload (global-set-key "\C-xe" 'kmacro-end-and-call-macro) -;;;###autoload (global-set-key [f3] 'kmacro-start-macro-or-insert-counter) -;;;###autoload (global-set-key [f4] 'kmacro-end-or-call-macro) -;;;###autoload (global-set-key "\C-x\C-k" 'kmacro-keymap) +;;;###autoload (global-set-key "\C-x(" #'kmacro-start-macro) +;;;###autoload (global-set-key "\C-x)" #'kmacro-end-macro) +;;;###autoload (global-set-key "\C-xe" #'kmacro-end-and-call-macro) +;;;###autoload (global-set-key [f3] #'kmacro-start-macro-or-insert-counter) +;;;###autoload (global-set-key [f4] #'kmacro-end-or-call-macro) +;;;###autoload (global-set-key "\C-x\C-k" #'kmacro-keymap) ;;;###autoload (autoload 'kmacro-keymap "kmacro" "Keymap for keyboard macro commands." t 'keymap) (if kmacro-call-mouse-event - (global-set-key (vector kmacro-call-mouse-event) 'kmacro-end-call-mouse)) + (global-set-key (vector kmacro-call-mouse-event) #'kmacro-end-call-mouse)) ;;; Called from keyboard-quit @@ -668,11 +668,13 @@ use \\[kmacro-name-last-macro]." (set-transient-map (let ((map (make-sparse-keymap))) (define-key map (vector repeat-key) - `(lambda () (interactive) - (kmacro-call-macro ,(and kmacro-call-repeat-with-arg arg) - 'repeating nil ,(if end-macro - last-kbd-macro - (or macro last-kbd-macro))))) + (let ((ra (and kmacro-call-repeat-with-arg arg)) + (m (if end-macro + last-kbd-macro + (or macro last-kbd-macro)))) + (lambda () + (interactive) + (kmacro-call-macro ra 'repeating nil m)))) map))))) @@ -780,25 +782,32 @@ If kbd macro currently being defined end it before activating it." ;; executing the macro later on (but that's controversial...) ;;;###autoload -(defun kmacro-lambda-form (mac &optional counter format) +(defun kmacro-lambda-form (mac) "Create lambda form for macro bound to symbol or key." - (if counter - (setq mac (list mac counter format))) - `(lambda (&optional arg) - "Keyboard macro." - (interactive "p") - (kmacro-exec-ring-item ',mac arg))) + ;; FIXME: This should be a "funcallable struct"! + (lambda (&optional arg) + "Keyboard macro." + ;; We put an "unused prompt" as a special marker so + ;; `kmacro-extract-lambda' can see it's "one of us". + (interactive "pkmacro") + (if (eq arg 'kmacro--extract-lambda) + (cons 'kmacro--extract-lambda mac) + (kmacro-exec-ring-item mac arg)))) (defun kmacro-extract-lambda (mac) "Extract kmacro from a kmacro lambda form." - (and (eq (car-safe mac) 'lambda) - (setq mac (assoc 'kmacro-exec-ring-item mac)) - (setq mac (car-safe (cdr-safe (car-safe (cdr-safe mac))))) - (listp mac) - (= (length mac) 3) - (arrayp (car mac)) - mac)) - + (let ((mac (cond + ((eq (car-safe mac) 'lambda) + (let ((e (assoc 'kmacro-exec-ring-item mac))) + (car-safe (cdr-safe (car-safe (cdr-safe e)))))) + ((and (functionp mac) + (equal (interactive-form mac) '(interactive "pkmacro"))) + (let ((r (funcall mac 'kmacro--extract-lambda))) + (and (eq (car-safe r) 'kmacro--extract-lambda) (cdr r))))))) + (and (consp mac) + (= (length mac) 3) + (arrayp (car mac)) + mac))) (defalias 'kmacro-p #'kmacro-extract-lambda "Return non-nil if MAC is a kmacro keyboard macro.") diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 455ae7feefc..7ef3754dad1 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -3357,6 +3357,11 @@ removing prefixes such as Re:, Fwd: and so on and mailing list tags such as [tag]." (let ((subject (or (rmail-get-header "Subject" msgnum) "")) (regexp "\\`[ \t\n]*\\(\\(\\w\\{1,4\\}\u00a0*[::]\\|\\[[^]]+]\\)[ \t\n]+\\)*")) + ;; Corporate mailing systems sometimes add `[External] :'; if that happened, + ;; delete everything up thru there. Empirically, that deletion makes + ;; the Subject match the other messages in the thread. + (if (string-match "[[]external][ \t\n]*:" subject) + (setq subject (substring subject (match-end 0)))) (setq subject (rfc2047-decode-string subject)) (setq subject (replace-regexp-in-string regexp "" subject)) (replace-regexp-in-string "[ \t\n]+" " " subject))) @@ -3762,32 +3767,61 @@ use \\[mail-yank-original] to yank the original message into it." (rmail-apply-in-message rmail-current-message (lambda () - (search-forward "\n\n" nil 'move) - (narrow-to-region (point-min) (point)) - (setq from (mail-fetch-field "from") - reply-to (or (mail-fetch-field "mail-reply-to" nil t) - (mail-fetch-field "reply-to" nil t) - from) - subject (mail-fetch-field "subject") - date (mail-fetch-field "date") - message-id (mail-fetch-field "message-id") - references (mail-fetch-field "references" nil nil t) - ;; Bug#512. It's inappropriate to reply to these addresses. - ;;resent-reply-to (mail-fetch-field "resent-reply-to" nil t) - ;;resent-cc (and (not just-sender) - ;; (mail-fetch-field "resent-cc" nil t)) - ;;resent-to (or (mail-fetch-field "resent-to" nil t) "") - ;;resent-subject (mail-fetch-field "resent-subject") - ;;resent-date (mail-fetch-field "resent-date") - ;;resent-message-id (mail-fetch-field "resent-message-id") - ) - (unless just-sender - (if (mail-fetch-field "mail-followup-to" nil t) - ;; If this header field is present, use it instead of the - ;; To and Cc fields. - (setq to (mail-fetch-field "mail-followup-to" nil t)) - (setq cc (or (mail-fetch-field "cc" nil t) "") - to (or (mail-fetch-field "to" nil t) "")))))) + (let ((end (point-max)) + subheader) + ;; Find the message's real header. + (search-forward "\n\n" nil 'move) + (narrow-to-region (point-min) (point)) + + (goto-char (point-min)) + + ;; If this is an encrypted message, search for other header fields + ;; inside the encrypted part, and use them instead of the real header. + + ;; First, find a From: field after a plausible section start. + (when (and (search-forward "\nContent-Type: multipart/encrypted;\n" nil t) + (save-restriction + (narrow-to-region (point-min) end) + (and (search-forward "\nFrom: " nil t) + (setq subheader (point))))) + ;; We found one, so widen up to end of message and go there. + (narrow-to-region (point-min) end) + (goto-char subheader) + + ;; Find the start of the inner header. + (search-backward "\n--") + (forward-line 2) + + ;; Find the end of it. + (let ((subheader-start (point))) + (goto-char subheader) + (search-forward "\n\n" nil 'move) + (narrow-to-region subheader-start (point)))) + + (setq from (mail-fetch-field "from") + reply-to (or (mail-fetch-field "mail-reply-to" nil t) + (mail-fetch-field "reply-to" nil t) + from) + subject (mail-fetch-field "subject") + date (mail-fetch-field "date") + message-id (mail-fetch-field "message-id") + references (mail-fetch-field "references" nil nil t) + ;; Bug#512. It's inappropriate to reply to these addresses. + ;;resent-reply-to (mail-fetch-field "resent-reply-to" nil t) + ;;resent-cc (and (not just-sender) + ;; (mail-fetch-field "resent-cc" nil t)) + ;;resent-to (or (mail-fetch-field "resent-to" nil t) "") + ;;resent-subject (mail-fetch-field "resent-subject") + ;;resent-date (mail-fetch-field "resent-date") + ;;resent-message-id (mail-fetch-field "resent-message-id") + ) + (unless just-sender + (if (mail-fetch-field "mail-followup-to" nil t) + ;; If this header field is present, use it instead of the + ;; To and Cc fields. + (setq to (mail-fetch-field "mail-followup-to" nil t)) + (setq cc (or (mail-fetch-field "cc" nil t) "") + to (or (mail-fetch-field "to" nil t) ""))))))) ;; Merge the resent-to and resent-cc into the to and cc. ;; Bug#512. It's inappropriate to reply to these addresses. ;;(if (and resent-to (not (equal resent-to ""))) @@ -4585,8 +4619,9 @@ Argument MIME is non-nil if this is a mime message." ;; change it in one of the calls to `epa-decrypt-region'. (save-excursion - (let (decrypts (mime (rmail-mime-message-p)) - mime-disabled) + (let (decrypts + (mime (and (eq major-mode 'rmail-mode) (rmail-mime-message-p))) + mime-disabled) (goto-char (point-min)) ;; Turn off mime processing. diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el index f53e6e768f8..44cff21b062 100644 --- a/lisp/mail/rmailsum.el +++ b/lisp/mail/rmailsum.el @@ -755,7 +755,11 @@ the message being processed." (forward-char -1) (skip-chars-backward " \t") (point)))))) - len mch lo) + len mch lo newline) + ;; If there are multiple lines in FROM, + ;; discard up to the last newline in it. + (while (setq newline (string-match "\n" from)) + (setq from (substring from (1+ newline)))) (if (or (null from) (string-match (or rmail-user-mail-address-regexp diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el index 9a4c8f3c665..fee11c06aa7 100644 --- a/lisp/mail/sendmail.el +++ b/lisp/mail/sendmail.el @@ -726,14 +726,21 @@ Turning on Mail mode runs the normal hooks `text-mode-hook' and ;; Lines containing just >= 3 dashes, perhaps after whitespace, ;; are also sometimes used and should be separators. (setq paragraph-separate - (concat (regexp-quote mail-header-separator) + (if (zerop (length mail-header-separator)) + (concat ;; This is based on adaptive-fill-regexp (presumably ;; the idea is to allow navigation etc of cited paragraphs). - "$\\|\t*[-–!|#%;>*·•‣⁃◦ ]+$" + "\t*[-–!|#%;>*·•‣⁃◦ ]+$" "\\|[ \t]*[-[:alnum:]]*>+[ \t]*$\\|[ \t]*$\\|" "--\\( \\|-+\\)$\\|" - page-delimiter))) - + page-delimiter) + (concat (regexp-quote mail-header-separator) + ;; This is based on adaptive-fill-regexp (presumably + ;; the idea is to allow navigation etc of cited paragraphs). + "$\\|\t*[-–!|#%;>*·•‣⁃◦ ]+$" + "\\|[ \t]*[-[:alnum:]]*>+[ \t]*$\\|[ \t]*$\\|" + "--\\( \\|-+\\)$\\|" + page-delimiter)))) (defun mail-header-end () "Return the buffer location of the end of headers, as a number." @@ -763,10 +770,11 @@ Concretely: replace the first blank line in the header with the separator." "Remove header separator to put the message in correct form for sendmail. Leave point at the start of the delimiter line." (goto-char (point-min)) - (when (re-search-forward - (concat "^" (regexp-quote mail-header-separator) "\n") - nil t) - (replace-match "\n")) + (unless (zerop (length mail-header-separator)) + (when (re-search-forward + (concat "^" (regexp-quote mail-header-separator) "\n") + nil t) + (replace-match "\n"))) (rfc822-goto-eoh)) (defun mail-mode-auto-fill () @@ -888,8 +896,9 @@ the user from the mailer." (concat "\\(?:[[:space:];,]\\|\\`\\)" (regexp-opt mail-mailing-lists t) "\\(?:[[:space:];,]\\|\\'\\)")))) - (mail-combine-fields "To") - (mail-combine-fields "Cc") + (unless noninteractive + (mail-combine-fields "To") + (mail-combine-fields "Cc")) ;; If there are mailing lists defined (when ml (save-excursion @@ -931,7 +940,9 @@ the user from the mailer." (error "Message contains non-ASCII characters")))) ;; Complain about any invalid line. (goto-char (point-min)) - (re-search-forward (regexp-quote mail-header-separator) (point-max) t) + ;; Search for mail-header-eeparator as whole line. + (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$") + (point-max) t) (let ((header-end (or (match-beginning 0) (point-max)))) (goto-char (point-min)) (while (< (point) header-end) @@ -962,7 +973,10 @@ the user from the mailer." (defun mail-envelope-from () "Return the envelope mail address to use when sending mail. -This function uses `mail-envelope-from'." +This function uses the `mail-envelope-from' variable. + +The buffer should be narrowed to the headers of the mail message +before this function is called." (if (eq mail-envelope-from 'header) (nth 1 (mail-extract-address-components (mail-fetch-field "From"))) diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index bd981ea0b01..f8122677a54 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -79,9 +79,6 @@ :help "Print current buffer with page headings")) menu)) -;; Only declared obsolete (and only made a proper alias) in 23.3. -(define-obsolete-variable-alias - 'menu-bar-files-menu 'menu-bar-file-menu "22.1") (defvar menu-bar-file-menu (let ((menu (make-sparse-keymap "File"))) @@ -459,9 +456,6 @@ (defvar menu-bar-edit-menu (let ((menu (make-sparse-keymap "Edit"))) - (bindings--define-key menu [props] - '(menu-item "Text Properties" facemenu-menu)) - ;; ns-win.el said: Add spell for platform consistency. (if (featurep 'ns) (bindings--define-key menu [spell] @@ -495,7 +489,7 @@ '(menu-item "Select All" mark-whole-buffer :help "Mark the whole buffer for a subsequent cut/copy")) (bindings--define-key menu [clear] - '(menu-item "Clear" delete-region + '(menu-item "Clear" delete-active-region :enable (and mark-active (not buffer-read-only)) :help @@ -2294,9 +2288,10 @@ It must accept a buffer as its only required argument.") (setq i (1- i)) (aset buffers-vec i (cons (car pair) - `(lambda () - (interactive) - (funcall menu-bar-select-buffer-function ,(cdr pair)))))) + (let ((buf (cdr pair))) + (lambda () + (interactive) + (funcall menu-bar-select-buffer-function buf)))))) buffers-vec)) (defun menu-bar-update-buffers (&optional force) @@ -2351,8 +2346,8 @@ It must accept a buffer as its only required argument.") (aset frames-vec i (cons (frame-parameter frame 'name) - `(lambda () - (interactive) (menu-bar-select-frame ,frame)))) + (lambda () + (interactive) (menu-bar-select-frame frame)))) (setq i (1+ i))) ;; Put it after the normal buffers (setq buffers-menu diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index caf06ec7104..d6a6f9aa375 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -2449,8 +2449,10 @@ The completion method is determined by `completion-at-point-functions'." (define-key map "\C-g" 'abort-minibuffers) (define-key map "\M-<" 'minibuffer-beginning-of-buffer) - (define-key map "\r" 'exit-minibuffer) - (define-key map "\n" 'exit-minibuffer)) + ;; Put RET last so that it is shown in doc strings in preference to + ;; C-j, when using the \\[exit-minibuffer] notation. + (define-key map "\n" 'exit-minibuffer) + (define-key map "\r" 'exit-minibuffer)) (defvar minibuffer-local-completion-map (let ((map (make-sparse-keymap))) diff --git a/lisp/misearch.el b/lisp/misearch.el index 335efb95161..7f3e981bb0e 100644 --- a/lisp/misearch.el +++ b/lisp/misearch.el @@ -190,10 +190,10 @@ the initial buffer." (if (or (null multi-isearch-pause) (and multi-isearch-pause multi-isearch-current-buffer)) (progn - (switch-to-buffer - (setq multi-isearch-current-buffer - (funcall multi-isearch-next-buffer-current-function - (current-buffer) t))) + (setq multi-isearch-current-buffer + (funcall multi-isearch-next-buffer-current-function + (current-buffer) t)) + (multi-isearch-switch-buffer) (goto-char (if isearch-forward (point-min) (point-max)))) (setq multi-isearch-current-buffer (current-buffer)) (setq isearch-wrapped nil))) @@ -202,14 +202,25 @@ the initial buffer." "Save a function restoring the state of multiple buffers search. Save the current buffer to the additional state parameter in the search status stack." - `(lambda (cmd) - (multi-isearch-pop-state cmd ,(current-buffer)))) + (let ((buf (current-buffer))) + (lambda (cmd) + (multi-isearch-pop-state cmd buf)))) (defun multi-isearch-pop-state (_cmd buffer) "Restore the multiple buffers search state in BUFFER. Switch to the buffer restored from the search status stack." - (unless (equal buffer (current-buffer)) - (switch-to-buffer (setq multi-isearch-current-buffer buffer)))) + (unless (eq buffer (current-buffer)) + (setq multi-isearch-current-buffer buffer) + (multi-isearch-switch-buffer))) + +;;;###autoload +(defun multi-isearch-switch-buffer () + "Switch to the next buffer in multi-buffer search." + (when (and (buffer-live-p multi-isearch-current-buffer) + (not (eq multi-isearch-current-buffer (current-buffer)))) + (setq isearch-mode nil) + (switch-to-buffer multi-isearch-current-buffer) + (setq isearch-mode " M-Isearch"))) ;;; Global multi-buffer search invocations diff --git a/lisp/mwheel.el b/lisp/mwheel.el index 33c3402d157..4146b073c43 100644 --- a/lisp/mwheel.el +++ b/lisp/mwheel.el @@ -131,7 +131,10 @@ scrolling." :version "28.1") (defcustom mouse-wheel-progressive-speed t - "If non-nil, the faster the user moves the wheel, the faster the scrolling. + "If nil, scrolling speed is proportional to the wheel speed. +If non-nil, moving the wheel faster will make scrolling +progressively faster. + Note that this has no effect when `mouse-wheel-scroll-amount' specifies a \"near full screen\" scroll or when the mouse wheel sends key instead of button events." diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index 27b1ea92d28..8621491138c 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -1122,8 +1122,8 @@ used instead of `browse-url-new-window-flag'." ",new-window")) ")")))))))) (set-process-sentinel process - `(lambda (process change) - (browse-url-netscape-sentinel process ,url))))) + (lambda (process _change) + (browse-url-netscape-sentinel process url))))) (function-put 'browse-url-netscape 'browse-url-browser-kind 'external) @@ -1194,8 +1194,8 @@ used instead of `browse-url-new-window-flag'." ",new-window")) ")")))))) (set-process-sentinel process - `(lambda (process change) - (browse-url-mozilla-sentinel process ,url))))) + (lambda (process _change) + (browse-url-mozilla-sentinel process url))))) (function-put 'browse-url-mozilla 'browse-url-browser-kind 'external) @@ -1312,8 +1312,8 @@ used instead of `browse-url-new-window-flag'." '("--existing")) (list url))))) (set-process-sentinel process - `(lambda (process change) - (browse-url-galeon-sentinel process ,url))))) + (lambda (process _change) + (browse-url-galeon-sentinel process url))))) (function-put 'browse-url-galeon 'browse-url-browser-kind 'external) @@ -1360,8 +1360,8 @@ used instead of `browse-url-new-window-flag'." '("--existing")) (list url))))) (set-process-sentinel process - `(lambda (process change) - (browse-url-epiphany-sentinel process ,url))))) + (lambda (process _change) + (browse-url-epiphany-sentinel process url))))) (function-put 'browse-url-epiphany 'browse-url-browser-kind 'external) @@ -1724,8 +1724,8 @@ from `browse-url-elinks-wrapper'." (elinks-ping-process (start-process "elinks-ping" nil "elinks" "-remote" "ping()"))) (set-process-sentinel elinks-ping-process - `(lambda (process change) - (browse-url-elinks-sentinel process ,url)))))) + (lambda (process _change) + (browse-url-elinks-sentinel process url)))))) (function-put 'browse-url-elinks 'browse-url-browser-kind 'external) diff --git a/lisp/net/eudc.el b/lisp/net/eudc.el index c112d273309..425217cf65c 100644 --- a/lisp/net/eudc.el +++ b/lisp/net/eudc.el @@ -1108,12 +1108,12 @@ queries the server for the existing fields and displays a corresponding form." proto-name))) (if (not (fboundp command)) (fset command - `(lambda () - (interactive) - (eudc-set-server ,server (quote ,protocol)) - (message "Selected directory server is now %s (%s)" - ,server - ,proto-name)))) + (lambda () + (interactive) + (eudc-set-server server protocol) + (message "Selected directory server is now %s (%s)" + server + proto-name)))) (vector (format "%s (%s)" server proto-name) command :style 'radio diff --git a/lisp/net/imap.el b/lisp/net/imap.el index d29584e55bd..6ca76f1f994 100644 --- a/lisp/net/imap.el +++ b/lisp/net/imap.el @@ -160,7 +160,6 @@ %l with the value of `imap-default-user'. The program should accept IMAP commands on stdin and return responses to stdout. Each entry in the list is tried until a successful connection is made." - :group 'imap :type '(repeat string)) (defcustom imap-gssapi-program (list @@ -173,7 +172,6 @@ the list is tried until a successful connection is made." %l with the value of `imap-default-user'. The program should accept IMAP commands on stdin and return responses to stdout. Each entry in the list is tried until a successful connection is made." - :group 'imap :type '(repeat string)) (defcustom imap-shell-program '("ssh %s imapd" @@ -186,7 +184,6 @@ number on server, %g with `imap-shell-host', and %l with `imap-default-user'. The program should read IMAP commands from stdin and write IMAP response to stdout. Each entry in the list is tried until a successful connection is made." - :group 'imap :type '(repeat string)) (defcustom imap-process-connection-type nil @@ -198,7 +195,6 @@ system has no ptys or if all ptys are busy: then a pipe is used in any case. The value takes effect when an IMAP server is opened; changing it after that has no effect." :version "22.1" - :group 'imap :type 'boolean) (defcustom imap-use-utf7 t @@ -206,7 +202,6 @@ opened; changing it after that has no effect." Since the UTF7 decoding currently only decodes into ISO-8859-1 characters, you may disable this decoding if you need to access UTF7 encoded mailboxes which doesn't translate into ISO-8859-1." - :group 'imap :type 'boolean) (defcustom imap-log nil @@ -217,7 +212,6 @@ It is not written to disk, however. Do not enable this variable unless you are comfortable with that. See also `imap-debug'." - :group 'imap :type 'boolean) (defcustom imap-debug nil @@ -232,17 +226,14 @@ variable unless you are comfortable with that. This variable only takes effect when loading the `imap' library. See also `imap-log'." - :group 'imap :type 'boolean) (defcustom imap-shell-host "gateway" "Hostname of rlogin proxy." - :group 'imap :type 'string) (defcustom imap-default-user (user-login-name) "Default username to use." - :group 'imap :type 'string) (defcustom imap-read-timeout (if (memq system-type '(windows-nt cygwin)) @@ -250,12 +241,10 @@ See also `imap-log'." 0.1) "How long to wait between checking for the end of output. Shorter values mean quicker response, but is more CPU intensive." - :type 'number - :group 'imap) + :type 'number) (defcustom imap-store-password nil "If non-nil, store session password without prompting." - :group 'imap :type 'boolean) ;;; Various variables @@ -987,8 +976,8 @@ t if it successfully authenticates, nil otherwise." "imap" buffer imap-server imap-port) ((error quit) nil))) (when imap-process - (set-process-filter imap-process 'imap-arrival-filter) - (set-process-sentinel imap-process 'imap-sentinel) + (set-process-filter imap-process #'imap-arrival-filter) + (set-process-sentinel imap-process #'imap-sentinel) (while (and (eq imap-state 'initial) (memq (process-status imap-process) '(open run))) (message "Waiting for response from %s..." imap-server) @@ -1012,7 +1001,7 @@ necessary. If nil, the buffer name is generated." (with-current-buffer (get-buffer-create buffer) (if (imap-opened buffer) (imap-close buffer)) - (mapc 'make-local-variable imap-local-variables) + (mapc #'make-local-variable imap-local-variables) (set-buffer-multibyte nil) (buffer-disable-undo) (setq imap-server (or server imap-server)) @@ -1034,7 +1023,7 @@ necessary. If nil, the buffer name is generated." ;; Stream changed? (if (not (eq imap-default-stream stream)) (with-current-buffer (generate-new-buffer " *temp*") - (mapc 'make-local-variable imap-local-variables) + (mapc #'make-local-variable imap-local-variables) (set-buffer-multibyte nil) (buffer-disable-undo) (setq imap-server (or server imap-server)) @@ -1078,7 +1067,6 @@ necessary. If nil, the buffer name is generated." "If non-nil, check if IMAP is open. See the function `imap-ping-server'." :version "23.1" ;; No Gnus - :group 'imap :type 'boolean) (defun imap-opened (&optional buffer) @@ -1346,16 +1334,16 @@ If BUFFER is nil the current buffer is assumed." (when imap-current-mailbox (if asynch (imap-add-callback (imap-send-command "CLOSE") - `(lambda (tag status) - (message "IMAP mailbox `%s' closed... %s" - imap-current-mailbox status) - (when (eq ,imap-current-mailbox - imap-current-mailbox) - ;; Don't wipe out data if another mailbox - ;; was selected... - (setq imap-current-mailbox nil - imap-message-data nil - imap-state 'auth)))) + (let ((cmb imap-current-mailbox)) + (lambda (_tag status) + (message "IMAP mailbox `%s' closed... %s" + imap-current-mailbox status) + (when (eq cmb imap-current-mailbox) + ;; Don't wipe out data if another mailbox + ;; was selected... + (setq imap-current-mailbox nil + imap-message-data nil + imap-state 'auth))))) (when (imap-ok-p (imap-send-command-wait "CLOSE")) (setq imap-current-mailbox nil imap-message-data nil @@ -1740,8 +1728,8 @@ See `imap-enable-exchange-bug-workaround'." (prog1 (and (imap-fetch-safe '("*" . "*:*") "UID") (list (imap-mailbox-get-1 'uidvalidity mailbox) - (apply 'max (imap-message-map - (lambda (uid _prop) uid) 'UID)))) + (apply #'max (imap-message-map + (lambda (uid _prop) uid) 'UID)))) (if old-mailbox (imap-mailbox-select old-mailbox (eq state 'examine)) (imap-mailbox-unselect))))))) @@ -1786,7 +1774,7 @@ first element. The rest of list contains the saved articles' UIDs." (prog1 (and (imap-fetch-safe '("*" . "*:*") "UID") (list (imap-mailbox-get-1 'uidvalidity mailbox) - (apply 'max (imap-message-map + (apply #'max (imap-message-map (lambda (uid _prop) uid) 'UID)))) (if old-mailbox (imap-mailbox-select old-mailbox (eq state 'examine)) @@ -1820,7 +1808,7 @@ on failure." (numberp (nth 9 body))) (nth 9 body)) (t 0)) - (apply '+ (mapcar 'imap-body-lines body))) + (apply #'+ (mapcar #'imap-body-lines body))) 0)) (defun imap-envelope-from (from) @@ -2424,7 +2412,7 @@ Return nil if no complete line has arrived." (buffer-substring (point) (1- (re-search-forward "[] ]" nil t))))) (if (eq (char-before) ? ) (prog1 - (mapconcat 'identity (cons section (imap-parse-header-list)) " ") + (mapconcat #'identity (cons section (imap-parse-header-list)) " ") (search-forward "]" nil t)) section))) diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el index 024d118f2de..e1d35c2a85a 100644 --- a/lisp/net/mairix.el +++ b/lisp/net/mairix.el @@ -328,6 +328,7 @@ Currently there are `threads' and `flags'.") ;;;; Main interactive functions +;;;###autoload (defun mairix-search (search threads) "Call Mairix with SEARCH. If THREADS is non-nil, also display whole threads of found @@ -342,6 +343,7 @@ messages. Results will be put into the default search file." threads) (mairix-show-folder mairix-search-file))) +;;;###autoload (defun mairix-use-saved-search () "Use a saved search for querying Mairix." (interactive) @@ -374,6 +376,7 @@ Overwrite existing entry? ") (setcdr (assoc name mairix-saved-searches) mairix-last-search)))) (mairix-select-save)) +;;;###autoload (defun mairix-edit-saved-searches-customize () "Edit the list of saved searches in a customization buffer." (interactive) @@ -386,6 +389,8 @@ in your .emacs by pressing `Save for Future Sessions'.\n" (make-string 65 ?=) "\n"))) (autoload 'mail-strip-quoted-names "mail-utils") + +;;;###autoload (defun mairix-search-from-this-article (threads) "Search messages from sender of the current article. This is effectively a shortcut for calling `mairix-search' with @@ -402,6 +407,7 @@ threads." threads) (error "No function for obtaining mail header specified")))) +;;;###autoload (defun mairix-search-thread-this-article () "Search thread for the current article. This is effectively a shortcut for calling `mairix-search' @@ -423,12 +429,14 @@ with m:msgid of the current article and enabled threads." (mairix-search (format "m:%s" mid) t))) +;;;###autoload (defun mairix-widget-search-based-on-article () "Create mairix query based on current article using widgets." (interactive) (mairix-widget-search (mairix-widget-get-values))) +;;;###autoload (defun mairix-edit-saved-searches () "Edit current mairix searches." (interactive) @@ -441,6 +449,7 @@ with m:msgid of the current article and enabled threads." (defvar mairix-widgets) +;;;###autoload (defun mairix-widget-search (&optional mvalues) "Create mairix query interactively using graphical widgets. MVALUES may contain values from current article." @@ -470,6 +479,7 @@ MVALUES may contain values from current article." (widget-setup) (goto-char (point-min))) +;;;###autoload (defun mairix-update-database () "Call mairix for updating the database for SERVERS. Mairix will be called asynchronously unless @@ -521,8 +531,11 @@ The mail program is given by `mairix-mail-program'." If FILE is nil, use default. If THREADS is non-nil, also return whole threads. Function returns t if messages were found." (let* ((commandsplit (split-string mairix-command)) - (args (cons (car commandsplit) - `(nil ,(get-buffer-create mairix-output-buffer) nil))) + (args (cons + (car commandsplit) + (append + `(nil ,(get-buffer-create mairix-output-buffer) nil) + mairix-search-options))) rval) (with-current-buffer mairix-output-buffer (erase-buffer)) diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el index 24f2aba8b86..90cca7d415c 100644 --- a/lisp/net/net-utils.el +++ b/lisp/net/net-utils.el @@ -363,24 +363,24 @@ This variable is only used if the variable (when proc (set-process-filter proc nil) (delete-process proc))) - (let ((inhibit-read-only t) - (coding-system-for-read - ;; MS-Windows versions of network utilities output text - ;; encoded in the console (a.k.a. "OEM") codepage, which is - ;; different from the default system (a.k.a. "ANSI") - ;; codepage. - (if (eq system-type 'windows-nt) - (intern (format "cp%d" (w32-get-console-output-codepage))) - coding-system-for-read))) + (let ((inhibit-read-only t)) (erase-buffer)) (net-utils-mode) (setq-local net-utils--revert-cmd `(net-utils-run-simple ,(current-buffer) ,program-name ,args nodisplay)) - (set-process-filter - (apply #'start-process program-name - (current-buffer) program-name args) - #'net-utils-remove-ctrl-m-filter) + (let ((coding-system-for-read + ;; MS-Windows versions of network utilities output text + ;; encoded in the console (a.k.a. "OEM") codepage, which is + ;; different from the default system (a.k.a. "ANSI") + ;; codepage. + (if (eq system-type 'windows-nt) + (intern (format "cp%d" (w32-get-console-output-codepage))) + coding-system-for-read))) + (set-process-filter + (apply #'start-process program-name + (current-buffer) program-name args) + #'net-utils-remove-ctrl-m-filter)) (unless nodisplay (display-buffer (current-buffer))))) (defun net-utils--revert-function (&optional _ignore-auto _noconfirm) diff --git a/lisp/net/shr.el b/lisp/net/shr.el index cbdeb65ba8b..873f0457e3a 100644 --- a/lisp/net/shr.el +++ b/lisp/net/shr.el @@ -1257,20 +1257,20 @@ Return a string with image data." CONTENT-FUNCTION is a function to retrieve an image for a cid url that is an argument. The function to be returned takes three arguments URL, START, and END. Note that START and END should be markers." - `(lambda (url start end) - (when url - (if (string-match "\\`cid:" url) - ,(when content-function - `(let ((image (funcall ,content-function - (substring url (match-end 0))))) - (when image - (goto-char start) - (funcall shr-put-image-function - image (buffer-substring start end)) - (delete-region (point) end)))) - (url-retrieve url #'shr-image-fetched - (list (current-buffer) start end) - t t))))) + (lambda (url start end) + (when url + (if (string-match "\\`cid:" url) + (when content-function + (let ((image (funcall content-function + (substring url (match-end 0))))) + (when image + (goto-char start) + (funcall shr-put-image-function + image (buffer-substring start end)) + (delete-region (point) end)))) + (url-retrieve url #'shr-image-fetched + (list (current-buffer) start end) + t t))))) (defun shr-heading (dom &rest types) (shr-ensure-paragraph) diff --git a/lisp/net/sieve-manage.el b/lisp/net/sieve-manage.el index 5dad5f446ac..1f08a15e570 100644 --- a/lisp/net/sieve-manage.el +++ b/lisp/net/sieve-manage.el @@ -89,18 +89,15 @@ (defcustom sieve-manage-log "*sieve-manage-log*" "Name of buffer for managesieve session trace." - :type 'string - :group 'sieve-manage) + :type 'string) (defcustom sieve-manage-server-eol "\r\n" "The EOL string sent from the server." - :type 'string - :group 'sieve-manage) + :type 'string) (defcustom sieve-manage-client-eol "\r\n" "The EOL string we send to the server." - :type 'string - :group 'sieve-manage) + :type 'string) (defcustom sieve-manage-authenticators '(digest-md5 cram-md5 @@ -112,8 +109,7 @@ ;; FIXME Improve this. It's not `set'. ;; It's like (repeat (choice (const ...))), where each choice can ;; only appear once. - :type '(repeat symbol) - :group 'sieve-manage) + :type '(repeat symbol)) (defcustom sieve-manage-authenticator-alist '((cram-md5 sieve-manage-cram-md5-p sieve-manage-cram-md5-auth) @@ -130,26 +126,22 @@ NAME names the authenticator. CHECK is a function returning non-nil if the server support the authenticator and AUTHENTICATE is a function for doing the actual authentication." :type '(repeat (list (symbol :tag "Name") (function :tag "Check function") - (function :tag "Authentication function"))) - :group 'sieve-manage) + (function :tag "Authentication function")))) (defcustom sieve-manage-default-port "sieve" "Default port number or service name for managesieve protocol." :type '(choice integer string) - :version "24.4" - :group 'sieve-manage) + :version "24.4") (defcustom sieve-manage-default-stream 'network "Default stream type to use for `sieve-manage'." :version "24.1" - :type 'symbol - :group 'sieve-manage) + :type 'symbol) (defcustom sieve-manage-ignore-starttls nil "Ignore STARTTLS even if STARTTLS capability is provided." :version "26.1" - :type 'boolean - :group 'sieve-manage) + :type 'boolean) ;; Internal variables: @@ -247,7 +239,7 @@ Return the buffer associated with the connection." (sasl-read-passphrase ;; We *need* to copy the password, because sasl will modify it ;; somehow. - `(lambda (prompt) ,(copy-sequence user-password))) + (lambda (_prompt) (copy-sequence user-password))) (step (sasl-next-step client nil)) (_tag (sieve-manage-send (concat diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el index a3cf6f3211a..d30d22021a5 100644 --- a/lisp/net/tramp-cmds.el +++ b/lisp/net/tramp-cmds.el @@ -57,7 +57,9 @@ SYNTAX can be one of the symbols `default' (default), (all-completions "*tramp" (mapcar #'list (mapcar #'buffer-name (buffer-list)))) (all-completions - "*debug tramp" (mapcar #'list (mapcar #'buffer-name (buffer-list)))))) + "*debug tramp" (mapcar #'list (mapcar #'buffer-name (buffer-list)))) + (all-completions + "*trace tramp" (mapcar #'list (mapcar #'buffer-name (buffer-list)))))) (defun tramp-list-remote-buffers () "Return a list of all buffers with remote `default-directory'." @@ -496,7 +498,7 @@ This is needed if there are compatibility problems." ((dir (tramp-compat-funcall 'package-desc-dir (car (alist-get 'tramp (bound-and-true-p package-alist)))))) - (dolist (elc (directory-files dir 'full "\\.elc$")) + (dolist (elc (directory-files dir 'full "\\.elc\\'")) (delete-file elc)) (with-current-buffer (get-buffer-create byte-compile-log-buffer) (let ((inhibit-read-only t)) diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index b67de1bd21b..54cfb6fb4a4 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el @@ -63,8 +63,6 @@ `(when (functionp ,function) (with-no-warnings (funcall ,function ,@arguments)))) -(put #'tramp-compat-funcall 'tramp-suppress-trace t) - (defsubst tramp-compat-temporary-file-directory () "Return name of directory for temporary files. It is the default value of `temporary-file-directory'." @@ -355,6 +353,9 @@ A nil value for either argument stands for the current time." (lambda (fromstring tostring instring) (replace-regexp-in-string (regexp-quote fromstring) tostring instring)))) +(dolist (elt (all-completions "tramp-compat-" obarray 'functionp)) + (put (intern elt) 'tramp-suppress-trace t)) + (add-hook 'tramp-unload-hook (lambda () (unload-feature 'tramp-loaddefs 'force) diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index b51ba11247f..f24d0effe71 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -125,6 +125,15 @@ depends on the installed local ssh version. The string is used in `tramp-methods'.") +(defvar tramp-scp-strict-file-name-checking nil + "Which scp strict file name checking argument to use. + +It is the string \"-T\" if supported by the local scp (since +release 8.0), otherwise the string \"\". If it is nil, it will +be auto-detected by Tramp. + +The string is used in `tramp-methods'.") + ;; Initialize `tramp-methods' with the supported methods. ;;;###tramp-autoload (tramp--with-startup @@ -160,8 +169,8 @@ The string is used in `tramp-methods'.") (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("-c")) (tramp-copy-program "scp") - (tramp-copy-args (("-P" "%p") ("-p" "%k") ("-q") - ("-r") ("%c"))) + (tramp-copy-args (("-P" "%p") ("-p" "%k") + ("%x") ("-q") ("-r") ("%c"))) (tramp-copy-keep-date t) (tramp-copy-recursive t))) (add-to-list 'tramp-methods @@ -177,7 +186,7 @@ The string is used in `tramp-methods'.") (tramp-remote-shell-args ("-c")) (tramp-copy-program "scp") (tramp-copy-args (("-P" "%p") ("-p" "%k") - ("-q") ("-r") ("%c"))) + ("%x") ("-q") ("-r") ("%c"))) (tramp-copy-keep-date t) (tramp-copy-recursive t))) (add-to-list 'tramp-methods @@ -2279,7 +2288,8 @@ The method used must be an out-of-band method." spec (list ?h (or host "") ?u (or user "") ?p (or port "") ?r listener ?c options ?k (if keep-date " " "") - ?n (concat "2>" (tramp-get-remote-null-device v))) + ?n (concat "2>" (tramp-get-remote-null-device v)) + ?x (tramp-scp-strict-file-name-checking v)) copy-program (tramp-get-method-parameter v 'tramp-copy-program) copy-keep-date (tramp-get-method-parameter v 'tramp-copy-keep-date) @@ -2361,11 +2371,12 @@ The method used must be an out-of-band method." ;; can be handled. We don't set a timeout, because ;; the copying of large files can last longer than 60 ;; secs. - p (apply - #'start-process - (tramp-get-connection-name v) - (tramp-get-connection-buffer v) - copy-program copy-args)) + p (let ((default-directory (tramp-compat-temporary-file-directory))) + (apply + #'start-process + (tramp-get-connection-name v) + (tramp-get-connection-buffer v) + copy-program copy-args))) (tramp-message orig-vec 6 "%s" (string-join (process-command p) " ")) (process-put p 'vector orig-vec) (process-put p 'adjust-window-size-function #'ignore) @@ -2712,13 +2723,12 @@ the result will be a local, non-Tramp, file name." ;; We use BUFFER also as connection buffer during setup. Because of ;; this, its original contents must be saved, and restored once ;; connection has been setup. -;; The complete STDERR buffer is available only when the process has -;; terminated. (defun tramp-sh-handle-make-process (&rest args) "Like `make-process' for Tramp files. -STDERR can also be a file name. If method parameter `tramp-direct-async' -and connection property \"direct-async-process\" are non-nil, an -alternative implementation will be used." +STDERR can also be a remote file name. If method parameter +`tramp-direct-async' and connection property +\"direct-async-process\" are non-nil, an alternative +implementation will be used." (if (tramp-direct-async-process-p args) (apply #'tramp-handle-make-process args) (when args @@ -2752,7 +2762,7 @@ alternative implementation will be used." (signal 'wrong-type-argument (list #'functionp sentinel))) (unless (or (null stderr) (bufferp stderr) (stringp stderr)) (signal 'wrong-type-argument (list #'bufferp stderr))) - (when (and (stringp stderr) (tramp-tramp-file-p stderr) + (when (and (stringp stderr) (not (tramp-equal-remote default-directory stderr))) (signal 'file-error (list "Wrong stderr" stderr))) @@ -2764,9 +2774,9 @@ alternative implementation will be used." ;; STDERR can also be a file name. (tmpstderr (and stderr - (if (and (stringp stderr) (tramp-tramp-file-p stderr)) - (tramp-unquote-file-local-name stderr) - (tramp-make-tramp-temp-file v)))) + (tramp-unquote-file-local-name + (if (stringp stderr) + stderr (tramp-make-tramp-temp-name v))))) (remote-tmpstderr (and tmpstderr (tramp-make-tramp-file-name v tmpstderr))) (program (car command)) @@ -2775,7 +2785,8 @@ alternative implementation will be used." ;; "-c", it might be that the arguments exceed the ;; command line length. Therefore, we modify the ;; command. - (heredoc (and (stringp program) + (heredoc (and (not (bufferp stderr)) + (stringp program) (string-match-p "sh$" program) (= (length args) 2) (string-equal "-c" (car args)) @@ -2839,6 +2850,23 @@ alternative implementation will be used." tramp-current-connection p) + ;; Handle error buffer. + (when (bufferp stderr) + (with-current-buffer stderr + (setq buffer-read-only nil)) + ;; Create named pipe. + (tramp-send-command v (format "mknod %s p" tmpstderr)) + ;; Create stderr process. + (make-process + :name (buffer-name stderr) + :buffer stderr + :command `("cat" ,tmpstderr) + :coding coding + :noquery t + :filter nil + :sentinel #'ignore + :file-handler t)) + (while (get-process name1) ;; NAME must be unique as process name. (setq i (1+ i) @@ -2867,14 +2895,11 @@ alternative implementation will be used." (if (symbolp coding) coding (cdr coding)))) (clear-visited-file-modtime) (narrow-to-region (point-max) (point-max)) - ;; We call `tramp-maybe-open-connection', in - ;; order to cleanup the prompt afterwards. (catch 'suppress - (tramp-maybe-open-connection v) - (setq p (tramp-get-connection-process v)) ;; Set the pid of the remote shell. This is ;; needed when sending signals remotely. (let ((pid (tramp-send-command-and-read v "echo $$"))) + (setq p (tramp-get-connection-process v)) (process-put p 'remote-pid pid) (tramp-set-connection-property p "remote-pid" pid)) ;; `tramp-maybe-open-connection' and @@ -2904,38 +2929,16 @@ alternative implementation will be used." (ignore-errors (set-process-query-on-exit-flag p (null noquery)) (set-marker (process-mark p) (point))) - ;; We must flush them here already; otherwise - ;; `rename-file', `delete-file' or - ;; `insert-file-contents' will fail. - (tramp-flush-connection-property v "process-name") - (tramp-flush-connection-property v "process-buffer") - ;; Copy tmpstderr file. - (when (and (stringp stderr) - (not (tramp-tramp-file-p stderr))) - (add-function - :after (process-sentinel p) - (lambda (_proc _msg) - (rename-file remote-tmpstderr stderr)))) - ;; Provide error buffer. This shows only - ;; initial error messages; messages arriving - ;; later on will be inserted when the process - ;; is deleted. The temporary file will exist - ;; until the process is deleted. + ;; Kill stderr process delete and named pipe. (when (bufferp stderr) - (with-current-buffer stderr - ;; There's a mysterious error, see - ;; <https://github.com/joaotavora/eglot/issues/662>. - (ignore-errors - (insert-file-contents-literally remote-tmpstderr))) - ;; Delete tmpstderr file. (add-function :after (process-sentinel p) (lambda (_proc _msg) - (when (file-exists-p remote-tmpstderr) - (with-current-buffer stderr - (ignore-errors - (insert-file-contents-literally - remote-tmpstderr nil nil nil 'replace))) + (ignore-errors + (while (accept-process-output + (get-buffer-process stderr) 0 nil t)) + (delete-process (get-buffer-process stderr))) + (ignore-errors (delete-file remote-tmpstderr))))) ;; Return process. p))) @@ -4737,6 +4740,31 @@ Goes through the list `tramp-inline-compress-commands'." " -o ControlPersist=no"))))))))) tramp-ssh-controlmaster-options))) +(defun tramp-scp-strict-file-name-checking (vec) + "Return the strict file name checking argument of the local scp." + (cond + ;; No options to be computed. + ((null (assoc "%x" (tramp-get-method-parameter vec 'tramp-copy-args))) + "") + + ;; There is already a value to be used. + ((stringp tramp-scp-strict-file-name-checking) + tramp-scp-strict-file-name-checking) + + ;; Determine the options. + (t (setq tramp-scp-strict-file-name-checking "") + (let ((case-fold-search t)) + (ignore-errors + (when (executable-find "scp") + (with-tramp-progress-reporter + vec 4 "Computing strict file name argument" + (with-temp-buffer + (tramp-call-process vec "scp" nil t nil "-T") + (goto-char (point-min)) + (unless (search-forward-regexp "unknown option -- T" nil t) + (setq tramp-scp-strict-file-name-checking "-T"))))))) + tramp-scp-strict-file-name-checking))) + (defun tramp-timeout-session (vec) "Close the connection VEC after a session timeout. If there is just some editing, retry it after 5 seconds." @@ -4801,10 +4829,12 @@ connection if a previous connection has died for some reason." (with-tramp-progress-reporter vec 3 (if (zerop (length (tramp-file-name-user vec))) - (format "Opening connection for %s using %s" + (format "Opening connection %s for %s using %s" + process-name (tramp-file-name-host vec) (tramp-file-name-method vec)) - (format "Opening connection for %s@%s using %s" + (format "Opening connection %s for %s@%s using %s" + process-name (tramp-file-name-user vec) (tramp-file-name-host vec) (tramp-file-name-method vec))) @@ -5229,12 +5259,11 @@ Return ATTR." (directory-file-name (tramp-file-name-unquote-localname vec)))) (when (string-match-p tramp-ipv6-regexp host) (setq host (format "[%s]" host))) - ;; This does not work yet for MS Windows scp, if there are - ;; characters to be quoted. Win32 OpenSSH 7.9 is said to support - ;; this, see - ;; <https://github.com/PowerShell/Win32-OpenSSH/releases/tag/v7.9.0.0p1-Beta> + ;; This does not work for MS Windows scp, if there are characters + ;; to be quoted. OpenSSH 8 supports disabling of strict file name + ;; checking in scp, we use it when available. (unless (string-match-p "ftp$" method) - (setq localname (tramp-shell-quote-argument localname))) + (setq localname (tramp-unquote-shell-quote-argument localname))) (cond ((tramp-get-method-parameter vec 'tramp-remote-copy-program) localname) @@ -5905,8 +5934,6 @@ function cell is returned to be applied on a buffer." ;; session could be reused after a connection loss. Use dtach, or ;; screen, or tmux, or mosh. ;; -;; * Implement `:stderr' of `make-process' as pipe process. - ;; * One interesting solution (with other applications as well) would ;; be to stipulate, as a directory or connection-local variable, an ;; additional rc file on the remote machine that is sourced every diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 015f458a63c..62df2890cb1 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -109,7 +109,8 @@ Any level x includes messages for all levels 1 .. x-1. The levels are 7 file caching 8 connection properties 9 test commands -10 traces (huge)." +10 traces (huge) +11 call traces (maintainer only)." :type 'integer) (defcustom tramp-debug-to-file nil @@ -252,6 +253,8 @@ pair of the form (KEY VALUE). The following KEYs are defined: - \"%c\" adds additional `tramp-ssh-controlmaster-options' options for the first hop. - \"%n\" expands to \"2>/dev/null\". + - \"%x\" is replaced by the `tramp-scp-strict-file-name-checking' + argument if it is supported. The existence of `tramp-login-args', combined with the absence of `tramp-copy-args', is an indication that the @@ -1388,6 +1391,14 @@ calling HANDLER.") (cl-defstruct (tramp-file-name (:type list) :named) method user domain host port localname hop) +(put #'tramp-file-name-method 'tramp-suppress-trace t) +(put #'tramp-file-name-user 'tramp-suppress-trace t) +(put #'tramp-file-name-domain 'tramp-suppress-trace t) +(put #'tramp-file-name-host 'tramp-suppress-trace t) +(put #'tramp-file-name-port 'tramp-suppress-trace t) +(put #'tramp-file-name-localname 'tramp-suppress-trace t) +(put #'tramp-file-name-hop 'tramp-suppress-trace t) + (defun tramp-file-name-user-domain (vec) "Return user and domain components of VEC." (when (or (tramp-file-name-user vec) (tramp-file-name-domain vec)) @@ -1396,6 +1407,8 @@ calling HANDLER.") tramp-prefix-domain-format) (tramp-file-name-domain vec)))) +(put #'tramp-file-name-user-domain 'tramp-suppress-trace t) + (defun tramp-file-name-host-port (vec) "Return host and port components of VEC." (when (or (tramp-file-name-host vec) (tramp-file-name-port vec)) @@ -1404,12 +1417,16 @@ calling HANDLER.") tramp-prefix-port-format) (tramp-file-name-port vec)))) +(put #'tramp-file-name-host-port 'tramp-suppress-trace t) + (defun tramp-file-name-port-or-default (vec) "Return port component of VEC. If nil, return `tramp-default-port'." (or (tramp-file-name-port vec) (tramp-get-method-parameter vec 'tramp-default-port))) +(put #'tramp-file-name-port-or-default 'tramp-suppress-trace t) + ;; Comparison of file names is performed by `tramp-equal-remote'. (defun tramp-file-name-equal-p (vec1 vec2) "Check, whether VEC1 and VEC2 denote the same `tramp-file-name'." @@ -1456,6 +1473,8 @@ entry does not exist, return nil." (string-match-p tramp-file-name-regexp name) t)) +(put #'tramp-tramp-file-p 'tramp-suppress-trace t) + ;; This function bypasses the file name handler approach. It is NOT ;; recommended to use it in any package if not absolutely necessary. ;; However, it is more performant than `file-local-name', and might be @@ -1504,6 +1523,8 @@ This is METHOD, if non-nil. Otherwise, do a lookup in result (propertize result 'tramp-default t)))) +(put #'tramp-find-method 'tramp-suppress-trace t) + (defun tramp-find-user (method user host) "Return the right user string to use depending on METHOD and HOST. This is USER, if non-nil. Otherwise, do a lookup in @@ -1525,6 +1546,8 @@ This is USER, if non-nil. Otherwise, do a lookup in result (propertize result 'tramp-default t)))) +(put #'tramp-find-user 'tramp-suppress-trace t) + (defun tramp-find-host (method user host) "Return the right host string to use depending on METHOD and USER. This is HOST, if non-nil. Otherwise, do a lookup in @@ -1546,6 +1569,8 @@ This is HOST, if non-nil. Otherwise, do a lookup in result (propertize result 'tramp-default t)))) +(put #'tramp-find-host 'tramp-suppress-trace t) + (defun tramp-dissect-file-name (name &optional nodefault) "Return a `tramp-file-name' structure of NAME, a remote file name. The structure consists of method, user, domain, host, port, @@ -1610,6 +1635,8 @@ default values are used." (tramp-user-error v "Method `%s' is not supported for multi-hops." method))))))) +(put #'tramp-dissect-file-name 'tramp-suppress-trace t) + (defun tramp-dissect-hop-name (name &optional nodefault) "Return a `tramp-file-name' structure of `hop' part of NAME. See `tramp-dissect-file-name' for details." @@ -1627,6 +1654,8 @@ See `tramp-dissect-file-name' for details." ;; Return result. v)) +(put #'tramp-dissect-hop-name 'tramp-suppress-trace t) + (defun tramp-buffer-name (vec) "A name for the connection buffer VEC." (let ((method (tramp-file-name-method vec)) @@ -1636,6 +1665,8 @@ See `tramp-dissect-file-name' for details." (format "*tramp/%s %s@%s*" method user-domain host-port) (format "*tramp/%s %s*" method host-port)))) +(put #'tramp-buffer-name 'tramp-suppress-trace t) + (defun tramp-make-tramp-file-name (&rest args) "Construct a Tramp file name from ARGS. @@ -1803,6 +1834,8 @@ version, the function does nothing." (format "*debug tramp/%s %s@%s*" method user-domain host-port) (format "*debug tramp/%s %s*" method host-port)))) +(put #'tramp-debug-buffer-name 'tramp-suppress-trace t) + (defconst tramp-debug-outline-regexp (concat "[[:digit:]]+:[[:digit:]]+:[[:digit:]]+\\.[[:digit:]]+ " ;; Timestamp. @@ -1828,6 +1861,8 @@ Point must be at the beginning of a header line. The outline level is equal to the verbosity of the Tramp message." (1+ (string-to-number (match-string 2)))) +(put #'tramp-debug-outline-level 'tramp-suppress-trace t) + (defun tramp-get-debug-buffer (vec) "Get the debug buffer for VEC." (with-current-buffer (get-buffer-create (tramp-debug-buffer-name vec)) @@ -1853,12 +1888,25 @@ The outline level is equal to the verbosity of the Tramp message." (use-local-map special-mode-map)) (current-buffer))) +(put #'tramp-get-debug-buffer 'tramp-suppress-trace t) + (defun tramp-get-debug-file-name (vec) - "Get the debug buffer for VEC." + "Get the debug file name for VEC." (expand-file-name (tramp-compat-string-replace "/" " " (tramp-debug-buffer-name vec)) (tramp-compat-temporary-file-directory))) +(put #'tramp-get-debug-file-name 'tramp-suppress-trace t) + +(defun tramp-trace-buffer-name (vec) + "A name for the trace buffer for VEC." + (tramp-compat-string-replace "debug" "trace" (tramp-debug-buffer-name vec))) + +(put #'tramp-trace-buffer-name 'tramp-suppress-trace t) + +(defvar tramp-trace-functions nil + "A list of non-Tramp functions to be trace with tramp-verbose > 10.") + (defun tramp-debug-message (vec fmt-string &rest arguments) "Append message to debug buffer of VEC. Message is formatted with FMT-STRING as control string and the remaining @@ -1869,8 +1917,8 @@ ARGUMENTS to actually emit the message (if applicable)." (with-current-buffer (tramp-get-debug-buffer vec) (goto-char (point-max)) (let ((point (point))) - ;; Headline. (when (bobp) + ;; Headline. (insert (format ";; Emacs: %s Tramp: %s -*- mode: outline; coding: utf-8; -*-" @@ -1883,6 +1931,15 @@ ARGUMENTS to actually emit the message (if applicable)." (locate-library "tramp") (or tramp-repository-branch "") (or tramp-repository-version ""))))) + ;; Traces. + (when (>= tramp-verbose 11) + (dolist + (elt + (append + (mapcar #'intern (all-completions "tramp-" obarray 'functionp)) + tramp-trace-functions)) + (unless (get elt 'tramp-suppress-trace) + (trace-function-background elt)))) ;; Delete debug file. (when (and tramp-debug-to-file (tramp-get-debug-file-name vec)) (ignore-errors (delete-file (tramp-get-debug-file-name vec))))) @@ -5406,6 +5463,8 @@ Invokes `password-read' if available, `read-passwd' else." ;; Reenable the timers. (with-timeout-unsuspend stimers)))) +(put #'tramp-read-passwd 'tramp-suppress-trace t) + (defun tramp-clear-passwd (vec) "Clear password cache for connection related to VEC." (let ((method (tramp-file-name-method vec)) @@ -5420,6 +5479,8 @@ Invokes `password-read' if available, `read-passwd' else." :host ,host-port :port ,method)) (password-cache-remove (tramp-make-tramp-file-name vec 'noloc 'nohop)))) +(put #'tramp-clear-passwd 'tramp-suppress-trace t) + (defun tramp-time-diff (t1 t2) "Return the difference between the two times, in seconds. T1 and T2 are time values (as returned by `current-time' for example)." diff --git a/lisp/nxml/rng-nxml.el b/lisp/nxml/rng-nxml.el index 33768a46c94..d70a346159a 100644 --- a/lisp/nxml/rng-nxml.el +++ b/lisp/nxml/rng-nxml.el @@ -179,7 +179,8 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil." ;; attributes are required (insert " ")))) ((member completion extra-strings) - (insert ">"))))))))) + (insert ">")))) + :company-kind ,(lambda () 'property)))))) (defconst rng-in-end-tag-name-regex (replace-regexp-in-string @@ -254,7 +255,8 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil." (when (and (eq status 'finished) (not (looking-at "="))) (insert "=\"\"") - (forward-char -1))))))))) + (forward-char -1))) + :company-kind ,(lambda (_) 'enum-member))))))) (defconst rng-in-attribute-value-regex (replace-regexp-in-string @@ -279,7 +281,8 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil." (lambda (_completion status) (when (eq status 'finished) (let ((delim (char-before value-start))) - (unless (eq (char-after) delim) (insert delim))))))) + (unless (eq (char-after) delim) (insert delim)))))) + (kind-function (lambda (_) 'value))) (and (rng-adjust-state-for-attribute lt-pos name-start) (if (string= (buffer-substring-no-properties name-start @@ -290,14 +293,16 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil." (rng-possible-namespace-uris (and colon (buffer-substring-no-properties (1+ colon) name-end)))) - :exit-function ,exit-function) + :exit-function ,exit-function + :company-kind ,kind-function) (rng-adjust-state-for-attribute-value name-start colon name-end) `(,value-start ,(point) ,(rng-strings-to-completion-table (rng-match-possible-value-strings)) - :exit-function ,exit-function)))))) + :exit-function ,exit-function + :company-kind ,kind-function)))))) (defun rng-possible-namespace-uris (prefix) (let ((ns (if prefix (nxml-ns-get-prefix prefix) diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el index 251ad97cdec..1283970bc2b 100644 --- a/lisp/org/org-clock.el +++ b/lisp/org/org-clock.el @@ -539,8 +539,8 @@ of a different task.") "Marker pointing to the task that has been interrupted by the current clock.") (defvar org-clock-mode-line-map (make-sparse-keymap)) -(define-key org-clock-mode-line-map [mode-line mouse-2] 'org-clock-goto) -(define-key org-clock-mode-line-map [mode-line mouse-1] 'org-clock-menu) +(define-key org-clock-mode-line-map [mode-line mouse-2] #'org-clock-goto) +(define-key org-clock-mode-line-map [mode-line mouse-1] #'org-clock-menu) (defun org-clock--translate (s language) "Translate string S into using string LANGUAGE. @@ -1414,12 +1414,12 @@ the default behavior." (setq org-clock-mode-line-timer (run-with-timer org-clock-update-period org-clock-update-period - 'org-clock-update-mode-line))) + #'org-clock-update-mode-line))) (when org-clock-idle-timer (cancel-timer org-clock-idle-timer) (setq org-clock-idle-timer nil)) (setq org-clock-idle-timer - (run-with-timer 60 60 'org-resolve-clocks-if-idle)) + (run-with-timer 60 60 #'org-resolve-clocks-if-idle)) (message "Clock starts at %s - %s" ts org--msg-extra) (run-hooks 'org-clock-in-hook)))))) @@ -1716,7 +1716,7 @@ to, overriding the existing value of `org-clock-out-switch-to-state'." (unless (org-clocking-p) (setq org-clock-current-task nil))))))) -(add-hook 'org-clock-out-hook 'org-clock-remove-empty-clock-drawer) +(add-hook 'org-clock-out-hook #'org-clock-remove-empty-clock-drawer) (defun org-clock-remove-empty-clock-drawer () "Remove empty clock drawers in current subtree." @@ -2012,7 +2012,7 @@ Use `\\[org-clock-remove-overlays]' to remove the subtree times." (when time (org-clock-put-overlay time))))) ;; Arrange to remove the overlays upon next change. (when org-remove-highlights-with-change - (add-hook 'before-change-functions 'org-clock-remove-overlays + (add-hook 'before-change-functions #'org-clock-remove-overlays nil 'local)))) (let* ((h (/ org-clock-file-total-minutes 60)) (m (- org-clock-file-total-minutes (* 60 h)))) @@ -2063,7 +2063,7 @@ If NOREMOVE is nil, remove this function from the (setq org-clock-overlays nil) (unless noremove (remove-hook 'before-change-functions - 'org-clock-remove-overlays 'local)))) + #'org-clock-remove-overlays 'local)))) ;;;###autoload (defun org-clock-out-if-current () @@ -2932,12 +2932,12 @@ PROPERTIES: The list properties specified in the `:properties' parameter (save-excursion (org-clock-sum ts te (when matcher - `(lambda () - (let* ((todo (org-get-todo-state)) - (tags-list (org-get-tags)) - (org-scanner-tags tags-list) - (org-trust-scanner-tags t)) - (funcall ,matcher todo tags-list nil))))) + (lambda () + (let* ((todo (org-get-todo-state)) + (tags-list (org-get-tags)) + (org-scanner-tags tags-list) + (org-trust-scanner-tags t)) + (funcall matcher todo tags-list nil))))) (goto-char (point-min)) (setq st t) (while (or (and (bobp) (prog1 st (setq st nil)) diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el index 75056d45a7e..2f039064404 100644 --- a/lisp/org/org-colview.el +++ b/lisp/org/org-colview.el @@ -162,20 +162,20 @@ See `org-columns-summary-types' for details.") (org-overview) (org-content)) -(org-defkey org-columns-map "c" 'org-columns-content) -(org-defkey org-columns-map "o" 'org-overview) -(org-defkey org-columns-map "e" 'org-columns-edit-value) -(org-defkey org-columns-map "\C-c\C-t" 'org-columns-todo) -(org-defkey org-columns-map "\C-c\C-c" 'org-columns-toggle-or-columns-quit) -(org-defkey org-columns-map "\C-c\C-o" 'org-columns-open-link) -(org-defkey org-columns-map "v" 'org-columns-show-value) -(org-defkey org-columns-map "q" 'org-columns-quit) -(org-defkey org-columns-map "r" 'org-columns-redo) -(org-defkey org-columns-map "g" 'org-columns-redo) -(org-defkey org-columns-map [left] 'backward-char) -(org-defkey org-columns-map "\M-b" 'backward-char) -(org-defkey org-columns-map "a" 'org-columns-edit-allowed) -(org-defkey org-columns-map "s" 'org-columns-edit-attributes) +(org-defkey org-columns-map "c" #'org-columns-content) +(org-defkey org-columns-map "o" #'org-overview) +(org-defkey org-columns-map "e" #'org-columns-edit-value) +(org-defkey org-columns-map "\C-c\C-t" #'org-columns-todo) +(org-defkey org-columns-map "\C-c\C-c" #'org-columns-toggle-or-columns-quit) +(org-defkey org-columns-map "\C-c\C-o" #'org-columns-open-link) +(org-defkey org-columns-map "v" #'org-columns-show-value) +(org-defkey org-columns-map "q" #'org-columns-quit) +(org-defkey org-columns-map "r" #'org-columns-redo) +(org-defkey org-columns-map "g" #'org-columns-redo) +(org-defkey org-columns-map [left] #'backward-char) +(org-defkey org-columns-map "\M-b" #'backward-char) +(org-defkey org-columns-map "a" #'org-columns-edit-allowed) +(org-defkey org-columns-map "s" #'org-columns-edit-attributes) (org-defkey org-columns-map "\M-f" (lambda () (interactive) (goto-char (1+ (point))))) (org-defkey org-columns-map [right] @@ -187,7 +187,7 @@ See `org-columns-summary-types' for details.") (while (and (org-invisible-p2) (not (eobp))) (beginning-of-line 2)) (move-to-column col) - (if (eq major-mode 'org-agenda-mode) + (if (derived-mode-p 'org-agenda-mode) (org-agenda-do-context-action))))) (org-defkey org-columns-map [up] (lambda () (interactive) @@ -198,20 +198,20 @@ See `org-columns-summary-types' for details.") (move-to-column col) (if (eq major-mode 'org-agenda-mode) (org-agenda-do-context-action))))) -(org-defkey org-columns-map [(shift right)] 'org-columns-next-allowed-value) -(org-defkey org-columns-map "n" 'org-columns-next-allowed-value) -(org-defkey org-columns-map [(shift left)] 'org-columns-previous-allowed-value) -(org-defkey org-columns-map "p" 'org-columns-previous-allowed-value) -(org-defkey org-columns-map "<" 'org-columns-narrow) -(org-defkey org-columns-map ">" 'org-columns-widen) -(org-defkey org-columns-map [(meta right)] 'org-columns-move-right) -(org-defkey org-columns-map [(meta left)] 'org-columns-move-left) -(org-defkey org-columns-map [(shift meta right)] 'org-columns-new) -(org-defkey org-columns-map [(shift meta left)] 'org-columns-delete) +(org-defkey org-columns-map [(shift right)] #'org-columns-next-allowed-value) +(org-defkey org-columns-map "n" #'org-columns-next-allowed-value) +(org-defkey org-columns-map [(shift left)] #'org-columns-previous-allowed-value) +(org-defkey org-columns-map "p" #'org-columns-previous-allowed-value) +(org-defkey org-columns-map "<" #'org-columns-narrow) +(org-defkey org-columns-map ">" #'org-columns-widen) +(org-defkey org-columns-map [(meta right)] #'org-columns-move-right) +(org-defkey org-columns-map [(meta left)] #'org-columns-move-left) +(org-defkey org-columns-map [(shift meta right)] #'org-columns-new) +(org-defkey org-columns-map [(shift meta left)] #'org-columns-delete) (dotimes (i 10) (org-defkey org-columns-map (number-to-string i) - `(lambda () (interactive) - (org-columns-next-allowed-value nil ,i)))) + (lambda () (interactive) + (org-columns-next-allowed-value nil i)))) (easy-menu-define org-columns-menu org-columns-map "Org Column Menu" '("Column" @@ -490,7 +490,7 @@ for the duration of the command.") (org-add-props " " nil 'display `(space :align-to ,linum-offset)) (org-add-props (substring title 0 -1) nil 'face 'org-column-title))) (setq org-columns-previous-hscroll -1) - (add-hook 'post-command-hook 'org-columns-hscroll-title nil 'local))) + (add-hook 'post-command-hook #'org-columns-hscroll-title nil 'local))) (defun org-columns-hscroll-title () "Set the `header-line-format' so that it scrolls along with the table." @@ -519,7 +519,7 @@ for the duration of the command.") (when (local-variable-p 'org-previous-header-line-format) (setq header-line-format org-previous-header-line-format) (kill-local-variable 'org-previous-header-line-format) - (remove-hook 'post-command-hook 'org-columns-hscroll-title 'local)) + (remove-hook 'post-command-hook #'org-columns-hscroll-title 'local)) (set-marker org-columns-begin-marker nil) (when (markerp org-columns-top-level-marker) (set-marker org-columns-top-level-marker nil)) @@ -782,7 +782,7 @@ around it." (setq time-after (copy-sequence time)) (setf (nth 3 time-before) (1- (nth 3 time))) (setf (nth 3 time-after) (1+ (nth 3 time))) - (mapcar (lambda (x) (format-time-string fmt (apply 'encode-time x))) + (mapcar (lambda (x) (format-time-string fmt (apply #'encode-time x))) (list time-before time time-after))))) (defun org-columns-open-link (&optional arg) diff --git a/lisp/org/org-mouse.el b/lisp/org/org-mouse.el index 5c222ea70d5..57281dd68c0 100644 --- a/lisp/org/org-mouse.el +++ b/lisp/org/org-mouse.el @@ -167,14 +167,12 @@ indirectly, for example, through the agenda buffer.") (defcustom org-mouse-punctuation ":" "Punctuation used when inserting text by drag and drop." - :group 'org-mouse :type 'string) (defcustom org-mouse-features '(context-menu yank-link activate-stars activate-bullets activate-checkboxes) "The features of org-mouse that should be activated. Changing this variable requires a restart of Emacs to get activated." - :group 'org-mouse :type '(set :greedy t (const :tag "Mouse-3 shows context menu" context-menu) (const :tag "C-mouse-1 and mouse-3 move trees" move-tree) @@ -292,19 +290,19 @@ argument. If it is a string, it is interpreted as the format string to (format ITEMFORMAT keyword). If it is neither a string nor a function, elements of KEYWORDS are used directly." (mapcar - `(lambda (keyword) + (lambda (keyword) (vector (cond - ((functionp ,itemformat) (funcall ,itemformat keyword)) - ((stringp ,itemformat) (format ,itemformat keyword)) + ((functionp itemformat) (funcall itemformat keyword)) + ((stringp itemformat) (format itemformat keyword)) (t keyword)) - (list 'funcall ,function keyword) + (list 'funcall function keyword) :style (cond - ((null ,selected) t) - ((functionp ,selected) 'toggle) + ((null selected) t) + ((functionp selected) 'toggle) (t 'radio)) - :selected (if (functionp ,selected) - (and (funcall ,selected keyword) t) - (equal ,selected keyword)))) + :selected (if (functionp selected) + (and (funcall selected keyword) t) + (equal selected keyword)))) keywords)) (defun org-mouse-remove-match-and-spaces () @@ -344,12 +342,12 @@ string to (format ITEMFORMAT keyword). If it is neither a string nor a function, elements of KEYWORDS are used directly." (setq group (or group 0)) (let ((replace (org-mouse-match-closure - (if nosurround 'replace-match - 'org-mouse-replace-match-and-surround)))) + (if nosurround #'replace-match + #'org-mouse-replace-match-and-surround)))) (append (org-mouse-keyword-menu keywords - `(lambda (keyword) (funcall ,replace keyword t t nil ,group)) + (lambda (keyword) (funcall replace keyword t t nil group)) (match-string group) itemformat) `(["None" org-mouse-remove-match-and-spaces @@ -416,7 +414,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:" (let ((kwds org-todo-keywords-1)) (org-mouse-keyword-menu kwds - `(lambda (kwd) (org-todo kwd)) + #'org-todo (lambda (kwd) (equal state kwd)))))) (defun org-mouse-tag-menu () ;todo @@ -424,14 +422,14 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:" (append (let ((tags (org-get-tags nil t))) (org-mouse-keyword-menu - (sort (mapcar 'car (org-get-buffer-tags)) 'string-lessp) - `(lambda (tag) + (sort (mapcar #'car (org-get-buffer-tags)) #'string-lessp) + (lambda (tag) (org-mouse-set-tags - (sort (if (member tag (quote ,tags)) - (delete tag (quote ,tags)) - (cons tag (quote ,tags))) - 'string-lessp))) - `(lambda (tag) (member tag (quote ,tags))) + (sort (if (member tag tags) + (delete tag tags) + (cons tag tags)) + #'string-lessp))) + (lambda (tag) (member tag tags)) )) '("--" ["Align Tags Here" (org-align-tags) t] @@ -500,7 +498,7 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:" ["Check TODOs" org-show-todo-tree t] ("Check Tags" ,@(org-mouse-keyword-menu - (sort (mapcar 'car (org-get-buffer-tags)) 'string-lessp) + (sort (mapcar #'car (org-get-buffer-tags)) #'string-lessp) #'(lambda (tag) (org-tags-sparse-tree nil tag))) "--" ["Custom Tag ..." org-tags-sparse-tree t]) @@ -510,16 +508,16 @@ SCHEDULED: or DEADLINE: or ANYTHINGLIKETHIS:" ["Display TODO List" org-todo-list t] ("Display Tags" ,@(org-mouse-keyword-menu - (sort (mapcar 'car (org-get-buffer-tags)) 'string-lessp) + (sort (mapcar #'car (org-get-buffer-tags)) #'string-lessp) #'(lambda (tag) (org-tags-view nil tag))) "--" ["Custom Tag ..." org-tags-view t]) ["Display Calendar" org-goto-calendar t] "--" ,@(org-mouse-keyword-menu - (mapcar 'car org-agenda-custom-commands) + (mapcar #'car org-agenda-custom-commands) #'(lambda (key) - (eval `(org-agenda nil (string-to-char ,key)))) + (org-agenda nil (string-to-char key))) nil #'(lambda (key) (let ((entry (assoc key org-agenda-custom-commands))) @@ -594,10 +592,10 @@ This means, between the beginning of line and the point." (defun org-mouse-match-closure (function) (let ((match (match-data t))) - `(lambda (&rest rest) - (save-match-data - (set-match-data ',match) - (apply ',function rest))))) + (lambda (&rest rest) + (save-match-data + (set-match-data match) + (apply function rest))))) (defun org-mouse-yank-link (click) (interactive "e") @@ -631,7 +629,7 @@ This means, between the beginning of line and the point." ((save-excursion (beginning-of-line) (looking-at "[ \t]*#\\+STARTUP: \\(.*\\)")) (popup-menu `(nil - ,@(org-mouse-list-options-menu (mapcar 'car org-startup-options) + ,@(org-mouse-list-options-menu (mapcar #'car org-startup-options) 'org-mode-restart)))) ((or (eolp) (and (looking-at "\\( \\|\t\\)\\(\\+:[0-9a-zA-Z_:]+\\)?\\( \\|\t\\)+$") @@ -857,21 +855,21 @@ This means, between the beginning of line and the point." (add-hook 'org-mode-hook #'(lambda () - (setq org-mouse-context-menu-function 'org-mouse-context-menu) + (setq org-mouse-context-menu-function #'org-mouse-context-menu) (when (memq 'context-menu org-mouse-features) (org-defkey org-mouse-map [mouse-3] nil) - (org-defkey org-mode-map [mouse-3] 'org-mouse-show-context-menu)) - (org-defkey org-mode-map [down-mouse-1] 'org-mouse-down-mouse) + (org-defkey org-mode-map [mouse-3] #'org-mouse-show-context-menu)) + (org-defkey org-mode-map [down-mouse-1] #'org-mouse-down-mouse) (when (memq 'context-menu org-mouse-features) - (org-defkey org-mouse-map [C-drag-mouse-1] 'org-mouse-move-tree) - (org-defkey org-mouse-map [C-down-mouse-1] 'org-mouse-move-tree-start)) + (org-defkey org-mouse-map [C-drag-mouse-1] #'org-mouse-move-tree) + (org-defkey org-mouse-map [C-down-mouse-1] #'org-mouse-move-tree-start)) (when (memq 'yank-link org-mouse-features) - (org-defkey org-mode-map [S-mouse-2] 'org-mouse-yank-link) - (org-defkey org-mode-map [drag-mouse-3] 'org-mouse-yank-link)) + (org-defkey org-mode-map [S-mouse-2] #'org-mouse-yank-link) + (org-defkey org-mode-map [drag-mouse-3] #'org-mouse-yank-link)) (when (memq 'move-tree org-mouse-features) - (org-defkey org-mouse-map [drag-mouse-3] 'org-mouse-move-tree) - (org-defkey org-mouse-map [down-mouse-3] 'org-mouse-move-tree-start)) + (org-defkey org-mouse-map [drag-mouse-3] #'org-mouse-move-tree) + (org-defkey org-mouse-map [down-mouse-3] #'org-mouse-move-tree-start)) (when (memq 'activate-stars org-mouse-features) (font-lock-add-keywords @@ -1086,11 +1084,11 @@ This means, between the beginning of line and the point." (defvar org-agenda-mode-map) (add-hook 'org-agenda-mode-hook (lambda () - (setq org-mouse-context-menu-function 'org-mouse-agenda-context-menu) - (org-defkey org-agenda-mode-map [mouse-3] 'org-mouse-show-context-menu) - (org-defkey org-agenda-mode-map [down-mouse-3] 'org-mouse-move-tree-start) - (org-defkey org-agenda-mode-map [C-mouse-4] 'org-agenda-earlier) - (org-defkey org-agenda-mode-map [C-mouse-5] 'org-agenda-later) + (setq org-mouse-context-menu-function #'org-mouse-agenda-context-menu) + (org-defkey org-agenda-mode-map [mouse-3] #'org-mouse-show-context-menu) + (org-defkey org-agenda-mode-map [down-mouse-3] #'org-mouse-move-tree-start) + (org-defkey org-agenda-mode-map [C-mouse-4] #'org-agenda-earlier) + (org-defkey org-agenda-mode-map [C-mouse-5] #'org-agenda-later) (org-defkey org-agenda-mode-map [drag-mouse-3] (lambda (event) (interactive "e") (cl-case (org-mouse-get-gesture event) diff --git a/lisp/org/org-timer.el b/lisp/org/org-timer.el index b6802fe8b04..852d18579a4 100644 --- a/lisp/org/org-timer.el +++ b/lisp/org/org-timer.el @@ -366,7 +366,7 @@ VALUE can be `on', `off', or `paused'." (setq org-timer-mode-line-timer nil)) (when org-timer-display (setq org-timer-mode-line-timer - (run-with-timer 1 1 'org-timer-update-mode-line)))))) + (run-with-timer 1 1 #'org-timer-update-mode-line)))))) (defun org-timer-update-mode-line () "Update the timer time in the mode line." @@ -456,14 +456,15 @@ using three `C-u' prefix arguments." "Start countdown timer that will last SECS. TITLE will be appended to the notification message displayed when time is up." - (let ((msg (format "%s: time out" title))) + (let ((msg (format "%s: time out" title)) + (sound org-clock-sound)) (run-with-timer - secs nil `(lambda () - (setq org-timer-countdown-timer nil - org-timer-start-time nil) - (org-notify ,msg ,org-clock-sound) - (org-timer-set-mode-line 'off) - (run-hooks 'org-timer-done-hook))))) + secs nil (lambda () + (setq org-timer-countdown-timer nil + org-timer-start-time nil) + (org-notify msg sound) + (org-timer-set-mode-line 'off) + (run-hooks 'org-timer-done-hook))))) (defun org-timer--get-timer-title () "Construct timer title. diff --git a/lisp/progmodes/bug-reference.el b/lisp/progmodes/bug-reference.el index 0c5837cae7e..fc9627c2728 100644 --- a/lisp/progmodes/bug-reference.el +++ b/lisp/progmodes/bug-reference.el @@ -238,8 +238,8 @@ and apply it if applicable." "An alist for setting up `bug-reference-mode' in mail modes. This takes action if `bug-reference-mode' is enabled in group and -message buffers of Emacs mail clients. Currently, only Gnus is -supported. +message buffers of Emacs mail clients. Currently, Gnus and Rmail +are supported. Each element has the form @@ -342,6 +342,27 @@ and set it if applicable." (push val header-values)))))) (bug-reference--maybe-setup-from-mail nil header-values))))))) +(defun bug-reference-try-setup-from-rmail () + "Try setting up `bug-reference-mode' from the current rmail mail. +Guesses suitable `bug-reference-bug-regexp' and +`bug-reference-url-format' values by matching the current Rmail +file's name against GROUP-REGEXP and the values of List-Id, To, +From, and Cc against HEADER-REGEXP in +`bug-reference-setup-from-mail-alist'." + (with-demoted-errors + "Error in bug-reference-try-setup-from-rmail: %S" + (when (and bug-reference-mode + (derived-mode-p 'rmail-mode)) + (let (header-values) + (save-excursion + (goto-char (point-min)) + (dolist (field '("list-id" "to" "from" "cc")) + (let ((val (mail-fetch-field field))) + (when val + (push val header-values))))) + (bug-reference--maybe-setup-from-mail + (buffer-file-name) header-values))))) + (defvar bug-reference-setup-from-irc-alist `((,(concat "#" (regexp-opt '("emacs" "gnus" "org-mode" "rcirc" "erc") 'words)) @@ -420,6 +441,25 @@ and set it if applicable." (erc-format-target) (erc-network-name)))) +(defvar bug-reference-auto-setup-functions + (list #'bug-reference-try-setup-from-vc + #'bug-reference-try-setup-from-gnus + #'bug-reference-try-setup-from-rmail + #'bug-reference-try-setup-from-rcirc + #'bug-reference-try-setup-from-erc) + "Functions trying to auto-setup `bug-reference-mode'. +These functions are run after `bug-reference-mode' has been +activated in a buffer and try to guess suitable values for +`bug-reference-bug-regexp' and `bug-reference-url-format'. Their +guesswork is based on these variables: + +- `bug-reference-setup-from-vc-alist' for guessing based on + version control, e.g., URL of repository. +- `bug-reference-setup-from-mail-alist' for guessing based on + mail group names or mail header values. +- `bug-reference-setup-from-irc-alist' for guessing based on IRC + channel or network names.") + (defun bug-reference--run-auto-setup () (when (or bug-reference-mode bug-reference-prog-mode) @@ -430,10 +470,7 @@ and set it if applicable." (with-demoted-errors "Error during bug-reference auto-setup: %S" (catch 'setup - (dolist (f (list #'bug-reference-try-setup-from-vc - #'bug-reference-try-setup-from-gnus - #'bug-reference-try-setup-from-rcirc - #'bug-reference-try-setup-from-erc)) + (dolist (f bug-reference-auto-setup-functions) (when (funcall f) (throw 'setup t)))))))) @@ -448,6 +485,18 @@ and set it if applicable." (widen) (bug-reference-unfontify (point-min) (point-max))))) +(defun bug-reference-mode-force-auto-setup () + "Enable `bug-reference-mode' and force auto-setup. +Enabling `bug-reference-mode' runs its auto-setup only if +`bug-reference-bug-regexp' and `bug-reference-url-format' are not +set already. This function sets the latter to `nil' +buffer-locally, so that the auto-setup will always run. + +This is mostly intended for MUA modes like `rmail-mode' where the +same buffer is re-used for different contexts." + (setq-local bug-reference-url-format nil) + (bug-reference-mode)) + ;;;###autoload (define-minor-mode bug-reference-prog-mode "Like `bug-reference-mode', but only buttonize in comments and strings." diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index a690d4bceb3..a56c7093e79 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el @@ -183,7 +183,7 @@ All commands in `lisp-mode-shared-map' are inherited by this map.") Load the compiled code when finished. Use `emacs-lisp-byte-compile-and-load' in combination with -`comp-deferred-compilation' set to `t' to achieve asynchronous +`native-comp-deferred-compilation' set to `t' to achieve asynchronous native compilation." (interactive nil emacs-lisp-mode) (emacs-lisp--before-compile-buffer) diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 8e6ce3d2696..aa3365278cc 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -101,6 +101,19 @@ (declare-function speedbar-delete-subblock "speedbar" (indent)) (declare-function speedbar-center-buffer-smartly "speedbar" ()) +;; FIXME: The declares below are necessary because we don't call `gud-def' +;; at toplevel, so the compiler doesn't know under which circumstances +;; they're defined. +(declare-function gud-until "gud" (arg)) +(declare-function gud-print "gud" (arg)) +(declare-function gud-down "gud" (arg)) +(declare-function gud-up "gud" (arg)) +(declare-function gud-jump "gud" (arg)) +(declare-function gud-finish "gud" (arg)) +(declare-function gud-next "gud" (arg)) +(declare-function gud-stepi "gud" (arg)) +(declare-function gud-tbreak "gud" (arg)) + (defvar tool-bar-map) (defvar speedbar-initial-expansion-list-name) (defvar speedbar-frame) diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index e9fbcbbfcd0..80c3e7840f0 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -473,7 +473,7 @@ buffer `default-directory'." (1 (if (eq (char-after (match-beginning 1)) ?\0) `(face nil display ,(match-string 2))))) ;; Hide excessive part of rgrep command - ("^find \\(\\. -type d .*\\\\)\\)" + ("^find \\(\\. -type d .*\\(?:\\\\)\\|\")\"\\)\\)" (1 (if grep-find-abbreviate grep-find-abbreviate-properties '(face nil abbreviated-command t)))) ;; Hide excessive part of lgrep command diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index a37477dfa1e..740a6e25812 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -50,6 +50,30 @@ (defvar hl-line-mode) (defvar hl-line-sticky-flag) +(declare-function gdb-tooltip-print "gdb-mi" (expr)) +(declare-function gdb-tooltip-print-1 "gdb-mi" (expr)) +(declare-function gud-pp "gdb-mi" (arg)) +(declare-function gdb-var-delete "gdb-mi" ()) +(declare-function speedbar-toggle-line-expansion "gud" ()) +(declare-function speedbar-edit-line "gud" ()) +;; FIXME: The declares below are necessary because we don't call `gud-def' +;; at toplevel, so the compiler doesn't know under which circumstances +;; they're defined. +(declare-function gud-statement "gud" (arg)) +(declare-function gud-until "gud" (arg)) +(declare-function gud-pv "gud" (arg)) +(declare-function gud-print "gud" (arg)) +(declare-function gud-down "gud" (arg)) +(declare-function gud-up "gud" (arg)) +(declare-function gud-jump "gud" (arg)) +(declare-function gud-finish "gud" (arg)) +(declare-function gud-cont "gud" (arg)) +(declare-function gud-next "gud" (arg)) +(declare-function gud-stepi "gud" (arg)) +(declare-function gud-step "gud" (arg)) +(declare-function gud-remove "gud" (arg)) +(declare-function gud-tbreak "gud" (arg)) +(declare-function gud-break "gud" (arg)) ;; ====================================================================== ;; GUD commands must be visible in C buffers visited by GUD @@ -66,7 +90,7 @@ pdb (Python), and jdb." "Prefix of all GUD commands valid in C buffers." :type 'key-sequence) -(global-set-key (vconcat gud-key-prefix "\C-l") 'gud-refresh) +(global-set-key (vconcat gud-key-prefix "\C-l") #'gud-refresh) ;; (define-key ctl-x-map " " 'gud-break); backward compatibility hack (defvar gud-marker-filter nil) @@ -150,10 +174,11 @@ Used to gray out relevant toolbar icons.") (or (not (gdb-show-run-p)) (bound-and-true-p gdb-active-process))))) - ([go] menu-item (if (bound-and-true-p gdb-active-process) - "Continue" "Run") gud-go + ([go] . (menu-item (if (bound-and-true-p gdb-active-process) + "Continue" "Run") + gud-go :visible (and (eq gud-minor-mode 'gdbmi) - (gdb-show-run-p))) + (gdb-show-run-p)))) ([stop] menu-item "Stop" gud-stop-subjob :visible (or (not (memq gud-minor-mode '(gdbmi pdb))) (and (eq gud-minor-mode 'gdbmi) @@ -185,13 +210,15 @@ Used to gray out relevant toolbar icons.") (bound-and-true-p gdb-active-process)) :visible (and (string-equal (buffer-local-value - 'gud-target-name gud-comint-buffer) "emacs") + 'gud-target-name gud-comint-buffer) + "emacs") (eq gud-minor-mode 'gdbmi))) - ([print*] menu-item (if (eq gud-minor-mode 'jdb) - "Dump object" - "Print Dereference") gud-pstar + ([print*] . (menu-item (if (eq gud-minor-mode 'jdb) + "Dump object" + "Print Dereference") + gud-pstar :enable (not gud-running) - :visible (memq gud-minor-mode '(gdbmi gdb jdb))) + :visible (memq gud-minor-mode '(gdbmi gdb jdb)))) ([print] menu-item "Print Expression" gud-print :enable (not gud-running)) ([watch] menu-item "Watch Expression" gud-watch @@ -336,7 +363,7 @@ Uses `gud-<MINOR-MODE>-directories' to find the source files." (eq gud-minor-mode 'gdbmi)) (make-local-variable 'gdb-define-alist) (unless gdb-define-alist (gdb-create-define-alist)) - (add-hook 'after-save-hook 'gdb-create-define-alist nil t)) + (add-hook 'after-save-hook #'gdb-create-define-alist nil t)) (make-local-variable 'gud-keep-buffer)) buf))) @@ -383,8 +410,8 @@ we're in the GUD buffer)." `(gud-call ,cmd arg) ;; Unused lexical warning if cmd does not use "arg". cmd)))) - ,(if key `(local-set-key ,(concat "\C-c" key) ',func)) - ,(if key `(global-set-key (vconcat gud-key-prefix ,key) ',func)))) + ,(if key `(local-set-key ,(concat "\C-c" key) #',func)) + ,(if key `(global-set-key (vconcat gud-key-prefix ,key) #',func)))) ;; Where gud-display-frame should put the debugging arrow; a cons of ;; (filename . line-number). This is set by the marker-filter, which scans @@ -450,12 +477,12 @@ The value t means that there is no stack, and we are in display-file mode.") "Install those variables used by speedbar to enhance gud/gdb." (unless gud-speedbar-key-map (setq gud-speedbar-key-map (speedbar-make-specialized-keymap)) - (define-key gud-speedbar-key-map "j" 'speedbar-edit-line) - (define-key gud-speedbar-key-map "e" 'speedbar-edit-line) - (define-key gud-speedbar-key-map "\C-m" 'speedbar-edit-line) - (define-key gud-speedbar-key-map " " 'speedbar-toggle-line-expansion) - (define-key gud-speedbar-key-map "D" 'gdb-var-delete) - (define-key gud-speedbar-key-map "p" 'gud-pp)) + (define-key gud-speedbar-key-map "j" #'speedbar-edit-line) + (define-key gud-speedbar-key-map "e" #'speedbar-edit-line) + (define-key gud-speedbar-key-map "\C-m" #'speedbar-edit-line) + (define-key gud-speedbar-key-map " " #'speedbar-toggle-line-expansion) + (define-key gud-speedbar-key-map "D" #'gdb-var-delete) + (define-key gud-speedbar-key-map "p" #'gud-pp)) (speedbar-add-expansion-list '("GUD" gud-speedbar-menu-items gud-speedbar-key-map @@ -625,8 +652,7 @@ required by the caller." (defcustom gud-gud-gdb-command-name "gdb --fullname" "Default command to run an executable under GDB in text command mode. The option \"--fullname\" must be included in this value." - :type 'string - :group 'gud) + :type 'string) (defvar gud-gdb-marker-regexp ;; This used to use path-separator instead of ":"; @@ -801,9 +827,9 @@ the buffer in which this command was invoked." (add-hook 'completion-at-point-functions #'gud-gdb-completion-at-point nil 'local) - (setq-local gud-gdb-completion-function 'gud-gdb-completions) + (setq-local gud-gdb-completion-function #'gud-gdb-completions) - (local-set-key "\C-i" 'completion-at-point) + (local-set-key "\C-i" #'completion-at-point) (setq comint-prompt-regexp "^(.*gdb[+]?) *") (setq paragraph-start comint-prompt-regexp) (setq gdb-first-prompt t) @@ -2182,9 +2208,9 @@ extension EXTN. Normally EXTN is given as the regular expression (setq gud-jdb-analysis-buffer (get-buffer-create " *gud-jdb-scratch*")) (prog1 (apply - 'nconc + #'nconc (mapcar - 'gud-jdb-build-class-source-alist-for-file + #'gud-jdb-build-class-source-alist-for-file sources)) (kill-buffer gud-jdb-analysis-buffer) (setq gud-jdb-analysis-buffer nil))) @@ -2251,13 +2277,14 @@ relative to a classpath directory." ;; name relative to classpath (filename (concat - (mapconcat 'identity + (mapconcat #'identity (split-string ;; Eliminate any subclass references in the class ;; name string. These start with a "$" (if (string-match "\\$.*" p) (replace-match "" t t p) p) - "\\.") "/") + "\\.") + "/") ".java")) (cplist (append gud-jdb-sourcepath gud-jdb-classpath)) found-file) @@ -2279,7 +2306,7 @@ during jdb initialization depending on the value of "Parse the classpath list and convert each item to an absolute pathname." (mapcar (lambda (s) (if (string-match "[/\\]$" s) (replace-match "" nil nil s) s)) - (mapcar 'file-truename + (mapcar #'file-truename (split-string string (concat "[ \t\n\r,\"" path-separator "]+"))))) @@ -2458,7 +2485,7 @@ gud, see `gud-mode'." (if (string-match "-attach" command-line) (gud-call "classpath")) (fset 'gud-jdb-find-source - 'gud-jdb-find-source-using-classpath)) + #'gud-jdb-find-source-using-classpath)) ;; Else create and bind the class/source association list as well ;; as the source file list. @@ -2466,8 +2493,8 @@ gud, see `gud-mode'." (gud-jdb-build-class-source-alist (setq gud-jdb-source-files (gud-jdb-build-source-files-list gud-jdb-directories - "\\.java$")))) - (fset 'gud-jdb-find-source 'gud-jdb-find-source-file))) + "\\.java\\'")))) + (fset 'gud-jdb-find-source #'gud-jdb-find-source-file))) ;; ;; End of debugger-specific information @@ -2578,7 +2605,7 @@ Commands: \\{gud-mode-map}" (setq mode-line-process '(":%s")) - (define-key (current-local-map) "\C-c\C-l" 'gud-refresh) + (define-key (current-local-map) "\C-c\C-l" #'gud-refresh) (setq-local gud-last-frame nil) (if (boundp 'tool-bar-map) ; not --without-x (setq-local tool-bar-map gud-tool-bar-map)) @@ -2587,7 +2614,7 @@ Commands: (setq-local comint-input-ignoredups t) (make-local-variable 'paragraph-start) (setq-local gud-delete-prompt-marker (make-marker)) - (add-hook 'kill-buffer-hook 'gud-kill-buffer-hook nil t)) + (add-hook 'kill-buffer-hook #'gud-kill-buffer-hook nil t)) (defcustom gud-chdir-before-run t "Non-nil if GUD should `cd' to the debugged executable." @@ -2654,7 +2681,7 @@ Commands: (setq w (cdr w))) ;; Tramp has already been loaded if we are here. (if w (setcar w (setq file (file-local-name file))))) - (apply 'make-comint (concat "gud" filepart) program nil + (apply #'make-comint (concat "gud" filepart) program nil (if massage-args (funcall massage-args file args) args)) ;; Since comint clobbered the mode, we don't set it until now. (gud-mode) @@ -2664,8 +2691,8 @@ Commands: (if find-file (setq-local gud-find-file find-file)) (setq gud-last-last-frame nil) - (set-process-filter (get-buffer-process (current-buffer)) 'gud-filter) - (set-process-sentinel (get-buffer-process (current-buffer)) 'gud-sentinel) + (set-process-filter (get-buffer-process (current-buffer)) #'gud-filter) + (set-process-sentinel (get-buffer-process (current-buffer)) #'gud-sentinel) (gud-set-buffer)) (defun gud-set-buffer () @@ -3186,10 +3213,11 @@ class of the file (using s to separate nested class ids)." (while (and cplist (not class-found)) (if (string-match (car cplist) f) (setq class-found - (mapconcat 'identity + (mapconcat #'identity (split-string (substring f (+ (match-end 0) 1)) - "/") "."))) + "/") + "."))) (setq cplist (cdr cplist))) ;; if f is visited by a java(cc-mode) buffer, walk up the ;; syntactic information chain and collect any 'inclass @@ -3228,7 +3256,7 @@ class of the file (using s to separate nested class ids)." )) (string-match (concat (car nclass) "$") class-found) (setq class-found - (replace-match (mapconcat 'identity nclass "$") + (replace-match (mapconcat #'identity nclass "$") t t class-found))))) (if (not class-found) (message "gud-find-class: class for file %s not found!" f)) @@ -3362,7 +3390,7 @@ Treats actions as defuns." (setq-local outline-regexp "[ \t]") (setq-local imenu-generic-expression '((nil "^define[ \t]+\\(\\w+\\)" 1))) - (setq-local indent-line-function 'gdb-script-indent-line) + (setq-local indent-line-function #'gdb-script-indent-line) (setq-local beginning-of-defun-function #'gdb-script-beginning-of-defun) (setq-local end-of-defun-function @@ -3393,14 +3421,14 @@ Treats actions as defuns." (require 'tooltip) (if gud-tooltip-mode (progn - (add-hook 'change-major-mode-hook 'gud-tooltip-change-major-mode) - (add-hook 'pre-command-hook 'tooltip-hide) - (add-hook 'tooltip-functions 'gud-tooltip-tips) - (define-key global-map [mouse-movement] 'gud-tooltip-mouse-motion)) - (unless tooltip-mode (remove-hook 'pre-command-hook 'tooltip-hide) - (remove-hook 'change-major-mode-hook 'gud-tooltip-change-major-mode) - (remove-hook 'tooltip-functions 'gud-tooltip-tips) - (define-key global-map [mouse-movement] 'ignore))) + (add-hook 'change-major-mode-hook #'gud-tooltip-change-major-mode) + (add-hook 'pre-command-hook #'tooltip-hide) + (add-hook 'tooltip-functions #'gud-tooltip-tips) + (define-key global-map [mouse-movement] #'gud-tooltip-mouse-motion)) + (unless tooltip-mode (remove-hook 'pre-command-hook #'tooltip-hide) + (remove-hook 'change-major-mode-hook #'gud-tooltip-change-major-mode) + (remove-hook 'tooltip-functions #'gud-tooltip-tips) + (define-key global-map [mouse-movement] #'ignore))) (gud-tooltip-activate-mouse-motions-if-enabled) (if (and gud-comint-buffer (buffer-name gud-comint-buffer); gud-comint-buffer might be killed @@ -3417,9 +3445,9 @@ Treats actions as defuns." (make-local-variable 'gdb-define-alist) (gdb-create-define-alist) (add-hook 'after-save-hook - 'gdb-create-define-alist nil t)))))) + #'gdb-create-define-alist nil t)))))) (kill-local-variable 'gdb-define-alist) - (remove-hook 'after-save-hook 'gdb-create-define-alist t)))) + (remove-hook 'after-save-hook #'gdb-create-define-alist t)))) (defcustom gud-tooltip-modes '(gud-mode c-mode c++-mode fortran-mode python-mode) @@ -3450,12 +3478,12 @@ only tooltips in the buffer containing the overlay arrow." (defun gud-tooltip-change-major-mode () "Function added to `change-major-mode-hook' when tooltip mode is on." - (add-hook 'post-command-hook 'gud-tooltip-activate-mouse-motions-if-enabled)) + (add-hook 'post-command-hook #'gud-tooltip-activate-mouse-motions-if-enabled)) (defun gud-tooltip-activate-mouse-motions-if-enabled () "Reconsider for all buffers whether mouse motion events are desired." (remove-hook 'post-command-hook - 'gud-tooltip-activate-mouse-motions-if-enabled) + #'gud-tooltip-activate-mouse-motions-if-enabled) (dolist (buffer (buffer-list)) (with-current-buffer buffer (if (and gud-tooltip-mode @@ -3564,7 +3592,7 @@ This function must return nil if it doesn't handle EVENT." (posn-point (event-end event)) (or (and (eq gud-minor-mode 'gdbmi) (not gdb-active-process)) (progn (setq gud-tooltip-event event) - (eval (cons 'and gud-tooltip-display))))) + (eval (cons 'and gud-tooltip-display) t)))) (let ((expr (tooltip-expr-to-print event))) (when expr (if (and (eq gud-minor-mode 'gdbmi) @@ -3594,10 +3622,10 @@ so they have been disabled.")) (gdb-input (concat "server macro expand " expr "\n") - `(lambda () (gdb-tooltip-print-1 ,expr))) + (lambda () (gdb-tooltip-print-1 expr))) (gdb-input (concat cmd "\n") - `(lambda () (gdb-tooltip-print ,expr)))) + (lambda () (gdb-tooltip-print expr)))) (add-function :override (process-filter process) #'gud-tooltip-process-output) (gud-basic-call cmd)) diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index eeb85d9df0c..c2481f6095a 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -1060,7 +1060,7 @@ Return the pitem of the function we went to the beginning of." (t (js--beginning-of-defun-nested)))))) -(defun js--flush-caches (&optional beg ignored) +(defun js--flush-caches (&optional beg _ignored) "Flush the `js-mode' syntax cache after position BEG. BEG defaults to `point-min', meaning to flush the entire cache." (interactive) @@ -1473,11 +1473,10 @@ LIMIT defaults to point." "Helper function for building `js--font-lock-keywords'. Create a byte-compiled function for matching a concatenation of REGEXPS, but only if FRAMEWORK is in `js-enabled-frameworks'." - (setq regexps (apply #'concat regexps)) - (byte-compile - `(lambda (limit) - (when (memq (quote ,framework) js-enabled-frameworks) - (re-search-forward ,regexps limit t))))) + (let ((regexp (apply #'concat regexps))) + (lambda (limit) + (when (memq framework js-enabled-frameworks) + (re-search-forward regexp limit t))))) (defvar-local js--tmp-location nil) @@ -2861,7 +2860,11 @@ return nil." ((nth 3 parse-status) 0) ; inside string ((when (and js-jsx-syntax (not js-jsx--indent-col)) (save-excursion (js-jsx--indentation parse-status)))) - ((eq (char-after) ?#) 0) + ((and (eq (char-after) ?#) + (save-excursion + (forward-char 1) + (looking-at-p cpp-font-lock-keywords-source-directives))) + 0) ((save-excursion (js--beginning-of-macro)) 4) ;; Indent array comprehension continuation lines specially. ((let ((bracket (nth 1 parse-status)) @@ -4177,8 +4180,9 @@ browser, respectively." "style" "") cmds))) - (eval (list 'with-js - (cons 'js-list (nreverse cmds)))))) + (eval `(with-js + (js-list ,@(nreverse cmds))) + t))) (command-hook () diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 33827136a17..047f55ed1ae 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -299,8 +299,9 @@ to find the list of ignores for each directory." (localdir (file-name-unquote (file-local-name (expand-file-name dir)))) (command (format "%s %s %s -type f %s -print0" find-program - ;; In case DIR is a symlink. - (file-name-as-directory localdir) + (shell-quote-argument + ;; In case DIR is a symlink. + (file-name-as-directory localdir)) (xref--find-ignores-arguments ignores localdir) (if files (concat (shell-quote-argument "(") @@ -1120,11 +1121,13 @@ current project, it will be killed." (defun project--buffer-list (pr) "Return the list of all buffers in project PR." - (let ((remote-project-p (file-remote-p (project-root pr))) + (let ((conn (file-remote-p (project-root pr))) bufs) (dolist (buf (buffer-list)) - (when (and (let ((remote (file-remote-p (buffer-local-value 'default-directory buf)))) - (if remote-project-p remote (not remote))) + ;; For now we go with the assumption that a project must reside + ;; entirely on one host. We might relax that in the future. + (when (and (equal conn + (file-remote-p (buffer-local-value 'default-directory buf))) (equal pr (with-current-buffer buf (project-current)))) diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index c6bd32a4a4b..c3a12c5b2c5 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -1596,6 +1596,8 @@ This adds rules for comments and assignments." ;;; Completion +(defvar sh--completion-keywords '("if" "while" "until" "for")) + (defun sh--vars-before-point () (save-excursion (let ((vars ())) @@ -1617,7 +1619,7 @@ This adds rules for comments and assignments." (sh--vars-before-point)) (locate-file-completion-table exec-path exec-suffixes string pred t) - '("if" "while" "until" "for")))) + sh--completion-keywords))) (complete-with-action action cmds string pred))) (defun sh-completion-at-point-function () @@ -1628,9 +1630,17 @@ This adds rules for comments and assignments." (start (point))) (cond ((eq (char-before) ?$) - (list start end (sh--vars-before-point))) + (list start end (sh--vars-before-point) + :company-kind (lambda (_) 'variable))) ((sh-smie--keyword-p) - (list start end #'sh--cmd-completion-table)))))) + (list start end #'sh--cmd-completion-table + :company-kind + (lambda (s) + (cond + ((member s sh--completion-keywords) 'keyword) + ((string-suffix-p "=" s) 'variable) + (t 'function))) + )))))) ;;; Indentation and navigation with SMIE. diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el index 65a4094d70d..83cb77ef782 100644 --- a/lisp/progmodes/sql.el +++ b/lisp/progmodes/sql.el @@ -3723,8 +3723,7 @@ to avoid deleting non-prompt output." ;; If we've found all the expected prompts, stop looking (if (= sql-output-newline-count 0) - (setq sql-output-newline-count nil - oline (concat "\n" oline)) + (setq sql-output-newline-count nil) ;; Still more possible prompts, leave them for the next pass (setq sql-preoutput-hold oline @@ -3769,6 +3768,8 @@ to avoid deleting non-prompt output." (with-current-buffer sql-buffer (when sql-debug-send (message ">>SQL> %S" s)) + (insert "\n") + (comint-set-process-mark) ;; Send the string (trim the trailing whitespace) (sql-input-sender (get-buffer-process (current-buffer)) s) diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index 7fc7181acc7..180c0e0aaa5 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -896,6 +896,44 @@ beginning of the line." (xref--search-property 'xref-item)) (xref-show-location-at-point)) +(defcustom xref-truncation-width 400 + "The column to visually \"truncate\" each Xref buffer line to." + :type '(choice + (integer :tag "Number of columns") + (const :tag "Disable truncation" nil))) + +(defun xref--apply-truncation () + (let ((bol (line-beginning-position)) + (eol (line-end-position)) + (inhibit-read-only t) + pos adjusted-bol) + (when (and xref-truncation-width + (> (- eol bol) xref-truncation-width) + ;; Either truncation not applied yet, or it hides the current + ;; position: need to refresh. + (or (and (null (get-text-property (1- eol) 'invisible)) + (null (get-text-property bol 'invisible))) + (get-text-property (point) 'invisible))) + (setq adjusted-bol + (cond + ((eq (get-text-property bol 'face) 'xref-line-number) + (next-single-char-property-change bol 'face)) + (t bol))) + (cond + ((< (- (point) bol) xref-truncation-width) + (setq pos (+ bol xref-truncation-width)) + (remove-text-properties bol pos '(invisible)) + (put-text-property pos eol 'invisible 'ellipsis)) + ((< (- eol (point)) xref-truncation-width) + (setq pos (- eol xref-truncation-width)) + (remove-text-properties pos eol '(invisible)) + (put-text-property adjusted-bol pos 'invisible 'ellipsis)) + (t + (setq pos (- (point) (/ xref-truncation-width 2))) + (put-text-property adjusted-bol pos 'invisible 'ellipsis) + (remove-text-properties pos (+ pos xref-truncation-width) '(invisible)) + (put-text-property (+ pos xref-truncation-width) eol 'invisible 'ellipsis)))))) + (defun xref--insert-xrefs (xref-alist) "Insert XREF-ALIST in the current-buffer. XREF-ALIST is of the form ((GROUP . (XREF ...)) ...), where @@ -939,6 +977,11 @@ GROUP is a string for decoration purposes and XREF is an (setq prev-line line prev-group group)))) (insert "\n")) + (add-to-invisibility-spec '(ellipsis . t)) + (save-excursion + (goto-char (point-min)) + (while (= 0 (forward-line 1)) + (xref--apply-truncation))) (run-hooks 'xref-after-update-hook)) (defun xref--analyze (xrefs) @@ -976,6 +1019,7 @@ Return an alist of the form ((FILENAME . (XREF ...)) ...)." (buffer-undo-list t)) (erase-buffer) (xref--insert-xrefs xref-alist) + (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)) diff --git a/lisp/repeat.el b/lisp/repeat.el index b7118cc7f95..46c880d0dde 100644 --- a/lisp/repeat.el +++ b/lisp/repeat.el @@ -338,10 +338,22 @@ recently executed command not bound to an input event\"." "Key that stops the modal repeating of keys in sequence. For example, you can set it to <return> like `isearch-exit'." :type '(choice (const :tag "No special key to exit repeating sequence" nil) - (key-sequence :tag "Key that exits repeating sequence")) + (key-sequence :tag "Key that exits repeating sequence")) :group 'convenience :version "28.1") +(defcustom repeat-exit-timeout nil + "Break the repetition chain of keys after specified timeout. +When a number, exit the repeat mode after idle time of the specified +number of seconds." + :type '(choice (const :tag "No timeout to exit repeating sequence" nil) + (number :tag "Timeout in seconds to exit repeating")) + :group 'convenience + :version "28.1") + +(defvar repeat-exit-timer nil + "Timer activated after the last key typed in the repeating key sequence.") + (defcustom repeat-keep-prefix t "Keep the prefix arg of the previous command." :type 'boolean @@ -420,16 +432,32 @@ When Repeat mode is enabled, and the command symbol has the property named (setq prefix-arg current-prefix-arg)) (setq repeat-in-progress t) - (set-transient-map map)))))) + (let ((exitfun (set-transient-map map))) + + (when repeat-exit-timer + (cancel-timer repeat-exit-timer) + (setq repeat-exit-timer nil)) + + (when repeat-exit-timeout + (setq repeat-exit-timer + (run-with-idle-timer + repeat-exit-timeout nil + (lambda () + (setq repeat-in-progress nil) + (funcall exitfun) + (funcall repeat-echo-function nil))))))))))) (setq repeat-map nil) (when (and was-in-progress (not repeat-in-progress)) + (when repeat-exit-timer + (cancel-timer repeat-exit-timer) + (setq repeat-exit-timer nil)) (funcall repeat-echo-function nil)))) -(defun repeat-echo-message-string (map) +(defun repeat-echo-message-string (keymap) "Return a string with a list of repeating keys." (let (keys) - (map-keymap (lambda (key _) (push key keys)) map) + (map-keymap (lambda (key _) (push key keys)) keymap) (format-message "Repeat with %s%s" (mapconcat (lambda (key) (key-description (vector key))) @@ -439,21 +467,23 @@ When Repeat mode is enabled, and the command symbol has the property named (key-description repeat-exit-key)) "")))) -(defun repeat-echo-message (map) +(defun repeat-echo-message (keymap) "Display available repeating keys in the echo area." - (when map - (let ((mess (repeat-echo-message-string map))) - (if (current-message) - (message "%s [%s]" (current-message) mess) - (message mess))))) + (if keymap + (let ((mess (repeat-echo-message-string keymap))) + (if (current-message) + (message "%s [%s]" (current-message) mess) + (message mess))) + (when (string-prefix-p "Repeat with " (current-message)) + (message nil)))) (defvar repeat-echo-mode-line-string (propertize "[Repeating...] " 'face 'mode-line-emphasis) "String displayed in the mode line in repeating mode.") -(defun repeat-echo-mode-line (map) +(defun repeat-echo-mode-line (keymap) "Display the repeat indicator in the mode line." - (if map + (if keymap (unless (assq 'repeat-in-progress mode-line-modes) (add-to-list 'mode-line-modes (list 'repeat-in-progress repeat-echo-mode-line-string))) diff --git a/lisp/savehist.el b/lisp/savehist.el index b8e9d6b427f..6745d379cb3 100644 --- a/lisp/savehist.el +++ b/lisp/savehist.el @@ -213,6 +213,7 @@ Normally invoked by calling `savehist-mode' to unset the minor mode." (cancel-timer savehist-timer) (setq savehist-timer nil))) +(defvar savehist--has-given-file-warning nil) (defun savehist-save (&optional auto-save) "Save the values of minibuffer history variables. Unbound symbols referenced in `savehist-additional-variables' are ignored. @@ -286,23 +287,29 @@ If AUTO-SAVE is non-nil, compare the saved contents to the one last saved, ;; If autosaving, avoid writing if nothing has changed since the ;; last write. (let ((checksum (md5 (current-buffer) nil nil savehist-coding-system))) - (unless (and auto-save (equal checksum savehist-last-checksum)) - ;; Set file-precious-flag when saving the buffer because we - ;; don't want a half-finished write ruining the entire - ;; history. Remember that this is run from a timer and from - ;; kill-emacs-hook, and also that multiple Emacs instances - ;; could write to this file at once. - (let ((file-precious-flag t) - (coding-system-for-write savehist-coding-system) - (dir (file-name-directory savehist-file))) - ;; Ensure that the directory exists before saving. - (unless (file-exists-p dir) - (make-directory dir t)) - (write-region (point-min) (point-max) savehist-file nil - (unless (called-interactively-p 'interactive) 'quiet))) - (when savehist-file-modes - (set-file-modes savehist-file savehist-file-modes)) - (setq savehist-last-checksum checksum))))) + (condition-case err + (unless (and auto-save (equal checksum savehist-last-checksum)) + ;; Set file-precious-flag when saving the buffer because we + ;; don't want a half-finished write ruining the entire + ;; history. Remember that this is run from a timer and from + ;; kill-emacs-hook, and also that multiple Emacs instances + ;; could write to this file at once. + (let ((file-precious-flag t) + (coding-system-for-write savehist-coding-system) + (dir (file-name-directory savehist-file))) + ;; Ensure that the directory exists before saving. + (unless (file-exists-p dir) + (make-directory dir t)) + (write-region (point-min) (point-max) savehist-file nil + (unless (called-interactively-p 'interactive) 'quiet))) + (when savehist-file-modes + (set-file-modes savehist-file savehist-file-modes)) + (setq savehist-last-checksum checksum)) + (file-error + (unless savehist--has-given-file-warning + (lwarn '(savehist-file) :warning "Error writing `%s': %s" + savehist-file (caddr err)) + (setq savehist--has-given-file-warning t))))))) (defun savehist-autosave () "Save the minibuffer history if it has been modified since the last save. diff --git a/lisp/server.el b/lisp/server.el index 60e02423527..55af2786463 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -413,9 +413,14 @@ If CLIENT is non-nil, add a description of it to the logged message." ;; for possible servers before doing anything, so it *should* be ours. (and (process-contact proc :server) (eq (process-status proc) 'closed) + ;; If this variable is non-nil, the socket was passed in to + ;; Emacs, and not created by Emacs itself (for instance, + ;; created by systemd). In that case, don't delete the socket. + (not internal--daemon-sockname) (ignore-errors (delete-file (process-get proc :server-file)))) - (server-log (format "Status changed to %s: %s" (process-status proc) msg) proc) + (server-log (format "Status changed to %s: %s" + (process-status proc) msg) proc) (server-delete-client proc)) (defun server--on-display-p (frame display) diff --git a/lisp/simple.el b/lisp/simple.el index 60535063c87..b742ccd2093 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2006,7 +2006,29 @@ This function uses the `read-extended-command-predicate' user option." '(metadata (affixation-function . read-extended-command--affixation) (category . command)) - (complete-with-action action obarray string pred))) + (let ((pred + (if (memq action '(nil t)) + ;; Exclude from completions obsolete commands + ;; lacking a `current-name', or where `when' is + ;; not the current major version. + (lambda (sym) + (let ((obsolete (get sym 'byte-obsolete-info))) + (and (funcall pred sym) + (or (equal string (symbol-name sym)) + (not obsolete) + (and + ;; Has a current-name. + (functionp (car obsolete)) + ;; when >= emacs-major-version + (condition-case nil + (>= (car (version-to-list + (caddr obsolete))) + emacs-major-version) + ;; If the obsoletion version isn't + ;; valid, include the command. + (error t))))))) + pred))) + (complete-with-action action obarray string pred)))) (lambda (sym) (and (commandp sym) (cond ((null read-extended-command-predicate)) @@ -5544,29 +5566,29 @@ Normally set from the UNDO element of a yank-handler; see `insert-for-yank'.") "Replace just-yanked stretch of killed text with a different stretch. The main use of this command is immediately after a `yank' or a `yank-pop'. At such a time, the region contains a stretch of -reinserted previously-killed text. `yank-pop' deletes that text -and inserts in its place a different stretch of killed text by -traversing the value of the `kill-ring' variable. +reinserted (\"pasted\") previously-killed text. `yank-pop' deletes +that text and inserts in its place a different stretch of killed text +by traversing the value of the `kill-ring' variable and selecting +another kill from there. With no argument, the previous kill is inserted. With argument N, insert the Nth previous kill. -If N is negative, this is a more recent kill. +If N is negative, it means to use a more recent kill. -The sequence of kills wraps around, so that after the oldest one -comes the newest one. +The sequence of kills wraps around, so if you keep invoking this command +time after time, and pass the oldest kill, you get the newest one. + +You can also invoke this command after a command other than `yank' +or `yank-pop'. This is the same as invoking `yank-from-kill-ring', +including the effect of the prefix argument; see there for the details. This command honors the `yank-handled-properties' and `yank-excluded-properties' variables, and the `yank-handler' text -property, in the way that `yank' does. - -When this command is called not immediately after a `yank' or a -`yank-pop', then it activates the minibuffer with its completion -and history filled with previously-killed items from the -`kill-ring' variable, and reads a string to yank at point. -See `yank-from-kill-ring' for more details." +property, in the way that `yank' does." (interactive "p") (if (not (eq last-command 'yank)) - (yank-from-kill-ring (read-from-kill-ring) current-prefix-arg) + (yank-from-kill-ring (read-from-kill-ring "Yank from kill-ring: ") + current-prefix-arg) (setq this-command 'yank) (unless arg (setq arg 1)) (let ((inhibit-read-only t) @@ -5655,8 +5677,9 @@ With ARG, rotate that many kills forward (or backward, if negative)." (current-kill arg)) (defvar read-from-kill-ring-history) -(defun read-from-kill-ring () - "Read a string from `kill-ring' using completion and minibuffer history." +(defun read-from-kill-ring (prompt) + "Read a `kill-ring' entry using completion and minibuffer history. +PROMPT is a string to prompt with." ;; `current-kill' updates `kill-ring' with a possible interprogram-paste (current-kill 0) (let* ((history-add-new-input nil) @@ -5700,7 +5723,7 @@ With ARG, rotate that many kills forward (or backward, if negative)." (define-key map "?" nil) map))) (completing-read - "Yank from kill-ring: " + prompt (lambda (string pred action) (if (eq action 'metadata) ;; Keep sorted by recency @@ -5710,16 +5733,28 @@ With ARG, rotate that many kills forward (or backward, if negative)." 'read-from-kill-ring-history)))) (defun yank-from-kill-ring (string &optional arg) - "Insert the `kill-ring' item selected from the minibuffer history. -Use minibuffer navigation and search commands to browse the -previously-killed items from the `kill-ring' variable in the -minibuffer history before typing RET to insert the selected item, -or use completion on the elements of `kill-ring'. You can edit -the item in the minibuffer before inserting it. - -With \\[universal-argument] as argument, put point at beginning, -and mark at end, like `yank' does." - (interactive (list (read-from-kill-ring) current-prefix-arg)) + "Select a stretch of previously killed text and insert (\"paste\") it. +This command allows to choose one of the stretches of text killed +or yanked by previous commands, which are recorded in `kill-ring', +and reinsert the chosen kill at point. + +This command prompts for a previously-killed text in the minibuffer. +Use the minibuffer history and search commands, or the minibuffer +completion commands, to select a previously-killed text. In +particular, typing \\<minibuffer-local-completion-map>\\[minibuffer-complete] at the prompt will pop up a buffer showing +all the previously-killed stretches of text from which you can +choose the one you want to reinsert. +Once you select the text you want to reinsert, type \\<minibuffer-local-map>\\[exit-minibuffer] to actually +insert it and exit the minibuffer. +You can also edit the selected text in the minibuffer before +inserting it. + +With \\[universal-argument] as argument, this command puts point at +beginning of the inserted text and mark at the end, like `yank' does. + +When called from Lisp, insert STRING like `insert-for-yank' does." + (interactive (list (read-from-kill-ring "Yank from kill-ring: ") + current-prefix-arg)) (push-mark) (insert-for-yank string) (if (consp arg) @@ -6918,11 +6953,13 @@ The value is a floating-point number." (or (null rbot) (= rbot 0))) nil) ;; If cursor is not in the bottom scroll margin, and the - ;; current line is not too tall, move forward. + ;; current line is not too tall, or if there's a continuation + ;; line below this one, move forward. ((and (or (null this-height) (<= this-height winh)) vpos (> vpos 0) - (< py last-line)) + (or (< py last-line) + (display--line-is-continued-p))) nil) ;; When already vscrolled, we vscroll some more if we can, ;; or clear vscroll and move forward at end of tall image. diff --git a/lisp/startup.el b/lisp/startup.el index b51e0f1dde1..61b49b2009e 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -519,7 +519,7 @@ DIRS are relative." xdg-dir) (t emacs-d-dir)))) -(defvar comp-eln-load-path) +(defvar native-comp-eln-load-path) (defun normal-top-level () "Emacs calls this function when it first starts up. It sets `command-line-processed', processes the command-line, @@ -538,21 +538,21 @@ It is the default value of the variable `top-level'." (startup--xdg-or-homedot startup--xdg-config-home-emacs nil)) (when (featurep 'native-compile) - ;; Form `comp-eln-load-path'. + ;; Form `native-comp-eln-load-path'. (let ((path-env (getenv "EMACSNATIVELOADPATH"))) (when path-env (dolist (path (split-string path-env path-separator)) (unless (string= "" path) - (push path comp-eln-load-path))))) + (push path native-comp-eln-load-path))))) (push (expand-file-name "eln-cache/" user-emacs-directory) - comp-eln-load-path) + native-comp-eln-load-path) ;; When $HOME is set to '/nonexistent' means we are running the ;; testsuite, add a temporary folder in front to produce there ;; new compilations. (when (equal (getenv "HOME") "/nonexistent") (let ((tmp-dir (make-temp-file "emacs-testsuite-" t))) (add-hook 'kill-emacs-hook (lambda () (delete-directory tmp-dir t))) - (push tmp-dir comp-eln-load-path)))) + (push tmp-dir native-comp-eln-load-path)))) ;; Look in each dir in load-path for a subdirs.el file. If we ;; find one, load it, which will add the appropriate subdirs of ;; that dir into load-path. This needs to be done before setting @@ -640,12 +640,12 @@ It is the default value of the variable `top-level'." (decode-coding-string dir coding t)) path))))) (when (featurep 'native-compile) - (let ((npath (symbol-value 'comp-eln-load-path))) - (set 'comp-eln-load-path + (let ((npath (symbol-value 'native-comp-eln-load-path))) + (set 'native-comp-eln-load-path (mapcar (lambda (dir) ;; Call expand-file-name to remove all the ;; pesky ".." from the directyory names in - ;; comp-eln-load-path. + ;; native-comp-eln-load-path. (expand-file-name (decode-coding-string dir coding t))) npath)))) @@ -1197,11 +1197,11 @@ please check its value") ;; Re-evaluate predefined variables whose initial value depends on ;; the runtime context. - (setq custom-delayed-init-variables - ;; Initialize them in the same order they were loaded, in case there - ;; are dependencies between them. - (nreverse custom-delayed-init-variables)) - (mapc #'custom-reevaluate-setting custom-delayed-init-variables) + (when (listp custom-delayed-init-variables) + (mapc #'custom-reevaluate-setting + ;; Initialize them in the same order they were loaded, in + ;; case there are dependencies between them. + (reverse custom-delayed-init-variables))) (setq custom-delayed-init-variables t) ;; Warn for invalid user name. diff --git a/lisp/subr.el b/lisp/subr.el index 7a055f2ba1e..82c2d221a68 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -2030,7 +2030,7 @@ FUN is then called once." (defmacro subr--with-wrapper-hook-no-warnings (hook args &rest body) "Like (with-wrapper-hook HOOK ARGS BODY), but without warnings." - (declare (debug (form sexp body))) + (declare (debug (form sexp def-body))) ;; We need those two gensyms because CL's lexical scoping is not available ;; for function arguments :-( (let ((funs (make-symbol "funs")) @@ -3951,7 +3951,7 @@ If you quit, the process is killed with SIGINT, or SIGKILL if you quit again." Within a `track-mouse' form, mouse motion generates input events that you can read with `read-event'. Normally, mouse motion is ignored." - (declare (debug t) (indent 0)) + (declare (debug (def-body)) (indent 0)) `(internal--track-mouse (lambda () ,@body))) (defmacro with-current-buffer (buffer-or-name &rest body) @@ -4455,7 +4455,7 @@ change `before-change-functions' or `after-change-functions'. Additionally, the buffer modifications of BODY are recorded on the buffer's undo list as a single \(apply ...) entry containing the function `undo--wrap-and-run-primitive-undo'." - (declare (debug t) (indent 2)) + (declare (debug (form form def-body)) (indent 2)) `(combine-change-calls-1 ,beg ,end (lambda () ,@body))) (defun undo--wrap-and-run-primitive-undo (beg end list) @@ -5046,7 +5046,7 @@ See also `with-eval-after-load'." FILE is normally a feature name, but it can also be a file name, in case that file does not provide any feature. See `eval-after-load' for more details about the different forms of FILE and their semantics." - (declare (indent 1) (debug t)) + (declare (indent 1) (debug (form def-body))) `(eval-after-load ,file (lambda () ,@body))) (defvar after-load-functions nil diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index 47b0b517ae0..61a2f6b3bc0 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -1307,10 +1307,14 @@ for determining whether point is within a selector." (let ((pos (point))) (skip-chars-backward "-[:alnum:]") (when (eq (char-before) ?\:) - (list (point) pos - (if (eq (char-before (- (point) 1)) ?\:) - css-pseudo-element-ids - css-pseudo-class-ids)))))) + (let ((double-colon (eq (char-before (- (point) 1)) ?\:))) + (list (- (point) (if double-colon 2 1)) + pos + (nconc + (unless double-colon + (mapcar (lambda (id) (concat ":" id)) css-pseudo-class-ids)) + (mapcar (lambda (id) (concat "::" id)) css-pseudo-element-ids)) + :company-kind (lambda (_) 'function))))))) (defun css--complete-at-rule () "Complete at-rule (statement beginning with `@') at point." @@ -1318,7 +1322,8 @@ for determining whether point is within a selector." (let ((pos (point))) (skip-chars-backward "-[:alnum:]") (when (eq (char-before) ?\@) - (list (point) pos css--at-ids))))) + (list (point) pos css--at-ids + :company-kind (lambda (_) 'keyword)))))) (defvar css--property-value-cache (make-hash-table :test 'equal :size (length css-property-alist)) @@ -1366,7 +1371,8 @@ the string PROPERTY." (skip-chars-backward "[:graph:]") (list (point) end (append '("inherit" "initial" "unset") - (css--property-values (car property))))))))) + (css--property-values (car property))) + :company-kind (lambda (_) 'value))))))) (defvar css--html-tags (mapcar #'car html-tag-alist) "List of HTML tags. @@ -1435,6 +1441,8 @@ tags, classes and IDs." (list prop-beg prop-end) (list sel-beg sel-end)) ,(completion-table-merge prop-table sel-table) + :company-kind + ,(lambda (s) (if (test-completion s prop-table) 'property 'keyword)) :exit-function ,(lambda (string status) (and (eq status 'finished) diff --git a/lisp/transient.el b/lisp/transient.el index 6e7b5ea876a..2ce7b7c30e1 100644 --- a/lisp/transient.el +++ b/lisp/transient.el @@ -3569,7 +3569,7 @@ we stop there." "transient-define-argument" "transient-define-suffix") t) - "\\_>[ \t'\(]*" + "\\_>[ \t'(]*" "\\(\\(?:\\sw\\|\\s_\\)+\\)?") (1 'font-lock-keyword-face) (2 'font-lock-function-name-face nil t))))) diff --git a/lisp/uniquify.el b/lisp/uniquify.el index 7cc01687f49..ffb5ecc9024 100644 --- a/lisp/uniquify.el +++ b/lisp/uniquify.el @@ -246,7 +246,14 @@ this rationalization." (if (buffer-live-p (uniquify-item-buffer item)) item)) items))) - (setq fix-list (append fix-list items)))) + ;; Other buffer's `uniquify-managed' lists may share + ;; elements. Ensure that we don't add these elements more + ;; than once to this buffer's `uniquify-managed' list. + (let ((new-items nil)) + (dolist (item items) + (unless (memq item fix-list) + (push item new-items))) + (setq fix-list (append fix-list new-items))))) ;; selects buffers whose names may need changing, and others that ;; may conflict, then bring conflicting names together (uniquify-rationalize fix-list)))) diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el index eabbaba32c0..4a44787bb03 100644 --- a/lisp/vc/log-edit.el +++ b/lisp/vc/log-edit.el @@ -203,13 +203,15 @@ when this variable is set to nil.") ;;; Originally taken from VC-Log mode (defconst log-edit-maximum-comment-ring-size 32 - "Maximum number of saved comments in the comment ring.") + "Maximum number of saved commit comments in `log-edit-comment-ring'.") (defvar log-edit-comment-ring (make-ring log-edit-maximum-comment-ring-size)) (defvar log-edit-comment-ring-index nil) (defvar log-edit-last-comment-match "") (defun log-edit-new-comment-index (stride len) - "Return the comment index STRIDE elements from the current one. + "Return the comment whose index is STRIDE elements away from the current one. +This accesses `log-edit-comment-ring', which stores commit log comments, +i.e. descriptions of changes done by commits. LEN is the length of `log-edit-comment-ring'." (mod (cond (log-edit-comment-ring-index (+ log-edit-comment-ring-index stride)) @@ -221,7 +223,7 @@ LEN is the length of `log-edit-comment-ring'." len)) (defun log-edit-previous-comment (arg) - "Cycle backwards through comment history. + "Cycle backwards through VC commit comment history. With a numeric prefix ARG, go back ARG comments." (interactive "*p") (let ((len (ring-length log-edit-comment-ring))) @@ -234,15 +236,15 @@ With a numeric prefix ARG, go back ARG comments." (insert (ring-ref log-edit-comment-ring log-edit-comment-ring-index))))) (defun log-edit-next-comment (arg) - "Cycle forwards through comment history. + "Cycle forwards through VC commit comment history. With a numeric prefix ARG, go forward ARG comments." (interactive "*p") (log-edit-previous-comment (- arg))) (defun log-edit-comment-search-backward (str &optional stride) - "Search backwards through comment history for substring match of STR. + "Search backwards through VC commit comment history for a match of STR. If the optional argument STRIDE is present, that is a step-width to use -when going through the comment ring." +when going through the comment ring, `log-edit-comment-ring'." ;; Why substring rather than regexp ? -sm (interactive (list (read-string (format-prompt "Comment substring" @@ -262,7 +264,7 @@ when going through the comment ring." (log-edit-previous-comment 0))) (defun log-edit-comment-search-forward (str) - "Search forwards through comment history for a substring match of STR." + "Search forwards through VC commit comment history for a match of STR." (interactive (list (read-string (format-prompt "Comment substring" log-edit-last-comment-match) @@ -270,10 +272,15 @@ when going through the comment ring." (log-edit-comment-search-backward str -1)) (defun log-edit-comment-to-change-log (&optional whoami file-name) - "Enter last VC comment into the change log for the current file. -WHOAMI (interactive prefix) non-nil means prompt for user name -and site. FILE-NAME is the name of the change log; if nil, use -`change-log-default-name'. + "Insert the last VC commit comment into the change log for the current file. +This reuses the text of the last VC commit comment in `log-edit-comment-ring' +for the change-log entry of the current file, which is handy when several +related changes have the same commit comment. +WHOAMI (interactively, prefix argument) non-nil means prompt for user name +and email address of the person to whom to attribute the change. +FILE-NAME is the name of the change log; if nil, use `change-log-default-name' +Interactively, with prefix argument, prompt for both the name and address of +the person who did the change and for FILE-NAME. This may be useful as a `vc-checkin-hook' to update change logs automatically." @@ -332,7 +339,7 @@ automatically." (defconst log-edit-header-contents-regexp "[ \t]*\\(.*\\(\n[ \t].*\\)*\\)\n?" - "Regular expression matching a header field. + "Regular expression matching the header field in `log-edit-mode'. The first subexpression is the actual text of the field.") (defun log-edit-match-to-eoh (_limit) @@ -393,7 +400,9 @@ The first subexpression is the actual text of the field.") (log-edit--match-first-line (0 'log-edit-summary)))) (defvar log-edit-font-lock-gnu-style nil - "If non-nil, highlight common failures to follow the GNU coding standards.") + "If non-nil, highlight common failures to follow VC commit log conventions. +The conventions checked are those described in the GNU coding standards +document.") (put 'log-edit-font-lock-gnu-style 'safe-local-variable 'booleanp) (defconst log-edit-font-lock-gnu-keywords @@ -436,28 +445,28 @@ The first subexpression is the actual text of the field.") ;;;###autoload (defun log-edit (callback &optional setup params buffer mode &rest _ignore) - "Setup a buffer to enter a log message. -The buffer is put in mode MODE or `log-edit-mode' if MODE is nil. + "Setup a buffer to enter a VC commit log message. +The buffer is put in mode MODE, or `log-edit-mode' if MODE is nil. \\<log-edit-mode-map> If SETUP is non-nil, erase the buffer and run `log-edit-hook'. Set mark and point around the entire contents of the buffer, so that it is easy to kill the contents of the buffer with -\\[kill-region]. Once the user is done editing the message, -invoking the command \\[log-edit-done] (`log-edit-done') will -call CALLBACK to do the actual commit. +\\[kill-region]. Once the user is done editing the message, he +or she is expected to invoke the command \\[log-edit-done] (`log-edit-done'), +which will call CALLBACK, a function to do the actual commit. -PARAMS if non-nil is an alist of variables and buffer-local -values to give them in the Log Edit buffer. Possible keys and -associated values: +PARAMS, if non-nil, is an alist of variables and buffer-local +values to give to those variables in the Log Edit buffer. Possible +keys and associated values are: `log-edit-listfun' -- function taking no arguments that returns the list of - files that are concerned by the current operation (using relative names); + files that are concerned by the current operation (using relative names); `log-edit-diff-function' -- function taking no arguments that - displays a diff of the files concerned by the current operation. + displays a diff of the files concerned by the current operation. `vc-log-fileset' -- the VC fileset to be committed (if any). -If BUFFER is non-nil `log-edit' will jump to that buffer, use it +If BUFFER is non-nil, `log-edit' will switch to that buffer, use it to edit the log message and go back to the current buffer when -done. Otherwise, it uses the current buffer." +done. Otherwise, this function will use the current buffer." (let ((parent (current-buffer))) (if buffer (pop-to-buffer buffer)) (when (and log-edit-setup-invert (not (eq setup 'force))) @@ -483,12 +492,12 @@ done. Otherwise, it uses the current buffer." "Press \\[log-edit-done] when you are done editing.")))) (define-derived-mode log-edit-mode text-mode "Log-Edit" - "Major mode for editing version-control log messages. -When done editing the log entry, just type \\[log-edit-done] which -will trigger the actual commit of the file(s). -Several other handy support commands are provided of course and -the package from which this is used might also provide additional -commands (under C-x v for VC, for example). + "Major mode for editing version-control (VC) commit log messages. +When done editing the log entry, type \\[log-edit-done], which will +trigger the actual commit of the file(s). +Several other handy support commands are provided, and the package +from which this is used might also provide additional commands (under +the \"C-x v\" prefix for VC commands, for example). \\{log-edit-mode-map}" (setq-local font-lock-defaults '(log-edit-font-lock-keywords t)) @@ -520,7 +529,7 @@ commands (under C-x v for VC, for example). (insert "):"))) (defun log-edit-fill-entry (&optional justify) - "Like \\[fill-paragraph], but handle ChangeLog entries. + "Like \\[fill-paragraph], but for filling ChangeLog-formatted entries. Consecutive function entries without prose (i.e., lines of the form \"(FUNCTION):\") will be combined into \"(FUNC1, FUNC2):\" according to `fill-column'." @@ -570,7 +579,7 @@ according to `fill-column'." (ring-insert log-edit-comment-ring comment))) (defun log-edit-done () - "Finish editing the log message and commit the files. + "Finish editing the VC commit log message, and commit the files. If you want to abort the commit, simply delete the buffer." (interactive) ;; Clean up empty headers. @@ -617,9 +626,9 @@ If you want to abort the commit, simply delete the buffer." (call-interactively log-edit-callback)))) (defun log-edit-kill-buffer () - "Kill the current buffer. -Also saves its contents in the comment history and hides -`log-edit-files-buf'." + "Kill the current VC commit log buffer. +This command saves the contents of the log buffer in the VC commit +comment history, see `log-edit-comment-ring', and hides `log-edit-files-buf'." (interactive) (log-edit-hide-buf) (let ((buf (current-buffer))) @@ -699,7 +708,7 @@ different header separator appropriate for `log-edit-mode'." (eobp)))) (defun log-edit-insert-message-template () - "Insert the default template with Summary and Author." + "Insert the default VC commit log template with Summary and Author." (interactive) (when (or (called-interactively-p 'interactive) (log-edit-empty-buffer-p)) @@ -710,7 +719,7 @@ different header separator appropriate for `log-edit-mode'." (message-position-point))) (defun log-edit-insert-cvs-template () - "Insert the template specified by the CVS administrator, if any. + "Insert the commit log template specified by the CVS administrator, if any. This simply uses the local CVS/Template file." (interactive) (when (or (called-interactively-p 'interactive) @@ -722,7 +731,7 @@ This simply uses the local CVS/Template file." (insert-file-contents "CVS/Template")))) (defun log-edit-insert-cvs-rcstemplate () - "Insert the rcstemplate from the CVS repository. + "Insert the RCS commit log template from the CVS repository. This contacts the repository to get the rcstemplate file and can thus take some time." (interactive) @@ -756,7 +765,7 @@ can thus take some time." (insert (mapconcat 'identity files ", ") ": ")))) (defun log-edit-add-to-changelog () - "Insert this log message into the appropriate ChangeLog file." + "Insert this VC commit log message into the appropriate ChangeLog file." (interactive) (log-edit-remember-comment) (dolist (f (log-edit-files)) @@ -770,7 +779,7 @@ can thus take some time." "Non-nil means rewrite (tiny change).") (defvar log-edit-rewrite-fixes nil - "Rule to rewrite bug numbers into Fixes: headers. + "Rule to rewrite bug numbers into Fixes: headers in commit log messages. The value should be of the form (REGEXP . REPLACEMENT) where REGEXP should match the expression referring to a bug number in the text, and REPLACEMENT is an expression to pass to `replace-match' @@ -788,10 +797,15 @@ to build the Fixes: header.") (declare-function diff-add-log-current-defuns "diff-mode" ()) (defun log-edit-generate-changelog-from-diff () - "Insert a log message by looking at the current diff. -This command will generate a ChangeLog entries listing the -functions. You can then add a description where needed, and use -\\[fill-paragraph] to join consecutive function names." + "Insert a VC commit log message by looking at the current diffs. +This command is intended to be used in the \"*vc-log*\" buffer. +This command will generate ChangeLog entries listing the modified +files and functions changed in those files, based on the diffs +you are about to commit. You can then add a description for each +change where needed, and use \\[fill-paragraph] to join consecutive function +names into a single entry where they all share the same description. +Should you need to look at the diffs themselves, they can be found +in the \"*vc-diff*\" buffer produced by this command." (interactive) (change-log-insert-entries (with-current-buffer @@ -809,21 +823,21 @@ functions. You can then add a description where needed, and use (diff-add-log-current-defuns)))) (defun log-edit-insert-changelog (&optional use-first) - "Insert a log message by looking at the ChangeLog. + "Insert a VC commit log message by looking at the ChangeLog. The idea is to write your ChangeLog entries first, and then use this -command to commit your changes. +command to commit your changes with that log. -To select default log text, we: -- find the ChangeLog entries for the files to be checked in, -- verify that the top entry in the ChangeLog is on the current date - and by the current user; if not, we don't provide any default text, -- search the ChangeLog entry for paragraphs containing the names of - the files we're checking in, and finally -- use those paragraphs as the log text. +To select default log text, this command: +- finds the ChangeLog entries for the files to be checked in; +- verifies that the top entry in the ChangeLog is on the current date + and by the current user; if not, it doesn't provide any default text; +- searches the ChangeLog entry for paragraphs containing the names of + the files to be checked in; and finally +- uses those paragraphs as the log text. If the optional prefix arg USE-FIRST is given (via \\[universal-argument]), -or if the command is repeated a second time in a row, use the first log entry -regardless of user name or time." +or if the command is repeated, use the first log entry regardless of user +name or time." (interactive "P") (save-excursion (let ((eoh (save-excursion (rfc822-goto-eoh) (point)))) @@ -873,7 +887,7 @@ regardless of user name or time." ;;;; (defun log-edit-narrow-changelog () - "Narrow to the top page of the current buffer, a ChangeLog file. + "Narrow to the top page of the current buffer, which visits a ChangeLog file. Actually, the narrowed region doesn't include the date line. A \"page\" in a ChangeLog file is the area between two dates." (or (eq major-mode 'change-log-mode) @@ -921,7 +935,7 @@ If we are between sub-paragraphs, return the previous subparagraph." (defun log-edit-changelog-entry () "Return the bounds of the ChangeLog entry containing point. -The variable `log-edit-changelog-full-paragraphs' decides whether an +The variable `log-edit-changelog-full-paragraphs' determines whether an \"entry\" is a paragraph or a subparagraph; see its documentation string for more details." (save-excursion @@ -1047,8 +1061,12 @@ where LOGBUFFER is the name of the ChangeLog buffer, and each "\\($\\|[^[:alnum:]]\\)"))))) (defun log-edit-changelog-insert-entries (buffer beg end &rest files) - "Insert the text from BUFFER between BEG and END. -Rename relative filenames in the ChangeLog entry as FILES." + "Insert the text from ChangeLog BUFFER between BEG and END. +Rename relative filenames in the ChangeLog entry with FILES. +FILES are supposed to name the same files whose relative filenames +are to be replaced, and their names relative to the directory of +BUFFER are expected to match the relative file names in the ChangeLog +entry." (let ((opoint (point)) (log-name (buffer-file-name buffer)) (case-fold-search nil) @@ -1130,7 +1148,7 @@ Return t if toggled on (or TOGGLE is nil), otherwise nil." val)) (defun log-edit-extract-headers (headers comment) - "Extract headers from COMMENT to form command line arguments. + "Extract headers from VC commit COMMENT to form command line arguments. HEADERS should be an alist with elements (HEADER . CMDARG) or (HEADER . FUNCTION) associating headers to command line options and the result is then a list of the form (MSG ARGUMENTS...) diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el index 87ca542f1c2..c29458620e9 100644 --- a/lisp/vc/vc-dispatcher.el +++ b/lisp/vc/vc-dispatcher.el @@ -254,7 +254,7 @@ CODE should be a function of no arguments." nil) (defmacro vc-run-delayed (&rest body) - (declare (indent 0) (debug t)) + (declare (indent 0) (debug (def-body))) `(vc-exec-after (lambda () ,@body))) (defvar vc-post-command-functions nil diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 95126fac100..9338b7191d0 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -979,6 +979,9 @@ be reported. If NO-ERROR is nil, signal an error that no VC backend is responsible for the given file." (or (and (not (file-directory-p file)) (vc-backend file)) + ;; FIXME it would be more efficient to walk up the directory tree, + ;; stopping the first time a backend is responsible. + ;; ;; First try: find a responsible backend. If this is for registration, ;; it must be a backend under which FILE is not yet registered. (let ((dirs (delq nil diff --git a/lisp/window.el b/lisp/window.el index bba4992ca24..1c719480cab 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -4361,43 +4361,45 @@ This may be a useful alternative binding for \\[delete-other-windows] ;; The following function is called by `set-window-buffer' _before_ it ;; replaces the buffer of the argument window with the new buffer. +(defun push-window-buffer-onto-prev (&optional window) + "Push entry for WINDOW's buffer onto WINDOW's prev-buffers list. +WINDOW must be a live window and defaults to the selected one. + +Any duplicate entries for the buffer in the list are removed." + (let* ((window (window-normalize-window window t)) + (buffer (window-buffer window)) + (w-list (window-prev-buffers window)) + (entry (assq buffer w-list))) + (when entry + (setq w-list (assq-delete-all buffer w-list))) + (let ((start (window-start window)) + (point (window-point window))) + (setq entry + (cons buffer + (with-current-buffer buffer + (if entry + ;; We have an entry, update marker positions. + (list (set-marker (nth 1 entry) start) + (set-marker (nth 2 entry) point)) + (list (copy-marker start) + (copy-marker + ;; Preserve window-point-insertion-type + ;; (Bug#12855) + point window-point-insertion-type)))))) + (set-window-prev-buffers window (cons entry w-list))))) + (defun record-window-buffer (&optional window) "Record WINDOW's buffer. WINDOW must be a live window and defaults to the selected one." (let* ((window (window-normalize-window window t)) - (buffer (window-buffer window)) - (entry (assq buffer (window-prev-buffers window)))) + (buffer (window-buffer window))) ;; Reset WINDOW's next buffers. If needed, they are resurrected by ;; `switch-to-prev-buffer' and `switch-to-next-buffer'. (set-window-next-buffers window nil) - (when entry - ;; Remove all entries for BUFFER from WINDOW's previous buffers. - (set-window-prev-buffers - window (assq-delete-all buffer (window-prev-buffers window)))) - ;; Don't record insignificant buffers. - (when (or (not (eq (aref (buffer-name buffer) 0) ?\s)) - (minibufferp buffer)) - ;; Add an entry for buffer to WINDOW's previous buffers. - (with-current-buffer buffer - (let ((start (window-start window)) - (point (window-point window))) - (setq entry - (cons buffer - (if entry - ;; We have an entry, update marker positions. - (list (set-marker (nth 1 entry) start) - (set-marker (nth 2 entry) point)) - ;; Make new markers. - (list (copy-marker start) - (copy-marker - ;; Preserve window-point-insertion-type - ;; (Bug#12855). - point window-point-insertion-type))))) - (set-window-prev-buffers - window (cons entry (window-prev-buffers window))))) - + (when (not (eq (aref (buffer-name buffer) 0) ?\s)) + (push-window-buffer-onto-prev window) (run-hooks 'buffer-list-update-hook)))) (defun unrecord-window-buffer (&optional window buffer) @@ -5034,14 +5036,10 @@ nil means to not handle the buffer in a particular way. This (setq window (window-normalize-window window t)) (let* ((buffer (window-buffer window)) (quit-restore (window-parameter window 'quit-restore)) - (prev-buffer - (let* ((prev-buffers (window-prev-buffers window)) - (prev-buffer (caar prev-buffers))) - (and (or (not (eq prev-buffer buffer)) - (and (cdr prev-buffers) - (not (eq (setq prev-buffer (cadr prev-buffers)) - buffer)))) - prev-buffer))) + (prev-buffer (catch 'prev-buffer + (dolist (buf (window-prev-buffers window)) + (unless (eq (car buf) buffer) + (throw 'prev-buffer (car buf)))))) quad entry) (cond ((and (not prev-buffer) @@ -5112,7 +5110,9 @@ nil means to not handle the buffer in a particular way. This (set-window-parameter window 'quit-restore nil) ;; Make sure that WINDOW is no more dedicated. (set-window-dedicated-p window nil) - (switch-to-prev-buffer window bury-or-kill))) + (unless (switch-to-prev-buffer window bury-or-kill) + ;; Delete WINDOW if there is no previous buffer (Bug#48367). + (window--delete window nil (eq bury-or-kill 'kill))))) ;; Deal with the buffer. (cond @@ -8633,7 +8633,9 @@ meaning of these values in `window--display-buffer'. Optional `post-function' is called after the buffer is displayed in the window; the function takes two arguments: an old and new window. Optional string argument `echo' can be used to add a prefix to the -command echo keystrokes that should describe the current prefix state." +command echo keystrokes that should describe the current prefix state. +This returns an \"exit function\", which can be called with no argument +to deactivate this overriding action." (let* ((old-window (or (minibuffer-selected-window) (selected-window))) (new-window nil) (minibuffer-depth (minibuffer-depth)) @@ -8675,7 +8677,8 @@ command echo keystrokes that should describe the current prefix state." (add-hook 'post-command-hook clearfun) (when echofun (add-hook 'prefix-command-echo-keystrokes-functions echofun)) - (push action (car display-buffer-overriding-action)))) + (push action (car display-buffer-overriding-action)) + exitfun)) (defun set-window-text-height (window height) diff --git a/lwlib/Makefile.in b/lwlib/Makefile.in index ce77789db89..fb0ae0e1c21 100644 --- a/lwlib/Makefile.in +++ b/lwlib/Makefile.in @@ -93,9 +93,9 @@ globals_h = ../src/globals.h $(globals_h): $(MAKE) -C ../src globals.h -.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean extraclean +.PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean -clean mostlyclean extraclean: +clean mostlyclean: rm -f ./*.o liblw.a \#* $(DEPDIR)/* distclean: clean diff --git a/make-dist b/make-dist index 606fdd9e3a0..7074bb801be 100755 --- a/make-dist +++ b/make-dist @@ -52,7 +52,6 @@ make_tar=no default_gzip=gzip newer="" with_info=yes -with_tests=yes changelog=yes verbose=no @@ -109,16 +108,10 @@ while [ $# -gt 0 ]; do update=no ;; - ## Include the test/ directory. - ## This is for backward compatibility to when --no-tests was the default. - "--tests") - with_tests=yes + "--tests"|"--no-tests") + echo "The option $1 no longer does anything" ;; - ## Exclude the test/ directory. - "--no-tests") - with_tests=no - ;; "--verbose") verbose=yes @@ -136,7 +129,6 @@ while [ $# -gt 0 ]; do echo " --no-update don't recompile or do analogous things" echo " --no-changelog don't generate the top-level ChangeLog" echo " --no-info don't include info files" - echo " --no-tests don't include the test/ directory" echo " --snapshot same as --clean-up --no-update --tar" echo " --tar make a tar file" echo " --verbose noisier output" @@ -402,11 +394,7 @@ manifest=MANIFEST # if .git is present. if ( [ $update = yes ] || [ ! -f $manifest ] ) && [ -r .git ]; then echo "Updating $manifest" - if [ $with_tests = yes ]; then - git ls-files > $manifest - else - git ls-files | grep -v '^test' >$manifest - fi || exit + git ls-files > $manifest || exit printf '%s\n' $possibly_non_vc_files $info_files >>$manifest || exit sort -u -o $manifest $manifest || exit fi diff --git a/nt/Makefile.in b/nt/Makefile.in index 0d448903ba5..3274ff924f9 100644 --- a/nt/Makefile.in +++ b/nt/Makefile.in @@ -170,7 +170,7 @@ $(DESTDIR)${archlibdir}: all fi .PHONY: install uninstall mostlyclean clean distclean maintainer-clean -.PHONY: bootstrap-clean extraclean check tags +.PHONY: bootstrap-clean check tags install: $(DESTDIR)${archlibdir} @echo @@ -203,9 +203,6 @@ distclean: clean bootstrap-clean maintainer-clean: distclean true -extraclean: maintainer-clean - -rm -f *~ \#* - ## Test the contents of the directory. check: @echo "We don't have any tests for the nt/ directory yet." diff --git a/src/Makefile.in b/src/Makefile.in index 5d0d1fb17bd..5da2257ba97 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -674,7 +674,7 @@ ns-app: emacs$(EXEEXT) $(pdmp) $(MAKE) -C ../nextstep all .PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean -.PHONY: versionclean extraclean +.PHONY: versionclean mostlyclean: rm -f temacs$(EXEEXT) core ./*.core \#* ./*.o @@ -709,9 +709,6 @@ distclean: bootstrap-clean maintainer-clean: distclean rm -f TAGS -extraclean: distclean - rm -f ./*~ \#* TAGS config.in - ETAGS = ../lib-src/etags${EXEEXT} diff --git a/src/comp.c b/src/comp.c index 89667b2febc..c0445050b71 100644 --- a/src/comp.c +++ b/src/comp.c @@ -2745,8 +2745,8 @@ emit_ctxt_code (void) { /* Emit optimize qualities. */ Lisp_Object opt_qly[] = - { Fcons (Qcomp_speed, make_fixnum (comp.speed)), - Fcons (Qcomp_debug, make_fixnum (comp.debug)), + { Fcons (Qnative_comp_speed, make_fixnum (comp.speed)), + Fcons (Qnative_comp_debug, make_fixnum (comp.debug)), Fcons (Qgccjit, Fcomp_libgccjit_version ()) }; emit_static_object (TEXT_OPTIM_QLY_SYM, Flist (ARRAYELTS (opt_qly), opt_qly)); @@ -4095,11 +4095,11 @@ directory in `comp-eln-load-path' otherwise. */) Lisp_Object source_filename = filename; filename = Fcomp_el_to_eln_rel_filename (filename); - /* If base_dir was not specified search inside Vcomp_eln_load_path + /* If base_dir was not specified search inside Vnative_comp_eln_load_path for the first directory where we have write access. */ if (NILP (base_dir)) { - Lisp_Object eln_load_paths = Vcomp_eln_load_path; + Lisp_Object eln_load_paths = Vnative_comp_eln_load_path; FOR_EACH_TAIL (eln_load_paths) { Lisp_Object dir = XCAR (eln_load_paths); @@ -4358,7 +4358,7 @@ DEFUN ("comp-native-driver-options-effective-p", static void add_driver_options (void) { - Lisp_Object options = Fsymbol_value (Qcomp_native_driver_options); + Lisp_Object options = Fsymbol_value (Qnative_comp_driver_options); #if defined (LIBGCCJIT_HAVE_gcc_jit_context_add_driver_option) \ || defined (WINDOWSNT) @@ -4630,7 +4630,7 @@ void eln_load_path_final_clean_up (void) { #ifdef WINDOWSNT - Lisp_Object dir_tail = Vcomp_eln_load_path; + Lisp_Object dir_tail = Vnative_comp_eln_load_path; FOR_EACH_TAIL (dir_tail) { Lisp_Object files_in_dir = @@ -4697,7 +4697,7 @@ maybe_defer_native_compilation (Lisp_Object function_name, if (!load_gccjit_if_necessary (false)) return; - if (!comp_deferred_compilation + if (!native_comp_deferred_compilation || noninteractive || !NILP (Vpurify_flag) || !COMPILEDP (definition) @@ -4755,7 +4755,7 @@ void fixup_eln_load_path (Lisp_Object eln_filename) { Lisp_Object last_cell = Qnil; - Lisp_Object tem = Vcomp_eln_load_path; + Lisp_Object tem = Vnative_comp_eln_load_path; FOR_EACH_TAIL (tem) if (CONSP (tem)) last_cell = tem; @@ -4856,7 +4856,7 @@ load_comp_unit (struct Lisp_Native_Comp_Unit *comp_u, bool loading_dump, /* 'dlopen' returns the same handle when trying to load two times the same shared. In this case touching 'd_reloc' etc leads to fails in case a frame with a reference to it in a live reg is - active (comp-speed > 0). + active (native-comp-speed > 0). We must *never* mess with static pointers in an already loaded eln. */ @@ -5127,7 +5127,7 @@ static bool file_in_eln_sys_dir (Lisp_Object filename) { Lisp_Object eln_sys_dir = Qnil; - Lisp_Object tmp = Vcomp_eln_load_path; + Lisp_Object tmp = Vnative_comp_eln_load_path; FOR_EACH_TAIL (tmp) eln_sys_dir = XCAR (tmp); return !NILP (Fstring_match (Fregexp_quote (Fexpand_file_name (eln_sys_dir, @@ -5200,16 +5200,17 @@ syms_of_comp (void) { #ifdef HAVE_NATIVE_COMP /* Compiler control customizes. */ - DEFVAR_BOOL ("comp-deferred-compilation", comp_deferred_compilation, + DEFVAR_BOOL ("native-comp-deferred-compilation", + native_comp_deferred_compilation, doc: /* If non-nil compile loaded .elc files asynchronously. After compilation, each function definition is updated to the native compiled one. */); - comp_deferred_compilation = true; + native_comp_deferred_compilation = true; - DEFSYM (Qcomp_speed, "comp-speed"); - DEFSYM (Qcomp_debug, "comp-debug"); - DEFSYM (Qcomp_native_driver_options, "comp-native-driver-options"); + DEFSYM (Qnative_comp_speed, "native-comp-speed"); + DEFSYM (Qnative_comp_debug, "native-comp-debug"); + DEFSYM (Qnative_comp_driver_options, "native-comp-driver-options"); DEFSYM (Qcomp_libgccjit_reproducer, "comp-libgccjit-reproducer"); /* Limple instruction set. */ @@ -5272,7 +5273,8 @@ compiled one. */); DEFSYM (Qlambda_fixup, "lambda-fixup"); DEFSYM (Qgccjit, "gccjit"); DEFSYM (Qcomp_subr_trampoline_install, "comp-subr-trampoline-install"); - DEFSYM (Qcomp_warning_on_missing_source, "comp-warning-on-missing-source"); + DEFSYM (Qnative_comp_warning_on_missing_source, + "native-comp-warning-on-missing-source"); /* To be signaled by the compiler. */ DEFSYM (Qnative_compiler_error, "native-compiler-error"); @@ -5368,7 +5370,7 @@ For internal use. */); doc: /* Hash table eln-filename -> el-filename. */); Vcomp_eln_to_el_h = CALLN (Fmake_hash_table, QCtest, Qequal); - DEFVAR_LISP ("comp-eln-load-path", Vcomp_eln_load_path, + DEFVAR_LISP ("native-comp-eln-load-path", Vnative_comp_eln_load_path, doc: /* List of eln cache directories. If a directory is non absolute is assumed to be relative to @@ -5380,7 +5382,7 @@ The last directory of this list is assumed to be the system one. */); /* Temporary value in use for bootstrap. We can't do better as `invocation-directory' is still unset, will be fixed up during dump reload. */ - Vcomp_eln_load_path = Fcons (build_string ("../native-lisp/"), Qnil); + Vnative_comp_eln_load_path = Fcons (build_string ("../native-lisp/"), Qnil); DEFVAR_BOOL ("comp-enable-subr-trampolines", comp_enable_subr_trampolines, doc: /* If non-nil enable primitive trampoline synthesis. diff --git a/src/doc.c b/src/doc.c index e179a126184..6be023bb934 100644 --- a/src/doc.c +++ b/src/doc.c @@ -719,17 +719,19 @@ syms_of_doc (void) DEFVAR_LISP ("text-quoting-style", Vtext_quoting_style, doc: /* Style to use for single quotes in help and messages. -Its value should be a symbol. It works by substituting certain single -quotes for grave accent and apostrophe. This is done in help output -\(but not for display of Info manuals) and in functions like `message' -and `format-message'. It is not done in `format'. - -`curve' means quote with curved single quotes ‘like this’. -`straight' means quote with straight apostrophes \\='like this\\='. -`grave' means quote with grave accent and apostrophe \\=`like this\\='; -i.e., do not alter quote marks. The default value nil acts like -`curve' if curved single quotes are displayable, and like `grave' -otherwise. */); + +The value of this variable determines substitution of grave accents +and apostrophes in help output (but not for display of Info +manuals) and in functions like `message' and `format-message', but not +in `format'. + +The value should be one of these symbols: + `curve': quote with curved single quotes ‘like this’. + `straight': quote with straight apostrophes \\='like this\\='. + `grave': quote with grave accent and apostrophe \\=`like this\\='; + i.e., do not alter the original quote marks. + nil: like `curve' if curved single quotes are displayable, + and like `grave' otherwise. This is the default. */); Vtext_quoting_style = Qnil; DEFVAR_BOOL ("internal--text-quoting-flag", text_quoting_flag, diff --git a/src/dynlib.c b/src/dynlib.c index 1338e9109c9..a8c88439615 100644 --- a/src/dynlib.c +++ b/src/dynlib.c @@ -135,7 +135,7 @@ dynlib_addr (void (*funcptr) (void), const char **fname, const char **symname) void *addr = (void *) funcptr; /* Step 1: Find the handle of the module where ADDR lives. */ - if (os_subtype == OS_9X + if (os_subtype == OS_SUBTYPE_9X /* Windows NT family version before XP (v5.1). */ || ((w32_major_version + (w32_minor_version > 0)) < 6)) { diff --git a/src/emacs.c b/src/emacs.c index 645215b04cf..c8bc0ba4bec 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -2309,6 +2309,7 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem Vdump_mode = build_string (dump_mode); /* Enter editor command loop. This never returns. */ + set_initial_minibuffer_mode (); Frecursive_edit (); eassume (false); } diff --git a/src/eval.c b/src/eval.c index aeedcc50cc0..18faa0b9b15 100644 --- a/src/eval.c +++ b/src/eval.c @@ -1370,7 +1370,7 @@ internal_lisp_condition_case (Lisp_Object var, Lisp_Object bodyform, || CONSP (XCAR (tem)))))) error ("Invalid condition handler: %s", SDATA (Fprin1_to_string (tem, Qt))); - if (EQ (XCAR (tem), QCsuccess)) + if (CONSP (tem) && EQ (XCAR (tem), QCsuccess)) success_handler = XCDR (tem); else clausenb++; @@ -1387,8 +1387,11 @@ internal_lisp_condition_case (Lisp_Object var, Lisp_Object bodyform, Lisp_Object volatile *clauses = alloca (clausenb * sizeof *clauses); clauses += clausenb; for (Lisp_Object tail = handlers; CONSP (tail); tail = XCDR (tail)) - if (!EQ (XCAR (XCAR (tail)), QCsuccess)) - *--clauses = XCAR (tail); + { + Lisp_Object tem = XCAR (tail); + if (!(CONSP (tem) && EQ (XCAR (tem), QCsuccess))) + *--clauses = tem; + } for (ptrdiff_t i = 0; i < clausenb; i++) { Lisp_Object clause = clauses[i]; diff --git a/src/frame.c b/src/frame.c index eb5aed82f7d..40b8d2b06c1 100644 --- a/src/frame.c +++ b/src/frame.c @@ -973,6 +973,7 @@ make_frame (bool mini_p) f->no_accept_focus = false; f->z_group = z_group_none; f->tooltip = false; + f->was_invisible = false; f->child_frame_border_width = -1; f->last_tab_bar_item = -1; #ifndef HAVE_EXT_TOOL_BAR @@ -5865,7 +5866,18 @@ selected frame. This is useful when `make-pointer-invisible' is set. */) return decode_any_frame (frame)->pointer_invisible ? Qnil : Qt; } +DEFUN ("frame--set-was-invisible", Fframe__set_was_invisible, + Sframe__set_was_invisible, 2, 2, 0, + doc: /* Set FRAME's was-invisible flag if WAS-INVISIBLE is non-nil. +This function is for internal use only. */) + (Lisp_Object frame, Lisp_Object was_invisible) +{ + struct frame *f = decode_live_frame (frame); + f->was_invisible = !NILP (was_invisible); + + return f->was_invisible ? Qt : Qnil; +} /*********************************************************************** Multimonitor data @@ -6518,6 +6530,7 @@ iconify the top level frame instead. */); defsubr (&Sframe_position); defsubr (&Sset_frame_position); defsubr (&Sframe_pointer_visible_p); + defsubr (&Sframe__set_was_invisible); defsubr (&Sframe_window_state_change); defsubr (&Sset_frame_window_state_change); defsubr (&Sframe_scale_factor); diff --git a/src/frame.h b/src/frame.h index 399948fa7ed..1aba1e3bc47 100644 --- a/src/frame.h +++ b/src/frame.h @@ -456,7 +456,11 @@ struct frame /* True when new_width or new_height were set by change_frame_size, false when they were set by adjust_frame_size internally or not set. */ - bool_bf new_size_p; + bool_bf new_size_p : 1; + + /* True when frame was invisible before first MapNotify event. Used + in X builds only. */ + bool_bf was_invisible : 1; /* Bitfield area ends here. */ diff --git a/src/image.c b/src/image.c index a78674fed09..67c55ea9ea1 100644 --- a/src/image.c +++ b/src/image.c @@ -4191,6 +4191,7 @@ enum xpm_keyword_index XPM_LAST }; +#if defined HAVE_XPM || defined HAVE_NS /* Vector of image_keyword structures describing the format of valid XPM image specifications. */ @@ -4208,6 +4209,7 @@ static const struct image_keyword xpm_format[XPM_LAST] = {":color-symbols", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, {":background", IMAGE_STRING_OR_NIL_VALUE, 0} }; +#endif /* HAVE_XPM || HAVE_NS */ #if defined HAVE_X_WINDOWS && !defined USE_CAIRO @@ -4431,6 +4433,7 @@ init_xpm_functions (void) #endif /* WINDOWSNT */ +#if defined HAVE_XPM || defined HAVE_NS /* Value is true if COLOR_SYMBOLS is a valid color symbols list for XPM images. Such a list must consist of conses whose car and cdr are strings. */ @@ -4451,7 +4454,6 @@ xpm_valid_color_symbols_p (Lisp_Object color_symbols) return NILP (color_symbols); } - /* Value is true if OBJECT is a valid XPM image specification. */ static bool @@ -4467,6 +4469,7 @@ xpm_image_p (Lisp_Object object) && (! fmt[XPM_COLOR_SYMBOLS].count || xpm_valid_color_symbols_p (fmt[XPM_COLOR_SYMBOLS].value))); } +#endif /* HAVE_XPM || HAVE_NS */ #endif /* HAVE_XPM || USE_CAIRO || HAVE_NS */ @@ -4836,10 +4839,11 @@ xpm_load (struct frame *f, struct image *img) #endif /* HAVE_XPM && !USE_CAIRO */ -#if defined USE_CAIRO || (defined HAVE_NS && !defined HAVE_XPM) +#if (defined USE_CAIRO && defined HAVE_XPM) \ + || (defined HAVE_NS && !defined HAVE_XPM) -/* XPM support functions for NS where libxpm is not available. - Only XPM version 3 (without any extensions) is supported. */ +/* XPM support functions for NS where libxpm is not available, and for + Cairo. Only XPM version 3 (without any extensions) is supported. */ static void xpm_put_color_table_v (Lisp_Object, const char *, int, Lisp_Object); diff --git a/src/lisp.h b/src/lisp.h index f83c55f827d..91b7a89d0f5 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -4377,6 +4377,7 @@ extern EMACS_INT this_minibuffer_depth (Lisp_Object); extern EMACS_INT minibuf_level; extern Lisp_Object get_minibuffer (EMACS_INT); extern void init_minibuf_once (void); +extern void set_initial_minibuffer_mode (void); extern void syms_of_minibuf (void); extern void barf_if_interaction_inhibited (void); diff --git a/src/lread.c b/src/lread.c index e53e1f65ab9..bca53a9a37a 100644 --- a/src/lread.c +++ b/src/lread.c @@ -1700,7 +1700,7 @@ maybe_swap_for_eln (bool no_native, Lisp_Object *filename, int *fd, return; /* Search eln in the eln-cache directories. */ - Lisp_Object eln_path_tail = Vcomp_eln_load_path; + Lisp_Object eln_path_tail = Vnative_comp_eln_load_path; Lisp_Object src_name = Fsubstring (*filename, Qnil, make_fixnum (-1)); if (NILP (Ffile_exists_p (src_name))) @@ -1708,7 +1708,8 @@ maybe_swap_for_eln (bool no_native, Lisp_Object *filename, int *fd, src_name = concat2 (src_name, build_string (".gz")); if (NILP (Ffile_exists_p (src_name))) { - if (!NILP (find_symbol_value (Qcomp_warning_on_missing_source))) + if (!NILP (find_symbol_value ( + Qnative_comp_warning_on_missing_source))) call2 (intern_c_string ("display-warning"), Qcomp, CALLN (Fformat, @@ -1944,7 +1945,17 @@ openp (Lisp_Object path, Lisp_Object str, Lisp_Object suffixes, } else { - fd = emacs_open (pfn, O_RDONLY, 0); + /* In some systems (like Windows) finding out if a + file exists is cheaper to do than actually opening + it. Only open the file when we are sure that it + exists. */ +#ifdef WINDOWSNT + if (faccessat (AT_FDCWD, pfn, R_OK, AT_EACCESS)) + fd = -1; + else +#endif + fd = emacs_open (pfn, O_RDONLY, 0); + if (fd < 0) { if (! (errno == ENOENT || errno == ENOTDIR)) diff --git a/src/minibuf.c b/src/minibuf.c index bc7d4393985..cffb7fe787c 100644 --- a/src/minibuf.c +++ b/src/minibuf.c @@ -157,16 +157,15 @@ zip_minibuffer_stacks (Lisp_Object dest_window, Lisp_Object source_window) Fset_window_start (dest_window, Fwindow_start (source_window), Qnil); Fset_window_point (dest_window, Fwindow_point (source_window)); dw->prev_buffers = sw->prev_buffers; - set_window_buffer (source_window, get_minibuffer (0), 0, 0); + set_window_buffer (source_window, nth_minibuffer (0), 0, 0); sw->prev_buffers = Qnil; return; } if (live_minibuffer_p (dw->contents)) - call1 (Qrecord_window_buffer, dest_window); + call1 (Qpush_window_buffer_onto_prev, dest_window); if (live_minibuffer_p (sw->contents)) - call1 (Qrecord_window_buffer, source_window); - + call1 (Qpush_window_buffer_onto_prev, source_window); acc = merge_c (dw->prev_buffers, sw->prev_buffers, minibuffer_ent_greater); if (!NILP (acc)) @@ -179,7 +178,7 @@ zip_minibuffer_stacks (Lisp_Object dest_window, Lisp_Object source_window) } dw->prev_buffers = acc; sw->prev_buffers = Qnil; - set_window_buffer (source_window, get_minibuffer (0), 0, 0); + set_window_buffer (source_window, nth_minibuffer (0), 0, 0); } /* If `minibuffer_follows_selected_frame' is t, or we're about to @@ -204,6 +203,14 @@ move_minibuffers_onto_frame (struct frame *of, bool for_deletion) zip_minibuffer_stacks (f->minibuffer_window, of->minibuffer_window); if (for_deletion && XFRAME (MB_frame) != of) MB_frame = selected_frame; + if (!for_deletion + && MINI_WINDOW_P (XWINDOW (FRAME_SELECTED_WINDOW (of)))) + { + Lisp_Object old_frame; + XSETFRAME (old_frame, of); + Fset_frame_selected_window (old_frame, + Fframe_first_window (old_frame), Qnil); + } } } @@ -220,6 +227,8 @@ DEFUN ("active-minibuffer-window", Factive_minibuffer_window, return Qnil; innermost_MB = nth_minibuffer (minibuf_level); + if (NILP (innermost_MB)) + emacs_abort (); FOR_EACH_FRAME (frames, frame) { f = XFRAME (frame); @@ -644,7 +653,12 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt, return unbind_to (count, val); } - minibuf_level++; /* Before calling choose_minibuf_frame. */ + /* Ensure now that the latest minibuffer has been created and pushed + onto Vminibuffer_list before incrementing minibuf_level, in case + a hook called during the minibuffer creation calls + Factive_minibuffer_window. */ + minibuffer = get_minibuffer (minibuf_level + 1); + minibuf_level++; /* Before calling choose_minibuf_frame. */ /* Choose the minibuffer window and frame, and take action on them. */ @@ -672,7 +686,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt, } MB_frame = XWINDOW (XFRAME (selected_frame)->minibuffer_window)->frame; if (live_minibuffer_p (XWINDOW (minibuf_window)->contents)) - call1 (Qrecord_window_buffer, minibuf_window); + call1 (Qpush_window_buffer_onto_prev, minibuf_window); record_unwind_protect_void (minibuffer_unwind); record_unwind_protect (restore_window_configuration, @@ -758,7 +772,6 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt, /* Switch to the minibuffer. */ - minibuffer = get_minibuffer (minibuf_level); set_minibuffer_mode (minibuffer, minibuf_level); Fset_buffer (minibuffer); @@ -799,7 +812,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt, /* Empty out the minibuffers of all frames, except those frames where there is an active minibuffer. Set them to point to ` *Minibuf-0*', which is always empty. */ - empty_minibuf = get_minibuffer (0); + empty_minibuf = nth_minibuffer (0); set_minibuffer_mode (empty_minibuf, 0); /* Display this minibuffer in the proper window. */ @@ -961,7 +974,7 @@ static Lisp_Object nth_minibuffer (EMACS_INT depth) { Lisp_Object tail = Fnthcdr (make_fixnum (depth), Vminibuffer_list); - return XCAR (tail); + return Fcar (tail); } /* Set the major mode of the minibuffer BUF, depending on DEPTH, the @@ -1066,9 +1079,13 @@ read_minibuf_unwind (void) Lisp_Object future_mini_window; Lisp_Object saved_selected_frame = selected_frame; Lisp_Object window, frames; + Lisp_Object expired_MB = nth_minibuffer (minibuf_level); struct window *w; struct frame *f; + if (NILP (expired_MB)) + emacs_abort (); + /* Locate the expired minibuffer. */ FOR_EACH_FRAME (frames, exp_MB_frame) { @@ -1078,7 +1095,7 @@ read_minibuf_unwind (void) { w = XWINDOW (window); if (EQ (w->frame, exp_MB_frame) - && EQ (w->contents, nth_minibuffer (minibuf_level))) + && EQ (w->contents, expired_MB)) goto found; } } @@ -1094,7 +1111,7 @@ read_minibuf_unwind (void) minibuffer when we reset the relevant variables. Don't depend on `minibuf_window' here. This could by now be the mini-window of any frame. */ - Fset_buffer (nth_minibuffer (minibuf_level)); + Fset_buffer (expired_MB); minibuf_level--; /* Restore prompt, etc, from outer minibuffer level. */ @@ -2254,6 +2271,13 @@ If no minibuffer is active, return nil. */) +void +set_initial_minibuffer_mode (void) +{ + Lisp_Object minibuf = get_minibuffer (0); + set_minibuffer_mode (minibuf, 0); +} + static void init_minibuf_once_for_pdumper (void); void @@ -2262,6 +2286,8 @@ init_minibuf_once (void) staticpro (&Vminibuffer_list); staticpro (&Vcommand_loop_level_list); pdumper_do_now_and_after_load (init_minibuf_once_for_pdumper); + /* Ensure our inactive minibuffer exists. */ + get_minibuffer (0); } static void @@ -2327,6 +2353,7 @@ syms_of_minibuf (void) DEFSYM (Qminibuffer_completing_file_name, "minibuffer-completing-file-name"); DEFSYM (Qselect_frame_set_input_focus, "select-frame-set-input-focus"); DEFSYM (Qadd_to_history, "add-to-history"); + DEFSYM (Qpush_window_buffer_onto_prev, "push-window-buffer-onto-prev"); DEFVAR_LISP ("read-expression-history", Vread_expression_history, doc: /* A history list for arguments that are Lisp expressions to evaluate. diff --git a/src/nsfns.m b/src/nsfns.m index 1f281f75fd4..d14f7b51eaf 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -1404,6 +1404,7 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame, else { /* Must have been Qnil. */ + f->was_invisible = true; } } diff --git a/src/process.c b/src/process.c index 98a6dca8692..f3f4f09f740 100644 --- a/src/process.c +++ b/src/process.c @@ -473,8 +473,15 @@ add_read_fd (int fd, fd_callback func, void *data) fd_callback_info[fd].data = data; } +void +add_non_keyboard_read_fd (int fd, fd_callback func, void *data) +{ + add_read_fd(fd, func, data); + fd_callback_info[fd].flags &= ~KEYBOARD_FD; +} + static void -add_non_keyboard_read_fd (int fd) +add_process_read_fd (int fd) { eassert (fd >= 0 && fd < FD_SETSIZE); eassert (fd_callback_info[fd].func == NULL); @@ -483,12 +490,6 @@ add_non_keyboard_read_fd (int fd) fd_callback_info[fd].flags |= FOR_READ; if (fd > max_desc) max_desc = fd; -} - -static void -add_process_read_fd (int fd) -{ - add_non_keyboard_read_fd (fd); eassert (0 <= fd && fd < FD_SETSIZE); fd_callback_info[fd].flags |= PROCESS_FD; } diff --git a/src/process.h b/src/process.h index d041ada5867..0890f253a40 100644 --- a/src/process.h +++ b/src/process.h @@ -284,6 +284,7 @@ extern bool kbd_on_hold_p (void); typedef void (*fd_callback) (int fd, void *data); extern void add_read_fd (int fd, fd_callback func, void *data); +extern void add_non_keyboard_read_fd (int fd, fd_callback func, void *data); extern void delete_read_fd (int fd); extern void add_write_fd (int fd, fd_callback func, void *data); extern void delete_write_fd (int fd); diff --git a/src/search.c b/src/search.c index c757bf3d1f2..df384e1dcff 100644 --- a/src/search.c +++ b/src/search.c @@ -2723,7 +2723,6 @@ since only regular expressions have distinguished subexpressions. */) } newpoint = sub_start + SCHARS (newtext); - ptrdiff_t newstart = sub_start == sub_end ? newpoint : sub_start; /* Replace the old text with the new in the cleanest possible way. */ replace_range (sub_start, sub_end, newtext, 1, 0, 1, true); @@ -2739,11 +2738,11 @@ since only regular expressions have distinguished subexpressions. */) /* The replace_range etc. functions can trigger modification hooks (see signal_before_change and signal_after_change). Try to error out if these hooks clobber the match data since clobbering can - result in confusing bugs. Although this sanity check does not - catch all possible clobberings, it should catch many of them. */ - if (! (search_regs.num_regs == num_regs - && search_regs.start[sub] == newstart - && search_regs.end[sub] == newpoint)) + result in confusing bugs. We used to check for changes in + search_regs start and end, but that fails if modification hooks + remove or add text earlier in the buffer, so just check num_regs + now. */ + if (search_regs.num_regs != num_regs) error ("Match data clobbered by buffer modification hooks"); /* Put point back where it was in the text, if possible. */ diff --git a/src/w32.c b/src/w32.c index 467e6cb4271..26cc28f877c 100644 --- a/src/w32.c +++ b/src/w32.c @@ -4747,7 +4747,7 @@ sys_rename_replace (const char *oldname, const char *newname, BOOL force) /* volume_info is set indirectly by map_w32_filename. */ oldname_dev = volume_info.serialnum; - if (os_subtype == OS_9X) + if (os_subtype == OS_SUBTYPE_9X) { char * o; char * p; @@ -10468,7 +10468,7 @@ shutdown_handler (DWORD type) HANDLE maybe_load_unicows_dll (void) { - if (os_subtype == OS_9X) + if (os_subtype == OS_SUBTYPE_9X) { HANDLE ret = LoadLibrary ("Unicows.dll"); if (ret) diff --git a/src/w32common.h b/src/w32common.h index cbe05c5d8d1..6493b9c88d5 100644 --- a/src/w32common.h +++ b/src/w32common.h @@ -41,8 +41,8 @@ extern int w32_minor_version; extern int w32_build_number; enum { - OS_9X = 1, - OS_NT + OS_SUBTYPE_9X = 1, + OS_SUBTYPE_NT }; extern int os_subtype; diff --git a/src/w32console.c b/src/w32console.c index cb9e288e880..99546c2d754 100644 --- a/src/w32console.c +++ b/src/w32console.c @@ -803,7 +803,7 @@ initialize_w32_display (struct terminal *term, int *width, int *height) ceol_initialized = FALSE; } - if (os_subtype == OS_NT) + if (os_subtype == OS_SUBTYPE_NT) w32_console_unicode_input = 1; else w32_console_unicode_input = 0; diff --git a/src/w32fns.c b/src/w32fns.c index 66baeaecbdb..14d1154a2bc 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -6107,6 +6107,8 @@ DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame, if (!NILP (visibility)) w32_make_frame_visible (f); + else + f->was_invisible = true; } store_frame_param (f, Qvisibility, visibility); @@ -7991,7 +7993,7 @@ DEFUN ("system-move-file-to-trash", Fsystem_move_file_to_trash, /* The Unicode version of SHFileOperation is not supported on Windows 9X. */ - if (w32_unicode_filenames && os_subtype != OS_9X) + if (w32_unicode_filenames && os_subtype != OS_SUBTYPE_9X) { SHFILEOPSTRUCTW file_op_w; /* We need one more element beyond MAX_PATH because this is @@ -9120,7 +9122,7 @@ The coordinates X and Y are interpreted in pixels relative to a position /* When "mouse trails" are in effect, moving the mouse cursor sometimes leaves behind an annoying "ghost" of the pointer. Avoid that by momentarily switching off mouse trails. */ - if (os_subtype == OS_NT + if (os_subtype == OS_SUBTYPE_NT && w32_major_version + w32_minor_version >= 6) ret = SystemParametersInfo (SPI_GETMOUSETRAILS, 0, &trail_num, 0); SetCursorPos (xval, yval); @@ -9295,7 +9297,7 @@ DEFUN ("default-printer-name", Fdefault_printer_name, Sdefault_printer_name, if (!OpenPrinter (pname_buf, &hPrn, NULL)) return Qnil; /* GetPrinterW is not supported by unicows.dll. */ - if (w32_unicode_filenames && os_subtype != OS_9X) + if (w32_unicode_filenames && os_subtype != OS_SUBTYPE_9X) GetPrinterW (hPrn, 2, NULL, 0, &dwNeeded); else GetPrinterA (hPrn, 2, NULL, 0, &dwNeeded); @@ -9305,7 +9307,7 @@ DEFUN ("default-printer-name", Fdefault_printer_name, Sdefault_printer_name, return Qnil; } /* Call GetPrinter again with big enough memory block. */ - if (w32_unicode_filenames && os_subtype != OS_9X) + if (w32_unicode_filenames && os_subtype != OS_SUBTYPE_9X) { /* Allocate memory for the PRINTER_INFO_2 struct. */ ppi2w = xmalloc (dwNeeded); @@ -9441,9 +9443,9 @@ cache_system_info (void) w32_minor_version = version.info.minor; if (version.info.platform & 0x8000) - os_subtype = OS_9X; + os_subtype = OS_SUBTYPE_9X; else - os_subtype = OS_NT; + os_subtype = OS_SUBTYPE_NT; /* Cache page size, allocation unit, processor type, etc. */ GetSystemInfo (&sysinfo_cache); @@ -9454,7 +9456,7 @@ cache_system_info (void) GetVersionEx (&osinfo_cache); w32_build_number = osinfo_cache.dwBuildNumber; - if (os_subtype == OS_9X) + if (os_subtype == OS_SUBTYPE_9X) w32_build_number &= 0xffff; w32_num_mouse_buttons = GetSystemMetrics (SM_CMOUSEBUTTONS); @@ -9633,7 +9635,7 @@ w32_kbd_patch_key (KEY_EVENT_RECORD *event, int cpId) /* On NT, call ToUnicode instead and then convert to the current console input codepage. */ - if (os_subtype == OS_NT) + if (os_subtype == OS_SUBTYPE_NT) { WCHAR buf[128]; @@ -11047,7 +11049,7 @@ see `w32-ansi-code-page'. */); w32_multibyte_code_page = _getmbcp (); #endif - if (os_subtype == OS_NT) + if (os_subtype == OS_SUBTYPE_NT) w32_unicode_gui = 1; else w32_unicode_gui = 0; diff --git a/src/w32heap.c b/src/w32heap.c index e002f72608a..0f228bfb221 100644 --- a/src/w32heap.c +++ b/src/w32heap.c @@ -269,7 +269,7 @@ init_heap (bool use_dynamic_heap) } #endif - if (os_subtype == OS_9X) + if (os_subtype == OS_SUBTYPE_9X) { the_malloc_fn = malloc_after_dump_9x; the_realloc_fn = realloc_after_dump_9x; @@ -312,7 +312,7 @@ init_heap (bool use_dynamic_heap) } heap = s_pfn_Rtl_Create_Heap (0, data_region_base, 0, 0, NULL, ¶ms); - if (os_subtype == OS_9X) + if (os_subtype == OS_SUBTYPE_9X) { fprintf (stderr, "Cannot dump Emacs on Windows 9X; exiting.\n"); exit (-1); diff --git a/src/w32notify.c b/src/w32notify.c index b9e90633923..889fd9f3c9f 100644 --- a/src/w32notify.c +++ b/src/w32notify.c @@ -566,7 +566,7 @@ generate notifications correctly, though. */) CHECK_LIST (filter); /* The underlying features are available only since XP. */ - if (os_subtype == OS_9X + if (os_subtype == OS_SUBTYPE_9X || (w32_major_version == 5 && w32_minor_version < 1)) { errno = ENOSYS; diff --git a/src/w32proc.c b/src/w32proc.c index ffa56e135d0..702ea122e65 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -623,7 +623,7 @@ init_timers (void) need to probe for its availability dynamically, and call it through a pointer. */ s_pfn_Get_Thread_Times = NULL; /* in case dumped Emacs comes with a value */ - if (os_subtype != OS_9X) + if (os_subtype != OS_SUBTYPE_9X) s_pfn_Get_Thread_Times = (GetThreadTimes_Proc) get_proc_addr (GetModuleHandle ("kernel32.dll"), "GetThreadTimes"); @@ -2654,7 +2654,7 @@ find_child_console (HWND hwnd, LPARAM arg) GetClassName (hwnd, window_class, sizeof (window_class)); if (strcmp (window_class, - (os_subtype == OS_9X) + (os_subtype == OS_SUBTYPE_9X) ? "tty" : "ConsoleWindowClass") == 0) { @@ -2878,7 +2878,7 @@ sys_kill (pid_t pid, int sig) if (NILP (Vw32_start_process_share_console) && cp && cp->hwnd) { #if 1 - if (os_subtype == OS_9X) + if (os_subtype == OS_SUBTYPE_9X) { /* Another possibility is to try terminating the VDM out-right by @@ -3793,7 +3793,7 @@ w32_compare_strings (const char *s1, const char *s2, char *locname, if (!g_b_init_compare_string_w) { - if (os_subtype == OS_9X) + if (os_subtype == OS_SUBTYPE_9X) { pCompareStringW = (CompareStringW_Proc) get_proc_addr (LoadLibrary ("Unicows.dll"), diff --git a/src/w32select.c b/src/w32select.c index 85f8e5556a2..f19b85a2aec 100644 --- a/src/w32select.c +++ b/src/w32select.c @@ -1207,7 +1207,7 @@ globals_of_w32select (void) QANSICP = coding_from_cp (ANSICP); QOEMCP = coding_from_cp (OEMCP); - if (os_subtype == OS_NT) + if (os_subtype == OS_SUBTYPE_NT) Vselection_coding_system = Qutf_16le_dos; else if (inhibit_window_system) Vselection_coding_system = QOEMCP; diff --git a/src/w32term.c b/src/w32term.c index 4f910296ecc..ad4d1a32829 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -1916,7 +1916,7 @@ w32_draw_image_foreground (struct glyph_string *s) /* HALFTONE produces better results, especially when scaling to a larger size, but Windows 9X doesn't support HALFTONE. */ - if (os_subtype == OS_NT + if (os_subtype == OS_SUBTYPE_NT && (pmode = SetStretchBltMode (s->hdc, HALFTONE)) != 0) SetBrushOrgEx (s->hdc, 0, 0, NULL); StretchBlt (s->hdc, x, y, s->slice.width, s->slice.height, @@ -1952,7 +1952,7 @@ w32_draw_image_foreground (struct glyph_string *s) { int pmode = 0; /* Windows 9X doesn't support HALFTONE. */ - if (os_subtype == OS_NT + if (os_subtype == OS_SUBTYPE_NT && (pmode = SetStretchBltMode (s->hdc, HALFTONE)) != 0) SetBrushOrgEx (s->hdc, 0, 0, NULL); StretchBlt (s->hdc, x, y, s->slice.width, s->slice.height, @@ -6644,7 +6644,7 @@ frame_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y) /* When "mouse trails" are in effect, moving the mouse cursor sometimes leaves behind an annoying "ghost" of the pointer. Avoid that by momentarily switching off mouse trails. */ - if (os_subtype == OS_NT + if (os_subtype == OS_SUBTYPE_NT && w32_major_version + w32_minor_version >= 6) ret = SystemParametersInfo (SPI_GETMOUSETRAILS, 0, &trail_num, 0); SetCursorPos (pt.x, pt.y); @@ -7638,7 +7638,7 @@ specified by `file-name-coding-system'. This variable is set to non-nil by default when Emacs runs on Windows systems of the NT family, including W2K, XP, Vista, Windows 7 and Windows 8. It is set to nil on Windows 9X. */); - if (os_subtype == OS_9X) + if (os_subtype == OS_SUBTYPE_9X) w32_unicode_filenames = 0; else w32_unicode_filenames = 1; diff --git a/src/w32term.h b/src/w32term.h index 7d351df871d..160be357821 100644 --- a/src/w32term.h +++ b/src/w32term.h @@ -761,7 +761,7 @@ extern bool w32_image_rotations_p (void); extern void setup_w32_kbdhook (void); extern void remove_w32_kbdhook (void); extern int check_w32_winkey_state (int); -#define w32_kbdhook_active (os_subtype != OS_9X) +#define w32_kbdhook_active (os_subtype != OS_SUBTYPE_9X) #else #define w32_kbdhook_active 0 #endif diff --git a/src/window.c b/src/window.c index 0a14eca58fb..9961c54161d 100644 --- a/src/window.c +++ b/src/window.c @@ -7264,8 +7264,8 @@ restore_window_configuration (Lisp_Object configuration) { if (CONSP (configuration)) Fset_window_configuration (XCAR (configuration), - XCAR (XCDR (configuration)), - XCAR (XCDR (XCDR (configuration)))); + Fcar_safe (XCDR (configuration)), + Fcar_safe (Fcdr_safe (XCDR (configuration)))); else Fset_window_configuration (configuration, Qnil, Qnil); } diff --git a/src/xdisp.c b/src/xdisp.c index eea3f81dfa9..74fa0a57e44 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -10838,6 +10838,47 @@ include the height of both, if present, in the return value. */) return Fcons (make_fixnum (x - start_x), make_fixnum (y)); } + +DEFUN ("display--line-is-continued-p", Fdisplay__line_is_continued_p, + Sdisplay__line_is_continued_p, 0, 0, 0, + doc: /* Return non-nil if the current screen line is continued on display. */) + (void) +{ + struct buffer *oldb = current_buffer; + struct window *w = XWINDOW (selected_window); + enum move_it_result rc = MOVE_POS_MATCH_OR_ZV; + + set_buffer_internal_1 (XBUFFER (w->contents)); + + if (PT < ZV) + { + struct text_pos startpos; + struct it it; + void *itdata; + /* Use a marker, since vertical-motion enters redisplay, which can + trigger fontifications, which in turn could modify buffer text. */ + Lisp_Object opoint = Fpoint_marker (); + + /* Make sure to start from the beginning of the current screen + line, so that move_it_in_display_line_to counts pixels correctly. */ + Fvertical_motion (make_fixnum (0), selected_window, Qnil); + SET_TEXT_POS (startpos, PT, PT_BYTE); + itdata = bidi_shelve_cache (); + start_display (&it, w, startpos); + /* If lines are truncated, no line is continued. */ + if (it.line_wrap != TRUNCATE) + { + it.glyph_row = NULL; + rc = move_it_in_display_line_to (&it, ZV, -1, MOVE_TO_POS); + } + SET_PT_BOTH (marker_position (opoint), marker_byte_position (opoint)); + bidi_unshelve_cache (itdata, false); + } + set_buffer_internal_1 (oldb); + + return rc == MOVE_LINE_CONTINUED ? Qt : Qnil; +} + /*********************************************************************** Messages @@ -34754,6 +34795,7 @@ be let-bound around code that needs to disable messages temporarily. */); defsubr (&Swindow_text_pixel_size); defsubr (&Smove_point_visually); defsubr (&Sbidi_find_overridden_directionality); + defsubr (&Sdisplay__line_is_continued_p); DEFSYM (Qmenu_bar_update_hook, "menu-bar-update-hook"); DEFSYM (Qoverriding_terminal_local_map, "overriding-terminal-local-map"); diff --git a/src/xfns.c b/src/xfns.c index 782e0a483c4..e46616e6d66 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -4127,12 +4127,21 @@ This function is an internal primitive--use `make-frame' instead. */) cannot control visibility, so don't try. */ if (!f->output_data.x->explicit_parent) { + /* When called from `x-create-frame-with-faces' visibility is + always explicitly nil. */ Lisp_Object visibility = gui_display_get_arg (dpyinfo, parms, Qvisibility, 0, 0, RES_TYPE_SYMBOL); + Lisp_Object height + = gui_display_get_arg (dpyinfo, parms, Qheight, 0, 0, RES_TYPE_NUMBER); + Lisp_Object width + = gui_display_get_arg (dpyinfo, parms, Qwidth, 0, 0, RES_TYPE_NUMBER); if (EQ (visibility, Qicon)) - x_iconify_frame (f); + { + f->was_invisible = true; + x_iconify_frame (f); + } else { if (EQ (visibility, Qunbound)) @@ -4140,8 +4149,17 @@ This function is an internal primitive--use `make-frame' instead. */) if (!NILP (visibility)) x_make_frame_visible (f); + else + f->was_invisible = true; } + /* Leave f->was_invisible true only if height or width were + specified too. This takes effect only when we are not called + from `x-create-frame-with-faces' (see above comment). */ + f->was_invisible + = (f->was_invisible + && (!EQ (height, Qunbound) || !EQ (width, Qunbound))); + store_frame_param (f, Qvisibility, visibility); } diff --git a/src/xsmfns.c b/src/xsmfns.c index 10565a4b25f..ddb86d82fe1 100644 --- a/src/xsmfns.c +++ b/src/xsmfns.c @@ -357,7 +357,7 @@ ice_conn_watch_CB (IceConn iceConn, IcePointer clientData, } ice_fd = IceConnectionNumber (iceConn); - add_read_fd (ice_fd, x_session_check_input, NULL); + add_non_keyboard_read_fd (ice_fd, x_session_check_input, NULL); } /* Create the client leader window. */ diff --git a/src/xterm.c b/src/xterm.c index 9edaed9a34b..1887c3255d4 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -8181,8 +8181,12 @@ handle_one_xevent (struct x_display_info *dpyinfo, #if defined USE_GTK && defined HAVE_GTK3 /* If GTK3 wants to impose some old size here (Bug#24526), tell it that the current size is what we want. */ - xg_frame_set_char_size - (f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f)); + if (f->was_invisible) + { + xg_frame_set_char_size + (f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f)); + f->was_invisible = false; + } #endif XSETFRAME (inev.ie.frame_or_window, f); } @@ -8443,8 +8447,12 @@ handle_one_xevent (struct x_display_info *dpyinfo, #if defined USE_GTK && defined HAVE_GTK3 /* If GTK3 wants to impose some old size here (Bug#24526), tell it that the current size is what we want. */ - xg_frame_set_char_size - (f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f)); + if (f->was_invisible) + { + xg_frame_set_char_size + (f, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f)); + f->was_invisible = false; + } #endif f->output_data.x->has_been_visible = true; } @@ -9335,6 +9343,11 @@ handle_one_xevent (struct x_display_info *dpyinfo, goto OTHER; case VisibilityNotify: + f = x_top_window_to_frame (dpyinfo, event->xvisibility.window); + if (f && (event->xvisibility.state == VisibilityUnobscured + || event->xvisibility.state == VisibilityPartiallyObscured)) + SET_FRAME_VISIBLE (f, 1); + goto OTHER; case MappingNotify: @@ -9591,11 +9604,12 @@ x_draw_hollow_cursor (struct window *w, struct glyph_row *row) /* The foreground of cursor_gc is typically the same as the normal background color, which can cause the cursor box to be invisible. */ xgcv.foreground = f->output_data.x->cursor_pixel; + xgcv.line_width = 1; if (dpyinfo->scratch_cursor_gc) - XChangeGC (dpy, dpyinfo->scratch_cursor_gc, GCForeground, &xgcv); + XChangeGC (dpy, dpyinfo->scratch_cursor_gc, GCForeground | GCLineWidth, &xgcv); else dpyinfo->scratch_cursor_gc = XCreateGC (dpy, FRAME_X_DRAWABLE (f), - GCForeground, &xgcv); + GCForeground | GCLineWidth, &xgcv); gc = dpyinfo->scratch_cursor_gc; /* When on R2L character, show cursor at the right edge of the diff --git a/test/Makefile.in b/test/Makefile.in index 84ab4e70aee..c1518d3dcd2 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -245,13 +245,13 @@ endef $(foreach test,${TESTS},$(eval $(call test_template,${test}))) ## Get the tests for only a specific directory. -SUBDIRS = $(sort $(shell find lib-src lisp misc src -type d ! -path "*resources*" -print)) +SUBDIRS = $(sort $(shell cd ${srcdir} && find lib-src lisp misc src -type d ! -path "*resources*" -print)) define subdir_template .PHONY: check-$(subst /,-,$(1)) check-$(subst /,-,$(1)): @${MAKE} check LOGFILES="$(patsubst %.el,%.log, \ - $(patsubst $(srcdir)/%,%,$(wildcard $(1)/*.el)))" + $(patsubst $(srcdir)/%,%,$(wildcard ${srcdir}/$(1)/*.el)))" endef $(foreach subdir, $(SUBDIRS), $(eval $(call subdir_template,$(subdir)))) @@ -340,6 +340,7 @@ mostlyclean: clean: find . '(' -name '*.log' -o -name '*.log~' ')' $(FIND_DELETE) + rm -f ${srcdir}/lisp/gnus/mml-sec-resources/random_seed rm -f $(test_module_dir)/*.o $(test_module_dir)/*.so \ $(test_module_dir)/*.dll diff --git a/test/lisp/custom-resources/custom--test-theme.el b/test/lisp/custom-resources/custom--test-theme.el index 122bd795692..36424cdfcc3 100644 --- a/test/lisp/custom-resources/custom--test-theme.el +++ b/test/lisp/custom-resources/custom--test-theme.el @@ -6,6 +6,8 @@ (custom-theme-set-variables 'custom--test '(custom--test-user-option 'bar) - '(custom--test-variable 'bar)) + '(custom--test-variable 'bar) + '(custom--test-bug-21355-before 'before) + '(custom--test-bug-21355-after 'after)) (provide-theme 'custom--test) diff --git a/test/lisp/custom-tests.el b/test/lisp/custom-tests.el index 02a9239824d..e93c96e1d93 100644 --- a/test/lisp/custom-tests.el +++ b/test/lisp/custom-tests.el @@ -230,4 +230,108 @@ Ensure the directory is recursively deleted after the fact." (should (eq (default-value 'custom--test-local-option) 'initial)) (should (eq (default-value 'custom--test-permanent-option) 'initial))))) +;; The following three tests demonstrate Bug#21355. +;; In this one, we set an user option for the current session and then +;; we enable a theme that doesn't have a setting for it, ending up with +;; a non-nil saved-value property. Since the `caar' of the theme-value +;; property is user (i.e., the user theme setting is active), we might +;; save the setting to the custom-file, even though it was meant for the +;; current session only. So there should be a nil saved-value property +;; for this test to pass. +(ert-deftest custom-test-no-saved-value-after-enabling-theme () + "Test that we don't record a saved-value property when we shouldn't." + (let ((custom-theme-load-path `(,(ert-resource-directory)))) + (customize-option 'mark-ring-max) + (let* ((field (seq-find (lambda (widget) + (eq mark-ring-max (widget-value widget))) + widget-field-list)) + (parent (widget-get field :parent))) + ;; Move to the editable widget, modify the value and save it. + (goto-char (widget-field-text-end field)) + (insert "0") + (widget-apply parent :custom-set) + ;; Just setting for the current session should not store a saved-value + ;; property. + (should-not (get 'mark-ring-max 'saved-value)) + ;; Now enable and disable the test theme. + (load-theme 'custom--test 'no-confirm) + (disable-theme 'custom--test) + ;; Since the user customized the option, this is OK. + (should (eq (caar (get 'mark-ring-max 'theme-value)) 'user)) + ;; The saved-value property should still be nil. + (should-not (get 'mark-ring-max 'saved-value))))) + +;; In this second test, we load a theme that has a setting for the user option +;; above. We must check that we don't end up with a non-nil saved-value +;; property and a user setting active in the theme-value property, which +;; means we might inadvertently save the session setting in the custom-file. +(defcustom custom--test-bug-21355-before 'foo + "User option for `custom-test-no-saved-value-after-enabling-theme-2'." + :type 'symbol :group 'emacs) + +(ert-deftest custom-test-no-saved-value-after-enabling-theme-2 () + "Test that we don't record a saved-value property when we shouldn't." + (let ((custom-theme-load-path `(,(ert-resource-directory)))) + (customize-option 'custom--test-bug-21355-before) + (let* ((field (seq-find + (lambda (widget) + (eq custom--test-bug-21355-before (widget-value widget))) + widget-field-list)) + (parent (widget-get field :parent))) + ;; Move to the editable widget, modify the value and save it. + (goto-char (widget-field-text-end field)) + (insert "bar") + (widget-apply parent :custom-set) + ;; Just setting for the current session should not store a saved-value + ;; property. + (should-not (get 'custom--test-bug-21355-before 'saved-value)) + ;; Now load our test theme, which has a setting for + ;; `custom--test-bug-21355-before'. + (load-theme 'custom--test 'no-confirm 'no-enable) + (enable-theme 'custom--test) + ;; Since the user customized the option, this is OK. + (should (eq (caar (get 'custom--test-bug-21355-before 'theme-value)) + 'user)) + ;; But the saved-value property has to be nil, since the user didn't mark + ;; this variable to save for future sessions. + (should-not (get 'custom--test-bug-21355-before 'saved-value))))) + +(defvar custom--test-bug-21355-after) + +;; In this test, we check that stashing a theme value for a not yet defined +;; option works, but that later on if the user customizes the option for the +;; current session, we might save the theme setting in the custom file. +(ert-deftest custom-test-no-saved-value-after-customizing-option () + "Test for a nil saved-value after setting an option for the current session." + (let ((custom-theme-load-path `(,(ert-resource-directory)))) + ;; Check that we correctly stashed the value. + (load-theme 'custom--test 'no-confirm 'no-enable) + (enable-theme 'custom--test) + (should (and (not (boundp 'custom--test-bug-21355-after)) + (eq (eval + (car (get 'custom--test-bug-21355-after 'saved-value))) + 'after))) + ;; Now Emacs finds the defcustom. + (defcustom custom--test-bug-21355-after 'initially "..." + :type 'symbol :group 'emacs) + ;; And we used the stashed value correctly. + (should (and (boundp 'custom--test-bug-21355-after) + (eq custom--test-bug-21355-after 'after))) + ;; Now customize it. + (customize-option 'custom--test-bug-21355-after) + (let* ((field (seq-find (lambda (widget) + (eq custom--test-bug-21355-after + (widget-value widget))) + widget-field-list)) + (parent (widget-get field :parent))) + ;; Move to the editable widget, modify the value and save it. + (goto-char (widget-field-text-end field)) + (insert "bar") + (widget-apply parent :custom-set) + ;; The user customized the variable, so this is OK. + (should (eq (caar (get 'custom--test-bug-21355-after 'theme-value)) + 'user)) + ;; But it was only for the current session, so this should not happen. + (should-not (get 'custom--test-bug-21355-after 'saved-value))))) + ;;; custom-tests.el ends here diff --git a/test/lisp/emacs-lisp/edebug-tests.el b/test/lisp/emacs-lisp/edebug-tests.el index 7d45432e57e..2f45050e2eb 100644 --- a/test/lisp/emacs-lisp/edebug-tests.el +++ b/test/lisp/emacs-lisp/edebug-tests.el @@ -1029,14 +1029,21 @@ clashes (Bug#41853)." inner@cl-flet@10002 edebug-tests-cl-flet-2))))))) +(defmacro edebug-tests--duplicate-symbol-backtrack (arg) + "Helper macro that exemplifies Bug#42701. +ARG is either (FORM) or (FORM IGNORED)." + (declare (debug ([&or (form) (form sexp)]))) + (car arg)) + (ert-deftest edebug-tests-duplicate-symbol-backtrack () "Check that Edebug doesn't create duplicate symbols when backtracking (Bug#42701)." (with-temp-buffer - (dolist (form '((require 'subr-x) - (defun edebug-tests-duplicate-symbol-backtrack () - (if-let (x (funcall (lambda (y) 1) 2)) 3 4)))) - (print form (current-buffer))) + (print '(defun edebug-tests-duplicate-symbol-backtrack () + (edebug-tests--duplicate-symbol-backtrack + ;; Passing (FORM IGNORED) forces backtracking. + ((lambda () 123) ignored))) + (current-buffer)) (let* ((edebug-all-defs t) (edebug-initial-mode 'Go-nonstop) (instrumented-names ()) diff --git a/test/lisp/emacs-lisp/rx-tests.el b/test/lisp/emacs-lisp/rx-tests.el index 2dd1bca22d1..4828df0de92 100644 --- a/test/lisp/emacs-lisp/rx-tests.el +++ b/test/lisp/emacs-lisp/rx-tests.el @@ -166,6 +166,20 @@ (backref 1)) (list u v))) '("1" "3"))) + (should (equal (pcase "bz" + ((rx "a" (let x nonl)) (list 1 x)) + (_ 'no)) + 'no)) + (should (equal (pcase "az" + ((rx "a" (let x nonl)) (list 1 x)) + ((rx "b" (let x nonl)) (list 2 x)) + (_ 'no)) + '(1 "z"))) + (should (equal (pcase "bz" + ((rx "a" (let x nonl)) (list 1 x)) + ((rx "b" (let x nonl)) (list 2 x)) + (_ 'no)) + '(2 "z"))) (let ((k "blue")) (should (equal (pcase "<blue>" ((rx "<" (literal k) ">") 'ok)) diff --git a/test/lisp/emacs-lisp/subr-x-tests.el b/test/lisp/emacs-lisp/subr-x-tests.el index 112f3c1dac1..ef04cde3867 100644 --- a/test/lisp/emacs-lisp/subr-x-tests.el +++ b/test/lisp/emacs-lisp/subr-x-tests.el @@ -607,18 +607,21 @@ (should (equal (string-limit "foó" 4 nil 'utf-8) "fo\303\263")) (should (equal (string-limit "foóa" 4 nil 'utf-8) "fo\303\263")) (should (equal (string-limit "foóá" 4 nil 'utf-8) "fo\303\263")) + (should (equal (string-limit "foóá" 4 nil 'utf-8-with-signature) + "fo\303\263")) (should (equal (string-limit "foóa" 4 nil 'iso-8859-1) "fo\363a")) (should (equal (string-limit "foóá" 4 nil 'iso-8859-1) "fo\363\341")) - (should (equal (string-limit "foóá" 4 nil 'utf-16) "\376\377\000f")) + (should (equal (string-limit "foóá" 4 nil 'utf-16) "\000f\000o")) (should (equal (string-limit "foó" 10 t 'utf-8) "fo\303\263")) (should (equal (string-limit "foó" 3 t 'utf-8) "o\303\263")) (should (equal (string-limit "foó" 4 t 'utf-8) "fo\303\263")) (should (equal (string-limit "foóa" 4 t 'utf-8) "o\303\263a")) (should (equal (string-limit "foóá" 4 t 'utf-8) "\303\263\303\241")) + (should (equal (string-limit "foóá" 2 t 'utf-8-with-signature) "\303\241")) (should (equal (string-limit "foóa" 4 t 'iso-8859-1) "fo\363a")) (should (equal (string-limit "foóá" 4 t 'iso-8859-1) "fo\363\341")) - (should (equal (string-limit "foóá" 4 t 'utf-16) "\376\377\000\341"))) + (should (equal (string-limit "foóá" 4 t 'utf-16) "\000\363\000\341"))) (ert-deftest subr-string-lines () (should (equal (string-lines "foo") '("foo"))) diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el index 921e2c80f3a..dc96dff6398 100644 --- a/test/lisp/files-tests.el +++ b/test/lisp/files-tests.el @@ -151,6 +151,19 @@ form.") (dolist (subtest (cdr test)) (should (file-test--do-local-variables-test str subtest))))))) +(ert-deftest files-tests-permanent-local-variables () + (let ((enable-local-variables nil)) + (with-temp-buffer + (insert ";;; test-test.el --- tests -*- lexical-binding: t; -*-\n\n") + (hack-local-variables) + (should (eq lexical-binding t)))) + (let ((enable-local-variables nil) + (permanently-enabled-local-variables nil)) + (with-temp-buffer + (insert ";;; test-test.el --- tests -*- lexical-binding: t; -*-\n\n") + (hack-local-variables) + (should (eq lexical-binding nil))))) + (defvar files-test-bug-18141-file (ert-resource-file "files-bug18141.el.gz") "Test file for bug#18141.") diff --git a/test/lisp/image-tests.el b/test/lisp/image-tests.el index 2f7afa2f38e..aa8600609c4 100644 --- a/test/lisp/image-tests.el +++ b/test/lisp/image-tests.el @@ -57,8 +57,9 @@ (should (eq (image-type-from-file-name "foo.png") 'png))) (ert-deftest image-type/from-filename () - ;; On emba, `image-load-path' does not exist. - (skip-unless (bound-and-true-p image-load-path)) + ;; On emba, `image-types' and `image-load-path' do not exist. + (skip-unless (and (bound-and-true-p image-types) + (bound-and-true-p image-load-path))) (should (eq (image-type "foo.jpg") 'jpeg))) (ert-deftest image-type-from-file-header-test () diff --git a/test/lisp/minibuffer-tests.el b/test/lisp/minibuffer-tests.el index 6ab5f57eff9..c3ba8f9a926 100644 --- a/test/lisp/minibuffer-tests.el +++ b/test/lisp/minibuffer-tests.el @@ -188,5 +188,148 @@ '("some/alpha" "base/epsilon" "base/delta")) `("epsilon" "delta" "beta" "alpha" "gamma" . 5)))) +(defun completion--pcm-score (comp) + "Get `completion-score' from COMP." + (get-text-property 0 'completion-score comp)) + +(defun completion--pcm-first-difference-pos (comp) + "Get `completions-first-difference' from COMP." + (cl-loop for pos = (next-single-property-change 0 'face comp) + then (next-single-property-change pos 'face comp) + while pos + when (eq (get-text-property pos 'face comp) + 'completions-first-difference) + return pos)) + +(ert-deftest completion-pcm-test-1 () + ;; Point is at end, this does not match anything + (should (null + (completion-pcm-all-completions + "foo" '("hello" "world" "barfoobar") nil 3)))) + +(ert-deftest completion-pcm-test-2 () + ;; Point is at beginning, this matches "barfoobar" + (should (equal + (car (completion-pcm-all-completions + "foo" '("hello" "world" "barfoobar") nil 0)) + "barfoobar"))) + +(ert-deftest completion-pcm-test-3 () + ;; Full match! + (should (eql + (completion--pcm-score + (car (completion-pcm-all-completions + "R" '("R" "hello") nil 1))) + 1.0))) + +(ert-deftest completion-pcm-test-4 () + ;; One fourth of a match and no match due to point being at the end + (should (eql + (completion--pcm-score + (car (completion-pcm-all-completions + "RO" '("RaOb") nil 1))) + (/ 1.0 4.0))) + (should (null + (completion-pcm-all-completions + "RO" '("RaOb") nil 2)))) + +(ert-deftest completion-pcm-test-5 () + ;; Since point is at the beginning, there is nothing that can really + ;; be typed anymore + (should (null + (completion--pcm-first-difference-pos + (car (completion-pcm-all-completions + "f" '("few" "many") nil 0)))))) + +(ert-deftest completion-pcm-test-6 () + ;; Wildcards and delimiters work + (should (equal + (car (completion-pcm-all-completions + "li-pac*" '("list-packages") nil 7)) + "list-packages")) + (should (null + (car (completion-pcm-all-completions + "li-pac*" '("do-not-list-packages") nil 7))))) + +(ert-deftest completion-substring-test-1 () + ;; One third of a match! + (should (equal + (car (completion-substring-all-completions + "foo" '("hello" "world" "barfoobar") nil 3)) + "barfoobar")) + (should (eql + (completion--pcm-score + (car (completion-substring-all-completions + "foo" '("hello" "world" "barfoobar") nil 3))) + (/ 1.0 3.0)))) + +(ert-deftest completion-substring-test-2 () + ;; Full match! + (should (eql + (completion--pcm-score + (car (completion-substring-all-completions + "R" '("R" "hello") nil 1))) + 1.0))) + +(ert-deftest completion-substring-test-3 () + ;; Substring match + (should (equal + (car (completion-substring-all-completions + "custgroup" '("customize-group") nil 4)) + "customize-group")) + (should (null + (car (completion-substring-all-completions + "custgroup" '("customize-group") nil 5))))) + +(ert-deftest completion-substring-test-4 () + ;; `completions-first-difference' should be at the right place + (should (eql + (completion--pcm-first-difference-pos + (car (completion-substring-all-completions + "jab" '("dabjobstabby" "many") nil 1))) + 4)) + (should (null + (completion--pcm-first-difference-pos + (car (completion-substring-all-completions + "jab" '("dabjabstabby" "many") nil 1))))) + (should (equal + (completion--pcm-first-difference-pos + (car (completion-substring-all-completions + "jab" '("dabjabstabby" "many") nil 3))) + 6))) + +(ert-deftest completion-flex-test-1 () + ;; Fuzzy match + (should (equal + (car (completion-flex-all-completions + "foo" '("hello" "world" "fabrobazo") nil 3)) + "fabrobazo"))) + +(ert-deftest completion-flex-test-2 () + ;; Full match! + (should (eql + (completion--pcm-score + (car (completion-flex-all-completions + "R" '("R" "hello") nil 1))) + 1.0))) + +(ert-deftest completion-flex-test-3 () + ;; Another fuzzy match, but more of a "substring" one + (should (equal + (car (completion-flex-all-completions + "custgroup" '("customize-group-other-window") nil 4)) + "customize-group-other-window")) + ;; `completions-first-difference' should be at the right place + (should (equal + (completion--pcm-first-difference-pos + (car (completion-flex-all-completions + "custgroup" '("customize-group-other-window") nil 4))) + 4)) + (should (equal + (completion--pcm-first-difference-pos + (car (completion-flex-all-completions + "custgroup" '("customize-group-other-window") nil 9))) + 15))) + (provide 'minibuffer-tests) ;;; minibuffer-tests.el ends here diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 1eb0d0ec619..5e4626ab41a 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -179,6 +179,11 @@ The temporary file is not created." "Whether `tramp--test-instrument-test-case' run. This shall used dynamically bound only.") +;; When `tramp-verbose' is greater than 10, and you want to trace +;; other functions as well, do something like +;; (let ((tramp-trace-functions '(file-name-non-special))) +;; (tramp--test-instrument-test-case 11 +;; ...)) (defmacro tramp--test-instrument-test-case (verbose &rest body) "Run BODY with `tramp-verbose' equal VERBOSE. Print the content of the Tramp connection and debug buffers, if @@ -187,31 +192,22 @@ is greater than 10. `should-error' is not handled properly. BODY shall not contain a timeout." (declare (indent 1) (debug (natnump body))) `(let* ((tramp-verbose (max (or ,verbose 0) (or tramp-verbose 0))) - (trace-buffer - (when (> tramp-verbose 10) (generate-new-buffer " *temp*"))) + (trace-buffer (tramp-trace-buffer-name tramp-test-vec)) (debug-ignored-errors (append '("^make-symbolic-link not supported$" "^error with add-name-to-file") debug-ignored-errors)) inhibit-message) - (when trace-buffer - (dolist (elt (all-completions "tramp-" obarray 'functionp)) - (trace-function-background (intern elt)))) (unwind-protect (let ((tramp--test-instrument-test-case-p t)) ,@body) ;; Unwind forms. - (when trace-buffer - (untrace-all)) (when (and (null tramp--test-instrument-test-case-p) (> tramp-verbose 3)) - (dolist - (buf (if trace-buffer - (cons (get-buffer trace-buffer) (tramp-list-tramp-buffers)) - (tramp-list-tramp-buffers))) + (untrace-all) + (dolist (buf (tramp-list-tramp-buffers)) (with-current-buffer buf - (message ";; %s\n%s" buf (buffer-string))))) - (when trace-buffer - (kill-buffer trace-buffer))))) + (message ";; %s\n%s" buf (buffer-string))) + (kill-buffer buf)))))) (defsubst tramp--test-message (fmt-string &rest arguments) "Emit a message into ERT *Messages*." @@ -3098,7 +3094,6 @@ This tests also `file-directory-p' and `file-accessible-directory-p'." (skip-unless (tramp--test-enabled)) (skip-unless (tramp--test-sh-p)) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-scp-p))) ;; Wildcards are not supported in tramp-crypt.el. (skip-unless (not (tramp--test-crypt-p))) ;; Since Emacs 26.1. @@ -4586,8 +4581,7 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'." (dolist (quoted (if (tramp--test-expensive-test) '(nil t) '(nil))) (let ((default-directory tramp-test-temporary-file-directory) - (tmp-name1 (tramp--test-make-temp-name nil quoted)) - (tmp-name2 (tramp--test-make-temp-name 'local quoted)) + (tmp-name (tramp--test-make-temp-name nil quoted)) kill-buffer-query-functions proc) (with-no-warnings (should-not (make-process))) @@ -4615,13 +4609,13 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'." ;; Simple process using a file. (unwind-protect (with-temp-buffer - (write-region "foo" nil tmp-name1) - (should (file-exists-p tmp-name1)) + (write-region "foo" nil tmp-name) + (should (file-exists-p tmp-name)) (setq proc (with-no-warnings (make-process :name "test2" :buffer (current-buffer) - :command `("cat" ,(file-name-nondirectory tmp-name1)) + :command `("cat" ,(file-name-nondirectory tmp-name)) :file-handler t))) (should (processp proc)) ;; Read output. @@ -4633,7 +4627,7 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'." ;; Cleanup. (ignore-errors (delete-process proc) - (delete-file tmp-name1))) + (delete-file tmp-name))) ;; Process filter. (unwind-protect @@ -4697,11 +4691,17 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'." :stderr stderr :file-handler t))) (should (processp proc)) - ;; Read stderr. + ;; Read output. (with-timeout (10 (tramp--test-timeout-handler)) (while (accept-process-output proc 0 nil t))) - (delete-process proc) + ;; Read stderr. (with-current-buffer stderr + (with-timeout (10 (tramp--test-timeout-handler)) + (while (not (string-match-p + "No such file or directory" (buffer-string))) + (while (accept-process-output + (get-buffer-process stderr) 0 nil t)))) + (delete-process proc) (should (string-match-p "cat:.* No such file or directory" (buffer-string))))) @@ -4712,30 +4712,29 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'." ;; Process with stderr file. (unless (tramp-direct-async-process-p) - (dolist (tmpfile `(,tmp-name1 ,tmp-name2)) - (unwind-protect + (unwind-protect + (with-temp-buffer + (setq proc + (with-no-warnings + (make-process + :name "test6" :buffer (current-buffer) + :command '("cat" "/does-not-exist") + :stderr tmp-name + :file-handler t))) + (should (processp proc)) + ;; Read stderr. + (with-timeout (10 (tramp--test-timeout-handler)) + (while (accept-process-output proc nil nil t))) + (delete-process proc) (with-temp-buffer - (setq proc - (with-no-warnings - (make-process - :name "test6" :buffer (current-buffer) - :command '("cat" "/does-not-exist") - :stderr tmpfile - :file-handler t))) - (should (processp proc)) - ;; Read stderr. - (with-timeout (10 (tramp--test-timeout-handler)) - (while (accept-process-output proc nil nil t))) - (delete-process proc) - (with-temp-buffer - (insert-file-contents tmpfile) - (should - (string-match-p - "cat:.* No such file or directory" (buffer-string))))) + (insert-file-contents tmp-name) + (should + (string-match-p + "cat:.* No such file or directory" (buffer-string))))) - ;; Cleanup. - (ignore-errors (delete-process proc)) - (ignore-errors (delete-file tmpfile)))))))) + ;; Cleanup. + (ignore-errors (delete-process proc)) + (ignore-errors (delete-file tmp-name))))))) (tramp--test--deftest-direct-async-process tramp-test30-make-process "Check direct async `make-process'.") @@ -5846,13 +5845,6 @@ This does not support utf8 based file transfer." (and (eq system-type 'windows-nt) (tramp-method-out-of-band-p tramp-test-vec 1))) -(defun tramp--test-windows-nt-and-scp-p () - "Check, whether the locale host runs MS Windows, and scpx? is used. -This does not support utf8 based file transfer." - (and (eq system-type 'windows-nt) - (string-match-p - "^scpx?" (file-remote-p tramp-test-temporary-file-directory 'method)))) - (defun tramp--test-windows-nt-or-smb-p () "Check, whether the locale or remote host runs MS Windows. This requires restrictions of file name syntax." @@ -5886,6 +5878,7 @@ This requires restrictions of file name syntax." (make-directory tmp-name2) (dolist (elt files) + ;(tramp--test-message "%s" elt) (let* ((file1 (expand-file-name elt tmp-name1)) (file2 (expand-file-name elt tmp-name2)) (file3 (expand-file-name (concat elt "foo") tmp-name1))) @@ -6075,9 +6068,9 @@ This requires restrictions of file name syntax." "\tfoo bar baz\t") (t " foo\tbar baz\t")) "@foo@bar@baz@" - "$foo$bar$$baz$" + (unless (tramp--test-windows-nt-and-out-of-band-p) "$foo$bar$$baz$") "-foo-bar-baz-" - "%foo%bar%baz%" + (unless (tramp--test-windows-nt-and-out-of-band-p) "%foo%bar%baz%") "&foo&bar&baz&" (unless (or (tramp--test-ftp-p) (tramp--test-gvfs-p) @@ -6091,9 +6084,10 @@ This requires restrictions of file name syntax." "'foo'bar'baz'" "'foo\"bar'baz\"") "#foo~bar#baz~" - (if (or (tramp--test-gvfs-p) (tramp--test-windows-nt-or-smb-p)) - "!foo!bar!baz!" - "!foo|bar!baz|") + (unless (tramp--test-windows-nt-and-out-of-band-p) + (if (or (tramp--test-gvfs-p) (tramp--test-windows-nt-or-smb-p)) + "!foo!bar!baz!" + "!foo|bar!baz|")) (if (or (tramp--test-gvfs-p) (tramp--test-rclone-p) (tramp--test-windows-nt-or-smb-p)) @@ -6114,7 +6108,6 @@ This requires restrictions of file name syntax." "Check special characters in file names." (skip-unless (tramp--test-enabled)) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-scp-p))) (skip-unless (or (tramp--test-emacs26-p) (not (tramp--test-rclone-p)))) (tramp--test-special-characters)) @@ -6126,7 +6119,6 @@ Use the `stat' command." (skip-unless (tramp--test-enabled)) (skip-unless (tramp--test-sh-p)) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-scp-p))) ;; We cannot use `tramp-test-vec', because this fails during compilation. (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil (skip-unless (tramp-get-remote-stat v))) @@ -6145,7 +6137,6 @@ Use the `perl' command." (skip-unless (tramp--test-enabled)) (skip-unless (tramp--test-sh-p)) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-scp-p))) ;; We cannot use `tramp-test-vec', because this fails during compilation. (with-parsed-tramp-file-name tramp-test-temporary-file-directory nil (skip-unless (tramp-get-remote-perl v))) @@ -6167,7 +6158,6 @@ Use the `ls' command." (skip-unless (tramp--test-enabled)) (skip-unless (tramp--test-sh-p)) (skip-unless (not (tramp--test-rsync-p))) - (skip-unless (not (tramp--test-windows-nt-and-scp-p))) (let ((tramp-connection-properties (append diff --git a/test/lisp/progmodes/grep-tests.el b/test/lisp/progmodes/grep-tests.el new file mode 100644 index 00000000000..205982238f2 --- /dev/null +++ b/test/lisp/progmodes/grep-tests.el @@ -0,0 +1,69 @@ +;;; grep-tests.el --- Test suite for grep.el -*- lexical-binding:t -*- + +;; Copyright (C) 2021 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;;; Code: + +(require 'ert) +(require 'grep) + +(defconst grep-tests--ellipsis (if (char-displayable-p ?…) "[…]" "[...]") + "The form that the ellipsis takes in `grep-find-abbreviate-properties'.") + +(defun grep-tests--get-rgrep-abbreviation () + "Get the `display' property of the excessive part of the rgrep command." + (with-temp-buffer + (grep-compute-defaults) + (insert (rgrep-default-command "search" "*" nil)) + (grep-mode) + (font-lock-mode) + (font-lock-ensure) + (goto-char (point-min)) + (re-search-forward "find ") + (get-text-property (point) 'display))) + +(defun grep-tests--check-rgrep-abbreviation () + "Check that the excessive part of the rgrep command is abbreviated iff +`grep-find-abbreviate' is non-nil." + (let ((grep-find-abbreviate t)) + (should (equal (grep-tests--get-rgrep-abbreviation) + grep-tests--ellipsis))) + (let ((grep-find-abbreviate nil)) + (should-not (grep-tests--get-rgrep-abbreviation)))) + +(ert-deftest grep-tests--rgrep-abbreviate-properties-gnu-linux () + (let ((system-type 'gnu/linux)) + (grep-tests--check-rgrep-abbreviation))) + +(ert-deftest grep-tests--rgrep-abbreviate-properties-darwin () + (let ((system-type 'darwin)) + (grep-tests--check-rgrep-abbreviation))) + +(ert-deftest grep-tests--rgrep-abbreviate-properties-windows-nt-dos-semantics () + (let ((system-type 'windows-nt)) + (cl-letf (((symbol-function 'w32-shell-dos-semantics) #'always)) + (grep-tests--check-rgrep-abbreviation)))) + +(ert-deftest grep-tests--rgrep-abbreviate-properties-windows-nt-sh-semantics () + (let ((system-type 'windows-nt)) + (cl-letf (((symbol-function 'w32-shell-dos-semantics) #'ignore)) + (grep-tests--check-rgrep-abbreviation)))) + +;;; grep-tests.el ends here diff --git a/test/lisp/progmodes/project-tests.el b/test/lisp/progmodes/project-tests.el index c8c03aa2579..68460a9fa5b 100644 --- a/test/lisp/progmodes/project-tests.el +++ b/test/lisp/progmodes/project-tests.el @@ -82,4 +82,29 @@ quoted directory names (Bug#47799)." (ert-fail (format-message "Unexpected references: %S" otherwise)))))))) +(cl-defstruct project-tests--trivial root ignores) + +(cl-defmethod project-root ((project project-tests--trivial)) + (project-tests--trivial-root project)) + +(cl-defmethod project-ignores ((project project-tests--trivial) _dir) + (project-tests--trivial-ignores project)) + +(ert-deftest project-ignores () + "Check that `project-files' correctly ignores the files +returned by `project-ignores' if the root directory is a +directory name (Bug#48471)." + (skip-unless (executable-find find-program)) + (project-tests--with-temporary-directory dir + (make-empty-file (expand-file-name "some-file" dir)) + (make-empty-file (expand-file-name "ignored-file" dir)) + (let* ((project (make-project-tests--trivial + :root (file-name-as-directory dir) + :ignores '("./ignored-file"))) + (files (project-files project)) + (relative-files + (cl-loop for file in files + collect (file-relative-name file dir)))) + (should (equal relative-files '("some-file")))))) + ;;; project-tests.el ends here diff --git a/test/lisp/textmodes/css-mode-tests.el b/test/lisp/textmodes/css-mode-tests.el index 97f5abf1156..abf85dbff43 100644 --- a/test/lisp/textmodes/css-mode-tests.el +++ b/test/lisp/textmodes/css-mode-tests.el @@ -143,20 +143,20 @@ (css-mode) (insert "body:a") (let ((completions (css-mode-tests--completions))) - (should (member "active" completions)) - (should-not (member "disabled" completions)) + (should (member ":active" completions)) + (should-not (member ":disabled" completions)) ;; Don't include pseudo-elements - (should-not (member "after" completions))))) + (should-not (member "::after" completions))))) (ert-deftest css-test-complete-pseudo-element () (with-temp-buffer (css-mode) (insert "body::a") (let ((completions (css-mode-tests--completions))) - (should (member "after" completions)) - (should-not (member "disabled" completions)) + (should (member "::after" completions)) + (should-not (member "::disabled" completions)) ;; Don't include pseudo-classes - (should-not (member "active" completions))))) + (should-not (member ":active" completions))))) (ert-deftest css-test-complete-at-rule () (with-temp-buffer diff --git a/test/manual/etags/CTAGS.good b/test/manual/etags/CTAGS.good index 5e582434a62..3cffd6d25ef 100644 --- a/test/manual/etags/CTAGS.good +++ b/test/manual/etags/CTAGS.good @@ -759,6 +759,7 @@ Install_Abort_Handler/p ada-src/2ataspri.ads /^ procedure Install_Abort_Handle Install_Error_Handler/p ada-src/2ataspri.adb /^ procedure Install_Error_Handler (Handler : Syst/ Install_Error_Handler/p ada-src/2ataspri.ads /^ procedure Install_Error_Handler (Handler : Syst/ Invoking gzip tex-src/gzip.texi /^@node Invoking gzip, Advanced usage, Sample, Top$/ +IpAddrKind rs-src/test.rs 3 IsControlChar pas-src/common.pas /^function IsControlChar; (*($/ IsControlCharName pas-src/common.pas /^function IsControlCharName($/ Is_Set/f ada-src/2ataspri.adb /^ function Is_Set (Cell : in TAS_Cell) return Bo/ @@ -984,6 +985,7 @@ MoveLayerBottom lua-src/allegro.lua /^function MoveLayerBottom ()$/ MoveLayerTop lua-src/allegro.lua /^function MoveLayerTop ()$/ Mtest.go go-src/test.go 1 Mtest.go go-src/test.go /^func main() {$/ +Mtest.rs rs-src/test.rs /^fn main() {$/ Mtest1.go go-src/test1.go 1 Mtest1.go go-src/test1.go /^func main() {$/ Mx.cc cp-src/x.cc /^main(int argc, char *argv[])$/ @@ -1153,7 +1155,6 @@ Python_help c-src/etags.c 660 Python_suffixes c-src/etags.c 658 QUIT c-src/emacs/src/lisp.h 3101 QUITP c-src/emacs/src/lisp.h 3112 -Qpre_abbrev_expand_hook c-src/abbrev.c 83 RANGED_INTEGERP c-src/emacs/src/lisp.h /^RANGED_INTEGERP (intmax_t lo, Lisp_Object x, intma/ RCSid objc-src/PackInsp.m 30 READABLE_EVENTS_DO_TIMERS_NOW c-src/emacs/src/keyboard.c 346 @@ -1498,7 +1499,6 @@ Vglobal_abbrev_table c-src/abbrev.c 48 Vlast_abbrev c-src/abbrev.c 70 Vlast_abbrev_text c-src/abbrev.c 75 Vlispy_mouse_stem c-src/emacs/src/keyboard.c 5172 -Vpre_abbrev_expand_hook c-src/abbrev.c 83 WAIT_READING_MAX c-src/emacs/src/lisp.h 4281 WAIT_READING_MAX c-src/emacs/src/lisp.h 4283 WARNINGS make-src/Makefile /^WARNINGS=-pedantic -Wall -Wpointer-arith -Winline / @@ -1732,7 +1732,6 @@ Z c-src/h.h 100 \1 c-src/abbrev.c /^ DEFVAR_PER_BUFFER ("local-abbrev-table", ¤/ \1 c-src/abbrev.c /^ DEFVAR_BOOL ("abbrevs-changed", &abbrevs_changed/ \1 c-src/abbrev.c /^ DEFVAR_BOOL ("abbrev-all-caps", &abbrev_all_caps/ -\1 c-src/abbrev.c /^ DEFVAR_LISP ("pre-abbrev-expand-hook", &Vpre_abb/ \1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("internal--top-level-message", Vint/ \1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-command-event", last_command_/ \1 c-src/emacs/src/keyboard.c /^ DEFVAR_LISP ("last-nonmenu-event", last_nonmenu_/ @@ -4326,6 +4325,7 @@ test php-src/ptest.php /^test $/ test-begin scm-src/test.scm /^(define-syntax test-begin$/ 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)$/ texttreelist prol-src/natded.prolog /^texttreelist([]).$/ there-is-a-=-in-the-middle! scm-src/test.scm /^(define (there-is-a-=-in-the-middle!) #t)$/ diff --git a/test/manual/etags/ETAGS.good_1 b/test/manual/etags/ETAGS.good_1 index e6b060f3352..a8470ea1393 100644 --- a/test/manual/etags/ETAGS.good_1 +++ b/test/manual/etags/ETAGS.good_1 @@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153 protected body Bidule Bidule/b139,2181 protected body Machin_T Machin_T/b146,2281 -c-src/abbrev.c,2072 +c-src/abbrev.c,1957 Lisp_Object Vabbrev_table_name_list;43,1429 Lisp_Object Vglobal_abbrev_table;48,1574 Lisp_Object Vfundamental_mode_abbrev_table;52,1685 @@ -186,33 +186,31 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046 Lisp_Object Vlast_abbrev;70,2155 Lisp_Object Vlast_abbrev_text;75,2324 int last_abbrev_point;79,2414 -Lisp_Object Vpre_abbrev_expand_hook,83,2487 -Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743 -DEFUN ("define-abbrev", Fdefine_abbrev,107,3124 -DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev149,4443 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814 -DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282 -DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282 -DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246 -DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246 -DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761 -DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682 -write_abbrev 426,12889 -describe_abbrev 445,13324 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,466,13839 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description466,13839 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table506,14995 -syms_of_abbrev 540,16072 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632 +DEFUN ("define-abbrev", Fdefine_abbrev,104,3013 +DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev146,4332 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703 +DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171 +DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171 +DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135 +DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135 +DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650 +DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495 +write_abbrev 420,12702 +describe_abbrev 439,13137 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,460,13652 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description460,13652 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table500,14808 +syms_of_abbrev 534,15885 c-src/torture.c,197 (*tag1 tag118,452 @@ -1039,155 +1037,155 @@ make_lispy_position 5228,157391 toolkit_menubar_in_use 5456,163954 make_scroll_bar_position 5469,164322 make_lispy_event 5485,164968 -make_lispy_movement 6104,183532 -make_lispy_switch_frame 6131,184263 -make_lispy_focus_in 6137,184370 -make_lispy_focus_out 6145,184496 -parse_modifiers_uncached 6163,184946 -#define SINGLE_LETTER_MOD(6185,185466 -#undef SINGLE_LETTER_MOD6212,185907 -#define MULTI_LETTER_MOD(6214,185933 -#undef MULTI_LETTER_MOD6231,186401 -apply_modifiers_uncached 6273,187575 -static const char *const modifier_names[modifier_names6319,189194 -#define NUM_MOD_NAMES 6325,189400 -static Lisp_Object modifier_symbols;6327,189450 -lispy_modifier_list 6331,189587 -#define KEY_TO_CHAR(6353,190253 -parse_modifiers 6356,190329 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191518 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518 -apply_modifiers 6422,192392 -reorder_modifiers 6491,194721 -modify_event_symbol 6536,196529 -DEFUN ("event-convert-list", Fevent_convert_list,6628,199245 -DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199245 -parse_solitary_modifier 6695,201136 -#define SINGLE_LETTER_MOD(6701,201259 -#define MULTI_LETTER_MOD(6705,201344 -#undef SINGLE_LETTER_MOD6763,202642 -#undef MULTI_LETTER_MOD6764,202667 -lucid_event_type_list_p 6775,202890 -get_input_pending 6814,203961 -record_asynch_buffer_change 6834,204580 -gobble_input 6872,205703 -tty_read_avail_input 6967,208311 -handle_async_input 7149,214040 -process_pending_signals 7165,214360 -unblock_input_to 7177,214646 -unblock_input 7200,215278 -totally_unblock_input 7209,215446 -handle_input_available_signal 7217,215530 -deliver_input_available_signal 7226,215701 -struct user_signal_info7235,215866 -static struct user_signal_info *user_signals user_signals7250,216091 -add_user_signal 7253,216150 -handle_user_signal 7275,216599 -deliver_user_signal 7316,217559 -find_user_signal_name 7322,217660 -store_user_signal_events 7334,217842 -static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417 -static Lisp_Object menu_bar_items_vector;7368,218631 -static int menu_bar_items_index;7369,218673 -static const char *separator_names[separator_names7372,218708 -menu_separator_name_p 7393,219149 -menu_bar_items 7426,219853 -Lisp_Object item_properties;7568,224604 -menu_bar_item 7571,224646 -menu_item_eval_property_1 7647,227176 -eval_dyn 7658,227466 -menu_item_eval_property 7666,227676 -parse_menu_item 7686,228342 -static Lisp_Object tool_bar_items_vector;7965,236337 -static Lisp_Object tool_bar_item_properties;7970,236511 -static int ntool_bar_items;7974,236607 -tool_bar_items 7990,237084 -process_tool_bar_item 8075,239893 -#define PROP(8112,240970 -set_prop 8114,241039 -parse_tool_bar_item 8167,242454 -#undef PROP8379,248845 -init_tool_bar_items 8387,248970 -append_tool_bar_item 8401,249262 -read_char_x_menu_prompt 8443,250772 -read_char_minibuf_menu_prompt 8503,252446 -#define PUSH_C_STR(8527,253015 -follow_key 8726,258554 -active_maps 8733,258696 -typedef struct keyremap8742,259022 -} keyremap;8754,259465 -access_keymap_keyremap 8764,259809 -keyremap_step 8811,261451 -test_undefined 8867,262935 -read_key_sequence 8916,264862 -read_key_sequence_vs 9826,295822 -DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295 -DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299983 -detect_input_pending 9950,300489 -detect_input_pending_ignore_squeezables 9959,300655 -detect_input_pending_run_timers 9967,300871 -clear_input_pending 9985,301363 -requeued_events_pending_p 9997,301733 -DEFUN ("input-pending-p", Finput_pending_p,10002,301814 -DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814 -DEFUN ("recent-keys", Frecent_keys,10024,302597 -DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597 -DEFUN ("this-command-keys", Fthis_command_keys,10055,303518 -DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303959 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304381 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304956 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305496 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306511 -DEFUN ("recursion-depth", Frecursion_depth,10158,307070 -DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070 -DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407 -DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407 -DEFUN ("discard-input", Fdiscard_input,10203,308448 -DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448 -DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950 -DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950 -stuff_buffered_input 10285,311046 -set_waiting_for_input 10323,312017 -clear_waiting_for_input 10337,312391 -handle_interrupt_signal 10351,312755 -deliver_interrupt_signal 10378,313643 -static int volatile force_quit_count;10387,313933 -handle_interrupt 10401,314415 -quit_throw_to_read_char 10541,318712 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289 -DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517 -DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320517 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321433 -DEFUN ("set-quit-char", Fset_quit_char,10694,322707 -DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707 -DEFUN ("set-input-mode", Fset_input_mode,10729,323571 -DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571 -DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460 -DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324460 -DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838 -DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838 -DEFUN ("posn-at-point", Fposn_at_point,10824,327061 -DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061 -init_kboard 10861,328215 -allocate_kboard 10893,329285 -wipe_kboard 10909,329638 -delete_kboard 10917,329752 -init_keyboard 10942,330282 -struct event_head11021,332697 -static const struct event_head head_table[head_table11027,332748 -syms_of_keyboard 11045,333578 -keys_of_keyboard 11841,367116 -mark_kboards 11916,370435 +make_lispy_movement 6104,183531 +make_lispy_switch_frame 6131,184262 +make_lispy_focus_in 6137,184369 +make_lispy_focus_out 6145,184495 +parse_modifiers_uncached 6163,184945 +#define SINGLE_LETTER_MOD(6185,185465 +#undef SINGLE_LETTER_MOD6212,185906 +#define MULTI_LETTER_MOD(6214,185932 +#undef MULTI_LETTER_MOD6231,186400 +apply_modifiers_uncached 6273,187574 +static const char *const modifier_names[modifier_names6319,189193 +#define NUM_MOD_NAMES 6325,189399 +static Lisp_Object modifier_symbols;6327,189449 +lispy_modifier_list 6331,189586 +#define KEY_TO_CHAR(6353,190252 +parse_modifiers 6356,190328 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191517 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517 +apply_modifiers 6422,192391 +reorder_modifiers 6491,194720 +modify_event_symbol 6536,196528 +DEFUN ("event-convert-list", Fevent_convert_list,6628,199244 +DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199244 +parse_solitary_modifier 6695,201135 +#define SINGLE_LETTER_MOD(6701,201258 +#define MULTI_LETTER_MOD(6705,201343 +#undef SINGLE_LETTER_MOD6763,202641 +#undef MULTI_LETTER_MOD6764,202666 +lucid_event_type_list_p 6775,202889 +get_input_pending 6814,203960 +record_asynch_buffer_change 6834,204579 +gobble_input 6872,205702 +tty_read_avail_input 6967,208310 +handle_async_input 7149,214039 +process_pending_signals 7165,214359 +unblock_input_to 7177,214645 +unblock_input 7200,215277 +totally_unblock_input 7209,215445 +handle_input_available_signal 7217,215529 +deliver_input_available_signal 7226,215700 +struct user_signal_info7235,215865 +static struct user_signal_info *user_signals user_signals7250,216090 +add_user_signal 7253,216149 +handle_user_signal 7275,216598 +deliver_user_signal 7316,217558 +find_user_signal_name 7322,217659 +store_user_signal_events 7334,217841 +static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416 +static Lisp_Object menu_bar_items_vector;7368,218630 +static int menu_bar_items_index;7369,218672 +static const char *separator_names[separator_names7372,218707 +menu_separator_name_p 7393,219148 +menu_bar_items 7426,219852 +Lisp_Object item_properties;7568,224603 +menu_bar_item 7571,224645 +menu_item_eval_property_1 7647,227175 +eval_dyn 7658,227465 +menu_item_eval_property 7666,227675 +parse_menu_item 7686,228341 +static Lisp_Object tool_bar_items_vector;7965,236336 +static Lisp_Object tool_bar_item_properties;7970,236510 +static int ntool_bar_items;7974,236606 +tool_bar_items 7990,237083 +process_tool_bar_item 8075,239892 +#define PROP(8112,240969 +set_prop 8114,241038 +parse_tool_bar_item 8167,242453 +#undef PROP8379,248844 +init_tool_bar_items 8387,248969 +append_tool_bar_item 8401,249261 +read_char_x_menu_prompt 8443,250771 +read_char_minibuf_menu_prompt 8503,252445 +#define PUSH_C_STR(8527,253014 +follow_key 8726,258553 +active_maps 8733,258695 +typedef struct keyremap8742,259021 +} keyremap;8754,259464 +access_keymap_keyremap 8764,259808 +keyremap_step 8811,261450 +test_undefined 8867,262934 +read_key_sequence 8916,264861 +read_key_sequence_vs 9826,295821 +DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294 +DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299982 +detect_input_pending 9950,300488 +detect_input_pending_ignore_squeezables 9959,300654 +detect_input_pending_run_timers 9967,300870 +clear_input_pending 9985,301362 +requeued_events_pending_p 9997,301732 +DEFUN ("input-pending-p", Finput_pending_p,10002,301813 +DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813 +DEFUN ("recent-keys", Frecent_keys,10024,302596 +DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596 +DEFUN ("this-command-keys", Fthis_command_keys,10055,303517 +DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303958 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304380 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304955 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305495 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306510 +DEFUN ("recursion-depth", Frecursion_depth,10158,307069 +DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069 +DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406 +DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406 +DEFUN ("discard-input", Fdiscard_input,10203,308447 +DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447 +DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949 +DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949 +stuff_buffered_input 10285,311045 +set_waiting_for_input 10323,312016 +clear_waiting_for_input 10337,312390 +handle_interrupt_signal 10351,312754 +deliver_interrupt_signal 10378,313642 +static int volatile force_quit_count;10387,313932 +handle_interrupt 10401,314414 +quit_throw_to_read_char 10541,318711 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288 +DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516 +DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320516 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321432 +DEFUN ("set-quit-char", Fset_quit_char,10694,322706 +DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706 +DEFUN ("set-input-mode", Fset_input_mode,10729,323570 +DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570 +DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459 +DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324459 +DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837 +DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837 +DEFUN ("posn-at-point", Fposn_at_point,10824,327060 +DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060 +init_kboard 10861,328214 +allocate_kboard 10893,329284 +wipe_kboard 10909,329637 +delete_kboard 10917,329751 +init_keyboard 10942,330281 +struct event_head11021,332696 +static const struct event_head head_table[head_table11027,332747 +syms_of_keyboard 11045,333577 +keys_of_keyboard 11841,367115 +mark_kboards 11916,370434 c-src/emacs/src/lisp.h,20276 #define EMACS_LISP_H22,801 @@ -2906,22 +2904,22 @@ ord_add_element(71,1867 ord_del_element(85,2344 ord_disjoint(100,2783 ord_intersect(108,2953 -ord_intersection(126,3552 -ord_intersection3(130,3691 -ord_intersection(150,4531 -ord_intersection4(154,4703 -ord_intersection(176,5664 -ord_intersection2(181,5812 -ord_member(200,6318 -ord_seteq(216,6683 -ord_setproduct(225,6971 -ord_subset(240,7377 -ord_subtract(257,7861 -ord_symdiff(265,8054 -ord_union(288,8887 -ord_union4(303,9352 -ord_union(324,10171 -ord_union_all(329,10313 +ord_intersection(126,3553 +ord_intersection3(130,3692 +ord_intersection(150,4533 +ord_intersection4(154,4705 +ord_intersection(176,5666 +ord_intersection2(181,5814 +ord_member(200,6320 +ord_seteq(216,6685 +ord_setproduct(225,6973 +ord_subset(240,7379 +ord_subtract(257,7863 +ord_symdiff(265,8056 +ord_union(288,8889 +ord_union4(303,9354 +ord_union(324,10173 +ord_union_all(329,10315 prol-src/natded.prolog,2319 expandmng(100,2879 @@ -3136,6 +3134,11 @@ module A9,57 alias_method ( :foo2,foo237,586 A::Constant Constant42,655 +rs-src/test.rs,52 +enum IpAddrKind 3,11 +fn test1(8,48 +fn main(12,88 + scm-src/test.scm,260 (define hello 1,0 (set! hello 3,32 @@ -3350,533 +3353,533 @@ tex-src/texinfo.tex,30627 \def\vritemindex #1{\vritemindex1068,35482 \def\tablez #1#2#3#4#5#6{\tablez1074,35631 \def\Edescription{\Edescription1077,35689 -\def\itemfont{\itemfont1082,35891 -\def\Etable{\Etable1090,36117 -\def\itemize{\itemize1103,36441 -\def\itemizezzz #1{\itemizezzz1105,36477 -\def\itemizey #1#2{\itemizey1110,36572 -\def#2{1119,36818 -\def\itemcontents{\itemcontents1120,36859 -\def\bullet{\bullet1123,36907 -\def\minus{\minus1124,36934 -\def\frenchspacing{\frenchspacing1128,37042 -\def\splitoff#1#2\endmark{\splitoff1134,37267 -\def\enumerate{\enumerate1140,37497 -\def\enumeratezzz #1{\enumeratezzz1141,37536 -\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589 - \def\thearg{\thearg1146,37736 - \ifx\thearg\empty \def\thearg{\thearg1147,37755 -\def\numericenumerate{\numericenumerate1184,39089 -\def\lowercaseenumerate{\lowercaseenumerate1190,39219 -\def\uppercaseenumerate{\uppercaseenumerate1203,39566 -\def\startenumeration#1{\startenumeration1219,40056 -\def\alphaenumerate{\alphaenumerate1227,40238 -\def\capsenumerate{\capsenumerate1228,40273 -\def\Ealphaenumerate{\Ealphaenumerate1229,40307 -\def\Ecapsenumerate{\Ecapsenumerate1230,40341 -\def\itemizeitem{\itemizeitem1234,40421 -\def\newindex #1{\newindex1259,41278 -\def\defindex{\defindex1268,41567 -\def\newcodeindex #1{\newcodeindex1272,41675 -\def\defcodeindex{\defcodeindex1279,41935 -\def\synindex #1 #2 {\synindex1283,42115 -\def\syncodeindex #1 #2 {\syncodeindex1292,42455 -\def\doindex#1{\doindex1309,43134 -\def\singleindexer #1{\singleindexer1310,43193 -\def\docodeindex#1{\docodeindex1313,43305 -\def\singlecodeindexer #1{\singlecodeindexer1314,43372 -\def\indexdummies{\indexdummies1316,43430 -\def\_{\_1317,43450 -\def\w{\w1318,43478 -\def\bf{\bf1319,43505 -\def\rm{\rm1320,43534 -\def\sl{\sl1321,43563 -\def\sf{\sf1322,43592 -\def\tt{\tt1323,43620 -\def\gtr{\gtr1324,43648 -\def\less{\less1325,43678 -\def\hat{\hat1326,43710 -\def\char{\char1327,43740 -\def\TeX{\TeX1328,43772 -\def\dots{\dots1329,43802 -\def\copyright{\copyright1330,43835 -\def\tclose##1{\tclose1331,43878 -\def\code##1{\code1332,43923 -\def\samp##1{\samp1333,43964 -\def\t##1{\t1334,44005 -\def\r##1{\r1335,44040 -\def\i##1{\i1336,44075 -\def\b##1{\b1337,44110 -\def\cite##1{\cite1338,44145 -\def\key##1{\key1339,44186 -\def\file##1{\file1340,44225 -\def\var##1{\var1341,44266 -\def\kbd##1{\kbd1342,44305 -\def\indexdummyfont#1{\indexdummyfont1347,44461 -\def\indexdummytex{\indexdummytex1348,44487 -\def\indexdummydots{\indexdummydots1349,44511 -\def\indexnofonts{\indexnofonts1351,44537 -\let\w=\indexdummyfontdummyfont1352,44557 -\let\t=\indexdummyfontdummyfont1353,44580 -\let\r=\indexdummyfontdummyfont1354,44603 -\let\i=\indexdummyfontdummyfont1355,44626 -\let\b=\indexdummyfontdummyfont1356,44649 -\let\emph=\indexdummyfontdummyfont1357,44672 -\let\strong=\indexdummyfontdummyfont1358,44698 -\let\cite=\indexdummyfont=\indexdummyfont1359,44726 -\let\sc=\indexdummyfontdummyfont1360,44752 -\let\tclose=\indexdummyfontdummyfont1364,44924 -\let\code=\indexdummyfontdummyfont1365,44952 -\let\file=\indexdummyfontdummyfont1366,44978 -\let\samp=\indexdummyfontdummyfont1367,45004 -\let\kbd=\indexdummyfontdummyfont1368,45030 -\let\key=\indexdummyfontdummyfont1369,45055 -\let\var=\indexdummyfontdummyfont1370,45080 -\let\TeX=\indexdummytexdummytex1371,45105 -\let\dots=\indexdummydotsdummydots1372,45129 -\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45381 -\def\doind #1#2{\doind1384,45437 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45480 -\def\rawbackslashxx{\rawbackslashxx1389,45620 -{\indexnofontsnofonts1394,45882 -\def\dosubind #1#2#3{\dosubind1405,46193 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46241 -\def\rawbackslashxx{\rawbackslashxx1410,46345 -{\indexnofontsnofonts1414,46499 -\def\findex {\findex1443,47430 -\def\kindex {\kindex1444,47453 -\def\cindex {\cindex1445,47476 -\def\vindex {\vindex1446,47499 -\def\tindex {\tindex1447,47522 -\def\pindex {\pindex1448,47545 -\def\cindexsub {\cindexsub1450,47569 -\def\printindex{\printindex1462,47896 -\def\doprintindex#1{\doprintindex1464,47937 - \def\indexbackslash{\indexbackslash1481,48422 - \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461 -\def\initial #1{\initial1517,49533 -\def\entry #1#2{\entry1523,49740 - \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50387 -\def\indexdotfill{\indexdotfill1549,50715 -\def\primary #1{\primary1552,50821 -\def\secondary #1#2{\secondary1556,50903 -\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985 -\newbox\partialpageialpage1566,51158 -\def\begindoublecolumns{\begindoublecolumns1572,51316 - \output={\global\setbox\partialpage=ialpage=1573,51352 -\def\enddoublecolumns{\enddoublecolumns1577,51540 -\def\doublecolumnout{\doublecolumnout1580,51625 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694 -\def\pagesofar{\pagesofar1584,51872 -\def\balancecolumns{\balancecolumns1588,52109 - \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52280 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541 -\newcount \appendixno \appendixno = `\@no1627,53446 -\def\appendixletter{\appendixletter1628,53487 -\def\opencontents{\opencontents1632,53590 -\def\thischapter{\thischapter1637,53771 -\def\seccheck#1{\seccheck1638,53809 -\def\chapternofonts{\chapternofonts1643,53913 -\def\result{\result1646,53988 -\def\equiv{\equiv1647,54023 -\def\expansion{\expansion1648,54056 -\def\print{\print1649,54097 -\def\TeX{\TeX1650,54130 -\def\dots{\dots1651,54159 -\def\copyright{\copyright1652,54190 -\def\tt{\tt1653,54231 -\def\bf{\bf1654,54258 -\def\w{\w1655,54286 -\def\less{\less1656,54311 -\def\gtr{\gtr1657,54342 -\def\hat{\hat1658,54371 -\def\char{\char1659,54400 -\def\tclose##1{\tclose1660,54431 -\def\code##1{\code1661,54475 -\def\samp##1{\samp1662,54515 -\def\r##1{\r1663,54555 -\def\b##1{\b1664,54589 -\def\key##1{\key1665,54623 -\def\file##1{\file1666,54661 -\def\kbd##1{\kbd1667,54701 -\def\i##1{\i1669,54809 -\def\cite##1{\cite1670,54843 -\def\var##1{\var1671,54883 -\def\emph##1{\emph1672,54921 -\def\dfn##1{\dfn1673,54961 -\def\thischaptername{\thischaptername1676,55002 -\outer\def\chapter{\chapter1677,55041 -\def\chapterzzz #1{\chapterzzz1678,55082 -{\chapternofonts%nofonts%1687,55478 -\global\let\section = \numberedsec=1692,55631 -\global\let\subsection = \numberedsubsec=1693,55666 -\global\let\subsubsection = \numberedsubsubsec=1694,55707 -\outer\def\appendix{\appendix1697,55758 -\def\appendixzzz #1{\appendixzzz1698,55801 -\global\advance \appendixno by 1 \message{no1700,55878 -\chapmacro {#1}{Appendix \appendixletter}letter1701,55947 -\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56040 -{\chapternofonts%nofonts%1705,56112 - {#1}{Appendix \appendixletter}letter1707,56168 -\appendixnoderef %noderef1710,56268 -\global\let\section = \appendixsec=1711,56287 -\global\let\subsection = \appendixsubsec=1712,56322 -\global\let\subsubsection = \appendixsubsubsec=1713,56363 -\outer\def\top{\top1716,56414 -\outer\def\unnumbered{\unnumbered1717,56454 -\def\unnumberedzzz #1{\unnumberedzzz1718,56501 -{\chapternofonts%nofonts%1722,56664 -\global\let\section = \unnumberedsec=1727,56814 -\global\let\subsection = \unnumberedsubsec=1728,56851 -\global\let\subsubsection = \unnumberedsubsubsec=1729,56894 -\outer\def\numberedsec{\numberedsec1732,56947 -\def\seczzz #1{\seczzz1733,56988 -{\chapternofonts%nofonts%1736,57144 -\outer\def\appendixsection{\appendixsection1745,57330 -\outer\def\appendixsec{\appendixsec1746,57387 -\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440 -\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552 -{\chapternofonts%nofonts%1750,57620 -{#1}{\appendixletter}letter1752,57676 -\appendixnoderef %noderef1755,57776 -\outer\def\unnumberedsec{\unnumberedsec1759,57816 -\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869 -{\chapternofonts%nofonts%1762,57964 -\outer\def\numberedsubsec{\numberedsubsec1770,58132 -\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187 -{\chapternofonts%nofonts%1774,58366 -\outer\def\appendixsubsec{\appendixsubsec1783,58570 -\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625 -\subsecheading {#1}{\appendixletter}letter1786,58747 -{\chapternofonts%nofonts%1787,58812 -{#1}{\appendixletter}letter1789,58871 -\appendixnoderef %noderef1792,58986 -\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026 -\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085 -{\chapternofonts%nofonts%1799,59186 -\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357 -\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418 -{\chapternofonts%nofonts%1812,59615 -\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848 -\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909 - {\appendixletter}letter1827,60048 -{\chapternofonts%nofonts%1828,60114 - {\appendixletter}letter1830,60179 -\appendixnoderef %noderef1834,60313 -\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353 -\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418 -{\chapternofonts%nofonts%1841,60525 -\def\infotop{\infotop1851,60854 -\def\infounnumbered{\infounnumbered1852,60892 -\def\infounnumberedsec{\infounnumberedsec1853,60937 -\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988 -\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045 -\def\infoappendix{\infoappendix1857,61109 -\def\infoappendixsec{\infoappendixsec1858,61150 -\def\infoappendixsubsec{\infoappendixsubsec1859,61197 -\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250 -\def\infochapter{\infochapter1862,61310 -\def\infosection{\infosection1863,61349 -\def\infosubsection{\infosubsection1864,61388 -\def\infosubsubsection{\infosubsubsection1865,61433 -\global\let\section = \numberedsec=1870,61670 -\global\let\subsection = \numberedsubsec=1871,61705 -\global\let\subsubsection = \numberedsubsubsec=1872,61746 -\def\majorheading{\majorheading1886,62253 -\def\majorheadingzzz #1{\majorheadingzzz1887,62298 -\def\chapheading{\chapheading1893,62531 -\def\chapheadingzzz #1{\chapheadingzzz1894,62574 -\def\heading{\heading1899,62769 -\def\subheading{\subheading1901,62806 -\def\subsubheading{\subsubheading1903,62849 -\def\dobreak#1#2{\dobreak1910,63126 -\def\setchapterstyle #1 {\setchapterstyle1912,63204 -\def\chapbreak{\chapbreak1919,63459 -\def\chappager{\chappager1920,63509 -\def\chapoddpage{\chapoddpage1921,63547 -\def\setchapternewpage #1 {\setchapternewpage1923,63626 -\def\CHAPPAGoff{\CHAPPAGoff1925,63683 -\def\CHAPPAGon{\CHAPPAGon1929,63777 -\global\def\HEADINGSon{\HEADINGSon1932,63868 -\def\CHAPPAGodd{\CHAPPAGodd1934,63910 -\global\def\HEADINGSon{\HEADINGSon1937,64006 -\def\CHAPFplain{\CHAPFplain1941,64060 -\def\chfplain #1#2{\chfplain1945,64152 -\def\unnchfplain #1{\unnchfplain1956,64375 -\def\unnchfopen #1{\unnchfopen1964,64604 -\def\chfopen #1#2{\chfopen1970,64812 -\def\CHAPFopen{\CHAPFopen1975,64956 -\def\subsecheadingbreak{\subsecheadingbreak1982,65174 -\def\secheadingbreak{\secheadingbreak1985,65303 -\def\secheading #1#2#3{\secheading1993,65585 -\def\plainsecheading #1{\plainsecheading1994,65641 -\def\secheadingi #1{\secheadingi1995,65684 -\def\subsecheading #1#2#3#4{\subsecheading2006,66052 -\def\subsecheadingi #1{\subsecheadingi2007,66119 -\def\subsubsecfonts{\subsubsecfonts2014,66416 -\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539 -\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617 -\def\startcontents#1{\startcontents2032,67089 - \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362 -\outer\def\contents{\contents2049,67721 -\outer\def\summarycontents{\summarycontents2057,67865 - \def\secentry ##1##2##3##4{\secentry2067,68236 - \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271 - \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306 - \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347 - \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385 - \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432 -\def\chapentry#1#2#3{\chapentry2085,68866 -\def\shortchapentry#1#2#3{\shortchapentry2088,68983 - {#2\labelspace #1}space2091,69093 -\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147 -\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194 -\def\secentry#1#2#3#4{\secentry2102,69358 -\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417 -\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478 -\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548 -\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622 - \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656 -\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707 -\def\dochapentry#1#2{\dochapentry2123,70081 -\def\dosecentry#1#2{\dosecentry2138,70686 -\def\dosubsecentry#1#2{\dosubsecentry2145,70864 -\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049 -\def\labelspace{\labelspace2160,71300 -\def\dopageno#1{\dopageno2162,71335 -\def\doshortpageno#1{\doshortpageno2163,71361 -\def\chapentryfonts{\chapentryfonts2165,71393 -\def\secentryfonts{\secentryfonts2166,71428 -\def\point{\point2192,72387 -\def\result{\result2194,72408 -\def\expansion{\expansion2195,72481 -\def\print{\print2196,72552 -\def\equiv{\equiv2198,72619 -\def\error{\error2218,73392 -\def\tex{\tex2224,73621 -\def\@{\@2242,74004 -\gdef\sepspaces{\def {\ }}}\2265,74736 -\def\aboveenvbreak{\aboveenvbreak2268,74818 -\def\afterenvbreak{\afterenvbreak2272,74984 -\def\ctl{\ctl2286,75495 -\def\ctr{\ctr2287,75567 -\def\cbl{\cbl2288,75606 -\def\cbr{\cbr2289,75646 -\def\carttop{\carttop2290,75685 -\def\cartbot{\cartbot2293,75793 -\long\def\cartouche{\cartouche2299,75933 -\def\Ecartouche{\Ecartouche2326,76721 -\def\lisp{\lisp2338,76856 -\def\Elisp{\Elisp2348,77203 -\def\next##1{\next2360,77529 -\def\Eexample{\Eexample2364,77571 -\def\Esmallexample{\Esmallexample2367,77618 -\def\smalllispx{\smalllispx2373,77796 -\def\Esmalllisp{\Esmalllisp2383,78150 -\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506 -\def\next##1{\next2397,78563 -\def\display{\display2401,78643 -\def\Edisplay{\Edisplay2410,78962 -\def\next##1{\next2422,79273 -\def\format{\format2426,79376 -\def\Eformat{\Eformat2434,79672 -\def\next##1{\next2437,79761 -\def\flushleft{\flushleft2441,79813 -\def\Eflushleft{\Eflushleft2451,80184 -\def\next##1{\next2454,80277 -\def\flushright{\flushright2456,80299 -\def\Eflushright{\Eflushright2466,80671 -\def\next##1{\next2470,80802 -\def\quotation{\quotation2474,80860 -\def\Equotation{\Equotation2480,81052 -\def\setdeffont #1 {\setdeffont2493,81450 -\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496 -\newskip\defargsindent \defargsindent=50ptargsindent2496,81539 -\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582 -\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625 -\def\activeparens{\activeparens2503,81823 -\def\opnr{\opnr2529,83035 -\def\lbrb{\lbrb2530,83100 -\def\defname #1#2{\defname2536,83301 -\advance\dimen2 by -\defbodyindentbodyindent2540,83419 -\advance\dimen3 by -\defbodyindentbodyindent2542,83473 -\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527 -\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83669 -\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83744 -\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113 -\advance\leftskip by -\defbodyindentbodyindent2557,84247 -\exdentamount=\defbodyindentbodyindent2558,84284 -\def\defparsebody #1#2#3{\defparsebody2568,84643 -\def#1{2572,84827 -\def#2{2573,84863 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84935 -\exdentamount=\defbodyindentbodyindent2576,85009 -\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113 -\def#1{2585,85274 -\def#2##1 {2586,85310 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85393 -\exdentamount=\defbodyindentbodyindent2589,85467 -\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552 -\def#1{2596,85713 -\def#2##1 ##2 {2597,85749 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85849 -\exdentamount=\defbodyindentbodyindent2601,85923 -\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194 -\def#1{2612,86381 -\def#2{2613,86417 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86476 -\exdentamount=\defbodyindentbodyindent2616,86550 -\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641 -\def#1{2625,86800 -\def#2##1 {2626,86836 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86906 -\exdentamount=\defbodyindentbodyindent2629,86980 -\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052 -\def#1{2636,87216 -\def#2##1 ##2 {2637,87252 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87339 -\exdentamount=\defbodyindentbodyindent2641,87413 -\def\defunargs #1{\defunargs2664,88173 -\def\deftypefunargs #1{\deftypefunargs2676,88555 -\def\deffn{\deffn2690,88937 -\def\deffnheader #1#2#3{\deffnheader2692,88994 -\begingroup\defname {name2693,89042 -\def\defun{\defun2699,89187 -\def\defunheader #1#2{\defunheader2701,89240 -\begingroup\defname {name2702,89315 -\defunargs {unargs2703,89351 -\def\deftypefun{\deftypefun2709,89499 -\def\deftypefunheader #1#2{\deftypefunheader2712,89621 -\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730 -\begingroup\defname {name2716,89822 -\deftypefunargs {typefunargs2717,89868 -\def\deftypefn{\deftypefn2723,90039 -\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188 -\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324 -\begingroup\defname {name2730,90417 -\deftypefunargs {typefunargs2731,90457 -\def\defmac{\defmac2737,90578 -\def\defmacheader #1#2{\defmacheader2739,90635 -\begingroup\defname {name2740,90711 -\defunargs {unargs2741,90744 -\def\defspec{\defspec2747,90868 -\def\defspecheader #1#2{\defspecheader2749,90929 -\begingroup\defname {name2750,91006 -\defunargs {unargs2751,91046 -\def\deffnx #1 {\deffnx2758,91241 -\def\defunx #1 {\defunx2759,91298 -\def\defmacx #1 {\defmacx2760,91355 -\def\defspecx #1 {\defspecx2761,91414 -\def\deftypefnx #1 {\deftypefnx2762,91475 -\def\deftypeunx #1 {\deftypeunx2763,91540 -\def\defop #1 {\defop2769,91686 -\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721 -\def\defopheader #1#2#3{\defopheader2772,91775 -\begingroup\defname {name2774,91864 -\defunargs {unargs2775,91910 -\def\defmethod{\defmethod2780,91971 -\def\defmethodheader #1#2#3{\defmethodheader2782,92044 -\begingroup\defname {name2784,92132 -\defunargs {unargs2785,92172 -\def\defcv #1 {\defcv2790,92246 -\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281 -\def\defcvarheader #1#2#3{\defcvarheader2793,92340 -\begingroup\defname {name2795,92426 -\defvarargs {varargs2796,92472 -\def\defivar{\defivar2801,92545 -\def\defivarheader #1#2#3{\defivarheader2803,92608 -\begingroup\defname {name2805,92694 -\defvarargs {varargs2806,92745 -\def\defopx #1 {\defopx2812,92894 -\def\defmethodx #1 {\defmethodx2813,92951 -\def\defcvx #1 {\defcvx2814,93016 -\def\defivarx #1 {\defivarx2815,93073 -\def\defvarargs #1{\defvarargs2822,93344 -\def\defvr{\defvr2828,93488 -\def\defvrheader #1#2#3{\defvrheader2830,93543 -\begingroup\defname {name2831,93591 -\def\defvar{\defvar2835,93676 -\def\defvarheader #1#2{\defvarheader2837,93736 -\begingroup\defname {name2838,93807 -\defvarargs {varargs2839,93843 -\def\defopt{\defopt2844,93909 -\def\defoptheader #1#2{\defoptheader2846,93969 -\begingroup\defname {name2847,94040 -\defvarargs {varargs2848,94079 -\def\deftypevar{\deftypevar2853,94136 -\def\deftypevarheader #1#2{\deftypevarheader2856,94252 -\begingroup\defname {name2858,94335 -\def\deftypevr{\deftypevr2865,94509 -\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580 -\begingroup\defname {name2868,94632 -\def\defvrx #1 {\defvrx2876,94869 -\def\defvarx #1 {\defvarx2877,94926 -\def\defoptx #1 {\defoptx2878,94985 -\def\deftypevarx #1 {\deftypevarx2879,95044 -\def\deftypevrx #1 {\deftypevrx2880,95111 -\def\deftpargs #1{\deftpargs2885,95260 -\def\deftp{\deftp2889,95340 -\def\deftpheader #1#2#3{\deftpheader2891,95395 -\begingroup\defname {name2892,95443 -\def\deftpx #1 {\deftpx2897,95602 -\def\setref#1{\setref2908,95923 -\def\unnumbsetref#1{\unnumbsetref2913,96037 -\def\appendixsetref#1{\appendixsetref2918,96144 -\def\pxref#1{\pxref2929,96555 -\def\xref#1{\xref2930,96591 -\def\ref#1{\ref2931,96626 -\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656 -\def\printedmanual{\printedmanual2933,96699 -\def\printednodename{\printednodename2934,96737 -\def\printednodename{\printednodename2939,96862 -section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495 -\refx{x2957,97573 -\def\dosetq #1#2{\dosetq2965,97793 -\def\internalsetq #1#2{\internalsetq2973,98051 -\def\Ypagenumber{\Ypagenumber2977,98152 -\def\Ytitle{\Ytitle2979,98178 -\def\Ynothing{\Ynothing2981,98205 -\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222 -\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538 -\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568 -\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98623 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98727 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798 - \def\linenumber{\linenumber3009,99137 -\def\refx#1#2{\refx3015,99321 -\def\xrdef #1#2{\xrdef3037,99947 -\def\readauxfile{\readauxfile3040,100032 -\def\supereject{\supereject3110,101813 -\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498 -\def\openindices{\openindices3139,102684 -\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909 -\parindent = \defaultparindentaultparindent3152,102961 -\def\smallbook{\smallbook3175,103685 -\global\def\Esmallexample{\Esmallexample3192,104112 -\def\afourpaper{\afourpaper3196,104203 -\def\finalout{\finalout3224,105011 -\def\normaldoublequote{\normaldoublequote3235,105272 -\def\normaltilde{\normaltilde3236,105298 -\def\normalcaret{\normalcaret3237,105318 -\def\normalunderscore{\normalunderscore3238,105338 -\def\normalverticalbar{\normalverticalbar3239,105363 -\def\normalless{\normalless3240,105389 -\def\normalgreater{\normalgreater3241,105408 -\def\normalplus{\normalplus3242,105430 -\def\ifusingtt#1#2{\ifusingtt3253,105922 -\def\activedoublequote{\activedoublequote3261,106250 -\def~{~3264,106336 -\def^{^3267,106397 -\def_{_3270,106436 -\def\_{\_3272,106510 -\def\lvvmode{\lvvmode3279,106847 -\def|{|3282,106897 -\def<{<3285,106960 -\def>{>3288,107017 -\def+{+3290,107055 -\def\turnoffactive{\turnoffactive3296,107216 -\global\def={=3307,107502 -\def\normalbackslash{\normalbackslash3321,107884 +\def\itemfont{\itemfont1082,35890 +\def\Etable{\Etable1090,36116 +\def\itemize{\itemize1103,36440 +\def\itemizezzz #1{\itemizezzz1105,36476 +\def\itemizey #1#2{\itemizey1110,36571 +\def#2{1119,36817 +\def\itemcontents{\itemcontents1120,36858 +\def\bullet{\bullet1123,36906 +\def\minus{\minus1124,36933 +\def\frenchspacing{\frenchspacing1128,37041 +\def\splitoff#1#2\endmark{\splitoff1134,37266 +\def\enumerate{\enumerate1140,37496 +\def\enumeratezzz #1{\enumeratezzz1141,37535 +\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588 + \def\thearg{\thearg1146,37735 + \ifx\thearg\empty \def\thearg{\thearg1147,37754 +\def\numericenumerate{\numericenumerate1184,39088 +\def\lowercaseenumerate{\lowercaseenumerate1190,39218 +\def\uppercaseenumerate{\uppercaseenumerate1203,39565 +\def\startenumeration#1{\startenumeration1219,40055 +\def\alphaenumerate{\alphaenumerate1227,40237 +\def\capsenumerate{\capsenumerate1228,40272 +\def\Ealphaenumerate{\Ealphaenumerate1229,40306 +\def\Ecapsenumerate{\Ecapsenumerate1230,40340 +\def\itemizeitem{\itemizeitem1234,40420 +\def\newindex #1{\newindex1259,41277 +\def\defindex{\defindex1268,41566 +\def\newcodeindex #1{\newcodeindex1272,41674 +\def\defcodeindex{\defcodeindex1279,41934 +\def\synindex #1 #2 {\synindex1283,42114 +\def\syncodeindex #1 #2 {\syncodeindex1292,42454 +\def\doindex#1{\doindex1309,43133 +\def\singleindexer #1{\singleindexer1310,43192 +\def\docodeindex#1{\docodeindex1313,43304 +\def\singlecodeindexer #1{\singlecodeindexer1314,43371 +\def\indexdummies{\indexdummies1316,43429 +\def\_{\_1317,43449 +\def\w{\w1318,43477 +\def\bf{\bf1319,43504 +\def\rm{\rm1320,43533 +\def\sl{\sl1321,43562 +\def\sf{\sf1322,43591 +\def\tt{\tt1323,43619 +\def\gtr{\gtr1324,43647 +\def\less{\less1325,43677 +\def\hat{\hat1326,43709 +\def\char{\char1327,43739 +\def\TeX{\TeX1328,43771 +\def\dots{\dots1329,43801 +\def\copyright{\copyright1330,43834 +\def\tclose##1{\tclose1331,43877 +\def\code##1{\code1332,43922 +\def\samp##1{\samp1333,43963 +\def\t##1{\t1334,44004 +\def\r##1{\r1335,44039 +\def\i##1{\i1336,44074 +\def\b##1{\b1337,44109 +\def\cite##1{\cite1338,44144 +\def\key##1{\key1339,44185 +\def\file##1{\file1340,44224 +\def\var##1{\var1341,44265 +\def\kbd##1{\kbd1342,44304 +\def\indexdummyfont#1{\indexdummyfont1347,44460 +\def\indexdummytex{\indexdummytex1348,44486 +\def\indexdummydots{\indexdummydots1349,44510 +\def\indexnofonts{\indexnofonts1351,44536 +\let\w=\indexdummyfontdummyfont1352,44556 +\let\t=\indexdummyfontdummyfont1353,44579 +\let\r=\indexdummyfontdummyfont1354,44602 +\let\i=\indexdummyfontdummyfont1355,44625 +\let\b=\indexdummyfontdummyfont1356,44648 +\let\emph=\indexdummyfontdummyfont1357,44671 +\let\strong=\indexdummyfontdummyfont1358,44697 +\let\cite=\indexdummyfont=\indexdummyfont1359,44725 +\let\sc=\indexdummyfontdummyfont1360,44751 +\let\tclose=\indexdummyfontdummyfont1364,44923 +\let\code=\indexdummyfontdummyfont1365,44951 +\let\file=\indexdummyfontdummyfont1366,44977 +\let\samp=\indexdummyfontdummyfont1367,45003 +\let\kbd=\indexdummyfontdummyfont1368,45029 +\let\key=\indexdummyfontdummyfont1369,45054 +\let\var=\indexdummyfontdummyfont1370,45079 +\let\TeX=\indexdummytexdummytex1371,45104 +\let\dots=\indexdummydotsdummydots1372,45128 +\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45380 +\def\doind #1#2{\doind1384,45436 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45479 +\def\rawbackslashxx{\rawbackslashxx1389,45619 +{\indexnofontsnofonts1394,45881 +\def\dosubind #1#2#3{\dosubind1405,46192 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46240 +\def\rawbackslashxx{\rawbackslashxx1410,46344 +{\indexnofontsnofonts1414,46498 +\def\findex {\findex1443,47429 +\def\kindex {\kindex1444,47452 +\def\cindex {\cindex1445,47475 +\def\vindex {\vindex1446,47498 +\def\tindex {\tindex1447,47521 +\def\pindex {\pindex1448,47544 +\def\cindexsub {\cindexsub1450,47568 +\def\printindex{\printindex1462,47895 +\def\doprintindex#1{\doprintindex1464,47936 + \def\indexbackslash{\indexbackslash1481,48421 + \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460 +\def\initial #1{\initial1517,49532 +\def\entry #1#2{\entry1523,49739 + \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50386 +\def\indexdotfill{\indexdotfill1549,50714 +\def\primary #1{\primary1552,50820 +\def\secondary #1#2{\secondary1556,50902 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984 +\newbox\partialpageialpage1566,51157 +\def\begindoublecolumns{\begindoublecolumns1572,51315 + \output={\global\setbox\partialpage=ialpage=1573,51351 +\def\enddoublecolumns{\enddoublecolumns1577,51539 +\def\doublecolumnout{\doublecolumnout1580,51624 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693 +\def\pagesofar{\pagesofar1584,51871 +\def\balancecolumns{\balancecolumns1588,52108 + \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52279 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540 +\newcount \appendixno \appendixno = `\@no1627,53445 +\def\appendixletter{\appendixletter1628,53486 +\def\opencontents{\opencontents1632,53589 +\def\thischapter{\thischapter1637,53770 +\def\seccheck#1{\seccheck1638,53808 +\def\chapternofonts{\chapternofonts1643,53912 +\def\result{\result1646,53987 +\def\equiv{\equiv1647,54022 +\def\expansion{\expansion1648,54055 +\def\print{\print1649,54096 +\def\TeX{\TeX1650,54129 +\def\dots{\dots1651,54158 +\def\copyright{\copyright1652,54189 +\def\tt{\tt1653,54230 +\def\bf{\bf1654,54257 +\def\w{\w1655,54285 +\def\less{\less1656,54310 +\def\gtr{\gtr1657,54341 +\def\hat{\hat1658,54370 +\def\char{\char1659,54399 +\def\tclose##1{\tclose1660,54430 +\def\code##1{\code1661,54474 +\def\samp##1{\samp1662,54514 +\def\r##1{\r1663,54554 +\def\b##1{\b1664,54588 +\def\key##1{\key1665,54622 +\def\file##1{\file1666,54660 +\def\kbd##1{\kbd1667,54700 +\def\i##1{\i1669,54808 +\def\cite##1{\cite1670,54842 +\def\var##1{\var1671,54882 +\def\emph##1{\emph1672,54920 +\def\dfn##1{\dfn1673,54960 +\def\thischaptername{\thischaptername1676,55001 +\outer\def\chapter{\chapter1677,55040 +\def\chapterzzz #1{\chapterzzz1678,55081 +{\chapternofonts%nofonts%1687,55477 +\global\let\section = \numberedsec=1692,55630 +\global\let\subsection = \numberedsubsec=1693,55665 +\global\let\subsubsection = \numberedsubsubsec=1694,55706 +\outer\def\appendix{\appendix1697,55757 +\def\appendixzzz #1{\appendixzzz1698,55800 +\global\advance \appendixno by 1 \message{no1700,55877 +\chapmacro {#1}{Appendix \appendixletter}letter1701,55946 +\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56039 +{\chapternofonts%nofonts%1705,56111 + {#1}{Appendix \appendixletter}letter1707,56167 +\appendixnoderef %noderef1710,56267 +\global\let\section = \appendixsec=1711,56286 +\global\let\subsection = \appendixsubsec=1712,56321 +\global\let\subsubsection = \appendixsubsubsec=1713,56362 +\outer\def\top{\top1716,56413 +\outer\def\unnumbered{\unnumbered1717,56453 +\def\unnumberedzzz #1{\unnumberedzzz1718,56500 +{\chapternofonts%nofonts%1722,56663 +\global\let\section = \unnumberedsec=1727,56813 +\global\let\subsection = \unnumberedsubsec=1728,56850 +\global\let\subsubsection = \unnumberedsubsubsec=1729,56893 +\outer\def\numberedsec{\numberedsec1732,56946 +\def\seczzz #1{\seczzz1733,56987 +{\chapternofonts%nofonts%1736,57143 +\outer\def\appendixsection{\appendixsection1745,57329 +\outer\def\appendixsec{\appendixsec1746,57386 +\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439 +\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551 +{\chapternofonts%nofonts%1750,57619 +{#1}{\appendixletter}letter1752,57675 +\appendixnoderef %noderef1755,57775 +\outer\def\unnumberedsec{\unnumberedsec1759,57815 +\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868 +{\chapternofonts%nofonts%1762,57963 +\outer\def\numberedsubsec{\numberedsubsec1770,58131 +\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186 +{\chapternofonts%nofonts%1774,58365 +\outer\def\appendixsubsec{\appendixsubsec1783,58569 +\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624 +\subsecheading {#1}{\appendixletter}letter1786,58746 +{\chapternofonts%nofonts%1787,58811 +{#1}{\appendixletter}letter1789,58870 +\appendixnoderef %noderef1792,58985 +\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025 +\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084 +{\chapternofonts%nofonts%1799,59185 +\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356 +\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417 +{\chapternofonts%nofonts%1812,59614 +\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847 +\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908 + {\appendixletter}letter1827,60047 +{\chapternofonts%nofonts%1828,60113 + {\appendixletter}letter1830,60178 +\appendixnoderef %noderef1834,60312 +\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352 +\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417 +{\chapternofonts%nofonts%1841,60524 +\def\infotop{\infotop1851,60853 +\def\infounnumbered{\infounnumbered1852,60891 +\def\infounnumberedsec{\infounnumberedsec1853,60936 +\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987 +\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044 +\def\infoappendix{\infoappendix1857,61108 +\def\infoappendixsec{\infoappendixsec1858,61149 +\def\infoappendixsubsec{\infoappendixsubsec1859,61196 +\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249 +\def\infochapter{\infochapter1862,61309 +\def\infosection{\infosection1863,61348 +\def\infosubsection{\infosubsection1864,61387 +\def\infosubsubsection{\infosubsubsection1865,61432 +\global\let\section = \numberedsec=1870,61669 +\global\let\subsection = \numberedsubsec=1871,61704 +\global\let\subsubsection = \numberedsubsubsec=1872,61745 +\def\majorheading{\majorheading1886,62252 +\def\majorheadingzzz #1{\majorheadingzzz1887,62297 +\def\chapheading{\chapheading1893,62530 +\def\chapheadingzzz #1{\chapheadingzzz1894,62573 +\def\heading{\heading1899,62768 +\def\subheading{\subheading1901,62805 +\def\subsubheading{\subsubheading1903,62848 +\def\dobreak#1#2{\dobreak1910,63125 +\def\setchapterstyle #1 {\setchapterstyle1912,63203 +\def\chapbreak{\chapbreak1919,63458 +\def\chappager{\chappager1920,63508 +\def\chapoddpage{\chapoddpage1921,63546 +\def\setchapternewpage #1 {\setchapternewpage1923,63625 +\def\CHAPPAGoff{\CHAPPAGoff1925,63682 +\def\CHAPPAGon{\CHAPPAGon1929,63776 +\global\def\HEADINGSon{\HEADINGSon1932,63867 +\def\CHAPPAGodd{\CHAPPAGodd1934,63909 +\global\def\HEADINGSon{\HEADINGSon1937,64005 +\def\CHAPFplain{\CHAPFplain1941,64059 +\def\chfplain #1#2{\chfplain1945,64151 +\def\unnchfplain #1{\unnchfplain1956,64374 +\def\unnchfopen #1{\unnchfopen1964,64603 +\def\chfopen #1#2{\chfopen1970,64811 +\def\CHAPFopen{\CHAPFopen1975,64955 +\def\subsecheadingbreak{\subsecheadingbreak1982,65173 +\def\secheadingbreak{\secheadingbreak1985,65302 +\def\secheading #1#2#3{\secheading1993,65584 +\def\plainsecheading #1{\plainsecheading1994,65640 +\def\secheadingi #1{\secheadingi1995,65683 +\def\subsecheading #1#2#3#4{\subsecheading2006,66051 +\def\subsecheadingi #1{\subsecheadingi2007,66118 +\def\subsubsecfonts{\subsubsecfonts2014,66415 +\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538 +\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616 +\def\startcontents#1{\startcontents2032,67088 + \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361 +\outer\def\contents{\contents2049,67720 +\outer\def\summarycontents{\summarycontents2057,67864 + \def\secentry ##1##2##3##4{\secentry2067,68235 + \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270 + \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305 + \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346 + \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384 + \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431 +\def\chapentry#1#2#3{\chapentry2085,68865 +\def\shortchapentry#1#2#3{\shortchapentry2088,68982 + {#2\labelspace #1}space2091,69092 +\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146 +\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193 +\def\secentry#1#2#3#4{\secentry2102,69357 +\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416 +\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477 +\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547 +\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621 + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655 +\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706 +\def\dochapentry#1#2{\dochapentry2123,70080 +\def\dosecentry#1#2{\dosecentry2138,70685 +\def\dosubsecentry#1#2{\dosubsecentry2145,70863 +\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048 +\def\labelspace{\labelspace2160,71299 +\def\dopageno#1{\dopageno2162,71334 +\def\doshortpageno#1{\doshortpageno2163,71360 +\def\chapentryfonts{\chapentryfonts2165,71392 +\def\secentryfonts{\secentryfonts2166,71427 +\def\point{\point2192,72386 +\def\result{\result2194,72407 +\def\expansion{\expansion2195,72480 +\def\print{\print2196,72551 +\def\equiv{\equiv2198,72618 +\def\error{\error2218,73391 +\def\tex{\tex2224,73620 +\def\@{\@2242,74003 +\gdef\sepspaces{\def {\ }}}\2265,74735 +\def\aboveenvbreak{\aboveenvbreak2268,74817 +\def\afterenvbreak{\afterenvbreak2272,74983 +\def\ctl{\ctl2286,75494 +\def\ctr{\ctr2287,75566 +\def\cbl{\cbl2288,75605 +\def\cbr{\cbr2289,75645 +\def\carttop{\carttop2290,75684 +\def\cartbot{\cartbot2293,75792 +\long\def\cartouche{\cartouche2299,75932 +\def\Ecartouche{\Ecartouche2326,76720 +\def\lisp{\lisp2338,76855 +\def\Elisp{\Elisp2348,77202 +\def\next##1{\next2360,77528 +\def\Eexample{\Eexample2364,77570 +\def\Esmallexample{\Esmallexample2367,77617 +\def\smalllispx{\smalllispx2373,77795 +\def\Esmalllisp{\Esmalllisp2383,78149 +\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505 +\def\next##1{\next2397,78562 +\def\display{\display2401,78642 +\def\Edisplay{\Edisplay2410,78961 +\def\next##1{\next2422,79272 +\def\format{\format2426,79375 +\def\Eformat{\Eformat2434,79671 +\def\next##1{\next2437,79760 +\def\flushleft{\flushleft2441,79812 +\def\Eflushleft{\Eflushleft2451,80183 +\def\next##1{\next2454,80276 +\def\flushright{\flushright2456,80298 +\def\Eflushright{\Eflushright2466,80670 +\def\next##1{\next2470,80801 +\def\quotation{\quotation2474,80859 +\def\Equotation{\Equotation2480,81051 +\def\setdeffont #1 {\setdeffont2493,81449 +\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495 +\newskip\defargsindent \defargsindent=50ptargsindent2496,81538 +\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581 +\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624 +\def\activeparens{\activeparens2503,81822 +\def\opnr{\opnr2529,83034 +\def\lbrb{\lbrb2530,83099 +\def\defname #1#2{\defname2536,83300 +\advance\dimen2 by -\defbodyindentbodyindent2540,83418 +\advance\dimen3 by -\defbodyindentbodyindent2542,83472 +\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526 +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83668 +\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83743 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112 +\advance\leftskip by -\defbodyindentbodyindent2557,84246 +\exdentamount=\defbodyindentbodyindent2558,84283 +\def\defparsebody #1#2#3{\defparsebody2568,84642 +\def#1{2572,84826 +\def#2{2573,84862 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84934 +\exdentamount=\defbodyindentbodyindent2576,85008 +\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112 +\def#1{2585,85273 +\def#2##1 {2586,85309 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85392 +\exdentamount=\defbodyindentbodyindent2589,85466 +\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551 +\def#1{2596,85712 +\def#2##1 ##2 {2597,85748 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85848 +\exdentamount=\defbodyindentbodyindent2601,85922 +\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193 +\def#1{2612,86380 +\def#2{2613,86416 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86475 +\exdentamount=\defbodyindentbodyindent2616,86549 +\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640 +\def#1{2625,86799 +\def#2##1 {2626,86835 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86905 +\exdentamount=\defbodyindentbodyindent2629,86979 +\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051 +\def#1{2636,87215 +\def#2##1 ##2 {2637,87251 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87338 +\exdentamount=\defbodyindentbodyindent2641,87412 +\def\defunargs #1{\defunargs2664,88172 +\def\deftypefunargs #1{\deftypefunargs2676,88554 +\def\deffn{\deffn2690,88936 +\def\deffnheader #1#2#3{\deffnheader2692,88993 +\begingroup\defname {name2693,89041 +\def\defun{\defun2699,89186 +\def\defunheader #1#2{\defunheader2701,89239 +\begingroup\defname {name2702,89314 +\defunargs {unargs2703,89350 +\def\deftypefun{\deftypefun2709,89498 +\def\deftypefunheader #1#2{\deftypefunheader2712,89620 +\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729 +\begingroup\defname {name2716,89821 +\deftypefunargs {typefunargs2717,89867 +\def\deftypefn{\deftypefn2723,90038 +\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187 +\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323 +\begingroup\defname {name2730,90416 +\deftypefunargs {typefunargs2731,90456 +\def\defmac{\defmac2737,90577 +\def\defmacheader #1#2{\defmacheader2739,90634 +\begingroup\defname {name2740,90710 +\defunargs {unargs2741,90743 +\def\defspec{\defspec2747,90867 +\def\defspecheader #1#2{\defspecheader2749,90928 +\begingroup\defname {name2750,91005 +\defunargs {unargs2751,91045 +\def\deffnx #1 {\deffnx2758,91240 +\def\defunx #1 {\defunx2759,91297 +\def\defmacx #1 {\defmacx2760,91354 +\def\defspecx #1 {\defspecx2761,91413 +\def\deftypefnx #1 {\deftypefnx2762,91474 +\def\deftypeunx #1 {\deftypeunx2763,91539 +\def\defop #1 {\defop2769,91685 +\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720 +\def\defopheader #1#2#3{\defopheader2772,91774 +\begingroup\defname {name2774,91863 +\defunargs {unargs2775,91909 +\def\defmethod{\defmethod2780,91970 +\def\defmethodheader #1#2#3{\defmethodheader2782,92043 +\begingroup\defname {name2784,92131 +\defunargs {unargs2785,92171 +\def\defcv #1 {\defcv2790,92245 +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280 +\def\defcvarheader #1#2#3{\defcvarheader2793,92339 +\begingroup\defname {name2795,92425 +\defvarargs {varargs2796,92471 +\def\defivar{\defivar2801,92544 +\def\defivarheader #1#2#3{\defivarheader2803,92607 +\begingroup\defname {name2805,92693 +\defvarargs {varargs2806,92744 +\def\defopx #1 {\defopx2812,92893 +\def\defmethodx #1 {\defmethodx2813,92950 +\def\defcvx #1 {\defcvx2814,93015 +\def\defivarx #1 {\defivarx2815,93072 +\def\defvarargs #1{\defvarargs2822,93343 +\def\defvr{\defvr2828,93487 +\def\defvrheader #1#2#3{\defvrheader2830,93542 +\begingroup\defname {name2831,93590 +\def\defvar{\defvar2835,93675 +\def\defvarheader #1#2{\defvarheader2837,93735 +\begingroup\defname {name2838,93806 +\defvarargs {varargs2839,93842 +\def\defopt{\defopt2844,93908 +\def\defoptheader #1#2{\defoptheader2846,93968 +\begingroup\defname {name2847,94039 +\defvarargs {varargs2848,94078 +\def\deftypevar{\deftypevar2853,94135 +\def\deftypevarheader #1#2{\deftypevarheader2856,94251 +\begingroup\defname {name2858,94334 +\def\deftypevr{\deftypevr2865,94508 +\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579 +\begingroup\defname {name2868,94631 +\def\defvrx #1 {\defvrx2876,94868 +\def\defvarx #1 {\defvarx2877,94925 +\def\defoptx #1 {\defoptx2878,94984 +\def\deftypevarx #1 {\deftypevarx2879,95043 +\def\deftypevrx #1 {\deftypevrx2880,95110 +\def\deftpargs #1{\deftpargs2885,95259 +\def\deftp{\deftp2889,95339 +\def\deftpheader #1#2#3{\deftpheader2891,95394 +\begingroup\defname {name2892,95442 +\def\deftpx #1 {\deftpx2897,95601 +\def\setref#1{\setref2908,95922 +\def\unnumbsetref#1{\unnumbsetref2913,96036 +\def\appendixsetref#1{\appendixsetref2918,96143 +\def\pxref#1{\pxref2929,96554 +\def\xref#1{\xref2930,96590 +\def\ref#1{\ref2931,96625 +\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655 +\def\printedmanual{\printedmanual2933,96698 +\def\printednodename{\printednodename2934,96736 +\def\printednodename{\printednodename2939,96861 +section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493 +\refx{x2957,97571 +\def\dosetq #1#2{\dosetq2965,97791 +\def\internalsetq #1#2{\internalsetq2973,98049 +\def\Ypagenumber{\Ypagenumber2977,98150 +\def\Ytitle{\Ytitle2979,98176 +\def\Ynothing{\Ynothing2981,98203 +\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220 +\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536 +\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566 +\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98621 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98725 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796 + \def\linenumber{\linenumber3009,99135 +\def\refx#1#2{\refx3015,99319 +\def\xrdef #1#2{\xrdef3037,99945 +\def\readauxfile{\readauxfile3040,100030 +\def\supereject{\supereject3110,101811 +\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496 +\def\openindices{\openindices3139,102682 +\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907 +\parindent = \defaultparindentaultparindent3152,102959 +\def\smallbook{\smallbook3175,103683 +\global\def\Esmallexample{\Esmallexample3192,104110 +\def\afourpaper{\afourpaper3196,104201 +\def\finalout{\finalout3224,105009 +\def\normaldoublequote{\normaldoublequote3235,105270 +\def\normaltilde{\normaltilde3236,105296 +\def\normalcaret{\normalcaret3237,105316 +\def\normalunderscore{\normalunderscore3238,105336 +\def\normalverticalbar{\normalverticalbar3239,105361 +\def\normalless{\normalless3240,105387 +\def\normalgreater{\normalgreater3241,105406 +\def\normalplus{\normalplus3242,105428 +\def\ifusingtt#1#2{\ifusingtt3253,105920 +\def\activedoublequote{\activedoublequote3261,106248 +\def~{~3264,106334 +\def^{^3267,106395 +\def_{_3270,106434 +\def\_{\_3272,106508 +\def\lvvmode{\lvvmode3279,106845 +\def|{|3282,106895 +\def<{<3285,106958 +\def>{>3288,107015 +\def+{+3290,107053 +\def\turnoffactive{\turnoffactive3296,107214 +\global\def={=3307,107500 +\def\normalbackslash{\normalbackslash3321,107882 c-src/c.c,76 T f(1,0 @@ -3984,13 +3987,13 @@ yyerror FUN1(286,5948 make_list FUN2(293,6028 #define ERROR 304,6228 yylex FUN0(315,6405 -parse_cell_or_range FUN2(587,11771 -#define CK_ABS_R(671,13213 -#define CK_REL_R(675,13292 -#define CK_ABS_C(680,13421 -#define CK_REL_C(684,13500 -#define MAYBEREL(689,13629 -str_to_col FUN1(847,16830 +parse_cell_or_range FUN2(587,11772 +#define CK_ABS_R(671,13214 +#define CK_REL_R(675,13293 +#define CK_ABS_C(680,13422 +#define CK_REL_C(684,13501 +#define MAYBEREL(689,13630 +str_to_col FUN1(847,16831 y-src/parse.c,520 #define YYBISON 4,64 diff --git a/test/manual/etags/ETAGS.good_2 b/test/manual/etags/ETAGS.good_2 index ddb8d19540b..1c2568376f2 100644 --- a/test/manual/etags/ETAGS.good_2 +++ b/test/manual/etags/ETAGS.good_2 @@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153 protected body Bidule Bidule/b139,2181 protected body Machin_T Machin_T/b146,2281 -c-src/abbrev.c,2072 +c-src/abbrev.c,1957 Lisp_Object Vabbrev_table_name_list;43,1429 Lisp_Object Vglobal_abbrev_table;48,1574 Lisp_Object Vfundamental_mode_abbrev_table;52,1685 @@ -186,33 +186,31 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046 Lisp_Object Vlast_abbrev;70,2155 Lisp_Object Vlast_abbrev_text;75,2324 int last_abbrev_point;79,2414 -Lisp_Object Vpre_abbrev_expand_hook,83,2487 -Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743 -DEFUN ("define-abbrev", Fdefine_abbrev,107,3124 -DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev149,4443 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814 -DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282 -DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282 -DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246 -DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246 -DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761 -DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682 -write_abbrev 426,12889 -describe_abbrev 445,13324 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,466,13839 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description466,13839 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table506,14995 -syms_of_abbrev 540,16072 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632 +DEFUN ("define-abbrev", Fdefine_abbrev,104,3013 +DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev146,4332 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703 +DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171 +DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171 +DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135 +DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135 +DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650 +DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495 +write_abbrev 420,12702 +describe_abbrev 439,13137 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,460,13652 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description460,13652 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table500,14808 +syms_of_abbrev 534,15885 c-src/torture.c,197 (*tag1 tag118,452 @@ -1228,160 +1226,160 @@ make_lispy_position 5228,157391 toolkit_menubar_in_use 5456,163954 make_scroll_bar_position 5469,164322 make_lispy_event 5485,164968 -make_lispy_movement 6104,183532 -make_lispy_switch_frame 6131,184263 -make_lispy_focus_in 6137,184370 -make_lispy_focus_out 6145,184496 -parse_modifiers_uncached 6163,184946 -#define SINGLE_LETTER_MOD(6185,185466 -#undef SINGLE_LETTER_MOD6212,185907 -#define MULTI_LETTER_MOD(6214,185933 -#undef MULTI_LETTER_MOD6231,186401 -apply_modifiers_uncached 6273,187575 -static const char *const modifier_names[modifier_names6319,189194 -#define NUM_MOD_NAMES 6325,189400 -static Lisp_Object modifier_symbols;6327,189450 -lispy_modifier_list 6331,189587 -#define KEY_TO_CHAR(6353,190253 -parse_modifiers 6356,190329 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191518 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518 -apply_modifiers 6422,192392 -reorder_modifiers 6491,194721 -modify_event_symbol 6536,196529 -DEFUN ("event-convert-list", Fevent_convert_list,6628,199245 -DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199245 -parse_solitary_modifier 6695,201136 -#define SINGLE_LETTER_MOD(6701,201259 -#define MULTI_LETTER_MOD(6705,201344 -#undef SINGLE_LETTER_MOD6763,202642 -#undef MULTI_LETTER_MOD6764,202667 -lucid_event_type_list_p 6775,202890 -get_input_pending 6814,203961 -record_asynch_buffer_change 6834,204580 -gobble_input 6872,205703 -tty_read_avail_input 6967,208311 -handle_async_input 7149,214040 -process_pending_signals 7165,214360 -unblock_input_to 7177,214646 -unblock_input 7200,215278 -totally_unblock_input 7209,215446 -handle_input_available_signal 7217,215530 -deliver_input_available_signal 7226,215701 -struct user_signal_info7235,215866 -static struct user_signal_info *user_signals user_signals7250,216091 -add_user_signal 7253,216150 -handle_user_signal 7275,216599 -deliver_user_signal 7316,217559 -find_user_signal_name 7322,217660 -store_user_signal_events 7334,217842 -static void menu_bar_item 7362,218342 -static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417 -static Lisp_Object menu_bar_items_vector;7368,218631 -static int menu_bar_items_index;7369,218673 -static const char *separator_names[separator_names7372,218708 -menu_separator_name_p 7393,219149 -menu_bar_items 7426,219853 -Lisp_Object item_properties;7568,224604 -menu_bar_item 7571,224646 -menu_item_eval_property_1 7647,227176 -eval_dyn 7658,227466 -menu_item_eval_property 7666,227676 -parse_menu_item 7686,228342 -static Lisp_Object tool_bar_items_vector;7965,236337 -static Lisp_Object tool_bar_item_properties;7970,236511 -static int ntool_bar_items;7974,236607 -static void init_tool_bar_items 7978,236665 -static void process_tool_bar_item 7979,236712 -static bool parse_tool_bar_item 7981,236802 -static void append_tool_bar_item 7982,236862 -tool_bar_items 7990,237084 -process_tool_bar_item 8075,239893 -#define PROP(8112,240970 -set_prop 8114,241039 -parse_tool_bar_item 8167,242454 -#undef PROP8379,248845 -init_tool_bar_items 8387,248970 -append_tool_bar_item 8401,249262 -read_char_x_menu_prompt 8443,250772 -read_char_minibuf_menu_prompt 8503,252446 -#define PUSH_C_STR(8527,253015 -follow_key 8726,258554 -active_maps 8733,258696 -typedef struct keyremap8742,259022 -} keyremap;8754,259465 -access_keymap_keyremap 8764,259809 -keyremap_step 8811,261451 -test_undefined 8867,262935 -read_key_sequence 8916,264862 -read_key_sequence_vs 9826,295822 -DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295 -DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299983 -detect_input_pending 9950,300489 -detect_input_pending_ignore_squeezables 9959,300655 -detect_input_pending_run_timers 9967,300871 -clear_input_pending 9985,301363 -requeued_events_pending_p 9997,301733 -DEFUN ("input-pending-p", Finput_pending_p,10002,301814 -DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814 -DEFUN ("recent-keys", Frecent_keys,10024,302597 -DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597 -DEFUN ("this-command-keys", Fthis_command_keys,10055,303518 -DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303959 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304381 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304956 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305496 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306511 -DEFUN ("recursion-depth", Frecursion_depth,10158,307070 -DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070 -DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407 -DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407 -DEFUN ("discard-input", Fdiscard_input,10203,308448 -DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448 -DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950 -DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950 -stuff_buffered_input 10285,311046 -set_waiting_for_input 10323,312017 -clear_waiting_for_input 10337,312391 -handle_interrupt_signal 10351,312755 -deliver_interrupt_signal 10378,313643 -static int volatile force_quit_count;10387,313933 -handle_interrupt 10401,314415 -quit_throw_to_read_char 10541,318712 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289 -DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517 -DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320517 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321433 -DEFUN ("set-quit-char", Fset_quit_char,10694,322707 -DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707 -DEFUN ("set-input-mode", Fset_input_mode,10729,323571 -DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571 -DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460 -DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324460 -DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838 -DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838 -DEFUN ("posn-at-point", Fposn_at_point,10824,327061 -DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061 -init_kboard 10861,328215 -allocate_kboard 10893,329285 -wipe_kboard 10909,329638 -delete_kboard 10917,329752 -init_keyboard 10942,330282 -struct event_head11021,332697 -static const struct event_head head_table[head_table11027,332748 -syms_of_keyboard 11045,333578 -keys_of_keyboard 11841,367116 -mark_kboards 11916,370435 +make_lispy_movement 6104,183531 +make_lispy_switch_frame 6131,184262 +make_lispy_focus_in 6137,184369 +make_lispy_focus_out 6145,184495 +parse_modifiers_uncached 6163,184945 +#define SINGLE_LETTER_MOD(6185,185465 +#undef SINGLE_LETTER_MOD6212,185906 +#define MULTI_LETTER_MOD(6214,185932 +#undef MULTI_LETTER_MOD6231,186400 +apply_modifiers_uncached 6273,187574 +static const char *const modifier_names[modifier_names6319,189193 +#define NUM_MOD_NAMES 6325,189399 +static Lisp_Object modifier_symbols;6327,189449 +lispy_modifier_list 6331,189586 +#define KEY_TO_CHAR(6353,190252 +parse_modifiers 6356,190328 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191517 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517 +apply_modifiers 6422,192391 +reorder_modifiers 6491,194720 +modify_event_symbol 6536,196528 +DEFUN ("event-convert-list", Fevent_convert_list,6628,199244 +DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199244 +parse_solitary_modifier 6695,201135 +#define SINGLE_LETTER_MOD(6701,201258 +#define MULTI_LETTER_MOD(6705,201343 +#undef SINGLE_LETTER_MOD6763,202641 +#undef MULTI_LETTER_MOD6764,202666 +lucid_event_type_list_p 6775,202889 +get_input_pending 6814,203960 +record_asynch_buffer_change 6834,204579 +gobble_input 6872,205702 +tty_read_avail_input 6967,208310 +handle_async_input 7149,214039 +process_pending_signals 7165,214359 +unblock_input_to 7177,214645 +unblock_input 7200,215277 +totally_unblock_input 7209,215445 +handle_input_available_signal 7217,215529 +deliver_input_available_signal 7226,215700 +struct user_signal_info7235,215865 +static struct user_signal_info *user_signals user_signals7250,216090 +add_user_signal 7253,216149 +handle_user_signal 7275,216598 +deliver_user_signal 7316,217558 +find_user_signal_name 7322,217659 +store_user_signal_events 7334,217841 +static void menu_bar_item 7362,218341 +static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416 +static Lisp_Object menu_bar_items_vector;7368,218630 +static int menu_bar_items_index;7369,218672 +static const char *separator_names[separator_names7372,218707 +menu_separator_name_p 7393,219148 +menu_bar_items 7426,219852 +Lisp_Object item_properties;7568,224603 +menu_bar_item 7571,224645 +menu_item_eval_property_1 7647,227175 +eval_dyn 7658,227465 +menu_item_eval_property 7666,227675 +parse_menu_item 7686,228341 +static Lisp_Object tool_bar_items_vector;7965,236336 +static Lisp_Object tool_bar_item_properties;7970,236510 +static int ntool_bar_items;7974,236606 +static void init_tool_bar_items 7978,236664 +static void process_tool_bar_item 7979,236711 +static bool parse_tool_bar_item 7981,236801 +static void append_tool_bar_item 7982,236861 +tool_bar_items 7990,237083 +process_tool_bar_item 8075,239892 +#define PROP(8112,240969 +set_prop 8114,241038 +parse_tool_bar_item 8167,242453 +#undef PROP8379,248844 +init_tool_bar_items 8387,248969 +append_tool_bar_item 8401,249261 +read_char_x_menu_prompt 8443,250771 +read_char_minibuf_menu_prompt 8503,252445 +#define PUSH_C_STR(8527,253014 +follow_key 8726,258553 +active_maps 8733,258695 +typedef struct keyremap8742,259021 +} keyremap;8754,259464 +access_keymap_keyremap 8764,259808 +keyremap_step 8811,261450 +test_undefined 8867,262934 +read_key_sequence 8916,264861 +read_key_sequence_vs 9826,295821 +DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294 +DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299982 +detect_input_pending 9950,300488 +detect_input_pending_ignore_squeezables 9959,300654 +detect_input_pending_run_timers 9967,300870 +clear_input_pending 9985,301362 +requeued_events_pending_p 9997,301732 +DEFUN ("input-pending-p", Finput_pending_p,10002,301813 +DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813 +DEFUN ("recent-keys", Frecent_keys,10024,302596 +DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596 +DEFUN ("this-command-keys", Fthis_command_keys,10055,303517 +DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303958 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304380 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304955 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305495 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306510 +DEFUN ("recursion-depth", Frecursion_depth,10158,307069 +DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069 +DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406 +DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406 +DEFUN ("discard-input", Fdiscard_input,10203,308447 +DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447 +DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949 +DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949 +stuff_buffered_input 10285,311045 +set_waiting_for_input 10323,312016 +clear_waiting_for_input 10337,312390 +handle_interrupt_signal 10351,312754 +deliver_interrupt_signal 10378,313642 +static int volatile force_quit_count;10387,313932 +handle_interrupt 10401,314414 +quit_throw_to_read_char 10541,318711 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288 +DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516 +DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320516 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321432 +DEFUN ("set-quit-char", Fset_quit_char,10694,322706 +DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706 +DEFUN ("set-input-mode", Fset_input_mode,10729,323570 +DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570 +DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459 +DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324459 +DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837 +DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837 +DEFUN ("posn-at-point", Fposn_at_point,10824,327060 +DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060 +init_kboard 10861,328214 +allocate_kboard 10893,329284 +wipe_kboard 10909,329637 +delete_kboard 10917,329751 +init_keyboard 10942,330281 +struct event_head11021,332696 +static const struct event_head head_table[head_table11027,332747 +syms_of_keyboard 11045,333577 +keys_of_keyboard 11841,367115 +mark_kboards 11916,370434 c-src/emacs/src/lisp.h,33840 #define EMACS_LISP_H22,801 @@ -2712,11 +2710,11 @@ main(37,571 class D 41,622 D(43,659 -el-src/TAGTEST.EL,179 -(foo::defmumble bletch 1,0 -(defun foo==bar foo==bar2,33 -(defalias 'pending-delete-mode pending-delete-mode6,149 -(defalias (quote explicitly-quoted-pending-delete-mode)9,222 +el-src/TAGTEST.EL,181 +(foo::defmumble bletch 3,33 +(defun foo==bar foo==bar4,66 +(defalias 'pending-delete-mode pending-delete-mode8,182 +(defalias (quote explicitly-quoted-pending-delete-mode)11,255 el-src/emacs/lisp/progmodes/etags.el,5188 (defvar tags-file-name 34,1035 @@ -3479,22 +3477,22 @@ ord_add_element(71,1867 ord_del_element(85,2344 ord_disjoint(100,2783 ord_intersect(108,2953 -ord_intersection(126,3552 -ord_intersection3(130,3691 -ord_intersection(150,4531 -ord_intersection4(154,4703 -ord_intersection(176,5664 -ord_intersection2(181,5812 -ord_member(200,6318 -ord_seteq(216,6683 -ord_setproduct(225,6971 -ord_subset(240,7377 -ord_subtract(257,7861 -ord_symdiff(265,8054 -ord_union(288,8887 -ord_union4(303,9352 -ord_union(324,10171 -ord_union_all(329,10313 +ord_intersection(126,3553 +ord_intersection3(130,3692 +ord_intersection(150,4533 +ord_intersection4(154,4705 +ord_intersection(176,5666 +ord_intersection2(181,5814 +ord_member(200,6320 +ord_seteq(216,6685 +ord_setproduct(225,6973 +ord_subset(240,7379 +ord_subtract(257,7863 +ord_symdiff(265,8056 +ord_union(288,8889 +ord_union4(303,9354 +ord_union(324,10173 +ord_union_all(329,10315 prol-src/natded.prolog,2319 expandmng(100,2879 @@ -3709,6 +3707,11 @@ module A9,57 alias_method ( :foo2,foo237,586 A::Constant Constant42,655 +rs-src/test.rs,52 +enum IpAddrKind 3,11 +fn test1(8,48 +fn main(12,88 + scm-src/test.scm,260 (define hello 1,0 (set! hello 3,32 @@ -3923,533 +3926,533 @@ tex-src/texinfo.tex,30627 \def\vritemindex #1{\vritemindex1068,35482 \def\tablez #1#2#3#4#5#6{\tablez1074,35631 \def\Edescription{\Edescription1077,35689 -\def\itemfont{\itemfont1082,35891 -\def\Etable{\Etable1090,36117 -\def\itemize{\itemize1103,36441 -\def\itemizezzz #1{\itemizezzz1105,36477 -\def\itemizey #1#2{\itemizey1110,36572 -\def#2{1119,36818 -\def\itemcontents{\itemcontents1120,36859 -\def\bullet{\bullet1123,36907 -\def\minus{\minus1124,36934 -\def\frenchspacing{\frenchspacing1128,37042 -\def\splitoff#1#2\endmark{\splitoff1134,37267 -\def\enumerate{\enumerate1140,37497 -\def\enumeratezzz #1{\enumeratezzz1141,37536 -\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589 - \def\thearg{\thearg1146,37736 - \ifx\thearg\empty \def\thearg{\thearg1147,37755 -\def\numericenumerate{\numericenumerate1184,39089 -\def\lowercaseenumerate{\lowercaseenumerate1190,39219 -\def\uppercaseenumerate{\uppercaseenumerate1203,39566 -\def\startenumeration#1{\startenumeration1219,40056 -\def\alphaenumerate{\alphaenumerate1227,40238 -\def\capsenumerate{\capsenumerate1228,40273 -\def\Ealphaenumerate{\Ealphaenumerate1229,40307 -\def\Ecapsenumerate{\Ecapsenumerate1230,40341 -\def\itemizeitem{\itemizeitem1234,40421 -\def\newindex #1{\newindex1259,41278 -\def\defindex{\defindex1268,41567 -\def\newcodeindex #1{\newcodeindex1272,41675 -\def\defcodeindex{\defcodeindex1279,41935 -\def\synindex #1 #2 {\synindex1283,42115 -\def\syncodeindex #1 #2 {\syncodeindex1292,42455 -\def\doindex#1{\doindex1309,43134 -\def\singleindexer #1{\singleindexer1310,43193 -\def\docodeindex#1{\docodeindex1313,43305 -\def\singlecodeindexer #1{\singlecodeindexer1314,43372 -\def\indexdummies{\indexdummies1316,43430 -\def\_{\_1317,43450 -\def\w{\w1318,43478 -\def\bf{\bf1319,43505 -\def\rm{\rm1320,43534 -\def\sl{\sl1321,43563 -\def\sf{\sf1322,43592 -\def\tt{\tt1323,43620 -\def\gtr{\gtr1324,43648 -\def\less{\less1325,43678 -\def\hat{\hat1326,43710 -\def\char{\char1327,43740 -\def\TeX{\TeX1328,43772 -\def\dots{\dots1329,43802 -\def\copyright{\copyright1330,43835 -\def\tclose##1{\tclose1331,43878 -\def\code##1{\code1332,43923 -\def\samp##1{\samp1333,43964 -\def\t##1{\t1334,44005 -\def\r##1{\r1335,44040 -\def\i##1{\i1336,44075 -\def\b##1{\b1337,44110 -\def\cite##1{\cite1338,44145 -\def\key##1{\key1339,44186 -\def\file##1{\file1340,44225 -\def\var##1{\var1341,44266 -\def\kbd##1{\kbd1342,44305 -\def\indexdummyfont#1{\indexdummyfont1347,44461 -\def\indexdummytex{\indexdummytex1348,44487 -\def\indexdummydots{\indexdummydots1349,44511 -\def\indexnofonts{\indexnofonts1351,44537 -\let\w=\indexdummyfontdummyfont1352,44557 -\let\t=\indexdummyfontdummyfont1353,44580 -\let\r=\indexdummyfontdummyfont1354,44603 -\let\i=\indexdummyfontdummyfont1355,44626 -\let\b=\indexdummyfontdummyfont1356,44649 -\let\emph=\indexdummyfontdummyfont1357,44672 -\let\strong=\indexdummyfontdummyfont1358,44698 -\let\cite=\indexdummyfont=\indexdummyfont1359,44726 -\let\sc=\indexdummyfontdummyfont1360,44752 -\let\tclose=\indexdummyfontdummyfont1364,44924 -\let\code=\indexdummyfontdummyfont1365,44952 -\let\file=\indexdummyfontdummyfont1366,44978 -\let\samp=\indexdummyfontdummyfont1367,45004 -\let\kbd=\indexdummyfontdummyfont1368,45030 -\let\key=\indexdummyfontdummyfont1369,45055 -\let\var=\indexdummyfontdummyfont1370,45080 -\let\TeX=\indexdummytexdummytex1371,45105 -\let\dots=\indexdummydotsdummydots1372,45129 -\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45381 -\def\doind #1#2{\doind1384,45437 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45480 -\def\rawbackslashxx{\rawbackslashxx1389,45620 -{\indexnofontsnofonts1394,45882 -\def\dosubind #1#2#3{\dosubind1405,46193 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46241 -\def\rawbackslashxx{\rawbackslashxx1410,46345 -{\indexnofontsnofonts1414,46499 -\def\findex {\findex1443,47430 -\def\kindex {\kindex1444,47453 -\def\cindex {\cindex1445,47476 -\def\vindex {\vindex1446,47499 -\def\tindex {\tindex1447,47522 -\def\pindex {\pindex1448,47545 -\def\cindexsub {\cindexsub1450,47569 -\def\printindex{\printindex1462,47896 -\def\doprintindex#1{\doprintindex1464,47937 - \def\indexbackslash{\indexbackslash1481,48422 - \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461 -\def\initial #1{\initial1517,49533 -\def\entry #1#2{\entry1523,49740 - \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50387 -\def\indexdotfill{\indexdotfill1549,50715 -\def\primary #1{\primary1552,50821 -\def\secondary #1#2{\secondary1556,50903 -\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985 -\newbox\partialpageialpage1566,51158 -\def\begindoublecolumns{\begindoublecolumns1572,51316 - \output={\global\setbox\partialpage=ialpage=1573,51352 -\def\enddoublecolumns{\enddoublecolumns1577,51540 -\def\doublecolumnout{\doublecolumnout1580,51625 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694 -\def\pagesofar{\pagesofar1584,51872 -\def\balancecolumns{\balancecolumns1588,52109 - \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52280 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541 -\newcount \appendixno \appendixno = `\@no1627,53446 -\def\appendixletter{\appendixletter1628,53487 -\def\opencontents{\opencontents1632,53590 -\def\thischapter{\thischapter1637,53771 -\def\seccheck#1{\seccheck1638,53809 -\def\chapternofonts{\chapternofonts1643,53913 -\def\result{\result1646,53988 -\def\equiv{\equiv1647,54023 -\def\expansion{\expansion1648,54056 -\def\print{\print1649,54097 -\def\TeX{\TeX1650,54130 -\def\dots{\dots1651,54159 -\def\copyright{\copyright1652,54190 -\def\tt{\tt1653,54231 -\def\bf{\bf1654,54258 -\def\w{\w1655,54286 -\def\less{\less1656,54311 -\def\gtr{\gtr1657,54342 -\def\hat{\hat1658,54371 -\def\char{\char1659,54400 -\def\tclose##1{\tclose1660,54431 -\def\code##1{\code1661,54475 -\def\samp##1{\samp1662,54515 -\def\r##1{\r1663,54555 -\def\b##1{\b1664,54589 -\def\key##1{\key1665,54623 -\def\file##1{\file1666,54661 -\def\kbd##1{\kbd1667,54701 -\def\i##1{\i1669,54809 -\def\cite##1{\cite1670,54843 -\def\var##1{\var1671,54883 -\def\emph##1{\emph1672,54921 -\def\dfn##1{\dfn1673,54961 -\def\thischaptername{\thischaptername1676,55002 -\outer\def\chapter{\chapter1677,55041 -\def\chapterzzz #1{\chapterzzz1678,55082 -{\chapternofonts%nofonts%1687,55478 -\global\let\section = \numberedsec=1692,55631 -\global\let\subsection = \numberedsubsec=1693,55666 -\global\let\subsubsection = \numberedsubsubsec=1694,55707 -\outer\def\appendix{\appendix1697,55758 -\def\appendixzzz #1{\appendixzzz1698,55801 -\global\advance \appendixno by 1 \message{no1700,55878 -\chapmacro {#1}{Appendix \appendixletter}letter1701,55947 -\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56040 -{\chapternofonts%nofonts%1705,56112 - {#1}{Appendix \appendixletter}letter1707,56168 -\appendixnoderef %noderef1710,56268 -\global\let\section = \appendixsec=1711,56287 -\global\let\subsection = \appendixsubsec=1712,56322 -\global\let\subsubsection = \appendixsubsubsec=1713,56363 -\outer\def\top{\top1716,56414 -\outer\def\unnumbered{\unnumbered1717,56454 -\def\unnumberedzzz #1{\unnumberedzzz1718,56501 -{\chapternofonts%nofonts%1722,56664 -\global\let\section = \unnumberedsec=1727,56814 -\global\let\subsection = \unnumberedsubsec=1728,56851 -\global\let\subsubsection = \unnumberedsubsubsec=1729,56894 -\outer\def\numberedsec{\numberedsec1732,56947 -\def\seczzz #1{\seczzz1733,56988 -{\chapternofonts%nofonts%1736,57144 -\outer\def\appendixsection{\appendixsection1745,57330 -\outer\def\appendixsec{\appendixsec1746,57387 -\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440 -\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552 -{\chapternofonts%nofonts%1750,57620 -{#1}{\appendixletter}letter1752,57676 -\appendixnoderef %noderef1755,57776 -\outer\def\unnumberedsec{\unnumberedsec1759,57816 -\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869 -{\chapternofonts%nofonts%1762,57964 -\outer\def\numberedsubsec{\numberedsubsec1770,58132 -\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187 -{\chapternofonts%nofonts%1774,58366 -\outer\def\appendixsubsec{\appendixsubsec1783,58570 -\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625 -\subsecheading {#1}{\appendixletter}letter1786,58747 -{\chapternofonts%nofonts%1787,58812 -{#1}{\appendixletter}letter1789,58871 -\appendixnoderef %noderef1792,58986 -\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026 -\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085 -{\chapternofonts%nofonts%1799,59186 -\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357 -\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418 -{\chapternofonts%nofonts%1812,59615 -\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848 -\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909 - {\appendixletter}letter1827,60048 -{\chapternofonts%nofonts%1828,60114 - {\appendixletter}letter1830,60179 -\appendixnoderef %noderef1834,60313 -\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353 -\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418 -{\chapternofonts%nofonts%1841,60525 -\def\infotop{\infotop1851,60854 -\def\infounnumbered{\infounnumbered1852,60892 -\def\infounnumberedsec{\infounnumberedsec1853,60937 -\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988 -\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045 -\def\infoappendix{\infoappendix1857,61109 -\def\infoappendixsec{\infoappendixsec1858,61150 -\def\infoappendixsubsec{\infoappendixsubsec1859,61197 -\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250 -\def\infochapter{\infochapter1862,61310 -\def\infosection{\infosection1863,61349 -\def\infosubsection{\infosubsection1864,61388 -\def\infosubsubsection{\infosubsubsection1865,61433 -\global\let\section = \numberedsec=1870,61670 -\global\let\subsection = \numberedsubsec=1871,61705 -\global\let\subsubsection = \numberedsubsubsec=1872,61746 -\def\majorheading{\majorheading1886,62253 -\def\majorheadingzzz #1{\majorheadingzzz1887,62298 -\def\chapheading{\chapheading1893,62531 -\def\chapheadingzzz #1{\chapheadingzzz1894,62574 -\def\heading{\heading1899,62769 -\def\subheading{\subheading1901,62806 -\def\subsubheading{\subsubheading1903,62849 -\def\dobreak#1#2{\dobreak1910,63126 -\def\setchapterstyle #1 {\setchapterstyle1912,63204 -\def\chapbreak{\chapbreak1919,63459 -\def\chappager{\chappager1920,63509 -\def\chapoddpage{\chapoddpage1921,63547 -\def\setchapternewpage #1 {\setchapternewpage1923,63626 -\def\CHAPPAGoff{\CHAPPAGoff1925,63683 -\def\CHAPPAGon{\CHAPPAGon1929,63777 -\global\def\HEADINGSon{\HEADINGSon1932,63868 -\def\CHAPPAGodd{\CHAPPAGodd1934,63910 -\global\def\HEADINGSon{\HEADINGSon1937,64006 -\def\CHAPFplain{\CHAPFplain1941,64060 -\def\chfplain #1#2{\chfplain1945,64152 -\def\unnchfplain #1{\unnchfplain1956,64375 -\def\unnchfopen #1{\unnchfopen1964,64604 -\def\chfopen #1#2{\chfopen1970,64812 -\def\CHAPFopen{\CHAPFopen1975,64956 -\def\subsecheadingbreak{\subsecheadingbreak1982,65174 -\def\secheadingbreak{\secheadingbreak1985,65303 -\def\secheading #1#2#3{\secheading1993,65585 -\def\plainsecheading #1{\plainsecheading1994,65641 -\def\secheadingi #1{\secheadingi1995,65684 -\def\subsecheading #1#2#3#4{\subsecheading2006,66052 -\def\subsecheadingi #1{\subsecheadingi2007,66119 -\def\subsubsecfonts{\subsubsecfonts2014,66416 -\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539 -\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617 -\def\startcontents#1{\startcontents2032,67089 - \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362 -\outer\def\contents{\contents2049,67721 -\outer\def\summarycontents{\summarycontents2057,67865 - \def\secentry ##1##2##3##4{\secentry2067,68236 - \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271 - \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306 - \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347 - \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385 - \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432 -\def\chapentry#1#2#3{\chapentry2085,68866 -\def\shortchapentry#1#2#3{\shortchapentry2088,68983 - {#2\labelspace #1}space2091,69093 -\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147 -\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194 -\def\secentry#1#2#3#4{\secentry2102,69358 -\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417 -\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478 -\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548 -\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622 - \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656 -\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707 -\def\dochapentry#1#2{\dochapentry2123,70081 -\def\dosecentry#1#2{\dosecentry2138,70686 -\def\dosubsecentry#1#2{\dosubsecentry2145,70864 -\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049 -\def\labelspace{\labelspace2160,71300 -\def\dopageno#1{\dopageno2162,71335 -\def\doshortpageno#1{\doshortpageno2163,71361 -\def\chapentryfonts{\chapentryfonts2165,71393 -\def\secentryfonts{\secentryfonts2166,71428 -\def\point{\point2192,72387 -\def\result{\result2194,72408 -\def\expansion{\expansion2195,72481 -\def\print{\print2196,72552 -\def\equiv{\equiv2198,72619 -\def\error{\error2218,73392 -\def\tex{\tex2224,73621 -\def\@{\@2242,74004 -\gdef\sepspaces{\def {\ }}}\2265,74736 -\def\aboveenvbreak{\aboveenvbreak2268,74818 -\def\afterenvbreak{\afterenvbreak2272,74984 -\def\ctl{\ctl2286,75495 -\def\ctr{\ctr2287,75567 -\def\cbl{\cbl2288,75606 -\def\cbr{\cbr2289,75646 -\def\carttop{\carttop2290,75685 -\def\cartbot{\cartbot2293,75793 -\long\def\cartouche{\cartouche2299,75933 -\def\Ecartouche{\Ecartouche2326,76721 -\def\lisp{\lisp2338,76856 -\def\Elisp{\Elisp2348,77203 -\def\next##1{\next2360,77529 -\def\Eexample{\Eexample2364,77571 -\def\Esmallexample{\Esmallexample2367,77618 -\def\smalllispx{\smalllispx2373,77796 -\def\Esmalllisp{\Esmalllisp2383,78150 -\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506 -\def\next##1{\next2397,78563 -\def\display{\display2401,78643 -\def\Edisplay{\Edisplay2410,78962 -\def\next##1{\next2422,79273 -\def\format{\format2426,79376 -\def\Eformat{\Eformat2434,79672 -\def\next##1{\next2437,79761 -\def\flushleft{\flushleft2441,79813 -\def\Eflushleft{\Eflushleft2451,80184 -\def\next##1{\next2454,80277 -\def\flushright{\flushright2456,80299 -\def\Eflushright{\Eflushright2466,80671 -\def\next##1{\next2470,80802 -\def\quotation{\quotation2474,80860 -\def\Equotation{\Equotation2480,81052 -\def\setdeffont #1 {\setdeffont2493,81450 -\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496 -\newskip\defargsindent \defargsindent=50ptargsindent2496,81539 -\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582 -\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625 -\def\activeparens{\activeparens2503,81823 -\def\opnr{\opnr2529,83035 -\def\lbrb{\lbrb2530,83100 -\def\defname #1#2{\defname2536,83301 -\advance\dimen2 by -\defbodyindentbodyindent2540,83419 -\advance\dimen3 by -\defbodyindentbodyindent2542,83473 -\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527 -\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83669 -\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83744 -\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113 -\advance\leftskip by -\defbodyindentbodyindent2557,84247 -\exdentamount=\defbodyindentbodyindent2558,84284 -\def\defparsebody #1#2#3{\defparsebody2568,84643 -\def#1{2572,84827 -\def#2{2573,84863 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84935 -\exdentamount=\defbodyindentbodyindent2576,85009 -\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113 -\def#1{2585,85274 -\def#2##1 {2586,85310 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85393 -\exdentamount=\defbodyindentbodyindent2589,85467 -\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552 -\def#1{2596,85713 -\def#2##1 ##2 {2597,85749 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85849 -\exdentamount=\defbodyindentbodyindent2601,85923 -\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194 -\def#1{2612,86381 -\def#2{2613,86417 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86476 -\exdentamount=\defbodyindentbodyindent2616,86550 -\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641 -\def#1{2625,86800 -\def#2##1 {2626,86836 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86906 -\exdentamount=\defbodyindentbodyindent2629,86980 -\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052 -\def#1{2636,87216 -\def#2##1 ##2 {2637,87252 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87339 -\exdentamount=\defbodyindentbodyindent2641,87413 -\def\defunargs #1{\defunargs2664,88173 -\def\deftypefunargs #1{\deftypefunargs2676,88555 -\def\deffn{\deffn2690,88937 -\def\deffnheader #1#2#3{\deffnheader2692,88994 -\begingroup\defname {name2693,89042 -\def\defun{\defun2699,89187 -\def\defunheader #1#2{\defunheader2701,89240 -\begingroup\defname {name2702,89315 -\defunargs {unargs2703,89351 -\def\deftypefun{\deftypefun2709,89499 -\def\deftypefunheader #1#2{\deftypefunheader2712,89621 -\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730 -\begingroup\defname {name2716,89822 -\deftypefunargs {typefunargs2717,89868 -\def\deftypefn{\deftypefn2723,90039 -\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188 -\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324 -\begingroup\defname {name2730,90417 -\deftypefunargs {typefunargs2731,90457 -\def\defmac{\defmac2737,90578 -\def\defmacheader #1#2{\defmacheader2739,90635 -\begingroup\defname {name2740,90711 -\defunargs {unargs2741,90744 -\def\defspec{\defspec2747,90868 -\def\defspecheader #1#2{\defspecheader2749,90929 -\begingroup\defname {name2750,91006 -\defunargs {unargs2751,91046 -\def\deffnx #1 {\deffnx2758,91241 -\def\defunx #1 {\defunx2759,91298 -\def\defmacx #1 {\defmacx2760,91355 -\def\defspecx #1 {\defspecx2761,91414 -\def\deftypefnx #1 {\deftypefnx2762,91475 -\def\deftypeunx #1 {\deftypeunx2763,91540 -\def\defop #1 {\defop2769,91686 -\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721 -\def\defopheader #1#2#3{\defopheader2772,91775 -\begingroup\defname {name2774,91864 -\defunargs {unargs2775,91910 -\def\defmethod{\defmethod2780,91971 -\def\defmethodheader #1#2#3{\defmethodheader2782,92044 -\begingroup\defname {name2784,92132 -\defunargs {unargs2785,92172 -\def\defcv #1 {\defcv2790,92246 -\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281 -\def\defcvarheader #1#2#3{\defcvarheader2793,92340 -\begingroup\defname {name2795,92426 -\defvarargs {varargs2796,92472 -\def\defivar{\defivar2801,92545 -\def\defivarheader #1#2#3{\defivarheader2803,92608 -\begingroup\defname {name2805,92694 -\defvarargs {varargs2806,92745 -\def\defopx #1 {\defopx2812,92894 -\def\defmethodx #1 {\defmethodx2813,92951 -\def\defcvx #1 {\defcvx2814,93016 -\def\defivarx #1 {\defivarx2815,93073 -\def\defvarargs #1{\defvarargs2822,93344 -\def\defvr{\defvr2828,93488 -\def\defvrheader #1#2#3{\defvrheader2830,93543 -\begingroup\defname {name2831,93591 -\def\defvar{\defvar2835,93676 -\def\defvarheader #1#2{\defvarheader2837,93736 -\begingroup\defname {name2838,93807 -\defvarargs {varargs2839,93843 -\def\defopt{\defopt2844,93909 -\def\defoptheader #1#2{\defoptheader2846,93969 -\begingroup\defname {name2847,94040 -\defvarargs {varargs2848,94079 -\def\deftypevar{\deftypevar2853,94136 -\def\deftypevarheader #1#2{\deftypevarheader2856,94252 -\begingroup\defname {name2858,94335 -\def\deftypevr{\deftypevr2865,94509 -\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580 -\begingroup\defname {name2868,94632 -\def\defvrx #1 {\defvrx2876,94869 -\def\defvarx #1 {\defvarx2877,94926 -\def\defoptx #1 {\defoptx2878,94985 -\def\deftypevarx #1 {\deftypevarx2879,95044 -\def\deftypevrx #1 {\deftypevrx2880,95111 -\def\deftpargs #1{\deftpargs2885,95260 -\def\deftp{\deftp2889,95340 -\def\deftpheader #1#2#3{\deftpheader2891,95395 -\begingroup\defname {name2892,95443 -\def\deftpx #1 {\deftpx2897,95602 -\def\setref#1{\setref2908,95923 -\def\unnumbsetref#1{\unnumbsetref2913,96037 -\def\appendixsetref#1{\appendixsetref2918,96144 -\def\pxref#1{\pxref2929,96555 -\def\xref#1{\xref2930,96591 -\def\ref#1{\ref2931,96626 -\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656 -\def\printedmanual{\printedmanual2933,96699 -\def\printednodename{\printednodename2934,96737 -\def\printednodename{\printednodename2939,96862 -section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495 -\refx{x2957,97573 -\def\dosetq #1#2{\dosetq2965,97793 -\def\internalsetq #1#2{\internalsetq2973,98051 -\def\Ypagenumber{\Ypagenumber2977,98152 -\def\Ytitle{\Ytitle2979,98178 -\def\Ynothing{\Ynothing2981,98205 -\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222 -\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538 -\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568 -\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98623 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98727 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798 - \def\linenumber{\linenumber3009,99137 -\def\refx#1#2{\refx3015,99321 -\def\xrdef #1#2{\xrdef3037,99947 -\def\readauxfile{\readauxfile3040,100032 -\def\supereject{\supereject3110,101813 -\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498 -\def\openindices{\openindices3139,102684 -\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909 -\parindent = \defaultparindentaultparindent3152,102961 -\def\smallbook{\smallbook3175,103685 -\global\def\Esmallexample{\Esmallexample3192,104112 -\def\afourpaper{\afourpaper3196,104203 -\def\finalout{\finalout3224,105011 -\def\normaldoublequote{\normaldoublequote3235,105272 -\def\normaltilde{\normaltilde3236,105298 -\def\normalcaret{\normalcaret3237,105318 -\def\normalunderscore{\normalunderscore3238,105338 -\def\normalverticalbar{\normalverticalbar3239,105363 -\def\normalless{\normalless3240,105389 -\def\normalgreater{\normalgreater3241,105408 -\def\normalplus{\normalplus3242,105430 -\def\ifusingtt#1#2{\ifusingtt3253,105922 -\def\activedoublequote{\activedoublequote3261,106250 -\def~{~3264,106336 -\def^{^3267,106397 -\def_{_3270,106436 -\def\_{\_3272,106510 -\def\lvvmode{\lvvmode3279,106847 -\def|{|3282,106897 -\def<{<3285,106960 -\def>{>3288,107017 -\def+{+3290,107055 -\def\turnoffactive{\turnoffactive3296,107216 -\global\def={=3307,107502 -\def\normalbackslash{\normalbackslash3321,107884 +\def\itemfont{\itemfont1082,35890 +\def\Etable{\Etable1090,36116 +\def\itemize{\itemize1103,36440 +\def\itemizezzz #1{\itemizezzz1105,36476 +\def\itemizey #1#2{\itemizey1110,36571 +\def#2{1119,36817 +\def\itemcontents{\itemcontents1120,36858 +\def\bullet{\bullet1123,36906 +\def\minus{\minus1124,36933 +\def\frenchspacing{\frenchspacing1128,37041 +\def\splitoff#1#2\endmark{\splitoff1134,37266 +\def\enumerate{\enumerate1140,37496 +\def\enumeratezzz #1{\enumeratezzz1141,37535 +\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588 + \def\thearg{\thearg1146,37735 + \ifx\thearg\empty \def\thearg{\thearg1147,37754 +\def\numericenumerate{\numericenumerate1184,39088 +\def\lowercaseenumerate{\lowercaseenumerate1190,39218 +\def\uppercaseenumerate{\uppercaseenumerate1203,39565 +\def\startenumeration#1{\startenumeration1219,40055 +\def\alphaenumerate{\alphaenumerate1227,40237 +\def\capsenumerate{\capsenumerate1228,40272 +\def\Ealphaenumerate{\Ealphaenumerate1229,40306 +\def\Ecapsenumerate{\Ecapsenumerate1230,40340 +\def\itemizeitem{\itemizeitem1234,40420 +\def\newindex #1{\newindex1259,41277 +\def\defindex{\defindex1268,41566 +\def\newcodeindex #1{\newcodeindex1272,41674 +\def\defcodeindex{\defcodeindex1279,41934 +\def\synindex #1 #2 {\synindex1283,42114 +\def\syncodeindex #1 #2 {\syncodeindex1292,42454 +\def\doindex#1{\doindex1309,43133 +\def\singleindexer #1{\singleindexer1310,43192 +\def\docodeindex#1{\docodeindex1313,43304 +\def\singlecodeindexer #1{\singlecodeindexer1314,43371 +\def\indexdummies{\indexdummies1316,43429 +\def\_{\_1317,43449 +\def\w{\w1318,43477 +\def\bf{\bf1319,43504 +\def\rm{\rm1320,43533 +\def\sl{\sl1321,43562 +\def\sf{\sf1322,43591 +\def\tt{\tt1323,43619 +\def\gtr{\gtr1324,43647 +\def\less{\less1325,43677 +\def\hat{\hat1326,43709 +\def\char{\char1327,43739 +\def\TeX{\TeX1328,43771 +\def\dots{\dots1329,43801 +\def\copyright{\copyright1330,43834 +\def\tclose##1{\tclose1331,43877 +\def\code##1{\code1332,43922 +\def\samp##1{\samp1333,43963 +\def\t##1{\t1334,44004 +\def\r##1{\r1335,44039 +\def\i##1{\i1336,44074 +\def\b##1{\b1337,44109 +\def\cite##1{\cite1338,44144 +\def\key##1{\key1339,44185 +\def\file##1{\file1340,44224 +\def\var##1{\var1341,44265 +\def\kbd##1{\kbd1342,44304 +\def\indexdummyfont#1{\indexdummyfont1347,44460 +\def\indexdummytex{\indexdummytex1348,44486 +\def\indexdummydots{\indexdummydots1349,44510 +\def\indexnofonts{\indexnofonts1351,44536 +\let\w=\indexdummyfontdummyfont1352,44556 +\let\t=\indexdummyfontdummyfont1353,44579 +\let\r=\indexdummyfontdummyfont1354,44602 +\let\i=\indexdummyfontdummyfont1355,44625 +\let\b=\indexdummyfontdummyfont1356,44648 +\let\emph=\indexdummyfontdummyfont1357,44671 +\let\strong=\indexdummyfontdummyfont1358,44697 +\let\cite=\indexdummyfont=\indexdummyfont1359,44725 +\let\sc=\indexdummyfontdummyfont1360,44751 +\let\tclose=\indexdummyfontdummyfont1364,44923 +\let\code=\indexdummyfontdummyfont1365,44951 +\let\file=\indexdummyfontdummyfont1366,44977 +\let\samp=\indexdummyfontdummyfont1367,45003 +\let\kbd=\indexdummyfontdummyfont1368,45029 +\let\key=\indexdummyfontdummyfont1369,45054 +\let\var=\indexdummyfontdummyfont1370,45079 +\let\TeX=\indexdummytexdummytex1371,45104 +\let\dots=\indexdummydotsdummydots1372,45128 +\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45380 +\def\doind #1#2{\doind1384,45436 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45479 +\def\rawbackslashxx{\rawbackslashxx1389,45619 +{\indexnofontsnofonts1394,45881 +\def\dosubind #1#2#3{\dosubind1405,46192 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46240 +\def\rawbackslashxx{\rawbackslashxx1410,46344 +{\indexnofontsnofonts1414,46498 +\def\findex {\findex1443,47429 +\def\kindex {\kindex1444,47452 +\def\cindex {\cindex1445,47475 +\def\vindex {\vindex1446,47498 +\def\tindex {\tindex1447,47521 +\def\pindex {\pindex1448,47544 +\def\cindexsub {\cindexsub1450,47568 +\def\printindex{\printindex1462,47895 +\def\doprintindex#1{\doprintindex1464,47936 + \def\indexbackslash{\indexbackslash1481,48421 + \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460 +\def\initial #1{\initial1517,49532 +\def\entry #1#2{\entry1523,49739 + \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50386 +\def\indexdotfill{\indexdotfill1549,50714 +\def\primary #1{\primary1552,50820 +\def\secondary #1#2{\secondary1556,50902 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984 +\newbox\partialpageialpage1566,51157 +\def\begindoublecolumns{\begindoublecolumns1572,51315 + \output={\global\setbox\partialpage=ialpage=1573,51351 +\def\enddoublecolumns{\enddoublecolumns1577,51539 +\def\doublecolumnout{\doublecolumnout1580,51624 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693 +\def\pagesofar{\pagesofar1584,51871 +\def\balancecolumns{\balancecolumns1588,52108 + \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52279 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540 +\newcount \appendixno \appendixno = `\@no1627,53445 +\def\appendixletter{\appendixletter1628,53486 +\def\opencontents{\opencontents1632,53589 +\def\thischapter{\thischapter1637,53770 +\def\seccheck#1{\seccheck1638,53808 +\def\chapternofonts{\chapternofonts1643,53912 +\def\result{\result1646,53987 +\def\equiv{\equiv1647,54022 +\def\expansion{\expansion1648,54055 +\def\print{\print1649,54096 +\def\TeX{\TeX1650,54129 +\def\dots{\dots1651,54158 +\def\copyright{\copyright1652,54189 +\def\tt{\tt1653,54230 +\def\bf{\bf1654,54257 +\def\w{\w1655,54285 +\def\less{\less1656,54310 +\def\gtr{\gtr1657,54341 +\def\hat{\hat1658,54370 +\def\char{\char1659,54399 +\def\tclose##1{\tclose1660,54430 +\def\code##1{\code1661,54474 +\def\samp##1{\samp1662,54514 +\def\r##1{\r1663,54554 +\def\b##1{\b1664,54588 +\def\key##1{\key1665,54622 +\def\file##1{\file1666,54660 +\def\kbd##1{\kbd1667,54700 +\def\i##1{\i1669,54808 +\def\cite##1{\cite1670,54842 +\def\var##1{\var1671,54882 +\def\emph##1{\emph1672,54920 +\def\dfn##1{\dfn1673,54960 +\def\thischaptername{\thischaptername1676,55001 +\outer\def\chapter{\chapter1677,55040 +\def\chapterzzz #1{\chapterzzz1678,55081 +{\chapternofonts%nofonts%1687,55477 +\global\let\section = \numberedsec=1692,55630 +\global\let\subsection = \numberedsubsec=1693,55665 +\global\let\subsubsection = \numberedsubsubsec=1694,55706 +\outer\def\appendix{\appendix1697,55757 +\def\appendixzzz #1{\appendixzzz1698,55800 +\global\advance \appendixno by 1 \message{no1700,55877 +\chapmacro {#1}{Appendix \appendixletter}letter1701,55946 +\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56039 +{\chapternofonts%nofonts%1705,56111 + {#1}{Appendix \appendixletter}letter1707,56167 +\appendixnoderef %noderef1710,56267 +\global\let\section = \appendixsec=1711,56286 +\global\let\subsection = \appendixsubsec=1712,56321 +\global\let\subsubsection = \appendixsubsubsec=1713,56362 +\outer\def\top{\top1716,56413 +\outer\def\unnumbered{\unnumbered1717,56453 +\def\unnumberedzzz #1{\unnumberedzzz1718,56500 +{\chapternofonts%nofonts%1722,56663 +\global\let\section = \unnumberedsec=1727,56813 +\global\let\subsection = \unnumberedsubsec=1728,56850 +\global\let\subsubsection = \unnumberedsubsubsec=1729,56893 +\outer\def\numberedsec{\numberedsec1732,56946 +\def\seczzz #1{\seczzz1733,56987 +{\chapternofonts%nofonts%1736,57143 +\outer\def\appendixsection{\appendixsection1745,57329 +\outer\def\appendixsec{\appendixsec1746,57386 +\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439 +\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551 +{\chapternofonts%nofonts%1750,57619 +{#1}{\appendixletter}letter1752,57675 +\appendixnoderef %noderef1755,57775 +\outer\def\unnumberedsec{\unnumberedsec1759,57815 +\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868 +{\chapternofonts%nofonts%1762,57963 +\outer\def\numberedsubsec{\numberedsubsec1770,58131 +\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186 +{\chapternofonts%nofonts%1774,58365 +\outer\def\appendixsubsec{\appendixsubsec1783,58569 +\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624 +\subsecheading {#1}{\appendixletter}letter1786,58746 +{\chapternofonts%nofonts%1787,58811 +{#1}{\appendixletter}letter1789,58870 +\appendixnoderef %noderef1792,58985 +\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025 +\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084 +{\chapternofonts%nofonts%1799,59185 +\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356 +\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417 +{\chapternofonts%nofonts%1812,59614 +\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847 +\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908 + {\appendixletter}letter1827,60047 +{\chapternofonts%nofonts%1828,60113 + {\appendixletter}letter1830,60178 +\appendixnoderef %noderef1834,60312 +\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352 +\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417 +{\chapternofonts%nofonts%1841,60524 +\def\infotop{\infotop1851,60853 +\def\infounnumbered{\infounnumbered1852,60891 +\def\infounnumberedsec{\infounnumberedsec1853,60936 +\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987 +\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044 +\def\infoappendix{\infoappendix1857,61108 +\def\infoappendixsec{\infoappendixsec1858,61149 +\def\infoappendixsubsec{\infoappendixsubsec1859,61196 +\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249 +\def\infochapter{\infochapter1862,61309 +\def\infosection{\infosection1863,61348 +\def\infosubsection{\infosubsection1864,61387 +\def\infosubsubsection{\infosubsubsection1865,61432 +\global\let\section = \numberedsec=1870,61669 +\global\let\subsection = \numberedsubsec=1871,61704 +\global\let\subsubsection = \numberedsubsubsec=1872,61745 +\def\majorheading{\majorheading1886,62252 +\def\majorheadingzzz #1{\majorheadingzzz1887,62297 +\def\chapheading{\chapheading1893,62530 +\def\chapheadingzzz #1{\chapheadingzzz1894,62573 +\def\heading{\heading1899,62768 +\def\subheading{\subheading1901,62805 +\def\subsubheading{\subsubheading1903,62848 +\def\dobreak#1#2{\dobreak1910,63125 +\def\setchapterstyle #1 {\setchapterstyle1912,63203 +\def\chapbreak{\chapbreak1919,63458 +\def\chappager{\chappager1920,63508 +\def\chapoddpage{\chapoddpage1921,63546 +\def\setchapternewpage #1 {\setchapternewpage1923,63625 +\def\CHAPPAGoff{\CHAPPAGoff1925,63682 +\def\CHAPPAGon{\CHAPPAGon1929,63776 +\global\def\HEADINGSon{\HEADINGSon1932,63867 +\def\CHAPPAGodd{\CHAPPAGodd1934,63909 +\global\def\HEADINGSon{\HEADINGSon1937,64005 +\def\CHAPFplain{\CHAPFplain1941,64059 +\def\chfplain #1#2{\chfplain1945,64151 +\def\unnchfplain #1{\unnchfplain1956,64374 +\def\unnchfopen #1{\unnchfopen1964,64603 +\def\chfopen #1#2{\chfopen1970,64811 +\def\CHAPFopen{\CHAPFopen1975,64955 +\def\subsecheadingbreak{\subsecheadingbreak1982,65173 +\def\secheadingbreak{\secheadingbreak1985,65302 +\def\secheading #1#2#3{\secheading1993,65584 +\def\plainsecheading #1{\plainsecheading1994,65640 +\def\secheadingi #1{\secheadingi1995,65683 +\def\subsecheading #1#2#3#4{\subsecheading2006,66051 +\def\subsecheadingi #1{\subsecheadingi2007,66118 +\def\subsubsecfonts{\subsubsecfonts2014,66415 +\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538 +\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616 +\def\startcontents#1{\startcontents2032,67088 + \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361 +\outer\def\contents{\contents2049,67720 +\outer\def\summarycontents{\summarycontents2057,67864 + \def\secentry ##1##2##3##4{\secentry2067,68235 + \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270 + \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305 + \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346 + \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384 + \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431 +\def\chapentry#1#2#3{\chapentry2085,68865 +\def\shortchapentry#1#2#3{\shortchapentry2088,68982 + {#2\labelspace #1}space2091,69092 +\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146 +\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193 +\def\secentry#1#2#3#4{\secentry2102,69357 +\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416 +\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477 +\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547 +\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621 + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655 +\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706 +\def\dochapentry#1#2{\dochapentry2123,70080 +\def\dosecentry#1#2{\dosecentry2138,70685 +\def\dosubsecentry#1#2{\dosubsecentry2145,70863 +\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048 +\def\labelspace{\labelspace2160,71299 +\def\dopageno#1{\dopageno2162,71334 +\def\doshortpageno#1{\doshortpageno2163,71360 +\def\chapentryfonts{\chapentryfonts2165,71392 +\def\secentryfonts{\secentryfonts2166,71427 +\def\point{\point2192,72386 +\def\result{\result2194,72407 +\def\expansion{\expansion2195,72480 +\def\print{\print2196,72551 +\def\equiv{\equiv2198,72618 +\def\error{\error2218,73391 +\def\tex{\tex2224,73620 +\def\@{\@2242,74003 +\gdef\sepspaces{\def {\ }}}\2265,74735 +\def\aboveenvbreak{\aboveenvbreak2268,74817 +\def\afterenvbreak{\afterenvbreak2272,74983 +\def\ctl{\ctl2286,75494 +\def\ctr{\ctr2287,75566 +\def\cbl{\cbl2288,75605 +\def\cbr{\cbr2289,75645 +\def\carttop{\carttop2290,75684 +\def\cartbot{\cartbot2293,75792 +\long\def\cartouche{\cartouche2299,75932 +\def\Ecartouche{\Ecartouche2326,76720 +\def\lisp{\lisp2338,76855 +\def\Elisp{\Elisp2348,77202 +\def\next##1{\next2360,77528 +\def\Eexample{\Eexample2364,77570 +\def\Esmallexample{\Esmallexample2367,77617 +\def\smalllispx{\smalllispx2373,77795 +\def\Esmalllisp{\Esmalllisp2383,78149 +\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505 +\def\next##1{\next2397,78562 +\def\display{\display2401,78642 +\def\Edisplay{\Edisplay2410,78961 +\def\next##1{\next2422,79272 +\def\format{\format2426,79375 +\def\Eformat{\Eformat2434,79671 +\def\next##1{\next2437,79760 +\def\flushleft{\flushleft2441,79812 +\def\Eflushleft{\Eflushleft2451,80183 +\def\next##1{\next2454,80276 +\def\flushright{\flushright2456,80298 +\def\Eflushright{\Eflushright2466,80670 +\def\next##1{\next2470,80801 +\def\quotation{\quotation2474,80859 +\def\Equotation{\Equotation2480,81051 +\def\setdeffont #1 {\setdeffont2493,81449 +\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495 +\newskip\defargsindent \defargsindent=50ptargsindent2496,81538 +\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581 +\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624 +\def\activeparens{\activeparens2503,81822 +\def\opnr{\opnr2529,83034 +\def\lbrb{\lbrb2530,83099 +\def\defname #1#2{\defname2536,83300 +\advance\dimen2 by -\defbodyindentbodyindent2540,83418 +\advance\dimen3 by -\defbodyindentbodyindent2542,83472 +\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526 +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83668 +\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83743 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112 +\advance\leftskip by -\defbodyindentbodyindent2557,84246 +\exdentamount=\defbodyindentbodyindent2558,84283 +\def\defparsebody #1#2#3{\defparsebody2568,84642 +\def#1{2572,84826 +\def#2{2573,84862 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84934 +\exdentamount=\defbodyindentbodyindent2576,85008 +\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112 +\def#1{2585,85273 +\def#2##1 {2586,85309 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85392 +\exdentamount=\defbodyindentbodyindent2589,85466 +\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551 +\def#1{2596,85712 +\def#2##1 ##2 {2597,85748 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85848 +\exdentamount=\defbodyindentbodyindent2601,85922 +\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193 +\def#1{2612,86380 +\def#2{2613,86416 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86475 +\exdentamount=\defbodyindentbodyindent2616,86549 +\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640 +\def#1{2625,86799 +\def#2##1 {2626,86835 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86905 +\exdentamount=\defbodyindentbodyindent2629,86979 +\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051 +\def#1{2636,87215 +\def#2##1 ##2 {2637,87251 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87338 +\exdentamount=\defbodyindentbodyindent2641,87412 +\def\defunargs #1{\defunargs2664,88172 +\def\deftypefunargs #1{\deftypefunargs2676,88554 +\def\deffn{\deffn2690,88936 +\def\deffnheader #1#2#3{\deffnheader2692,88993 +\begingroup\defname {name2693,89041 +\def\defun{\defun2699,89186 +\def\defunheader #1#2{\defunheader2701,89239 +\begingroup\defname {name2702,89314 +\defunargs {unargs2703,89350 +\def\deftypefun{\deftypefun2709,89498 +\def\deftypefunheader #1#2{\deftypefunheader2712,89620 +\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729 +\begingroup\defname {name2716,89821 +\deftypefunargs {typefunargs2717,89867 +\def\deftypefn{\deftypefn2723,90038 +\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187 +\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323 +\begingroup\defname {name2730,90416 +\deftypefunargs {typefunargs2731,90456 +\def\defmac{\defmac2737,90577 +\def\defmacheader #1#2{\defmacheader2739,90634 +\begingroup\defname {name2740,90710 +\defunargs {unargs2741,90743 +\def\defspec{\defspec2747,90867 +\def\defspecheader #1#2{\defspecheader2749,90928 +\begingroup\defname {name2750,91005 +\defunargs {unargs2751,91045 +\def\deffnx #1 {\deffnx2758,91240 +\def\defunx #1 {\defunx2759,91297 +\def\defmacx #1 {\defmacx2760,91354 +\def\defspecx #1 {\defspecx2761,91413 +\def\deftypefnx #1 {\deftypefnx2762,91474 +\def\deftypeunx #1 {\deftypeunx2763,91539 +\def\defop #1 {\defop2769,91685 +\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720 +\def\defopheader #1#2#3{\defopheader2772,91774 +\begingroup\defname {name2774,91863 +\defunargs {unargs2775,91909 +\def\defmethod{\defmethod2780,91970 +\def\defmethodheader #1#2#3{\defmethodheader2782,92043 +\begingroup\defname {name2784,92131 +\defunargs {unargs2785,92171 +\def\defcv #1 {\defcv2790,92245 +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280 +\def\defcvarheader #1#2#3{\defcvarheader2793,92339 +\begingroup\defname {name2795,92425 +\defvarargs {varargs2796,92471 +\def\defivar{\defivar2801,92544 +\def\defivarheader #1#2#3{\defivarheader2803,92607 +\begingroup\defname {name2805,92693 +\defvarargs {varargs2806,92744 +\def\defopx #1 {\defopx2812,92893 +\def\defmethodx #1 {\defmethodx2813,92950 +\def\defcvx #1 {\defcvx2814,93015 +\def\defivarx #1 {\defivarx2815,93072 +\def\defvarargs #1{\defvarargs2822,93343 +\def\defvr{\defvr2828,93487 +\def\defvrheader #1#2#3{\defvrheader2830,93542 +\begingroup\defname {name2831,93590 +\def\defvar{\defvar2835,93675 +\def\defvarheader #1#2{\defvarheader2837,93735 +\begingroup\defname {name2838,93806 +\defvarargs {varargs2839,93842 +\def\defopt{\defopt2844,93908 +\def\defoptheader #1#2{\defoptheader2846,93968 +\begingroup\defname {name2847,94039 +\defvarargs {varargs2848,94078 +\def\deftypevar{\deftypevar2853,94135 +\def\deftypevarheader #1#2{\deftypevarheader2856,94251 +\begingroup\defname {name2858,94334 +\def\deftypevr{\deftypevr2865,94508 +\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579 +\begingroup\defname {name2868,94631 +\def\defvrx #1 {\defvrx2876,94868 +\def\defvarx #1 {\defvarx2877,94925 +\def\defoptx #1 {\defoptx2878,94984 +\def\deftypevarx #1 {\deftypevarx2879,95043 +\def\deftypevrx #1 {\deftypevrx2880,95110 +\def\deftpargs #1{\deftpargs2885,95259 +\def\deftp{\deftp2889,95339 +\def\deftpheader #1#2#3{\deftpheader2891,95394 +\begingroup\defname {name2892,95442 +\def\deftpx #1 {\deftpx2897,95601 +\def\setref#1{\setref2908,95922 +\def\unnumbsetref#1{\unnumbsetref2913,96036 +\def\appendixsetref#1{\appendixsetref2918,96143 +\def\pxref#1{\pxref2929,96554 +\def\xref#1{\xref2930,96590 +\def\ref#1{\ref2931,96625 +\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655 +\def\printedmanual{\printedmanual2933,96698 +\def\printednodename{\printednodename2934,96736 +\def\printednodename{\printednodename2939,96861 +section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493 +\refx{x2957,97571 +\def\dosetq #1#2{\dosetq2965,97791 +\def\internalsetq #1#2{\internalsetq2973,98049 +\def\Ypagenumber{\Ypagenumber2977,98150 +\def\Ytitle{\Ytitle2979,98176 +\def\Ynothing{\Ynothing2981,98203 +\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220 +\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536 +\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566 +\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98621 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98725 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796 + \def\linenumber{\linenumber3009,99135 +\def\refx#1#2{\refx3015,99319 +\def\xrdef #1#2{\xrdef3037,99945 +\def\readauxfile{\readauxfile3040,100030 +\def\supereject{\supereject3110,101811 +\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496 +\def\openindices{\openindices3139,102682 +\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907 +\parindent = \defaultparindentaultparindent3152,102959 +\def\smallbook{\smallbook3175,103683 +\global\def\Esmallexample{\Esmallexample3192,104110 +\def\afourpaper{\afourpaper3196,104201 +\def\finalout{\finalout3224,105009 +\def\normaldoublequote{\normaldoublequote3235,105270 +\def\normaltilde{\normaltilde3236,105296 +\def\normalcaret{\normalcaret3237,105316 +\def\normalunderscore{\normalunderscore3238,105336 +\def\normalverticalbar{\normalverticalbar3239,105361 +\def\normalless{\normalless3240,105387 +\def\normalgreater{\normalgreater3241,105406 +\def\normalplus{\normalplus3242,105428 +\def\ifusingtt#1#2{\ifusingtt3253,105920 +\def\activedoublequote{\activedoublequote3261,106248 +\def~{~3264,106334 +\def^{^3267,106395 +\def_{_3270,106434 +\def\_{\_3272,106508 +\def\lvvmode{\lvvmode3279,106845 +\def|{|3282,106895 +\def<{<3285,106958 +\def>{>3288,107015 +\def+{+3290,107053 +\def\turnoffactive{\turnoffactive3296,107214 +\global\def={=3307,107500 +\def\normalbackslash{\normalbackslash3321,107882 c-src/c.c,76 T f(1,0 @@ -4574,13 +4577,13 @@ extern struct node *yylval;yylval306,6246 unsigned char parse_cell_or_range 309,6291 unsigned char parse_cell_or_range 311,6355 yylex FUN0(315,6405 -parse_cell_or_range FUN2(587,11771 -#define CK_ABS_R(671,13213 -#define CK_REL_R(675,13292 -#define CK_ABS_C(680,13421 -#define CK_REL_C(684,13500 -#define MAYBEREL(689,13629 -str_to_col FUN1(847,16830 +parse_cell_or_range FUN2(587,11772 +#define CK_ABS_R(671,13214 +#define CK_REL_R(675,13293 +#define CK_ABS_C(680,13422 +#define CK_REL_C(684,13501 +#define MAYBEREL(689,13630 +str_to_col FUN1(847,16831 y-src/parse.c,520 #define YYBISON 4,64 diff --git a/test/manual/etags/ETAGS.good_3 b/test/manual/etags/ETAGS.good_3 index 40be768aacb..5b558189ebc 100644 --- a/test/manual/etags/ETAGS.good_3 +++ b/test/manual/etags/ETAGS.good_3 @@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153 protected body Bidule Bidule/b139,2181 protected body Machin_T Machin_T/b146,2281 -c-src/abbrev.c,2072 +c-src/abbrev.c,1957 Lisp_Object Vabbrev_table_name_list;43,1429 Lisp_Object Vglobal_abbrev_table;48,1574 Lisp_Object Vfundamental_mode_abbrev_table;52,1685 @@ -186,33 +186,31 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046 Lisp_Object Vlast_abbrev;70,2155 Lisp_Object Vlast_abbrev_text;75,2324 int last_abbrev_point;79,2414 -Lisp_Object Vpre_abbrev_expand_hook,83,2487 -Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743 -DEFUN ("define-abbrev", Fdefine_abbrev,107,3124 -DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev149,4443 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814 -DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282 -DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282 -DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246 -DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246 -DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761 -DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682 -write_abbrev 426,12889 -describe_abbrev 445,13324 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,466,13839 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description466,13839 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table506,14995 -syms_of_abbrev 540,16072 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632 +DEFUN ("define-abbrev", Fdefine_abbrev,104,3013 +DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev146,4332 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703 +DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171 +DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171 +DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135 +DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135 +DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650 +DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495 +write_abbrev 420,12702 +describe_abbrev 439,13137 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,460,13652 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description460,13652 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table500,14808 +syms_of_abbrev 534,15885 c-src/torture.c,197 (*tag1 tag118,452 @@ -1155,165 +1153,165 @@ make_lispy_position 5228,157391 toolkit_menubar_in_use 5456,163954 make_scroll_bar_position 5469,164322 make_lispy_event 5485,164968 -make_lispy_movement 6104,183532 -make_lispy_switch_frame 6131,184263 -make_lispy_focus_in 6137,184370 -make_lispy_focus_out 6145,184496 -parse_modifiers_uncached 6163,184946 -#define SINGLE_LETTER_MOD(6185,185466 -#undef SINGLE_LETTER_MOD6212,185907 -#define MULTI_LETTER_MOD(6214,185933 -#undef MULTI_LETTER_MOD6231,186401 -apply_modifiers_uncached 6273,187575 -static const char *const modifier_names[modifier_names6319,189194 -#define NUM_MOD_NAMES 6325,189400 -static Lisp_Object modifier_symbols;6327,189450 -lispy_modifier_list 6331,189587 -#define KEY_TO_CHAR(6353,190253 -parse_modifiers 6356,190329 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191518 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518 -apply_modifiers 6422,192392 -reorder_modifiers 6491,194721 -modify_event_symbol 6536,196529 -DEFUN ("event-convert-list", Fevent_convert_list,6628,199245 -DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199245 -parse_solitary_modifier 6695,201136 -#define SINGLE_LETTER_MOD(6701,201259 -#define MULTI_LETTER_MOD(6705,201344 -#undef SINGLE_LETTER_MOD6763,202642 -#undef MULTI_LETTER_MOD6764,202667 -lucid_event_type_list_p 6775,202890 -get_input_pending 6814,203961 -record_asynch_buffer_change 6834,204580 -gobble_input 6872,205703 -tty_read_avail_input 6967,208311 -handle_async_input 7149,214040 -process_pending_signals 7165,214360 -unblock_input_to 7177,214646 -unblock_input 7200,215278 -totally_unblock_input 7209,215446 -handle_input_available_signal 7217,215530 -deliver_input_available_signal 7226,215701 -struct user_signal_info7235,215866 - int sig;7238,215916 - char *name;name7241,215957 - int npending;7244,216008 - struct user_signal_info *next;next7246,216025 -static struct user_signal_info *user_signals user_signals7250,216091 -add_user_signal 7253,216150 -handle_user_signal 7275,216599 -deliver_user_signal 7316,217559 -find_user_signal_name 7322,217660 -store_user_signal_events 7334,217842 -static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417 -static Lisp_Object menu_bar_items_vector;7368,218631 -static int menu_bar_items_index;7369,218673 -static const char *separator_names[separator_names7372,218708 -menu_separator_name_p 7393,219149 -menu_bar_items 7426,219853 -Lisp_Object item_properties;7568,224604 -menu_bar_item 7571,224646 -menu_item_eval_property_1 7647,227176 -eval_dyn 7658,227466 -menu_item_eval_property 7666,227676 -parse_menu_item 7686,228342 -static Lisp_Object tool_bar_items_vector;7965,236337 -static Lisp_Object tool_bar_item_properties;7970,236511 -static int ntool_bar_items;7974,236607 -tool_bar_items 7990,237084 -process_tool_bar_item 8075,239893 -#define PROP(8112,240970 -set_prop 8114,241039 -parse_tool_bar_item 8167,242454 -#undef PROP8379,248845 -init_tool_bar_items 8387,248970 -append_tool_bar_item 8401,249262 -read_char_x_menu_prompt 8443,250772 -read_char_minibuf_menu_prompt 8503,252446 -#define PUSH_C_STR(8527,253015 -follow_key 8726,258554 -active_maps 8733,258696 -typedef struct keyremap8742,259022 - Lisp_Object parent;8745,259108 - Lisp_Object map;8748,259225 - int start,8753,259447 - int start, end;8753,259447 -} keyremap;8754,259465 -access_keymap_keyremap 8764,259809 -keyremap_step 8811,261451 -test_undefined 8867,262935 -read_key_sequence 8916,264862 -read_key_sequence_vs 9826,295822 -DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295 -DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299983 -detect_input_pending 9950,300489 -detect_input_pending_ignore_squeezables 9959,300655 -detect_input_pending_run_timers 9967,300871 -clear_input_pending 9985,301363 -requeued_events_pending_p 9997,301733 -DEFUN ("input-pending-p", Finput_pending_p,10002,301814 -DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814 -DEFUN ("recent-keys", Frecent_keys,10024,302597 -DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597 -DEFUN ("this-command-keys", Fthis_command_keys,10055,303518 -DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303959 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304381 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304956 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305496 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306511 -DEFUN ("recursion-depth", Frecursion_depth,10158,307070 -DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070 -DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407 -DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407 -DEFUN ("discard-input", Fdiscard_input,10203,308448 -DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448 -DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950 -DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950 -stuff_buffered_input 10285,311046 -set_waiting_for_input 10323,312017 -clear_waiting_for_input 10337,312391 -handle_interrupt_signal 10351,312755 -deliver_interrupt_signal 10378,313643 -static int volatile force_quit_count;10387,313933 -handle_interrupt 10401,314415 -quit_throw_to_read_char 10541,318712 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289 -DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517 -DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320517 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321433 -DEFUN ("set-quit-char", Fset_quit_char,10694,322707 -DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707 -DEFUN ("set-input-mode", Fset_input_mode,10729,323571 -DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571 -DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460 -DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324460 -DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838 -DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838 -DEFUN ("posn-at-point", Fposn_at_point,10824,327061 -DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061 -init_kboard 10861,328215 -allocate_kboard 10893,329285 -wipe_kboard 10909,329638 -delete_kboard 10917,329752 -init_keyboard 10942,330282 -struct event_head11021,332697 - short var;11023,332717 - short kind;11024,332730 -static const struct event_head head_table[head_table11027,332748 -syms_of_keyboard 11045,333578 -keys_of_keyboard 11841,367116 -mark_kboards 11916,370435 +make_lispy_movement 6104,183531 +make_lispy_switch_frame 6131,184262 +make_lispy_focus_in 6137,184369 +make_lispy_focus_out 6145,184495 +parse_modifiers_uncached 6163,184945 +#define SINGLE_LETTER_MOD(6185,185465 +#undef SINGLE_LETTER_MOD6212,185906 +#define MULTI_LETTER_MOD(6214,185932 +#undef MULTI_LETTER_MOD6231,186400 +apply_modifiers_uncached 6273,187574 +static const char *const modifier_names[modifier_names6319,189193 +#define NUM_MOD_NAMES 6325,189399 +static Lisp_Object modifier_symbols;6327,189449 +lispy_modifier_list 6331,189586 +#define KEY_TO_CHAR(6353,190252 +parse_modifiers 6356,190328 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191517 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517 +apply_modifiers 6422,192391 +reorder_modifiers 6491,194720 +modify_event_symbol 6536,196528 +DEFUN ("event-convert-list", Fevent_convert_list,6628,199244 +DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199244 +parse_solitary_modifier 6695,201135 +#define SINGLE_LETTER_MOD(6701,201258 +#define MULTI_LETTER_MOD(6705,201343 +#undef SINGLE_LETTER_MOD6763,202641 +#undef MULTI_LETTER_MOD6764,202666 +lucid_event_type_list_p 6775,202889 +get_input_pending 6814,203960 +record_asynch_buffer_change 6834,204579 +gobble_input 6872,205702 +tty_read_avail_input 6967,208310 +handle_async_input 7149,214039 +process_pending_signals 7165,214359 +unblock_input_to 7177,214645 +unblock_input 7200,215277 +totally_unblock_input 7209,215445 +handle_input_available_signal 7217,215529 +deliver_input_available_signal 7226,215700 +struct user_signal_info7235,215865 + int sig;7238,215915 + char *name;name7241,215956 + int npending;7244,216007 + struct user_signal_info *next;next7246,216024 +static struct user_signal_info *user_signals user_signals7250,216090 +add_user_signal 7253,216149 +handle_user_signal 7275,216598 +deliver_user_signal 7316,217558 +find_user_signal_name 7322,217659 +store_user_signal_events 7334,217841 +static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416 +static Lisp_Object menu_bar_items_vector;7368,218630 +static int menu_bar_items_index;7369,218672 +static const char *separator_names[separator_names7372,218707 +menu_separator_name_p 7393,219148 +menu_bar_items 7426,219852 +Lisp_Object item_properties;7568,224603 +menu_bar_item 7571,224645 +menu_item_eval_property_1 7647,227175 +eval_dyn 7658,227465 +menu_item_eval_property 7666,227675 +parse_menu_item 7686,228341 +static Lisp_Object tool_bar_items_vector;7965,236336 +static Lisp_Object tool_bar_item_properties;7970,236510 +static int ntool_bar_items;7974,236606 +tool_bar_items 7990,237083 +process_tool_bar_item 8075,239892 +#define PROP(8112,240969 +set_prop 8114,241038 +parse_tool_bar_item 8167,242453 +#undef PROP8379,248844 +init_tool_bar_items 8387,248969 +append_tool_bar_item 8401,249261 +read_char_x_menu_prompt 8443,250771 +read_char_minibuf_menu_prompt 8503,252445 +#define PUSH_C_STR(8527,253014 +follow_key 8726,258553 +active_maps 8733,258695 +typedef struct keyremap8742,259021 + Lisp_Object parent;8745,259107 + Lisp_Object map;8748,259224 + int start,8753,259446 + int start, end;8753,259446 +} keyremap;8754,259464 +access_keymap_keyremap 8764,259808 +keyremap_step 8811,261450 +test_undefined 8867,262934 +read_key_sequence 8916,264861 +read_key_sequence_vs 9826,295821 +DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294 +DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299982 +detect_input_pending 9950,300488 +detect_input_pending_ignore_squeezables 9959,300654 +detect_input_pending_run_timers 9967,300870 +clear_input_pending 9985,301362 +requeued_events_pending_p 9997,301732 +DEFUN ("input-pending-p", Finput_pending_p,10002,301813 +DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813 +DEFUN ("recent-keys", Frecent_keys,10024,302596 +DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596 +DEFUN ("this-command-keys", Fthis_command_keys,10055,303517 +DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303958 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304380 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304955 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305495 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306510 +DEFUN ("recursion-depth", Frecursion_depth,10158,307069 +DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069 +DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406 +DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406 +DEFUN ("discard-input", Fdiscard_input,10203,308447 +DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447 +DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949 +DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949 +stuff_buffered_input 10285,311045 +set_waiting_for_input 10323,312016 +clear_waiting_for_input 10337,312390 +handle_interrupt_signal 10351,312754 +deliver_interrupt_signal 10378,313642 +static int volatile force_quit_count;10387,313932 +handle_interrupt 10401,314414 +quit_throw_to_read_char 10541,318711 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288 +DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516 +DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320516 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321432 +DEFUN ("set-quit-char", Fset_quit_char,10694,322706 +DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706 +DEFUN ("set-input-mode", Fset_input_mode,10729,323570 +DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570 +DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459 +DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324459 +DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837 +DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837 +DEFUN ("posn-at-point", Fposn_at_point,10824,327060 +DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060 +init_kboard 10861,328214 +allocate_kboard 10893,329284 +wipe_kboard 10909,329637 +delete_kboard 10917,329751 +init_keyboard 10942,330281 +struct event_head11021,332696 + short var;11023,332716 + short kind;11024,332729 +static const struct event_head head_table[head_table11027,332747 +syms_of_keyboard 11045,333577 +keys_of_keyboard 11841,367115 +mark_kboards 11916,370434 c-src/emacs/src/lisp.h,27827 #define EMACS_LISP_H22,801 @@ -2520,11 +2518,11 @@ main(37,571 D(43,659 int x;44,694 -el-src/TAGTEST.EL,179 -(foo::defmumble bletch 1,0 -(defun foo==bar foo==bar2,33 -(defalias 'pending-delete-mode pending-delete-mode6,149 -(defalias (quote explicitly-quoted-pending-delete-mode)9,222 +el-src/TAGTEST.EL,181 +(foo::defmumble bletch 3,33 +(defun foo==bar foo==bar4,66 +(defalias 'pending-delete-mode pending-delete-mode8,182 +(defalias (quote explicitly-quoted-pending-delete-mode)11,255 el-src/emacs/lisp/progmodes/etags.el,5069 (defvar tags-file-name 34,1035 @@ -3313,22 +3311,22 @@ ord_add_element(71,1867 ord_del_element(85,2344 ord_disjoint(100,2783 ord_intersect(108,2953 -ord_intersection(126,3552 -ord_intersection3(130,3691 -ord_intersection(150,4531 -ord_intersection4(154,4703 -ord_intersection(176,5664 -ord_intersection2(181,5812 -ord_member(200,6318 -ord_seteq(216,6683 -ord_setproduct(225,6971 -ord_subset(240,7377 -ord_subtract(257,7861 -ord_symdiff(265,8054 -ord_union(288,8887 -ord_union4(303,9352 -ord_union(324,10171 -ord_union_all(329,10313 +ord_intersection(126,3553 +ord_intersection3(130,3692 +ord_intersection(150,4533 +ord_intersection4(154,4705 +ord_intersection(176,5666 +ord_intersection2(181,5814 +ord_member(200,6320 +ord_seteq(216,6685 +ord_setproduct(225,6973 +ord_subset(240,7379 +ord_subtract(257,7863 +ord_symdiff(265,8056 +ord_union(288,8889 +ord_union4(303,9354 +ord_union(324,10173 +ord_union_all(329,10315 prol-src/natded.prolog,2319 expandmng(100,2879 @@ -3543,6 +3541,11 @@ module A9,57 alias_method ( :foo2,foo237,586 A::Constant Constant42,655 +rs-src/test.rs,52 +enum IpAddrKind 3,11 +fn test1(8,48 +fn main(12,88 + scm-src/test.scm,260 (define hello 1,0 (set! hello 3,32 @@ -3757,533 +3760,533 @@ tex-src/texinfo.tex,30627 \def\vritemindex #1{\vritemindex1068,35482 \def\tablez #1#2#3#4#5#6{\tablez1074,35631 \def\Edescription{\Edescription1077,35689 -\def\itemfont{\itemfont1082,35891 -\def\Etable{\Etable1090,36117 -\def\itemize{\itemize1103,36441 -\def\itemizezzz #1{\itemizezzz1105,36477 -\def\itemizey #1#2{\itemizey1110,36572 -\def#2{1119,36818 -\def\itemcontents{\itemcontents1120,36859 -\def\bullet{\bullet1123,36907 -\def\minus{\minus1124,36934 -\def\frenchspacing{\frenchspacing1128,37042 -\def\splitoff#1#2\endmark{\splitoff1134,37267 -\def\enumerate{\enumerate1140,37497 -\def\enumeratezzz #1{\enumeratezzz1141,37536 -\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589 - \def\thearg{\thearg1146,37736 - \ifx\thearg\empty \def\thearg{\thearg1147,37755 -\def\numericenumerate{\numericenumerate1184,39089 -\def\lowercaseenumerate{\lowercaseenumerate1190,39219 -\def\uppercaseenumerate{\uppercaseenumerate1203,39566 -\def\startenumeration#1{\startenumeration1219,40056 -\def\alphaenumerate{\alphaenumerate1227,40238 -\def\capsenumerate{\capsenumerate1228,40273 -\def\Ealphaenumerate{\Ealphaenumerate1229,40307 -\def\Ecapsenumerate{\Ecapsenumerate1230,40341 -\def\itemizeitem{\itemizeitem1234,40421 -\def\newindex #1{\newindex1259,41278 -\def\defindex{\defindex1268,41567 -\def\newcodeindex #1{\newcodeindex1272,41675 -\def\defcodeindex{\defcodeindex1279,41935 -\def\synindex #1 #2 {\synindex1283,42115 -\def\syncodeindex #1 #2 {\syncodeindex1292,42455 -\def\doindex#1{\doindex1309,43134 -\def\singleindexer #1{\singleindexer1310,43193 -\def\docodeindex#1{\docodeindex1313,43305 -\def\singlecodeindexer #1{\singlecodeindexer1314,43372 -\def\indexdummies{\indexdummies1316,43430 -\def\_{\_1317,43450 -\def\w{\w1318,43478 -\def\bf{\bf1319,43505 -\def\rm{\rm1320,43534 -\def\sl{\sl1321,43563 -\def\sf{\sf1322,43592 -\def\tt{\tt1323,43620 -\def\gtr{\gtr1324,43648 -\def\less{\less1325,43678 -\def\hat{\hat1326,43710 -\def\char{\char1327,43740 -\def\TeX{\TeX1328,43772 -\def\dots{\dots1329,43802 -\def\copyright{\copyright1330,43835 -\def\tclose##1{\tclose1331,43878 -\def\code##1{\code1332,43923 -\def\samp##1{\samp1333,43964 -\def\t##1{\t1334,44005 -\def\r##1{\r1335,44040 -\def\i##1{\i1336,44075 -\def\b##1{\b1337,44110 -\def\cite##1{\cite1338,44145 -\def\key##1{\key1339,44186 -\def\file##1{\file1340,44225 -\def\var##1{\var1341,44266 -\def\kbd##1{\kbd1342,44305 -\def\indexdummyfont#1{\indexdummyfont1347,44461 -\def\indexdummytex{\indexdummytex1348,44487 -\def\indexdummydots{\indexdummydots1349,44511 -\def\indexnofonts{\indexnofonts1351,44537 -\let\w=\indexdummyfontdummyfont1352,44557 -\let\t=\indexdummyfontdummyfont1353,44580 -\let\r=\indexdummyfontdummyfont1354,44603 -\let\i=\indexdummyfontdummyfont1355,44626 -\let\b=\indexdummyfontdummyfont1356,44649 -\let\emph=\indexdummyfontdummyfont1357,44672 -\let\strong=\indexdummyfontdummyfont1358,44698 -\let\cite=\indexdummyfont=\indexdummyfont1359,44726 -\let\sc=\indexdummyfontdummyfont1360,44752 -\let\tclose=\indexdummyfontdummyfont1364,44924 -\let\code=\indexdummyfontdummyfont1365,44952 -\let\file=\indexdummyfontdummyfont1366,44978 -\let\samp=\indexdummyfontdummyfont1367,45004 -\let\kbd=\indexdummyfontdummyfont1368,45030 -\let\key=\indexdummyfontdummyfont1369,45055 -\let\var=\indexdummyfontdummyfont1370,45080 -\let\TeX=\indexdummytexdummytex1371,45105 -\let\dots=\indexdummydotsdummydots1372,45129 -\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45381 -\def\doind #1#2{\doind1384,45437 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45480 -\def\rawbackslashxx{\rawbackslashxx1389,45620 -{\indexnofontsnofonts1394,45882 -\def\dosubind #1#2#3{\dosubind1405,46193 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46241 -\def\rawbackslashxx{\rawbackslashxx1410,46345 -{\indexnofontsnofonts1414,46499 -\def\findex {\findex1443,47430 -\def\kindex {\kindex1444,47453 -\def\cindex {\cindex1445,47476 -\def\vindex {\vindex1446,47499 -\def\tindex {\tindex1447,47522 -\def\pindex {\pindex1448,47545 -\def\cindexsub {\cindexsub1450,47569 -\def\printindex{\printindex1462,47896 -\def\doprintindex#1{\doprintindex1464,47937 - \def\indexbackslash{\indexbackslash1481,48422 - \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461 -\def\initial #1{\initial1517,49533 -\def\entry #1#2{\entry1523,49740 - \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50387 -\def\indexdotfill{\indexdotfill1549,50715 -\def\primary #1{\primary1552,50821 -\def\secondary #1#2{\secondary1556,50903 -\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985 -\newbox\partialpageialpage1566,51158 -\def\begindoublecolumns{\begindoublecolumns1572,51316 - \output={\global\setbox\partialpage=ialpage=1573,51352 -\def\enddoublecolumns{\enddoublecolumns1577,51540 -\def\doublecolumnout{\doublecolumnout1580,51625 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694 -\def\pagesofar{\pagesofar1584,51872 -\def\balancecolumns{\balancecolumns1588,52109 - \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52280 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541 -\newcount \appendixno \appendixno = `\@no1627,53446 -\def\appendixletter{\appendixletter1628,53487 -\def\opencontents{\opencontents1632,53590 -\def\thischapter{\thischapter1637,53771 -\def\seccheck#1{\seccheck1638,53809 -\def\chapternofonts{\chapternofonts1643,53913 -\def\result{\result1646,53988 -\def\equiv{\equiv1647,54023 -\def\expansion{\expansion1648,54056 -\def\print{\print1649,54097 -\def\TeX{\TeX1650,54130 -\def\dots{\dots1651,54159 -\def\copyright{\copyright1652,54190 -\def\tt{\tt1653,54231 -\def\bf{\bf1654,54258 -\def\w{\w1655,54286 -\def\less{\less1656,54311 -\def\gtr{\gtr1657,54342 -\def\hat{\hat1658,54371 -\def\char{\char1659,54400 -\def\tclose##1{\tclose1660,54431 -\def\code##1{\code1661,54475 -\def\samp##1{\samp1662,54515 -\def\r##1{\r1663,54555 -\def\b##1{\b1664,54589 -\def\key##1{\key1665,54623 -\def\file##1{\file1666,54661 -\def\kbd##1{\kbd1667,54701 -\def\i##1{\i1669,54809 -\def\cite##1{\cite1670,54843 -\def\var##1{\var1671,54883 -\def\emph##1{\emph1672,54921 -\def\dfn##1{\dfn1673,54961 -\def\thischaptername{\thischaptername1676,55002 -\outer\def\chapter{\chapter1677,55041 -\def\chapterzzz #1{\chapterzzz1678,55082 -{\chapternofonts%nofonts%1687,55478 -\global\let\section = \numberedsec=1692,55631 -\global\let\subsection = \numberedsubsec=1693,55666 -\global\let\subsubsection = \numberedsubsubsec=1694,55707 -\outer\def\appendix{\appendix1697,55758 -\def\appendixzzz #1{\appendixzzz1698,55801 -\global\advance \appendixno by 1 \message{no1700,55878 -\chapmacro {#1}{Appendix \appendixletter}letter1701,55947 -\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56040 -{\chapternofonts%nofonts%1705,56112 - {#1}{Appendix \appendixletter}letter1707,56168 -\appendixnoderef %noderef1710,56268 -\global\let\section = \appendixsec=1711,56287 -\global\let\subsection = \appendixsubsec=1712,56322 -\global\let\subsubsection = \appendixsubsubsec=1713,56363 -\outer\def\top{\top1716,56414 -\outer\def\unnumbered{\unnumbered1717,56454 -\def\unnumberedzzz #1{\unnumberedzzz1718,56501 -{\chapternofonts%nofonts%1722,56664 -\global\let\section = \unnumberedsec=1727,56814 -\global\let\subsection = \unnumberedsubsec=1728,56851 -\global\let\subsubsection = \unnumberedsubsubsec=1729,56894 -\outer\def\numberedsec{\numberedsec1732,56947 -\def\seczzz #1{\seczzz1733,56988 -{\chapternofonts%nofonts%1736,57144 -\outer\def\appendixsection{\appendixsection1745,57330 -\outer\def\appendixsec{\appendixsec1746,57387 -\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440 -\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552 -{\chapternofonts%nofonts%1750,57620 -{#1}{\appendixletter}letter1752,57676 -\appendixnoderef %noderef1755,57776 -\outer\def\unnumberedsec{\unnumberedsec1759,57816 -\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869 -{\chapternofonts%nofonts%1762,57964 -\outer\def\numberedsubsec{\numberedsubsec1770,58132 -\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187 -{\chapternofonts%nofonts%1774,58366 -\outer\def\appendixsubsec{\appendixsubsec1783,58570 -\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625 -\subsecheading {#1}{\appendixletter}letter1786,58747 -{\chapternofonts%nofonts%1787,58812 -{#1}{\appendixletter}letter1789,58871 -\appendixnoderef %noderef1792,58986 -\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026 -\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085 -{\chapternofonts%nofonts%1799,59186 -\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357 -\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418 -{\chapternofonts%nofonts%1812,59615 -\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848 -\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909 - {\appendixletter}letter1827,60048 -{\chapternofonts%nofonts%1828,60114 - {\appendixletter}letter1830,60179 -\appendixnoderef %noderef1834,60313 -\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353 -\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418 -{\chapternofonts%nofonts%1841,60525 -\def\infotop{\infotop1851,60854 -\def\infounnumbered{\infounnumbered1852,60892 -\def\infounnumberedsec{\infounnumberedsec1853,60937 -\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988 -\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045 -\def\infoappendix{\infoappendix1857,61109 -\def\infoappendixsec{\infoappendixsec1858,61150 -\def\infoappendixsubsec{\infoappendixsubsec1859,61197 -\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250 -\def\infochapter{\infochapter1862,61310 -\def\infosection{\infosection1863,61349 -\def\infosubsection{\infosubsection1864,61388 -\def\infosubsubsection{\infosubsubsection1865,61433 -\global\let\section = \numberedsec=1870,61670 -\global\let\subsection = \numberedsubsec=1871,61705 -\global\let\subsubsection = \numberedsubsubsec=1872,61746 -\def\majorheading{\majorheading1886,62253 -\def\majorheadingzzz #1{\majorheadingzzz1887,62298 -\def\chapheading{\chapheading1893,62531 -\def\chapheadingzzz #1{\chapheadingzzz1894,62574 -\def\heading{\heading1899,62769 -\def\subheading{\subheading1901,62806 -\def\subsubheading{\subsubheading1903,62849 -\def\dobreak#1#2{\dobreak1910,63126 -\def\setchapterstyle #1 {\setchapterstyle1912,63204 -\def\chapbreak{\chapbreak1919,63459 -\def\chappager{\chappager1920,63509 -\def\chapoddpage{\chapoddpage1921,63547 -\def\setchapternewpage #1 {\setchapternewpage1923,63626 -\def\CHAPPAGoff{\CHAPPAGoff1925,63683 -\def\CHAPPAGon{\CHAPPAGon1929,63777 -\global\def\HEADINGSon{\HEADINGSon1932,63868 -\def\CHAPPAGodd{\CHAPPAGodd1934,63910 -\global\def\HEADINGSon{\HEADINGSon1937,64006 -\def\CHAPFplain{\CHAPFplain1941,64060 -\def\chfplain #1#2{\chfplain1945,64152 -\def\unnchfplain #1{\unnchfplain1956,64375 -\def\unnchfopen #1{\unnchfopen1964,64604 -\def\chfopen #1#2{\chfopen1970,64812 -\def\CHAPFopen{\CHAPFopen1975,64956 -\def\subsecheadingbreak{\subsecheadingbreak1982,65174 -\def\secheadingbreak{\secheadingbreak1985,65303 -\def\secheading #1#2#3{\secheading1993,65585 -\def\plainsecheading #1{\plainsecheading1994,65641 -\def\secheadingi #1{\secheadingi1995,65684 -\def\subsecheading #1#2#3#4{\subsecheading2006,66052 -\def\subsecheadingi #1{\subsecheadingi2007,66119 -\def\subsubsecfonts{\subsubsecfonts2014,66416 -\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539 -\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617 -\def\startcontents#1{\startcontents2032,67089 - \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362 -\outer\def\contents{\contents2049,67721 -\outer\def\summarycontents{\summarycontents2057,67865 - \def\secentry ##1##2##3##4{\secentry2067,68236 - \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271 - \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306 - \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347 - \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385 - \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432 -\def\chapentry#1#2#3{\chapentry2085,68866 -\def\shortchapentry#1#2#3{\shortchapentry2088,68983 - {#2\labelspace #1}space2091,69093 -\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147 -\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194 -\def\secentry#1#2#3#4{\secentry2102,69358 -\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417 -\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478 -\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548 -\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622 - \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656 -\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707 -\def\dochapentry#1#2{\dochapentry2123,70081 -\def\dosecentry#1#2{\dosecentry2138,70686 -\def\dosubsecentry#1#2{\dosubsecentry2145,70864 -\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049 -\def\labelspace{\labelspace2160,71300 -\def\dopageno#1{\dopageno2162,71335 -\def\doshortpageno#1{\doshortpageno2163,71361 -\def\chapentryfonts{\chapentryfonts2165,71393 -\def\secentryfonts{\secentryfonts2166,71428 -\def\point{\point2192,72387 -\def\result{\result2194,72408 -\def\expansion{\expansion2195,72481 -\def\print{\print2196,72552 -\def\equiv{\equiv2198,72619 -\def\error{\error2218,73392 -\def\tex{\tex2224,73621 -\def\@{\@2242,74004 -\gdef\sepspaces{\def {\ }}}\2265,74736 -\def\aboveenvbreak{\aboveenvbreak2268,74818 -\def\afterenvbreak{\afterenvbreak2272,74984 -\def\ctl{\ctl2286,75495 -\def\ctr{\ctr2287,75567 -\def\cbl{\cbl2288,75606 -\def\cbr{\cbr2289,75646 -\def\carttop{\carttop2290,75685 -\def\cartbot{\cartbot2293,75793 -\long\def\cartouche{\cartouche2299,75933 -\def\Ecartouche{\Ecartouche2326,76721 -\def\lisp{\lisp2338,76856 -\def\Elisp{\Elisp2348,77203 -\def\next##1{\next2360,77529 -\def\Eexample{\Eexample2364,77571 -\def\Esmallexample{\Esmallexample2367,77618 -\def\smalllispx{\smalllispx2373,77796 -\def\Esmalllisp{\Esmalllisp2383,78150 -\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506 -\def\next##1{\next2397,78563 -\def\display{\display2401,78643 -\def\Edisplay{\Edisplay2410,78962 -\def\next##1{\next2422,79273 -\def\format{\format2426,79376 -\def\Eformat{\Eformat2434,79672 -\def\next##1{\next2437,79761 -\def\flushleft{\flushleft2441,79813 -\def\Eflushleft{\Eflushleft2451,80184 -\def\next##1{\next2454,80277 -\def\flushright{\flushright2456,80299 -\def\Eflushright{\Eflushright2466,80671 -\def\next##1{\next2470,80802 -\def\quotation{\quotation2474,80860 -\def\Equotation{\Equotation2480,81052 -\def\setdeffont #1 {\setdeffont2493,81450 -\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496 -\newskip\defargsindent \defargsindent=50ptargsindent2496,81539 -\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582 -\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625 -\def\activeparens{\activeparens2503,81823 -\def\opnr{\opnr2529,83035 -\def\lbrb{\lbrb2530,83100 -\def\defname #1#2{\defname2536,83301 -\advance\dimen2 by -\defbodyindentbodyindent2540,83419 -\advance\dimen3 by -\defbodyindentbodyindent2542,83473 -\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527 -\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83669 -\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83744 -\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113 -\advance\leftskip by -\defbodyindentbodyindent2557,84247 -\exdentamount=\defbodyindentbodyindent2558,84284 -\def\defparsebody #1#2#3{\defparsebody2568,84643 -\def#1{2572,84827 -\def#2{2573,84863 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84935 -\exdentamount=\defbodyindentbodyindent2576,85009 -\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113 -\def#1{2585,85274 -\def#2##1 {2586,85310 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85393 -\exdentamount=\defbodyindentbodyindent2589,85467 -\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552 -\def#1{2596,85713 -\def#2##1 ##2 {2597,85749 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85849 -\exdentamount=\defbodyindentbodyindent2601,85923 -\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194 -\def#1{2612,86381 -\def#2{2613,86417 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86476 -\exdentamount=\defbodyindentbodyindent2616,86550 -\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641 -\def#1{2625,86800 -\def#2##1 {2626,86836 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86906 -\exdentamount=\defbodyindentbodyindent2629,86980 -\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052 -\def#1{2636,87216 -\def#2##1 ##2 {2637,87252 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87339 -\exdentamount=\defbodyindentbodyindent2641,87413 -\def\defunargs #1{\defunargs2664,88173 -\def\deftypefunargs #1{\deftypefunargs2676,88555 -\def\deffn{\deffn2690,88937 -\def\deffnheader #1#2#3{\deffnheader2692,88994 -\begingroup\defname {name2693,89042 -\def\defun{\defun2699,89187 -\def\defunheader #1#2{\defunheader2701,89240 -\begingroup\defname {name2702,89315 -\defunargs {unargs2703,89351 -\def\deftypefun{\deftypefun2709,89499 -\def\deftypefunheader #1#2{\deftypefunheader2712,89621 -\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730 -\begingroup\defname {name2716,89822 -\deftypefunargs {typefunargs2717,89868 -\def\deftypefn{\deftypefn2723,90039 -\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188 -\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324 -\begingroup\defname {name2730,90417 -\deftypefunargs {typefunargs2731,90457 -\def\defmac{\defmac2737,90578 -\def\defmacheader #1#2{\defmacheader2739,90635 -\begingroup\defname {name2740,90711 -\defunargs {unargs2741,90744 -\def\defspec{\defspec2747,90868 -\def\defspecheader #1#2{\defspecheader2749,90929 -\begingroup\defname {name2750,91006 -\defunargs {unargs2751,91046 -\def\deffnx #1 {\deffnx2758,91241 -\def\defunx #1 {\defunx2759,91298 -\def\defmacx #1 {\defmacx2760,91355 -\def\defspecx #1 {\defspecx2761,91414 -\def\deftypefnx #1 {\deftypefnx2762,91475 -\def\deftypeunx #1 {\deftypeunx2763,91540 -\def\defop #1 {\defop2769,91686 -\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721 -\def\defopheader #1#2#3{\defopheader2772,91775 -\begingroup\defname {name2774,91864 -\defunargs {unargs2775,91910 -\def\defmethod{\defmethod2780,91971 -\def\defmethodheader #1#2#3{\defmethodheader2782,92044 -\begingroup\defname {name2784,92132 -\defunargs {unargs2785,92172 -\def\defcv #1 {\defcv2790,92246 -\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281 -\def\defcvarheader #1#2#3{\defcvarheader2793,92340 -\begingroup\defname {name2795,92426 -\defvarargs {varargs2796,92472 -\def\defivar{\defivar2801,92545 -\def\defivarheader #1#2#3{\defivarheader2803,92608 -\begingroup\defname {name2805,92694 -\defvarargs {varargs2806,92745 -\def\defopx #1 {\defopx2812,92894 -\def\defmethodx #1 {\defmethodx2813,92951 -\def\defcvx #1 {\defcvx2814,93016 -\def\defivarx #1 {\defivarx2815,93073 -\def\defvarargs #1{\defvarargs2822,93344 -\def\defvr{\defvr2828,93488 -\def\defvrheader #1#2#3{\defvrheader2830,93543 -\begingroup\defname {name2831,93591 -\def\defvar{\defvar2835,93676 -\def\defvarheader #1#2{\defvarheader2837,93736 -\begingroup\defname {name2838,93807 -\defvarargs {varargs2839,93843 -\def\defopt{\defopt2844,93909 -\def\defoptheader #1#2{\defoptheader2846,93969 -\begingroup\defname {name2847,94040 -\defvarargs {varargs2848,94079 -\def\deftypevar{\deftypevar2853,94136 -\def\deftypevarheader #1#2{\deftypevarheader2856,94252 -\begingroup\defname {name2858,94335 -\def\deftypevr{\deftypevr2865,94509 -\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580 -\begingroup\defname {name2868,94632 -\def\defvrx #1 {\defvrx2876,94869 -\def\defvarx #1 {\defvarx2877,94926 -\def\defoptx #1 {\defoptx2878,94985 -\def\deftypevarx #1 {\deftypevarx2879,95044 -\def\deftypevrx #1 {\deftypevrx2880,95111 -\def\deftpargs #1{\deftpargs2885,95260 -\def\deftp{\deftp2889,95340 -\def\deftpheader #1#2#3{\deftpheader2891,95395 -\begingroup\defname {name2892,95443 -\def\deftpx #1 {\deftpx2897,95602 -\def\setref#1{\setref2908,95923 -\def\unnumbsetref#1{\unnumbsetref2913,96037 -\def\appendixsetref#1{\appendixsetref2918,96144 -\def\pxref#1{\pxref2929,96555 -\def\xref#1{\xref2930,96591 -\def\ref#1{\ref2931,96626 -\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656 -\def\printedmanual{\printedmanual2933,96699 -\def\printednodename{\printednodename2934,96737 -\def\printednodename{\printednodename2939,96862 -section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495 -\refx{x2957,97573 -\def\dosetq #1#2{\dosetq2965,97793 -\def\internalsetq #1#2{\internalsetq2973,98051 -\def\Ypagenumber{\Ypagenumber2977,98152 -\def\Ytitle{\Ytitle2979,98178 -\def\Ynothing{\Ynothing2981,98205 -\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222 -\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538 -\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568 -\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98623 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98727 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798 - \def\linenumber{\linenumber3009,99137 -\def\refx#1#2{\refx3015,99321 -\def\xrdef #1#2{\xrdef3037,99947 -\def\readauxfile{\readauxfile3040,100032 -\def\supereject{\supereject3110,101813 -\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498 -\def\openindices{\openindices3139,102684 -\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909 -\parindent = \defaultparindentaultparindent3152,102961 -\def\smallbook{\smallbook3175,103685 -\global\def\Esmallexample{\Esmallexample3192,104112 -\def\afourpaper{\afourpaper3196,104203 -\def\finalout{\finalout3224,105011 -\def\normaldoublequote{\normaldoublequote3235,105272 -\def\normaltilde{\normaltilde3236,105298 -\def\normalcaret{\normalcaret3237,105318 -\def\normalunderscore{\normalunderscore3238,105338 -\def\normalverticalbar{\normalverticalbar3239,105363 -\def\normalless{\normalless3240,105389 -\def\normalgreater{\normalgreater3241,105408 -\def\normalplus{\normalplus3242,105430 -\def\ifusingtt#1#2{\ifusingtt3253,105922 -\def\activedoublequote{\activedoublequote3261,106250 -\def~{~3264,106336 -\def^{^3267,106397 -\def_{_3270,106436 -\def\_{\_3272,106510 -\def\lvvmode{\lvvmode3279,106847 -\def|{|3282,106897 -\def<{<3285,106960 -\def>{>3288,107017 -\def+{+3290,107055 -\def\turnoffactive{\turnoffactive3296,107216 -\global\def={=3307,107502 -\def\normalbackslash{\normalbackslash3321,107884 +\def\itemfont{\itemfont1082,35890 +\def\Etable{\Etable1090,36116 +\def\itemize{\itemize1103,36440 +\def\itemizezzz #1{\itemizezzz1105,36476 +\def\itemizey #1#2{\itemizey1110,36571 +\def#2{1119,36817 +\def\itemcontents{\itemcontents1120,36858 +\def\bullet{\bullet1123,36906 +\def\minus{\minus1124,36933 +\def\frenchspacing{\frenchspacing1128,37041 +\def\splitoff#1#2\endmark{\splitoff1134,37266 +\def\enumerate{\enumerate1140,37496 +\def\enumeratezzz #1{\enumeratezzz1141,37535 +\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588 + \def\thearg{\thearg1146,37735 + \ifx\thearg\empty \def\thearg{\thearg1147,37754 +\def\numericenumerate{\numericenumerate1184,39088 +\def\lowercaseenumerate{\lowercaseenumerate1190,39218 +\def\uppercaseenumerate{\uppercaseenumerate1203,39565 +\def\startenumeration#1{\startenumeration1219,40055 +\def\alphaenumerate{\alphaenumerate1227,40237 +\def\capsenumerate{\capsenumerate1228,40272 +\def\Ealphaenumerate{\Ealphaenumerate1229,40306 +\def\Ecapsenumerate{\Ecapsenumerate1230,40340 +\def\itemizeitem{\itemizeitem1234,40420 +\def\newindex #1{\newindex1259,41277 +\def\defindex{\defindex1268,41566 +\def\newcodeindex #1{\newcodeindex1272,41674 +\def\defcodeindex{\defcodeindex1279,41934 +\def\synindex #1 #2 {\synindex1283,42114 +\def\syncodeindex #1 #2 {\syncodeindex1292,42454 +\def\doindex#1{\doindex1309,43133 +\def\singleindexer #1{\singleindexer1310,43192 +\def\docodeindex#1{\docodeindex1313,43304 +\def\singlecodeindexer #1{\singlecodeindexer1314,43371 +\def\indexdummies{\indexdummies1316,43429 +\def\_{\_1317,43449 +\def\w{\w1318,43477 +\def\bf{\bf1319,43504 +\def\rm{\rm1320,43533 +\def\sl{\sl1321,43562 +\def\sf{\sf1322,43591 +\def\tt{\tt1323,43619 +\def\gtr{\gtr1324,43647 +\def\less{\less1325,43677 +\def\hat{\hat1326,43709 +\def\char{\char1327,43739 +\def\TeX{\TeX1328,43771 +\def\dots{\dots1329,43801 +\def\copyright{\copyright1330,43834 +\def\tclose##1{\tclose1331,43877 +\def\code##1{\code1332,43922 +\def\samp##1{\samp1333,43963 +\def\t##1{\t1334,44004 +\def\r##1{\r1335,44039 +\def\i##1{\i1336,44074 +\def\b##1{\b1337,44109 +\def\cite##1{\cite1338,44144 +\def\key##1{\key1339,44185 +\def\file##1{\file1340,44224 +\def\var##1{\var1341,44265 +\def\kbd##1{\kbd1342,44304 +\def\indexdummyfont#1{\indexdummyfont1347,44460 +\def\indexdummytex{\indexdummytex1348,44486 +\def\indexdummydots{\indexdummydots1349,44510 +\def\indexnofonts{\indexnofonts1351,44536 +\let\w=\indexdummyfontdummyfont1352,44556 +\let\t=\indexdummyfontdummyfont1353,44579 +\let\r=\indexdummyfontdummyfont1354,44602 +\let\i=\indexdummyfontdummyfont1355,44625 +\let\b=\indexdummyfontdummyfont1356,44648 +\let\emph=\indexdummyfontdummyfont1357,44671 +\let\strong=\indexdummyfontdummyfont1358,44697 +\let\cite=\indexdummyfont=\indexdummyfont1359,44725 +\let\sc=\indexdummyfontdummyfont1360,44751 +\let\tclose=\indexdummyfontdummyfont1364,44923 +\let\code=\indexdummyfontdummyfont1365,44951 +\let\file=\indexdummyfontdummyfont1366,44977 +\let\samp=\indexdummyfontdummyfont1367,45003 +\let\kbd=\indexdummyfontdummyfont1368,45029 +\let\key=\indexdummyfontdummyfont1369,45054 +\let\var=\indexdummyfontdummyfont1370,45079 +\let\TeX=\indexdummytexdummytex1371,45104 +\let\dots=\indexdummydotsdummydots1372,45128 +\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45380 +\def\doind #1#2{\doind1384,45436 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45479 +\def\rawbackslashxx{\rawbackslashxx1389,45619 +{\indexnofontsnofonts1394,45881 +\def\dosubind #1#2#3{\dosubind1405,46192 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46240 +\def\rawbackslashxx{\rawbackslashxx1410,46344 +{\indexnofontsnofonts1414,46498 +\def\findex {\findex1443,47429 +\def\kindex {\kindex1444,47452 +\def\cindex {\cindex1445,47475 +\def\vindex {\vindex1446,47498 +\def\tindex {\tindex1447,47521 +\def\pindex {\pindex1448,47544 +\def\cindexsub {\cindexsub1450,47568 +\def\printindex{\printindex1462,47895 +\def\doprintindex#1{\doprintindex1464,47936 + \def\indexbackslash{\indexbackslash1481,48421 + \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460 +\def\initial #1{\initial1517,49532 +\def\entry #1#2{\entry1523,49739 + \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50386 +\def\indexdotfill{\indexdotfill1549,50714 +\def\primary #1{\primary1552,50820 +\def\secondary #1#2{\secondary1556,50902 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984 +\newbox\partialpageialpage1566,51157 +\def\begindoublecolumns{\begindoublecolumns1572,51315 + \output={\global\setbox\partialpage=ialpage=1573,51351 +\def\enddoublecolumns{\enddoublecolumns1577,51539 +\def\doublecolumnout{\doublecolumnout1580,51624 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693 +\def\pagesofar{\pagesofar1584,51871 +\def\balancecolumns{\balancecolumns1588,52108 + \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52279 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540 +\newcount \appendixno \appendixno = `\@no1627,53445 +\def\appendixletter{\appendixletter1628,53486 +\def\opencontents{\opencontents1632,53589 +\def\thischapter{\thischapter1637,53770 +\def\seccheck#1{\seccheck1638,53808 +\def\chapternofonts{\chapternofonts1643,53912 +\def\result{\result1646,53987 +\def\equiv{\equiv1647,54022 +\def\expansion{\expansion1648,54055 +\def\print{\print1649,54096 +\def\TeX{\TeX1650,54129 +\def\dots{\dots1651,54158 +\def\copyright{\copyright1652,54189 +\def\tt{\tt1653,54230 +\def\bf{\bf1654,54257 +\def\w{\w1655,54285 +\def\less{\less1656,54310 +\def\gtr{\gtr1657,54341 +\def\hat{\hat1658,54370 +\def\char{\char1659,54399 +\def\tclose##1{\tclose1660,54430 +\def\code##1{\code1661,54474 +\def\samp##1{\samp1662,54514 +\def\r##1{\r1663,54554 +\def\b##1{\b1664,54588 +\def\key##1{\key1665,54622 +\def\file##1{\file1666,54660 +\def\kbd##1{\kbd1667,54700 +\def\i##1{\i1669,54808 +\def\cite##1{\cite1670,54842 +\def\var##1{\var1671,54882 +\def\emph##1{\emph1672,54920 +\def\dfn##1{\dfn1673,54960 +\def\thischaptername{\thischaptername1676,55001 +\outer\def\chapter{\chapter1677,55040 +\def\chapterzzz #1{\chapterzzz1678,55081 +{\chapternofonts%nofonts%1687,55477 +\global\let\section = \numberedsec=1692,55630 +\global\let\subsection = \numberedsubsec=1693,55665 +\global\let\subsubsection = \numberedsubsubsec=1694,55706 +\outer\def\appendix{\appendix1697,55757 +\def\appendixzzz #1{\appendixzzz1698,55800 +\global\advance \appendixno by 1 \message{no1700,55877 +\chapmacro {#1}{Appendix \appendixletter}letter1701,55946 +\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56039 +{\chapternofonts%nofonts%1705,56111 + {#1}{Appendix \appendixletter}letter1707,56167 +\appendixnoderef %noderef1710,56267 +\global\let\section = \appendixsec=1711,56286 +\global\let\subsection = \appendixsubsec=1712,56321 +\global\let\subsubsection = \appendixsubsubsec=1713,56362 +\outer\def\top{\top1716,56413 +\outer\def\unnumbered{\unnumbered1717,56453 +\def\unnumberedzzz #1{\unnumberedzzz1718,56500 +{\chapternofonts%nofonts%1722,56663 +\global\let\section = \unnumberedsec=1727,56813 +\global\let\subsection = \unnumberedsubsec=1728,56850 +\global\let\subsubsection = \unnumberedsubsubsec=1729,56893 +\outer\def\numberedsec{\numberedsec1732,56946 +\def\seczzz #1{\seczzz1733,56987 +{\chapternofonts%nofonts%1736,57143 +\outer\def\appendixsection{\appendixsection1745,57329 +\outer\def\appendixsec{\appendixsec1746,57386 +\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439 +\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551 +{\chapternofonts%nofonts%1750,57619 +{#1}{\appendixletter}letter1752,57675 +\appendixnoderef %noderef1755,57775 +\outer\def\unnumberedsec{\unnumberedsec1759,57815 +\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868 +{\chapternofonts%nofonts%1762,57963 +\outer\def\numberedsubsec{\numberedsubsec1770,58131 +\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186 +{\chapternofonts%nofonts%1774,58365 +\outer\def\appendixsubsec{\appendixsubsec1783,58569 +\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624 +\subsecheading {#1}{\appendixletter}letter1786,58746 +{\chapternofonts%nofonts%1787,58811 +{#1}{\appendixletter}letter1789,58870 +\appendixnoderef %noderef1792,58985 +\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025 +\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084 +{\chapternofonts%nofonts%1799,59185 +\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356 +\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417 +{\chapternofonts%nofonts%1812,59614 +\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847 +\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908 + {\appendixletter}letter1827,60047 +{\chapternofonts%nofonts%1828,60113 + {\appendixletter}letter1830,60178 +\appendixnoderef %noderef1834,60312 +\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352 +\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417 +{\chapternofonts%nofonts%1841,60524 +\def\infotop{\infotop1851,60853 +\def\infounnumbered{\infounnumbered1852,60891 +\def\infounnumberedsec{\infounnumberedsec1853,60936 +\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987 +\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044 +\def\infoappendix{\infoappendix1857,61108 +\def\infoappendixsec{\infoappendixsec1858,61149 +\def\infoappendixsubsec{\infoappendixsubsec1859,61196 +\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249 +\def\infochapter{\infochapter1862,61309 +\def\infosection{\infosection1863,61348 +\def\infosubsection{\infosubsection1864,61387 +\def\infosubsubsection{\infosubsubsection1865,61432 +\global\let\section = \numberedsec=1870,61669 +\global\let\subsection = \numberedsubsec=1871,61704 +\global\let\subsubsection = \numberedsubsubsec=1872,61745 +\def\majorheading{\majorheading1886,62252 +\def\majorheadingzzz #1{\majorheadingzzz1887,62297 +\def\chapheading{\chapheading1893,62530 +\def\chapheadingzzz #1{\chapheadingzzz1894,62573 +\def\heading{\heading1899,62768 +\def\subheading{\subheading1901,62805 +\def\subsubheading{\subsubheading1903,62848 +\def\dobreak#1#2{\dobreak1910,63125 +\def\setchapterstyle #1 {\setchapterstyle1912,63203 +\def\chapbreak{\chapbreak1919,63458 +\def\chappager{\chappager1920,63508 +\def\chapoddpage{\chapoddpage1921,63546 +\def\setchapternewpage #1 {\setchapternewpage1923,63625 +\def\CHAPPAGoff{\CHAPPAGoff1925,63682 +\def\CHAPPAGon{\CHAPPAGon1929,63776 +\global\def\HEADINGSon{\HEADINGSon1932,63867 +\def\CHAPPAGodd{\CHAPPAGodd1934,63909 +\global\def\HEADINGSon{\HEADINGSon1937,64005 +\def\CHAPFplain{\CHAPFplain1941,64059 +\def\chfplain #1#2{\chfplain1945,64151 +\def\unnchfplain #1{\unnchfplain1956,64374 +\def\unnchfopen #1{\unnchfopen1964,64603 +\def\chfopen #1#2{\chfopen1970,64811 +\def\CHAPFopen{\CHAPFopen1975,64955 +\def\subsecheadingbreak{\subsecheadingbreak1982,65173 +\def\secheadingbreak{\secheadingbreak1985,65302 +\def\secheading #1#2#3{\secheading1993,65584 +\def\plainsecheading #1{\plainsecheading1994,65640 +\def\secheadingi #1{\secheadingi1995,65683 +\def\subsecheading #1#2#3#4{\subsecheading2006,66051 +\def\subsecheadingi #1{\subsecheadingi2007,66118 +\def\subsubsecfonts{\subsubsecfonts2014,66415 +\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538 +\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616 +\def\startcontents#1{\startcontents2032,67088 + \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361 +\outer\def\contents{\contents2049,67720 +\outer\def\summarycontents{\summarycontents2057,67864 + \def\secentry ##1##2##3##4{\secentry2067,68235 + \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270 + \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305 + \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346 + \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384 + \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431 +\def\chapentry#1#2#3{\chapentry2085,68865 +\def\shortchapentry#1#2#3{\shortchapentry2088,68982 + {#2\labelspace #1}space2091,69092 +\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146 +\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193 +\def\secentry#1#2#3#4{\secentry2102,69357 +\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416 +\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477 +\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547 +\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621 + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655 +\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706 +\def\dochapentry#1#2{\dochapentry2123,70080 +\def\dosecentry#1#2{\dosecentry2138,70685 +\def\dosubsecentry#1#2{\dosubsecentry2145,70863 +\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048 +\def\labelspace{\labelspace2160,71299 +\def\dopageno#1{\dopageno2162,71334 +\def\doshortpageno#1{\doshortpageno2163,71360 +\def\chapentryfonts{\chapentryfonts2165,71392 +\def\secentryfonts{\secentryfonts2166,71427 +\def\point{\point2192,72386 +\def\result{\result2194,72407 +\def\expansion{\expansion2195,72480 +\def\print{\print2196,72551 +\def\equiv{\equiv2198,72618 +\def\error{\error2218,73391 +\def\tex{\tex2224,73620 +\def\@{\@2242,74003 +\gdef\sepspaces{\def {\ }}}\2265,74735 +\def\aboveenvbreak{\aboveenvbreak2268,74817 +\def\afterenvbreak{\afterenvbreak2272,74983 +\def\ctl{\ctl2286,75494 +\def\ctr{\ctr2287,75566 +\def\cbl{\cbl2288,75605 +\def\cbr{\cbr2289,75645 +\def\carttop{\carttop2290,75684 +\def\cartbot{\cartbot2293,75792 +\long\def\cartouche{\cartouche2299,75932 +\def\Ecartouche{\Ecartouche2326,76720 +\def\lisp{\lisp2338,76855 +\def\Elisp{\Elisp2348,77202 +\def\next##1{\next2360,77528 +\def\Eexample{\Eexample2364,77570 +\def\Esmallexample{\Esmallexample2367,77617 +\def\smalllispx{\smalllispx2373,77795 +\def\Esmalllisp{\Esmalllisp2383,78149 +\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505 +\def\next##1{\next2397,78562 +\def\display{\display2401,78642 +\def\Edisplay{\Edisplay2410,78961 +\def\next##1{\next2422,79272 +\def\format{\format2426,79375 +\def\Eformat{\Eformat2434,79671 +\def\next##1{\next2437,79760 +\def\flushleft{\flushleft2441,79812 +\def\Eflushleft{\Eflushleft2451,80183 +\def\next##1{\next2454,80276 +\def\flushright{\flushright2456,80298 +\def\Eflushright{\Eflushright2466,80670 +\def\next##1{\next2470,80801 +\def\quotation{\quotation2474,80859 +\def\Equotation{\Equotation2480,81051 +\def\setdeffont #1 {\setdeffont2493,81449 +\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495 +\newskip\defargsindent \defargsindent=50ptargsindent2496,81538 +\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581 +\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624 +\def\activeparens{\activeparens2503,81822 +\def\opnr{\opnr2529,83034 +\def\lbrb{\lbrb2530,83099 +\def\defname #1#2{\defname2536,83300 +\advance\dimen2 by -\defbodyindentbodyindent2540,83418 +\advance\dimen3 by -\defbodyindentbodyindent2542,83472 +\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526 +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83668 +\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83743 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112 +\advance\leftskip by -\defbodyindentbodyindent2557,84246 +\exdentamount=\defbodyindentbodyindent2558,84283 +\def\defparsebody #1#2#3{\defparsebody2568,84642 +\def#1{2572,84826 +\def#2{2573,84862 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84934 +\exdentamount=\defbodyindentbodyindent2576,85008 +\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112 +\def#1{2585,85273 +\def#2##1 {2586,85309 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85392 +\exdentamount=\defbodyindentbodyindent2589,85466 +\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551 +\def#1{2596,85712 +\def#2##1 ##2 {2597,85748 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85848 +\exdentamount=\defbodyindentbodyindent2601,85922 +\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193 +\def#1{2612,86380 +\def#2{2613,86416 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86475 +\exdentamount=\defbodyindentbodyindent2616,86549 +\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640 +\def#1{2625,86799 +\def#2##1 {2626,86835 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86905 +\exdentamount=\defbodyindentbodyindent2629,86979 +\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051 +\def#1{2636,87215 +\def#2##1 ##2 {2637,87251 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87338 +\exdentamount=\defbodyindentbodyindent2641,87412 +\def\defunargs #1{\defunargs2664,88172 +\def\deftypefunargs #1{\deftypefunargs2676,88554 +\def\deffn{\deffn2690,88936 +\def\deffnheader #1#2#3{\deffnheader2692,88993 +\begingroup\defname {name2693,89041 +\def\defun{\defun2699,89186 +\def\defunheader #1#2{\defunheader2701,89239 +\begingroup\defname {name2702,89314 +\defunargs {unargs2703,89350 +\def\deftypefun{\deftypefun2709,89498 +\def\deftypefunheader #1#2{\deftypefunheader2712,89620 +\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729 +\begingroup\defname {name2716,89821 +\deftypefunargs {typefunargs2717,89867 +\def\deftypefn{\deftypefn2723,90038 +\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187 +\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323 +\begingroup\defname {name2730,90416 +\deftypefunargs {typefunargs2731,90456 +\def\defmac{\defmac2737,90577 +\def\defmacheader #1#2{\defmacheader2739,90634 +\begingroup\defname {name2740,90710 +\defunargs {unargs2741,90743 +\def\defspec{\defspec2747,90867 +\def\defspecheader #1#2{\defspecheader2749,90928 +\begingroup\defname {name2750,91005 +\defunargs {unargs2751,91045 +\def\deffnx #1 {\deffnx2758,91240 +\def\defunx #1 {\defunx2759,91297 +\def\defmacx #1 {\defmacx2760,91354 +\def\defspecx #1 {\defspecx2761,91413 +\def\deftypefnx #1 {\deftypefnx2762,91474 +\def\deftypeunx #1 {\deftypeunx2763,91539 +\def\defop #1 {\defop2769,91685 +\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720 +\def\defopheader #1#2#3{\defopheader2772,91774 +\begingroup\defname {name2774,91863 +\defunargs {unargs2775,91909 +\def\defmethod{\defmethod2780,91970 +\def\defmethodheader #1#2#3{\defmethodheader2782,92043 +\begingroup\defname {name2784,92131 +\defunargs {unargs2785,92171 +\def\defcv #1 {\defcv2790,92245 +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280 +\def\defcvarheader #1#2#3{\defcvarheader2793,92339 +\begingroup\defname {name2795,92425 +\defvarargs {varargs2796,92471 +\def\defivar{\defivar2801,92544 +\def\defivarheader #1#2#3{\defivarheader2803,92607 +\begingroup\defname {name2805,92693 +\defvarargs {varargs2806,92744 +\def\defopx #1 {\defopx2812,92893 +\def\defmethodx #1 {\defmethodx2813,92950 +\def\defcvx #1 {\defcvx2814,93015 +\def\defivarx #1 {\defivarx2815,93072 +\def\defvarargs #1{\defvarargs2822,93343 +\def\defvr{\defvr2828,93487 +\def\defvrheader #1#2#3{\defvrheader2830,93542 +\begingroup\defname {name2831,93590 +\def\defvar{\defvar2835,93675 +\def\defvarheader #1#2{\defvarheader2837,93735 +\begingroup\defname {name2838,93806 +\defvarargs {varargs2839,93842 +\def\defopt{\defopt2844,93908 +\def\defoptheader #1#2{\defoptheader2846,93968 +\begingroup\defname {name2847,94039 +\defvarargs {varargs2848,94078 +\def\deftypevar{\deftypevar2853,94135 +\def\deftypevarheader #1#2{\deftypevarheader2856,94251 +\begingroup\defname {name2858,94334 +\def\deftypevr{\deftypevr2865,94508 +\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579 +\begingroup\defname {name2868,94631 +\def\defvrx #1 {\defvrx2876,94868 +\def\defvarx #1 {\defvarx2877,94925 +\def\defoptx #1 {\defoptx2878,94984 +\def\deftypevarx #1 {\deftypevarx2879,95043 +\def\deftypevrx #1 {\deftypevrx2880,95110 +\def\deftpargs #1{\deftpargs2885,95259 +\def\deftp{\deftp2889,95339 +\def\deftpheader #1#2#3{\deftpheader2891,95394 +\begingroup\defname {name2892,95442 +\def\deftpx #1 {\deftpx2897,95601 +\def\setref#1{\setref2908,95922 +\def\unnumbsetref#1{\unnumbsetref2913,96036 +\def\appendixsetref#1{\appendixsetref2918,96143 +\def\pxref#1{\pxref2929,96554 +\def\xref#1{\xref2930,96590 +\def\ref#1{\ref2931,96625 +\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655 +\def\printedmanual{\printedmanual2933,96698 +\def\printednodename{\printednodename2934,96736 +\def\printednodename{\printednodename2939,96861 +section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493 +\refx{x2957,97571 +\def\dosetq #1#2{\dosetq2965,97791 +\def\internalsetq #1#2{\internalsetq2973,98049 +\def\Ypagenumber{\Ypagenumber2977,98150 +\def\Ytitle{\Ytitle2979,98176 +\def\Ynothing{\Ynothing2981,98203 +\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220 +\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536 +\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566 +\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98621 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98725 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796 + \def\linenumber{\linenumber3009,99135 +\def\refx#1#2{\refx3015,99319 +\def\xrdef #1#2{\xrdef3037,99945 +\def\readauxfile{\readauxfile3040,100030 +\def\supereject{\supereject3110,101811 +\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496 +\def\openindices{\openindices3139,102682 +\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907 +\parindent = \defaultparindentaultparindent3152,102959 +\def\smallbook{\smallbook3175,103683 +\global\def\Esmallexample{\Esmallexample3192,104110 +\def\afourpaper{\afourpaper3196,104201 +\def\finalout{\finalout3224,105009 +\def\normaldoublequote{\normaldoublequote3235,105270 +\def\normaltilde{\normaltilde3236,105296 +\def\normalcaret{\normalcaret3237,105316 +\def\normalunderscore{\normalunderscore3238,105336 +\def\normalverticalbar{\normalverticalbar3239,105361 +\def\normalless{\normalless3240,105387 +\def\normalgreater{\normalgreater3241,105406 +\def\normalplus{\normalplus3242,105428 +\def\ifusingtt#1#2{\ifusingtt3253,105920 +\def\activedoublequote{\activedoublequote3261,106248 +\def~{~3264,106334 +\def^{^3267,106395 +\def_{_3270,106434 +\def\_{\_3272,106508 +\def\lvvmode{\lvvmode3279,106845 +\def|{|3282,106895 +\def<{<3285,106958 +\def>{>3288,107015 +\def+{+3290,107053 +\def\turnoffactive{\turnoffactive3296,107214 +\global\def={=3307,107500 +\def\normalbackslash{\normalbackslash3321,107882 c-src/c.c,76 T f(1,0 @@ -4406,13 +4409,13 @@ yyerror FUN1(286,5948 make_list FUN2(293,6028 #define ERROR 304,6228 yylex FUN0(315,6405 -parse_cell_or_range FUN2(587,11771 -#define CK_ABS_R(671,13213 -#define CK_REL_R(675,13292 -#define CK_ABS_C(680,13421 -#define CK_REL_C(684,13500 -#define MAYBEREL(689,13629 -str_to_col FUN1(847,16830 +parse_cell_or_range FUN2(587,11772 +#define CK_ABS_R(671,13214 +#define CK_REL_R(675,13293 +#define CK_ABS_C(680,13422 +#define CK_REL_C(684,13501 +#define MAYBEREL(689,13630 +str_to_col FUN1(847,16831 y-src/parse.c,520 #define YYBISON 4,64 diff --git a/test/manual/etags/ETAGS.good_4 b/test/manual/etags/ETAGS.good_4 index 15f67c5d28a..d54cf1c9bfb 100644 --- a/test/manual/etags/ETAGS.good_4 +++ b/test/manual/etags/ETAGS.good_4 @@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153 protected body Bidule Bidule/b139,2181 protected body Machin_T Machin_T/b146,2281 -c-src/abbrev.c,3274 +c-src/abbrev.c,3055 Lisp_Object Vabbrev_table_name_list;43,1429 Lisp_Object Vglobal_abbrev_table;48,1574 Lisp_Object Vfundamental_mode_abbrev_table;52,1685 @@ -186,57 +186,53 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046 Lisp_Object Vlast_abbrev;70,2155 Lisp_Object Vlast_abbrev_text;75,2324 int last_abbrev_point;79,2414 -Lisp_Object Vpre_abbrev_expand_hook,83,2487 -Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743 -DEFUN ("define-abbrev", Fdefine_abbrev,107,3124 -DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev149,4443 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814 -DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282 -DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282 -DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246 -DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246 -DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761 -DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682 -write_abbrev 426,12889 -describe_abbrev 445,13324 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,466,13839 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description466,13839 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table506,14995 -syms_of_abbrev 540,16072 - DEFVAR_LISP ("abbrev-table-name-list"542,16092 - DEFVAR_LISP ("global-abbrev-table"548,16354 - DEFVAR_LISP ("fundamental-mode-abbrev-table"555,16676 - DEFVAR_LISP ("last-abbrev"561,17018 - DEFVAR_LISP ("last-abbrev-text"564,17141 - DEFVAR_INT ("last-abbrev-location"568,17299 - DEFVAR_LISP ("abbrev-start-location"575,17498 - DEFVAR_LISP ("abbrev-start-location-buffer"581,17775 - DEFVAR_PER_BUFFER ("local-abbrev-table"586,18039 - DEFVAR_BOOL ("abbrevs-changed"589,18182 - DEFVAR_BOOL ("abbrev-all-caps"594,18385 - DEFVAR_LISP ("pre-abbrev-expand-hook"598,18541 - DEFVAR_LISP ("abbrev-table-name-list",\1542,16092 - DEFVAR_LISP ("global-abbrev-table",\1548,16354 - DEFVAR_LISP ("fundamental-mode-abbrev-table",\1555,16676 - DEFVAR_LISP ("last-abbrev",\1561,17018 - DEFVAR_LISP ("last-abbrev-text",\1564,17141 - DEFVAR_INT ("last-abbrev-location",\1568,17299 - DEFVAR_LISP ("abbrev-start-location",\1575,17498 - DEFVAR_LISP ("abbrev-start-location-buffer",\1581,17775 - DEFVAR_PER_BUFFER ("local-abbrev-table",\1586,18039 - DEFVAR_BOOL ("abbrevs-changed",\1589,18182 - DEFVAR_BOOL ("abbrev-all-caps",\1594,18385 - DEFVAR_LISP ("pre-abbrev-expand-hook",\1598,18541 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632 +DEFUN ("define-abbrev", Fdefine_abbrev,104,3013 +DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev146,4332 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703 +DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171 +DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171 +DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135 +DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135 +DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650 +DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495 +write_abbrev 420,12702 +describe_abbrev 439,13137 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,460,13652 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description460,13652 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table500,14808 +syms_of_abbrev 534,15885 + DEFVAR_LISP ("abbrev-table-name-list"536,15905 + DEFVAR_LISP ("global-abbrev-table"542,16167 + DEFVAR_LISP ("fundamental-mode-abbrev-table"549,16489 + DEFVAR_LISP ("last-abbrev"555,16831 + DEFVAR_LISP ("last-abbrev-text"558,16954 + DEFVAR_INT ("last-abbrev-location"562,17112 + DEFVAR_LISP ("abbrev-start-location"569,17311 + DEFVAR_LISP ("abbrev-start-location-buffer"575,17588 + DEFVAR_PER_BUFFER ("local-abbrev-table"580,17852 + DEFVAR_BOOL ("abbrevs-changed"583,17995 + DEFVAR_BOOL ("abbrev-all-caps"588,18198 + DEFVAR_LISP ("abbrev-table-name-list",\1536,15905 + DEFVAR_LISP ("global-abbrev-table",\1542,16167 + DEFVAR_LISP ("fundamental-mode-abbrev-table",\1549,16489 + DEFVAR_LISP ("last-abbrev",\1555,16831 + DEFVAR_LISP ("last-abbrev-text",\1558,16954 + DEFVAR_INT ("last-abbrev-location",\1562,17112 + DEFVAR_LISP ("abbrev-start-location",\1569,17311 + DEFVAR_LISP ("abbrev-start-location-buffer",\1575,17588 + DEFVAR_PER_BUFFER ("local-abbrev-table",\1580,17852 + DEFVAR_BOOL ("abbrevs-changed",\1583,17995 + DEFVAR_BOOL ("abbrev-all-caps",\1588,18198 c-src/torture.c,197 (*tag1 tag118,452 @@ -1063,295 +1059,295 @@ make_lispy_position 5228,157391 toolkit_menubar_in_use 5456,163954 make_scroll_bar_position 5469,164322 make_lispy_event 5485,164968 -make_lispy_movement 6104,183532 -make_lispy_switch_frame 6131,184263 -make_lispy_focus_in 6137,184370 -make_lispy_focus_out 6145,184496 -parse_modifiers_uncached 6163,184946 -#define SINGLE_LETTER_MOD(6185,185466 -#undef SINGLE_LETTER_MOD6212,185907 -#define MULTI_LETTER_MOD(6214,185933 -#undef MULTI_LETTER_MOD6231,186401 -apply_modifiers_uncached 6273,187575 -static const char *const modifier_names[modifier_names6319,189194 -#define NUM_MOD_NAMES 6325,189400 -static Lisp_Object modifier_symbols;6327,189450 -lispy_modifier_list 6331,189587 -#define KEY_TO_CHAR(6353,190253 -parse_modifiers 6356,190329 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191518 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518 -apply_modifiers 6422,192392 -reorder_modifiers 6491,194721 -modify_event_symbol 6536,196529 -DEFUN ("event-convert-list", Fevent_convert_list,6628,199245 -DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199245 -parse_solitary_modifier 6695,201136 -#define SINGLE_LETTER_MOD(6701,201259 -#define MULTI_LETTER_MOD(6705,201344 -#undef SINGLE_LETTER_MOD6763,202642 -#undef MULTI_LETTER_MOD6764,202667 -lucid_event_type_list_p 6775,202890 -get_input_pending 6814,203961 -record_asynch_buffer_change 6834,204580 -gobble_input 6872,205703 -tty_read_avail_input 6967,208311 -handle_async_input 7149,214040 -process_pending_signals 7165,214360 -unblock_input_to 7177,214646 -unblock_input 7200,215278 -totally_unblock_input 7209,215446 -handle_input_available_signal 7217,215530 -deliver_input_available_signal 7226,215701 -struct user_signal_info7235,215866 -static struct user_signal_info *user_signals user_signals7250,216091 -add_user_signal 7253,216150 -handle_user_signal 7275,216599 -deliver_user_signal 7316,217559 -find_user_signal_name 7322,217660 -store_user_signal_events 7334,217842 -static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417 -static Lisp_Object menu_bar_items_vector;7368,218631 -static int menu_bar_items_index;7369,218673 -static const char *separator_names[separator_names7372,218708 -menu_separator_name_p 7393,219149 -menu_bar_items 7426,219853 -Lisp_Object item_properties;7568,224604 -menu_bar_item 7571,224646 -menu_item_eval_property_1 7647,227176 -eval_dyn 7658,227466 -menu_item_eval_property 7666,227676 -parse_menu_item 7686,228342 -static Lisp_Object tool_bar_items_vector;7965,236337 -static Lisp_Object tool_bar_item_properties;7970,236511 -static int ntool_bar_items;7974,236607 -tool_bar_items 7990,237084 -process_tool_bar_item 8075,239893 -#define PROP(8112,240970 -set_prop 8114,241039 -parse_tool_bar_item 8167,242454 -#undef PROP8379,248845 -init_tool_bar_items 8387,248970 -append_tool_bar_item 8401,249262 -read_char_x_menu_prompt 8443,250772 -read_char_minibuf_menu_prompt 8503,252446 -#define PUSH_C_STR(8527,253015 -follow_key 8726,258554 -active_maps 8733,258696 -typedef struct keyremap8742,259022 -} keyremap;8754,259465 -access_keymap_keyremap 8764,259809 -keyremap_step 8811,261451 -test_undefined 8867,262935 -read_key_sequence 8916,264862 -read_key_sequence_vs 9826,295822 -DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295 -DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299983 -detect_input_pending 9950,300489 -detect_input_pending_ignore_squeezables 9959,300655 -detect_input_pending_run_timers 9967,300871 -clear_input_pending 9985,301363 -requeued_events_pending_p 9997,301733 -DEFUN ("input-pending-p", Finput_pending_p,10002,301814 -DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814 -DEFUN ("recent-keys", Frecent_keys,10024,302597 -DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597 -DEFUN ("this-command-keys", Fthis_command_keys,10055,303518 -DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303959 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304381 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304956 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305496 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306511 -DEFUN ("recursion-depth", Frecursion_depth,10158,307070 -DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070 -DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407 -DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407 -DEFUN ("discard-input", Fdiscard_input,10203,308448 -DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448 -DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950 -DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950 -stuff_buffered_input 10285,311046 -set_waiting_for_input 10323,312017 -clear_waiting_for_input 10337,312391 -handle_interrupt_signal 10351,312755 -deliver_interrupt_signal 10378,313643 -static int volatile force_quit_count;10387,313933 -handle_interrupt 10401,314415 -quit_throw_to_read_char 10541,318712 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289 -DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517 -DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320517 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321433 -DEFUN ("set-quit-char", Fset_quit_char,10694,322707 -DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707 -DEFUN ("set-input-mode", Fset_input_mode,10729,323571 -DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571 -DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460 -DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324460 -DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838 -DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838 -DEFUN ("posn-at-point", Fposn_at_point,10824,327061 -DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061 -init_kboard 10861,328215 -allocate_kboard 10893,329285 -wipe_kboard 10909,329638 -delete_kboard 10917,329752 -init_keyboard 10942,330282 -struct event_head11021,332697 -static const struct event_head head_table[head_table11027,332748 -syms_of_keyboard 11045,333578 - DEFVAR_LISP ("internal--top-level-message"11058,333973 - DEFVAR_LISP ("last-command-event"11312,342174 - DEFVAR_LISP ("last-nonmenu-event"11315,342298 - DEFVAR_LISP ("last-input-event"11321,342637 - DEFVAR_LISP ("unread-command-events"11324,342731 - DEFVAR_LISP ("unread-post-input-method-events"11332,343191 - DEFVAR_LISP ("unread-input-method-events"11338,343530 - DEFVAR_LISP ("meta-prefix-char"11346,343899 - DEFVAR_KBOARD ("last-command"11351,344107 - DEFVAR_KBOARD ("real-last-command"11368,344788 - DEFVAR_KBOARD ("last-repeatable-command"11372,344974 - DEFVAR_LISP ("this-command"11378,345262 - DEFVAR_LISP ("real-this-command"11384,345499 - DEFVAR_LISP ("this-command-keys-shift-translated"11388,345681 - DEFVAR_LISP ("this-original-command"11396,346124 - DEFVAR_INT ("auto-save-interval"11403,346521 - DEFVAR_LISP ("auto-save-timeout"11408,346735 - DEFVAR_LISP ("echo-keystrokes"11415,347080 - DEFVAR_INT ("polling-period"11421,347351 - DEFVAR_LISP ("double-click-time"11428,347694 - DEFVAR_INT ("double-click-fuzz"11435,348030 - DEFVAR_INT ("num-input-keys"11446,348520 - DEFVAR_INT ("num-nonmacro-input-events"11452,348795 - DEFVAR_LISP ("last-event-frame"11457,349033 - DEFVAR_LISP ("tty-erase-char"11463,349312 - DEFVAR_LISP ("help-char"11466,349435 - DEFVAR_LISP ("help-event-list"11472,349718 - DEFVAR_LISP ("help-form"11477,349929 - DEFVAR_LISP ("prefix-help-command"11483,350177 - DEFVAR_LISP ("top-level"11489,350455 - DEFVAR_KBOARD ("keyboard-translate-table"11495,350676 - DEFVAR_BOOL ("cannot-suspend"11511,351489 - DEFVAR_BOOL ("menu-prompting"11516,351716 - DEFVAR_LISP ("menu-prompt-more-char"11526,352146 - DEFVAR_INT ("extra-keyboard-modifiers"11531,352392 - DEFVAR_LISP ("deactivate-mark"11545,353118 - DEFVAR_LISP ("pre-command-hook"11553,353487 - DEFVAR_LISP ("post-command-hook"11560,353842 - DEFVAR_LISP ("echo-area-clear-hook"11568,354205 - DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354420 - DEFVAR_LISP ("menu-bar-final-items"11578,354623 - DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354873 - DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355231 - DEFVAR_LISP ("overriding-local-map"11598,355653 - DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356104 - DEFVAR_LISP ("special-event-map"11613,356443 - DEFVAR_LISP ("track-mouse"11617,356631 - DEFVAR_KBOARD ("system-key-alist"11620,356758 - DEFVAR_KBOARD ("local-function-key-map"11629,357139 - DEFVAR_KBOARD ("input-decode-map"11658,358598 - DEFVAR_LISP ("function-key-map"11675,359386 - DEFVAR_LISP ("key-translation-map"11683,359802 - DEFVAR_LISP ("deferred-action-list"11689,360146 - DEFVAR_LISP ("deferred-action-function"11694,360394 - DEFVAR_LISP ("delayed-warnings-list"11700,360693 - DEFVAR_LISP ("timer-list"11708,361101 - DEFVAR_LISP ("timer-idle-list"11712,361253 - DEFVAR_LISP ("input-method-function"11716,361416 - DEFVAR_LISP ("input-method-previous-message"11737,362385 - DEFVAR_LISP ("show-help-function"11744,362746 - DEFVAR_LISP ("disable-point-adjustment"11749,362978 - DEFVAR_LISP ("global-disable-point-adjustment"11761,363528 - DEFVAR_LISP ("minibuffer-message-timeout"11770,363894 - DEFVAR_LISP ("throw-on-input"11775,364172 - DEFVAR_LISP ("command-error-function"11781,364423 - DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364910 - DEFVAR_LISP ("select-active-regions"11798,365237 - DEFVAR_LISP ("saved-region-selection"11807,365629 - DEFVAR_LISP ("selection-inhibit-update-commands"11815,366014 - DEFVAR_LISP ("debug-on-event"11825,366555 -keys_of_keyboard 11841,367116 -mark_kboards 11916,370435 - DEFVAR_LISP ("internal--top-level-message",\111058,333973 - DEFVAR_LISP ("last-command-event",\111312,342174 - DEFVAR_LISP ("last-nonmenu-event",\111315,342298 - DEFVAR_LISP ("last-input-event",\111321,342637 - DEFVAR_LISP ("unread-command-events",\111324,342731 - DEFVAR_LISP ("unread-post-input-method-events",\111332,343191 - DEFVAR_LISP ("unread-input-method-events",\111338,343530 - DEFVAR_LISP ("meta-prefix-char",\111346,343899 - DEFVAR_KBOARD ("last-command",\111351,344107 - DEFVAR_KBOARD ("real-last-command",\111368,344788 - DEFVAR_KBOARD ("last-repeatable-command",\111372,344974 - DEFVAR_LISP ("this-command",\111378,345262 - DEFVAR_LISP ("real-this-command",\111384,345499 - DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345681 - DEFVAR_LISP ("this-original-command",\111396,346124 - DEFVAR_INT ("auto-save-interval",\111403,346521 - DEFVAR_LISP ("auto-save-timeout",\111408,346735 - DEFVAR_LISP ("echo-keystrokes",\111415,347080 - DEFVAR_INT ("polling-period",\111421,347351 - DEFVAR_LISP ("double-click-time",\111428,347694 - DEFVAR_INT ("double-click-fuzz",\111435,348030 - DEFVAR_INT ("num-input-keys",\111446,348520 - DEFVAR_INT ("num-nonmacro-input-events",\111452,348795 - DEFVAR_LISP ("last-event-frame",\111457,349033 - DEFVAR_LISP ("tty-erase-char",\111463,349312 - DEFVAR_LISP ("help-char",\111466,349435 - DEFVAR_LISP ("help-event-list",\111472,349718 - DEFVAR_LISP ("help-form",\111477,349929 - DEFVAR_LISP ("prefix-help-command",\111483,350177 - DEFVAR_LISP ("top-level",\111489,350455 - DEFVAR_KBOARD ("keyboard-translate-table",\111495,350676 - DEFVAR_BOOL ("cannot-suspend",\111511,351489 - DEFVAR_BOOL ("menu-prompting",\111516,351716 - DEFVAR_LISP ("menu-prompt-more-char",\111526,352146 - DEFVAR_INT ("extra-keyboard-modifiers",\111531,352392 - DEFVAR_LISP ("deactivate-mark",\111545,353118 - DEFVAR_LISP ("pre-command-hook",\111553,353487 - DEFVAR_LISP ("post-command-hook",\111560,353842 - DEFVAR_LISP ("echo-area-clear-hook",\111568,354205 - DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354420 - DEFVAR_LISP ("menu-bar-final-items",\111578,354623 - DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354873 - DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355231 - DEFVAR_LISP ("overriding-local-map",\111598,355653 - DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356104 - DEFVAR_LISP ("special-event-map",\111613,356443 - DEFVAR_LISP ("track-mouse",\111617,356631 - DEFVAR_KBOARD ("system-key-alist",\111620,356758 - DEFVAR_KBOARD ("local-function-key-map",\111629,357139 - DEFVAR_KBOARD ("input-decode-map",\111658,358598 - DEFVAR_LISP ("function-key-map",\111675,359386 - DEFVAR_LISP ("key-translation-map",\111683,359802 - DEFVAR_LISP ("deferred-action-list",\111689,360146 - DEFVAR_LISP ("deferred-action-function",\111694,360394 - DEFVAR_LISP ("delayed-warnings-list",\111700,360693 - DEFVAR_LISP ("timer-list",\111708,361101 - DEFVAR_LISP ("timer-idle-list",\111712,361253 - DEFVAR_LISP ("input-method-function",\111716,361416 - DEFVAR_LISP ("input-method-previous-message",\111737,362385 - DEFVAR_LISP ("show-help-function",\111744,362746 - DEFVAR_LISP ("disable-point-adjustment",\111749,362978 - DEFVAR_LISP ("global-disable-point-adjustment",\111761,363528 - DEFVAR_LISP ("minibuffer-message-timeout",\111770,363894 - DEFVAR_LISP ("throw-on-input",\111775,364172 - DEFVAR_LISP ("command-error-function",\111781,364423 - DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364910 - DEFVAR_LISP ("select-active-regions",\111798,365237 - DEFVAR_LISP ("saved-region-selection",\111807,365629 - DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366014 - DEFVAR_LISP ("debug-on-event",\111825,366555 +make_lispy_movement 6104,183531 +make_lispy_switch_frame 6131,184262 +make_lispy_focus_in 6137,184369 +make_lispy_focus_out 6145,184495 +parse_modifiers_uncached 6163,184945 +#define SINGLE_LETTER_MOD(6185,185465 +#undef SINGLE_LETTER_MOD6212,185906 +#define MULTI_LETTER_MOD(6214,185932 +#undef MULTI_LETTER_MOD6231,186400 +apply_modifiers_uncached 6273,187574 +static const char *const modifier_names[modifier_names6319,189193 +#define NUM_MOD_NAMES 6325,189399 +static Lisp_Object modifier_symbols;6327,189449 +lispy_modifier_list 6331,189586 +#define KEY_TO_CHAR(6353,190252 +parse_modifiers 6356,190328 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191517 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517 +apply_modifiers 6422,192391 +reorder_modifiers 6491,194720 +modify_event_symbol 6536,196528 +DEFUN ("event-convert-list", Fevent_convert_list,6628,199244 +DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199244 +parse_solitary_modifier 6695,201135 +#define SINGLE_LETTER_MOD(6701,201258 +#define MULTI_LETTER_MOD(6705,201343 +#undef SINGLE_LETTER_MOD6763,202641 +#undef MULTI_LETTER_MOD6764,202666 +lucid_event_type_list_p 6775,202889 +get_input_pending 6814,203960 +record_asynch_buffer_change 6834,204579 +gobble_input 6872,205702 +tty_read_avail_input 6967,208310 +handle_async_input 7149,214039 +process_pending_signals 7165,214359 +unblock_input_to 7177,214645 +unblock_input 7200,215277 +totally_unblock_input 7209,215445 +handle_input_available_signal 7217,215529 +deliver_input_available_signal 7226,215700 +struct user_signal_info7235,215865 +static struct user_signal_info *user_signals user_signals7250,216090 +add_user_signal 7253,216149 +handle_user_signal 7275,216598 +deliver_user_signal 7316,217558 +find_user_signal_name 7322,217659 +store_user_signal_events 7334,217841 +static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416 +static Lisp_Object menu_bar_items_vector;7368,218630 +static int menu_bar_items_index;7369,218672 +static const char *separator_names[separator_names7372,218707 +menu_separator_name_p 7393,219148 +menu_bar_items 7426,219852 +Lisp_Object item_properties;7568,224603 +menu_bar_item 7571,224645 +menu_item_eval_property_1 7647,227175 +eval_dyn 7658,227465 +menu_item_eval_property 7666,227675 +parse_menu_item 7686,228341 +static Lisp_Object tool_bar_items_vector;7965,236336 +static Lisp_Object tool_bar_item_properties;7970,236510 +static int ntool_bar_items;7974,236606 +tool_bar_items 7990,237083 +process_tool_bar_item 8075,239892 +#define PROP(8112,240969 +set_prop 8114,241038 +parse_tool_bar_item 8167,242453 +#undef PROP8379,248844 +init_tool_bar_items 8387,248969 +append_tool_bar_item 8401,249261 +read_char_x_menu_prompt 8443,250771 +read_char_minibuf_menu_prompt 8503,252445 +#define PUSH_C_STR(8527,253014 +follow_key 8726,258553 +active_maps 8733,258695 +typedef struct keyremap8742,259021 +} keyremap;8754,259464 +access_keymap_keyremap 8764,259808 +keyremap_step 8811,261450 +test_undefined 8867,262934 +read_key_sequence 8916,264861 +read_key_sequence_vs 9826,295821 +DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294 +DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299982 +detect_input_pending 9950,300488 +detect_input_pending_ignore_squeezables 9959,300654 +detect_input_pending_run_timers 9967,300870 +clear_input_pending 9985,301362 +requeued_events_pending_p 9997,301732 +DEFUN ("input-pending-p", Finput_pending_p,10002,301813 +DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813 +DEFUN ("recent-keys", Frecent_keys,10024,302596 +DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596 +DEFUN ("this-command-keys", Fthis_command_keys,10055,303517 +DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303958 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304380 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304955 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305495 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306510 +DEFUN ("recursion-depth", Frecursion_depth,10158,307069 +DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069 +DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406 +DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406 +DEFUN ("discard-input", Fdiscard_input,10203,308447 +DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447 +DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949 +DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949 +stuff_buffered_input 10285,311045 +set_waiting_for_input 10323,312016 +clear_waiting_for_input 10337,312390 +handle_interrupt_signal 10351,312754 +deliver_interrupt_signal 10378,313642 +static int volatile force_quit_count;10387,313932 +handle_interrupt 10401,314414 +quit_throw_to_read_char 10541,318711 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288 +DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516 +DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320516 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321432 +DEFUN ("set-quit-char", Fset_quit_char,10694,322706 +DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706 +DEFUN ("set-input-mode", Fset_input_mode,10729,323570 +DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570 +DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459 +DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324459 +DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837 +DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837 +DEFUN ("posn-at-point", Fposn_at_point,10824,327060 +DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060 +init_kboard 10861,328214 +allocate_kboard 10893,329284 +wipe_kboard 10909,329637 +delete_kboard 10917,329751 +init_keyboard 10942,330281 +struct event_head11021,332696 +static const struct event_head head_table[head_table11027,332747 +syms_of_keyboard 11045,333577 + DEFVAR_LISP ("internal--top-level-message"11058,333972 + DEFVAR_LISP ("last-command-event"11312,342173 + DEFVAR_LISP ("last-nonmenu-event"11315,342297 + DEFVAR_LISP ("last-input-event"11321,342636 + DEFVAR_LISP ("unread-command-events"11324,342730 + DEFVAR_LISP ("unread-post-input-method-events"11332,343190 + DEFVAR_LISP ("unread-input-method-events"11338,343529 + DEFVAR_LISP ("meta-prefix-char"11346,343898 + DEFVAR_KBOARD ("last-command"11351,344106 + DEFVAR_KBOARD ("real-last-command"11368,344787 + DEFVAR_KBOARD ("last-repeatable-command"11372,344973 + DEFVAR_LISP ("this-command"11378,345261 + DEFVAR_LISP ("real-this-command"11384,345498 + DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680 + DEFVAR_LISP ("this-original-command"11396,346123 + DEFVAR_INT ("auto-save-interval"11403,346520 + DEFVAR_LISP ("auto-save-timeout"11408,346734 + DEFVAR_LISP ("echo-keystrokes"11415,347079 + DEFVAR_INT ("polling-period"11421,347350 + DEFVAR_LISP ("double-click-time"11428,347693 + DEFVAR_INT ("double-click-fuzz"11435,348029 + DEFVAR_INT ("num-input-keys"11446,348519 + DEFVAR_INT ("num-nonmacro-input-events"11452,348794 + DEFVAR_LISP ("last-event-frame"11457,349032 + DEFVAR_LISP ("tty-erase-char"11463,349311 + DEFVAR_LISP ("help-char"11466,349434 + DEFVAR_LISP ("help-event-list"11472,349717 + DEFVAR_LISP ("help-form"11477,349928 + DEFVAR_LISP ("prefix-help-command"11483,350176 + DEFVAR_LISP ("top-level"11489,350454 + DEFVAR_KBOARD ("keyboard-translate-table"11495,350675 + DEFVAR_BOOL ("cannot-suspend"11511,351488 + DEFVAR_BOOL ("menu-prompting"11516,351715 + DEFVAR_LISP ("menu-prompt-more-char"11526,352145 + DEFVAR_INT ("extra-keyboard-modifiers"11531,352391 + DEFVAR_LISP ("deactivate-mark"11545,353117 + DEFVAR_LISP ("pre-command-hook"11553,353486 + DEFVAR_LISP ("post-command-hook"11560,353841 + DEFVAR_LISP ("echo-area-clear-hook"11568,354204 + DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419 + DEFVAR_LISP ("menu-bar-final-items"11578,354622 + DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872 + DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230 + DEFVAR_LISP ("overriding-local-map"11598,355652 + DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103 + DEFVAR_LISP ("special-event-map"11613,356442 + DEFVAR_LISP ("track-mouse"11617,356630 + DEFVAR_KBOARD ("system-key-alist"11620,356757 + DEFVAR_KBOARD ("local-function-key-map"11629,357138 + DEFVAR_KBOARD ("input-decode-map"11658,358597 + DEFVAR_LISP ("function-key-map"11675,359385 + DEFVAR_LISP ("key-translation-map"11683,359801 + DEFVAR_LISP ("deferred-action-list"11689,360145 + DEFVAR_LISP ("deferred-action-function"11694,360393 + DEFVAR_LISP ("delayed-warnings-list"11700,360692 + DEFVAR_LISP ("timer-list"11708,361100 + DEFVAR_LISP ("timer-idle-list"11712,361252 + DEFVAR_LISP ("input-method-function"11716,361415 + DEFVAR_LISP ("input-method-previous-message"11737,362384 + DEFVAR_LISP ("show-help-function"11744,362745 + DEFVAR_LISP ("disable-point-adjustment"11749,362977 + DEFVAR_LISP ("global-disable-point-adjustment"11761,363527 + DEFVAR_LISP ("minibuffer-message-timeout"11770,363893 + DEFVAR_LISP ("throw-on-input"11775,364171 + DEFVAR_LISP ("command-error-function"11781,364422 + DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909 + DEFVAR_LISP ("select-active-regions"11798,365236 + DEFVAR_LISP ("saved-region-selection"11807,365628 + DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013 + DEFVAR_LISP ("debug-on-event"11825,366554 +keys_of_keyboard 11841,367115 +mark_kboards 11916,370434 + DEFVAR_LISP ("internal--top-level-message",\111058,333972 + DEFVAR_LISP ("last-command-event",\111312,342173 + DEFVAR_LISP ("last-nonmenu-event",\111315,342297 + DEFVAR_LISP ("last-input-event",\111321,342636 + DEFVAR_LISP ("unread-command-events",\111324,342730 + DEFVAR_LISP ("unread-post-input-method-events",\111332,343190 + DEFVAR_LISP ("unread-input-method-events",\111338,343529 + DEFVAR_LISP ("meta-prefix-char",\111346,343898 + DEFVAR_KBOARD ("last-command",\111351,344106 + DEFVAR_KBOARD ("real-last-command",\111368,344787 + DEFVAR_KBOARD ("last-repeatable-command",\111372,344973 + DEFVAR_LISP ("this-command",\111378,345261 + DEFVAR_LISP ("real-this-command",\111384,345498 + DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680 + DEFVAR_LISP ("this-original-command",\111396,346123 + DEFVAR_INT ("auto-save-interval",\111403,346520 + DEFVAR_LISP ("auto-save-timeout",\111408,346734 + DEFVAR_LISP ("echo-keystrokes",\111415,347079 + DEFVAR_INT ("polling-period",\111421,347350 + DEFVAR_LISP ("double-click-time",\111428,347693 + DEFVAR_INT ("double-click-fuzz",\111435,348029 + DEFVAR_INT ("num-input-keys",\111446,348519 + DEFVAR_INT ("num-nonmacro-input-events",\111452,348794 + DEFVAR_LISP ("last-event-frame",\111457,349032 + DEFVAR_LISP ("tty-erase-char",\111463,349311 + DEFVAR_LISP ("help-char",\111466,349434 + DEFVAR_LISP ("help-event-list",\111472,349717 + DEFVAR_LISP ("help-form",\111477,349928 + DEFVAR_LISP ("prefix-help-command",\111483,350176 + DEFVAR_LISP ("top-level",\111489,350454 + DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675 + DEFVAR_BOOL ("cannot-suspend",\111511,351488 + DEFVAR_BOOL ("menu-prompting",\111516,351715 + DEFVAR_LISP ("menu-prompt-more-char",\111526,352145 + DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391 + DEFVAR_LISP ("deactivate-mark",\111545,353117 + DEFVAR_LISP ("pre-command-hook",\111553,353486 + DEFVAR_LISP ("post-command-hook",\111560,353841 + DEFVAR_LISP ("echo-area-clear-hook",\111568,354204 + DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419 + DEFVAR_LISP ("menu-bar-final-items",\111578,354622 + DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872 + DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230 + DEFVAR_LISP ("overriding-local-map",\111598,355652 + DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103 + DEFVAR_LISP ("special-event-map",\111613,356442 + DEFVAR_LISP ("track-mouse",\111617,356630 + DEFVAR_KBOARD ("system-key-alist",\111620,356757 + DEFVAR_KBOARD ("local-function-key-map",\111629,357138 + DEFVAR_KBOARD ("input-decode-map",\111658,358597 + DEFVAR_LISP ("function-key-map",\111675,359385 + DEFVAR_LISP ("key-translation-map",\111683,359801 + DEFVAR_LISP ("deferred-action-list",\111689,360145 + DEFVAR_LISP ("deferred-action-function",\111694,360393 + DEFVAR_LISP ("delayed-warnings-list",\111700,360692 + DEFVAR_LISP ("timer-list",\111708,361100 + DEFVAR_LISP ("timer-idle-list",\111712,361252 + DEFVAR_LISP ("input-method-function",\111716,361415 + DEFVAR_LISP ("input-method-previous-message",\111737,362384 + DEFVAR_LISP ("show-help-function",\111744,362745 + DEFVAR_LISP ("disable-point-adjustment",\111749,362977 + DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527 + DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893 + DEFVAR_LISP ("throw-on-input",\111775,364171 + DEFVAR_LISP ("command-error-function",\111781,364422 + DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909 + DEFVAR_LISP ("select-active-regions",\111798,365236 + DEFVAR_LISP ("saved-region-selection",\111807,365628 + DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013 + DEFVAR_LISP ("debug-on-event",\111825,366554 c-src/emacs/src/lisp.h,20276 #define EMACS_LISP_H22,801 @@ -2307,11 +2303,11 @@ main(37,571 class D 41,622 D(43,659 -el-src/TAGTEST.EL,179 -(foo::defmumble bletch 1,0 -(defun foo==bar foo==bar2,33 -(defalias 'pending-delete-mode pending-delete-mode6,149 -(defalias (quote explicitly-quoted-pending-delete-mode)9,222 +el-src/TAGTEST.EL,181 +(foo::defmumble bletch 3,33 +(defun foo==bar foo==bar4,66 +(defalias 'pending-delete-mode pending-delete-mode8,182 +(defalias (quote explicitly-quoted-pending-delete-mode)11,255 el-src/emacs/lisp/progmodes/etags.el,5069 (defvar tags-file-name 34,1035 @@ -3070,22 +3066,22 @@ ord_add_element(71,1867 ord_del_element(85,2344 ord_disjoint(100,2783 ord_intersect(108,2953 -ord_intersection(126,3552 -ord_intersection3(130,3691 -ord_intersection(150,4531 -ord_intersection4(154,4703 -ord_intersection(176,5664 -ord_intersection2(181,5812 -ord_member(200,6318 -ord_seteq(216,6683 -ord_setproduct(225,6971 -ord_subset(240,7377 -ord_subtract(257,7861 -ord_symdiff(265,8054 -ord_union(288,8887 -ord_union4(303,9352 -ord_union(324,10171 -ord_union_all(329,10313 +ord_intersection(126,3553 +ord_intersection3(130,3692 +ord_intersection(150,4533 +ord_intersection4(154,4705 +ord_intersection(176,5666 +ord_intersection2(181,5814 +ord_member(200,6320 +ord_seteq(216,6685 +ord_setproduct(225,6973 +ord_subset(240,7379 +ord_subtract(257,7863 +ord_symdiff(265,8056 +ord_union(288,8889 +ord_union4(303,9354 +ord_union(324,10173 +ord_union_all(329,10315 prol-src/natded.prolog,2319 expandmng(100,2879 @@ -3300,6 +3296,11 @@ module A9,57 alias_method ( :foo2,foo237,586 A::Constant Constant42,655 +rs-src/test.rs,52 +enum IpAddrKind 3,11 +fn test1(8,48 +fn main(12,88 + scm-src/test.scm,260 (define hello 1,0 (set! hello 3,32 @@ -3514,533 +3515,533 @@ tex-src/texinfo.tex,30627 \def\vritemindex #1{\vritemindex1068,35482 \def\tablez #1#2#3#4#5#6{\tablez1074,35631 \def\Edescription{\Edescription1077,35689 -\def\itemfont{\itemfont1082,35891 -\def\Etable{\Etable1090,36117 -\def\itemize{\itemize1103,36441 -\def\itemizezzz #1{\itemizezzz1105,36477 -\def\itemizey #1#2{\itemizey1110,36572 -\def#2{1119,36818 -\def\itemcontents{\itemcontents1120,36859 -\def\bullet{\bullet1123,36907 -\def\minus{\minus1124,36934 -\def\frenchspacing{\frenchspacing1128,37042 -\def\splitoff#1#2\endmark{\splitoff1134,37267 -\def\enumerate{\enumerate1140,37497 -\def\enumeratezzz #1{\enumeratezzz1141,37536 -\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589 - \def\thearg{\thearg1146,37736 - \ifx\thearg\empty \def\thearg{\thearg1147,37755 -\def\numericenumerate{\numericenumerate1184,39089 -\def\lowercaseenumerate{\lowercaseenumerate1190,39219 -\def\uppercaseenumerate{\uppercaseenumerate1203,39566 -\def\startenumeration#1{\startenumeration1219,40056 -\def\alphaenumerate{\alphaenumerate1227,40238 -\def\capsenumerate{\capsenumerate1228,40273 -\def\Ealphaenumerate{\Ealphaenumerate1229,40307 -\def\Ecapsenumerate{\Ecapsenumerate1230,40341 -\def\itemizeitem{\itemizeitem1234,40421 -\def\newindex #1{\newindex1259,41278 -\def\defindex{\defindex1268,41567 -\def\newcodeindex #1{\newcodeindex1272,41675 -\def\defcodeindex{\defcodeindex1279,41935 -\def\synindex #1 #2 {\synindex1283,42115 -\def\syncodeindex #1 #2 {\syncodeindex1292,42455 -\def\doindex#1{\doindex1309,43134 -\def\singleindexer #1{\singleindexer1310,43193 -\def\docodeindex#1{\docodeindex1313,43305 -\def\singlecodeindexer #1{\singlecodeindexer1314,43372 -\def\indexdummies{\indexdummies1316,43430 -\def\_{\_1317,43450 -\def\w{\w1318,43478 -\def\bf{\bf1319,43505 -\def\rm{\rm1320,43534 -\def\sl{\sl1321,43563 -\def\sf{\sf1322,43592 -\def\tt{\tt1323,43620 -\def\gtr{\gtr1324,43648 -\def\less{\less1325,43678 -\def\hat{\hat1326,43710 -\def\char{\char1327,43740 -\def\TeX{\TeX1328,43772 -\def\dots{\dots1329,43802 -\def\copyright{\copyright1330,43835 -\def\tclose##1{\tclose1331,43878 -\def\code##1{\code1332,43923 -\def\samp##1{\samp1333,43964 -\def\t##1{\t1334,44005 -\def\r##1{\r1335,44040 -\def\i##1{\i1336,44075 -\def\b##1{\b1337,44110 -\def\cite##1{\cite1338,44145 -\def\key##1{\key1339,44186 -\def\file##1{\file1340,44225 -\def\var##1{\var1341,44266 -\def\kbd##1{\kbd1342,44305 -\def\indexdummyfont#1{\indexdummyfont1347,44461 -\def\indexdummytex{\indexdummytex1348,44487 -\def\indexdummydots{\indexdummydots1349,44511 -\def\indexnofonts{\indexnofonts1351,44537 -\let\w=\indexdummyfontdummyfont1352,44557 -\let\t=\indexdummyfontdummyfont1353,44580 -\let\r=\indexdummyfontdummyfont1354,44603 -\let\i=\indexdummyfontdummyfont1355,44626 -\let\b=\indexdummyfontdummyfont1356,44649 -\let\emph=\indexdummyfontdummyfont1357,44672 -\let\strong=\indexdummyfontdummyfont1358,44698 -\let\cite=\indexdummyfont=\indexdummyfont1359,44726 -\let\sc=\indexdummyfontdummyfont1360,44752 -\let\tclose=\indexdummyfontdummyfont1364,44924 -\let\code=\indexdummyfontdummyfont1365,44952 -\let\file=\indexdummyfontdummyfont1366,44978 -\let\samp=\indexdummyfontdummyfont1367,45004 -\let\kbd=\indexdummyfontdummyfont1368,45030 -\let\key=\indexdummyfontdummyfont1369,45055 -\let\var=\indexdummyfontdummyfont1370,45080 -\let\TeX=\indexdummytexdummytex1371,45105 -\let\dots=\indexdummydotsdummydots1372,45129 -\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45381 -\def\doind #1#2{\doind1384,45437 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45480 -\def\rawbackslashxx{\rawbackslashxx1389,45620 -{\indexnofontsnofonts1394,45882 -\def\dosubind #1#2#3{\dosubind1405,46193 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46241 -\def\rawbackslashxx{\rawbackslashxx1410,46345 -{\indexnofontsnofonts1414,46499 -\def\findex {\findex1443,47430 -\def\kindex {\kindex1444,47453 -\def\cindex {\cindex1445,47476 -\def\vindex {\vindex1446,47499 -\def\tindex {\tindex1447,47522 -\def\pindex {\pindex1448,47545 -\def\cindexsub {\cindexsub1450,47569 -\def\printindex{\printindex1462,47896 -\def\doprintindex#1{\doprintindex1464,47937 - \def\indexbackslash{\indexbackslash1481,48422 - \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461 -\def\initial #1{\initial1517,49533 -\def\entry #1#2{\entry1523,49740 - \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50387 -\def\indexdotfill{\indexdotfill1549,50715 -\def\primary #1{\primary1552,50821 -\def\secondary #1#2{\secondary1556,50903 -\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985 -\newbox\partialpageialpage1566,51158 -\def\begindoublecolumns{\begindoublecolumns1572,51316 - \output={\global\setbox\partialpage=ialpage=1573,51352 -\def\enddoublecolumns{\enddoublecolumns1577,51540 -\def\doublecolumnout{\doublecolumnout1580,51625 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694 -\def\pagesofar{\pagesofar1584,51872 -\def\balancecolumns{\balancecolumns1588,52109 - \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52280 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541 -\newcount \appendixno \appendixno = `\@no1627,53446 -\def\appendixletter{\appendixletter1628,53487 -\def\opencontents{\opencontents1632,53590 -\def\thischapter{\thischapter1637,53771 -\def\seccheck#1{\seccheck1638,53809 -\def\chapternofonts{\chapternofonts1643,53913 -\def\result{\result1646,53988 -\def\equiv{\equiv1647,54023 -\def\expansion{\expansion1648,54056 -\def\print{\print1649,54097 -\def\TeX{\TeX1650,54130 -\def\dots{\dots1651,54159 -\def\copyright{\copyright1652,54190 -\def\tt{\tt1653,54231 -\def\bf{\bf1654,54258 -\def\w{\w1655,54286 -\def\less{\less1656,54311 -\def\gtr{\gtr1657,54342 -\def\hat{\hat1658,54371 -\def\char{\char1659,54400 -\def\tclose##1{\tclose1660,54431 -\def\code##1{\code1661,54475 -\def\samp##1{\samp1662,54515 -\def\r##1{\r1663,54555 -\def\b##1{\b1664,54589 -\def\key##1{\key1665,54623 -\def\file##1{\file1666,54661 -\def\kbd##1{\kbd1667,54701 -\def\i##1{\i1669,54809 -\def\cite##1{\cite1670,54843 -\def\var##1{\var1671,54883 -\def\emph##1{\emph1672,54921 -\def\dfn##1{\dfn1673,54961 -\def\thischaptername{\thischaptername1676,55002 -\outer\def\chapter{\chapter1677,55041 -\def\chapterzzz #1{\chapterzzz1678,55082 -{\chapternofonts%nofonts%1687,55478 -\global\let\section = \numberedsec=1692,55631 -\global\let\subsection = \numberedsubsec=1693,55666 -\global\let\subsubsection = \numberedsubsubsec=1694,55707 -\outer\def\appendix{\appendix1697,55758 -\def\appendixzzz #1{\appendixzzz1698,55801 -\global\advance \appendixno by 1 \message{no1700,55878 -\chapmacro {#1}{Appendix \appendixletter}letter1701,55947 -\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56040 -{\chapternofonts%nofonts%1705,56112 - {#1}{Appendix \appendixletter}letter1707,56168 -\appendixnoderef %noderef1710,56268 -\global\let\section = \appendixsec=1711,56287 -\global\let\subsection = \appendixsubsec=1712,56322 -\global\let\subsubsection = \appendixsubsubsec=1713,56363 -\outer\def\top{\top1716,56414 -\outer\def\unnumbered{\unnumbered1717,56454 -\def\unnumberedzzz #1{\unnumberedzzz1718,56501 -{\chapternofonts%nofonts%1722,56664 -\global\let\section = \unnumberedsec=1727,56814 -\global\let\subsection = \unnumberedsubsec=1728,56851 -\global\let\subsubsection = \unnumberedsubsubsec=1729,56894 -\outer\def\numberedsec{\numberedsec1732,56947 -\def\seczzz #1{\seczzz1733,56988 -{\chapternofonts%nofonts%1736,57144 -\outer\def\appendixsection{\appendixsection1745,57330 -\outer\def\appendixsec{\appendixsec1746,57387 -\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440 -\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552 -{\chapternofonts%nofonts%1750,57620 -{#1}{\appendixletter}letter1752,57676 -\appendixnoderef %noderef1755,57776 -\outer\def\unnumberedsec{\unnumberedsec1759,57816 -\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869 -{\chapternofonts%nofonts%1762,57964 -\outer\def\numberedsubsec{\numberedsubsec1770,58132 -\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187 -{\chapternofonts%nofonts%1774,58366 -\outer\def\appendixsubsec{\appendixsubsec1783,58570 -\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625 -\subsecheading {#1}{\appendixletter}letter1786,58747 -{\chapternofonts%nofonts%1787,58812 -{#1}{\appendixletter}letter1789,58871 -\appendixnoderef %noderef1792,58986 -\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026 -\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085 -{\chapternofonts%nofonts%1799,59186 -\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357 -\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418 -{\chapternofonts%nofonts%1812,59615 -\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848 -\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909 - {\appendixletter}letter1827,60048 -{\chapternofonts%nofonts%1828,60114 - {\appendixletter}letter1830,60179 -\appendixnoderef %noderef1834,60313 -\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353 -\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418 -{\chapternofonts%nofonts%1841,60525 -\def\infotop{\infotop1851,60854 -\def\infounnumbered{\infounnumbered1852,60892 -\def\infounnumberedsec{\infounnumberedsec1853,60937 -\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988 -\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045 -\def\infoappendix{\infoappendix1857,61109 -\def\infoappendixsec{\infoappendixsec1858,61150 -\def\infoappendixsubsec{\infoappendixsubsec1859,61197 -\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250 -\def\infochapter{\infochapter1862,61310 -\def\infosection{\infosection1863,61349 -\def\infosubsection{\infosubsection1864,61388 -\def\infosubsubsection{\infosubsubsection1865,61433 -\global\let\section = \numberedsec=1870,61670 -\global\let\subsection = \numberedsubsec=1871,61705 -\global\let\subsubsection = \numberedsubsubsec=1872,61746 -\def\majorheading{\majorheading1886,62253 -\def\majorheadingzzz #1{\majorheadingzzz1887,62298 -\def\chapheading{\chapheading1893,62531 -\def\chapheadingzzz #1{\chapheadingzzz1894,62574 -\def\heading{\heading1899,62769 -\def\subheading{\subheading1901,62806 -\def\subsubheading{\subsubheading1903,62849 -\def\dobreak#1#2{\dobreak1910,63126 -\def\setchapterstyle #1 {\setchapterstyle1912,63204 -\def\chapbreak{\chapbreak1919,63459 -\def\chappager{\chappager1920,63509 -\def\chapoddpage{\chapoddpage1921,63547 -\def\setchapternewpage #1 {\setchapternewpage1923,63626 -\def\CHAPPAGoff{\CHAPPAGoff1925,63683 -\def\CHAPPAGon{\CHAPPAGon1929,63777 -\global\def\HEADINGSon{\HEADINGSon1932,63868 -\def\CHAPPAGodd{\CHAPPAGodd1934,63910 -\global\def\HEADINGSon{\HEADINGSon1937,64006 -\def\CHAPFplain{\CHAPFplain1941,64060 -\def\chfplain #1#2{\chfplain1945,64152 -\def\unnchfplain #1{\unnchfplain1956,64375 -\def\unnchfopen #1{\unnchfopen1964,64604 -\def\chfopen #1#2{\chfopen1970,64812 -\def\CHAPFopen{\CHAPFopen1975,64956 -\def\subsecheadingbreak{\subsecheadingbreak1982,65174 -\def\secheadingbreak{\secheadingbreak1985,65303 -\def\secheading #1#2#3{\secheading1993,65585 -\def\plainsecheading #1{\plainsecheading1994,65641 -\def\secheadingi #1{\secheadingi1995,65684 -\def\subsecheading #1#2#3#4{\subsecheading2006,66052 -\def\subsecheadingi #1{\subsecheadingi2007,66119 -\def\subsubsecfonts{\subsubsecfonts2014,66416 -\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539 -\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617 -\def\startcontents#1{\startcontents2032,67089 - \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362 -\outer\def\contents{\contents2049,67721 -\outer\def\summarycontents{\summarycontents2057,67865 - \def\secentry ##1##2##3##4{\secentry2067,68236 - \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271 - \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306 - \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347 - \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385 - \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432 -\def\chapentry#1#2#3{\chapentry2085,68866 -\def\shortchapentry#1#2#3{\shortchapentry2088,68983 - {#2\labelspace #1}space2091,69093 -\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147 -\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194 -\def\secentry#1#2#3#4{\secentry2102,69358 -\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417 -\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478 -\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548 -\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622 - \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656 -\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707 -\def\dochapentry#1#2{\dochapentry2123,70081 -\def\dosecentry#1#2{\dosecentry2138,70686 -\def\dosubsecentry#1#2{\dosubsecentry2145,70864 -\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049 -\def\labelspace{\labelspace2160,71300 -\def\dopageno#1{\dopageno2162,71335 -\def\doshortpageno#1{\doshortpageno2163,71361 -\def\chapentryfonts{\chapentryfonts2165,71393 -\def\secentryfonts{\secentryfonts2166,71428 -\def\point{\point2192,72387 -\def\result{\result2194,72408 -\def\expansion{\expansion2195,72481 -\def\print{\print2196,72552 -\def\equiv{\equiv2198,72619 -\def\error{\error2218,73392 -\def\tex{\tex2224,73621 -\def\@{\@2242,74004 -\gdef\sepspaces{\def {\ }}}\2265,74736 -\def\aboveenvbreak{\aboveenvbreak2268,74818 -\def\afterenvbreak{\afterenvbreak2272,74984 -\def\ctl{\ctl2286,75495 -\def\ctr{\ctr2287,75567 -\def\cbl{\cbl2288,75606 -\def\cbr{\cbr2289,75646 -\def\carttop{\carttop2290,75685 -\def\cartbot{\cartbot2293,75793 -\long\def\cartouche{\cartouche2299,75933 -\def\Ecartouche{\Ecartouche2326,76721 -\def\lisp{\lisp2338,76856 -\def\Elisp{\Elisp2348,77203 -\def\next##1{\next2360,77529 -\def\Eexample{\Eexample2364,77571 -\def\Esmallexample{\Esmallexample2367,77618 -\def\smalllispx{\smalllispx2373,77796 -\def\Esmalllisp{\Esmalllisp2383,78150 -\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506 -\def\next##1{\next2397,78563 -\def\display{\display2401,78643 -\def\Edisplay{\Edisplay2410,78962 -\def\next##1{\next2422,79273 -\def\format{\format2426,79376 -\def\Eformat{\Eformat2434,79672 -\def\next##1{\next2437,79761 -\def\flushleft{\flushleft2441,79813 -\def\Eflushleft{\Eflushleft2451,80184 -\def\next##1{\next2454,80277 -\def\flushright{\flushright2456,80299 -\def\Eflushright{\Eflushright2466,80671 -\def\next##1{\next2470,80802 -\def\quotation{\quotation2474,80860 -\def\Equotation{\Equotation2480,81052 -\def\setdeffont #1 {\setdeffont2493,81450 -\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496 -\newskip\defargsindent \defargsindent=50ptargsindent2496,81539 -\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582 -\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625 -\def\activeparens{\activeparens2503,81823 -\def\opnr{\opnr2529,83035 -\def\lbrb{\lbrb2530,83100 -\def\defname #1#2{\defname2536,83301 -\advance\dimen2 by -\defbodyindentbodyindent2540,83419 -\advance\dimen3 by -\defbodyindentbodyindent2542,83473 -\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527 -\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83669 -\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83744 -\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113 -\advance\leftskip by -\defbodyindentbodyindent2557,84247 -\exdentamount=\defbodyindentbodyindent2558,84284 -\def\defparsebody #1#2#3{\defparsebody2568,84643 -\def#1{2572,84827 -\def#2{2573,84863 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84935 -\exdentamount=\defbodyindentbodyindent2576,85009 -\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113 -\def#1{2585,85274 -\def#2##1 {2586,85310 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85393 -\exdentamount=\defbodyindentbodyindent2589,85467 -\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552 -\def#1{2596,85713 -\def#2##1 ##2 {2597,85749 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85849 -\exdentamount=\defbodyindentbodyindent2601,85923 -\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194 -\def#1{2612,86381 -\def#2{2613,86417 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86476 -\exdentamount=\defbodyindentbodyindent2616,86550 -\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641 -\def#1{2625,86800 -\def#2##1 {2626,86836 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86906 -\exdentamount=\defbodyindentbodyindent2629,86980 -\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052 -\def#1{2636,87216 -\def#2##1 ##2 {2637,87252 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87339 -\exdentamount=\defbodyindentbodyindent2641,87413 -\def\defunargs #1{\defunargs2664,88173 -\def\deftypefunargs #1{\deftypefunargs2676,88555 -\def\deffn{\deffn2690,88937 -\def\deffnheader #1#2#3{\deffnheader2692,88994 -\begingroup\defname {name2693,89042 -\def\defun{\defun2699,89187 -\def\defunheader #1#2{\defunheader2701,89240 -\begingroup\defname {name2702,89315 -\defunargs {unargs2703,89351 -\def\deftypefun{\deftypefun2709,89499 -\def\deftypefunheader #1#2{\deftypefunheader2712,89621 -\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730 -\begingroup\defname {name2716,89822 -\deftypefunargs {typefunargs2717,89868 -\def\deftypefn{\deftypefn2723,90039 -\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188 -\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324 -\begingroup\defname {name2730,90417 -\deftypefunargs {typefunargs2731,90457 -\def\defmac{\defmac2737,90578 -\def\defmacheader #1#2{\defmacheader2739,90635 -\begingroup\defname {name2740,90711 -\defunargs {unargs2741,90744 -\def\defspec{\defspec2747,90868 -\def\defspecheader #1#2{\defspecheader2749,90929 -\begingroup\defname {name2750,91006 -\defunargs {unargs2751,91046 -\def\deffnx #1 {\deffnx2758,91241 -\def\defunx #1 {\defunx2759,91298 -\def\defmacx #1 {\defmacx2760,91355 -\def\defspecx #1 {\defspecx2761,91414 -\def\deftypefnx #1 {\deftypefnx2762,91475 -\def\deftypeunx #1 {\deftypeunx2763,91540 -\def\defop #1 {\defop2769,91686 -\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721 -\def\defopheader #1#2#3{\defopheader2772,91775 -\begingroup\defname {name2774,91864 -\defunargs {unargs2775,91910 -\def\defmethod{\defmethod2780,91971 -\def\defmethodheader #1#2#3{\defmethodheader2782,92044 -\begingroup\defname {name2784,92132 -\defunargs {unargs2785,92172 -\def\defcv #1 {\defcv2790,92246 -\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281 -\def\defcvarheader #1#2#3{\defcvarheader2793,92340 -\begingroup\defname {name2795,92426 -\defvarargs {varargs2796,92472 -\def\defivar{\defivar2801,92545 -\def\defivarheader #1#2#3{\defivarheader2803,92608 -\begingroup\defname {name2805,92694 -\defvarargs {varargs2806,92745 -\def\defopx #1 {\defopx2812,92894 -\def\defmethodx #1 {\defmethodx2813,92951 -\def\defcvx #1 {\defcvx2814,93016 -\def\defivarx #1 {\defivarx2815,93073 -\def\defvarargs #1{\defvarargs2822,93344 -\def\defvr{\defvr2828,93488 -\def\defvrheader #1#2#3{\defvrheader2830,93543 -\begingroup\defname {name2831,93591 -\def\defvar{\defvar2835,93676 -\def\defvarheader #1#2{\defvarheader2837,93736 -\begingroup\defname {name2838,93807 -\defvarargs {varargs2839,93843 -\def\defopt{\defopt2844,93909 -\def\defoptheader #1#2{\defoptheader2846,93969 -\begingroup\defname {name2847,94040 -\defvarargs {varargs2848,94079 -\def\deftypevar{\deftypevar2853,94136 -\def\deftypevarheader #1#2{\deftypevarheader2856,94252 -\begingroup\defname {name2858,94335 -\def\deftypevr{\deftypevr2865,94509 -\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580 -\begingroup\defname {name2868,94632 -\def\defvrx #1 {\defvrx2876,94869 -\def\defvarx #1 {\defvarx2877,94926 -\def\defoptx #1 {\defoptx2878,94985 -\def\deftypevarx #1 {\deftypevarx2879,95044 -\def\deftypevrx #1 {\deftypevrx2880,95111 -\def\deftpargs #1{\deftpargs2885,95260 -\def\deftp{\deftp2889,95340 -\def\deftpheader #1#2#3{\deftpheader2891,95395 -\begingroup\defname {name2892,95443 -\def\deftpx #1 {\deftpx2897,95602 -\def\setref#1{\setref2908,95923 -\def\unnumbsetref#1{\unnumbsetref2913,96037 -\def\appendixsetref#1{\appendixsetref2918,96144 -\def\pxref#1{\pxref2929,96555 -\def\xref#1{\xref2930,96591 -\def\ref#1{\ref2931,96626 -\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656 -\def\printedmanual{\printedmanual2933,96699 -\def\printednodename{\printednodename2934,96737 -\def\printednodename{\printednodename2939,96862 -section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495 -\refx{x2957,97573 -\def\dosetq #1#2{\dosetq2965,97793 -\def\internalsetq #1#2{\internalsetq2973,98051 -\def\Ypagenumber{\Ypagenumber2977,98152 -\def\Ytitle{\Ytitle2979,98178 -\def\Ynothing{\Ynothing2981,98205 -\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222 -\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538 -\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568 -\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98623 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98727 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798 - \def\linenumber{\linenumber3009,99137 -\def\refx#1#2{\refx3015,99321 -\def\xrdef #1#2{\xrdef3037,99947 -\def\readauxfile{\readauxfile3040,100032 -\def\supereject{\supereject3110,101813 -\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498 -\def\openindices{\openindices3139,102684 -\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909 -\parindent = \defaultparindentaultparindent3152,102961 -\def\smallbook{\smallbook3175,103685 -\global\def\Esmallexample{\Esmallexample3192,104112 -\def\afourpaper{\afourpaper3196,104203 -\def\finalout{\finalout3224,105011 -\def\normaldoublequote{\normaldoublequote3235,105272 -\def\normaltilde{\normaltilde3236,105298 -\def\normalcaret{\normalcaret3237,105318 -\def\normalunderscore{\normalunderscore3238,105338 -\def\normalverticalbar{\normalverticalbar3239,105363 -\def\normalless{\normalless3240,105389 -\def\normalgreater{\normalgreater3241,105408 -\def\normalplus{\normalplus3242,105430 -\def\ifusingtt#1#2{\ifusingtt3253,105922 -\def\activedoublequote{\activedoublequote3261,106250 -\def~{~3264,106336 -\def^{^3267,106397 -\def_{_3270,106436 -\def\_{\_3272,106510 -\def\lvvmode{\lvvmode3279,106847 -\def|{|3282,106897 -\def<{<3285,106960 -\def>{>3288,107017 -\def+{+3290,107055 -\def\turnoffactive{\turnoffactive3296,107216 -\global\def={=3307,107502 -\def\normalbackslash{\normalbackslash3321,107884 +\def\itemfont{\itemfont1082,35890 +\def\Etable{\Etable1090,36116 +\def\itemize{\itemize1103,36440 +\def\itemizezzz #1{\itemizezzz1105,36476 +\def\itemizey #1#2{\itemizey1110,36571 +\def#2{1119,36817 +\def\itemcontents{\itemcontents1120,36858 +\def\bullet{\bullet1123,36906 +\def\minus{\minus1124,36933 +\def\frenchspacing{\frenchspacing1128,37041 +\def\splitoff#1#2\endmark{\splitoff1134,37266 +\def\enumerate{\enumerate1140,37496 +\def\enumeratezzz #1{\enumeratezzz1141,37535 +\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588 + \def\thearg{\thearg1146,37735 + \ifx\thearg\empty \def\thearg{\thearg1147,37754 +\def\numericenumerate{\numericenumerate1184,39088 +\def\lowercaseenumerate{\lowercaseenumerate1190,39218 +\def\uppercaseenumerate{\uppercaseenumerate1203,39565 +\def\startenumeration#1{\startenumeration1219,40055 +\def\alphaenumerate{\alphaenumerate1227,40237 +\def\capsenumerate{\capsenumerate1228,40272 +\def\Ealphaenumerate{\Ealphaenumerate1229,40306 +\def\Ecapsenumerate{\Ecapsenumerate1230,40340 +\def\itemizeitem{\itemizeitem1234,40420 +\def\newindex #1{\newindex1259,41277 +\def\defindex{\defindex1268,41566 +\def\newcodeindex #1{\newcodeindex1272,41674 +\def\defcodeindex{\defcodeindex1279,41934 +\def\synindex #1 #2 {\synindex1283,42114 +\def\syncodeindex #1 #2 {\syncodeindex1292,42454 +\def\doindex#1{\doindex1309,43133 +\def\singleindexer #1{\singleindexer1310,43192 +\def\docodeindex#1{\docodeindex1313,43304 +\def\singlecodeindexer #1{\singlecodeindexer1314,43371 +\def\indexdummies{\indexdummies1316,43429 +\def\_{\_1317,43449 +\def\w{\w1318,43477 +\def\bf{\bf1319,43504 +\def\rm{\rm1320,43533 +\def\sl{\sl1321,43562 +\def\sf{\sf1322,43591 +\def\tt{\tt1323,43619 +\def\gtr{\gtr1324,43647 +\def\less{\less1325,43677 +\def\hat{\hat1326,43709 +\def\char{\char1327,43739 +\def\TeX{\TeX1328,43771 +\def\dots{\dots1329,43801 +\def\copyright{\copyright1330,43834 +\def\tclose##1{\tclose1331,43877 +\def\code##1{\code1332,43922 +\def\samp##1{\samp1333,43963 +\def\t##1{\t1334,44004 +\def\r##1{\r1335,44039 +\def\i##1{\i1336,44074 +\def\b##1{\b1337,44109 +\def\cite##1{\cite1338,44144 +\def\key##1{\key1339,44185 +\def\file##1{\file1340,44224 +\def\var##1{\var1341,44265 +\def\kbd##1{\kbd1342,44304 +\def\indexdummyfont#1{\indexdummyfont1347,44460 +\def\indexdummytex{\indexdummytex1348,44486 +\def\indexdummydots{\indexdummydots1349,44510 +\def\indexnofonts{\indexnofonts1351,44536 +\let\w=\indexdummyfontdummyfont1352,44556 +\let\t=\indexdummyfontdummyfont1353,44579 +\let\r=\indexdummyfontdummyfont1354,44602 +\let\i=\indexdummyfontdummyfont1355,44625 +\let\b=\indexdummyfontdummyfont1356,44648 +\let\emph=\indexdummyfontdummyfont1357,44671 +\let\strong=\indexdummyfontdummyfont1358,44697 +\let\cite=\indexdummyfont=\indexdummyfont1359,44725 +\let\sc=\indexdummyfontdummyfont1360,44751 +\let\tclose=\indexdummyfontdummyfont1364,44923 +\let\code=\indexdummyfontdummyfont1365,44951 +\let\file=\indexdummyfontdummyfont1366,44977 +\let\samp=\indexdummyfontdummyfont1367,45003 +\let\kbd=\indexdummyfontdummyfont1368,45029 +\let\key=\indexdummyfontdummyfont1369,45054 +\let\var=\indexdummyfontdummyfont1370,45079 +\let\TeX=\indexdummytexdummytex1371,45104 +\let\dots=\indexdummydotsdummydots1372,45128 +\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45380 +\def\doind #1#2{\doind1384,45436 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45479 +\def\rawbackslashxx{\rawbackslashxx1389,45619 +{\indexnofontsnofonts1394,45881 +\def\dosubind #1#2#3{\dosubind1405,46192 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46240 +\def\rawbackslashxx{\rawbackslashxx1410,46344 +{\indexnofontsnofonts1414,46498 +\def\findex {\findex1443,47429 +\def\kindex {\kindex1444,47452 +\def\cindex {\cindex1445,47475 +\def\vindex {\vindex1446,47498 +\def\tindex {\tindex1447,47521 +\def\pindex {\pindex1448,47544 +\def\cindexsub {\cindexsub1450,47568 +\def\printindex{\printindex1462,47895 +\def\doprintindex#1{\doprintindex1464,47936 + \def\indexbackslash{\indexbackslash1481,48421 + \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460 +\def\initial #1{\initial1517,49532 +\def\entry #1#2{\entry1523,49739 + \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50386 +\def\indexdotfill{\indexdotfill1549,50714 +\def\primary #1{\primary1552,50820 +\def\secondary #1#2{\secondary1556,50902 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984 +\newbox\partialpageialpage1566,51157 +\def\begindoublecolumns{\begindoublecolumns1572,51315 + \output={\global\setbox\partialpage=ialpage=1573,51351 +\def\enddoublecolumns{\enddoublecolumns1577,51539 +\def\doublecolumnout{\doublecolumnout1580,51624 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693 +\def\pagesofar{\pagesofar1584,51871 +\def\balancecolumns{\balancecolumns1588,52108 + \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52279 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540 +\newcount \appendixno \appendixno = `\@no1627,53445 +\def\appendixletter{\appendixletter1628,53486 +\def\opencontents{\opencontents1632,53589 +\def\thischapter{\thischapter1637,53770 +\def\seccheck#1{\seccheck1638,53808 +\def\chapternofonts{\chapternofonts1643,53912 +\def\result{\result1646,53987 +\def\equiv{\equiv1647,54022 +\def\expansion{\expansion1648,54055 +\def\print{\print1649,54096 +\def\TeX{\TeX1650,54129 +\def\dots{\dots1651,54158 +\def\copyright{\copyright1652,54189 +\def\tt{\tt1653,54230 +\def\bf{\bf1654,54257 +\def\w{\w1655,54285 +\def\less{\less1656,54310 +\def\gtr{\gtr1657,54341 +\def\hat{\hat1658,54370 +\def\char{\char1659,54399 +\def\tclose##1{\tclose1660,54430 +\def\code##1{\code1661,54474 +\def\samp##1{\samp1662,54514 +\def\r##1{\r1663,54554 +\def\b##1{\b1664,54588 +\def\key##1{\key1665,54622 +\def\file##1{\file1666,54660 +\def\kbd##1{\kbd1667,54700 +\def\i##1{\i1669,54808 +\def\cite##1{\cite1670,54842 +\def\var##1{\var1671,54882 +\def\emph##1{\emph1672,54920 +\def\dfn##1{\dfn1673,54960 +\def\thischaptername{\thischaptername1676,55001 +\outer\def\chapter{\chapter1677,55040 +\def\chapterzzz #1{\chapterzzz1678,55081 +{\chapternofonts%nofonts%1687,55477 +\global\let\section = \numberedsec=1692,55630 +\global\let\subsection = \numberedsubsec=1693,55665 +\global\let\subsubsection = \numberedsubsubsec=1694,55706 +\outer\def\appendix{\appendix1697,55757 +\def\appendixzzz #1{\appendixzzz1698,55800 +\global\advance \appendixno by 1 \message{no1700,55877 +\chapmacro {#1}{Appendix \appendixletter}letter1701,55946 +\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56039 +{\chapternofonts%nofonts%1705,56111 + {#1}{Appendix \appendixletter}letter1707,56167 +\appendixnoderef %noderef1710,56267 +\global\let\section = \appendixsec=1711,56286 +\global\let\subsection = \appendixsubsec=1712,56321 +\global\let\subsubsection = \appendixsubsubsec=1713,56362 +\outer\def\top{\top1716,56413 +\outer\def\unnumbered{\unnumbered1717,56453 +\def\unnumberedzzz #1{\unnumberedzzz1718,56500 +{\chapternofonts%nofonts%1722,56663 +\global\let\section = \unnumberedsec=1727,56813 +\global\let\subsection = \unnumberedsubsec=1728,56850 +\global\let\subsubsection = \unnumberedsubsubsec=1729,56893 +\outer\def\numberedsec{\numberedsec1732,56946 +\def\seczzz #1{\seczzz1733,56987 +{\chapternofonts%nofonts%1736,57143 +\outer\def\appendixsection{\appendixsection1745,57329 +\outer\def\appendixsec{\appendixsec1746,57386 +\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439 +\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551 +{\chapternofonts%nofonts%1750,57619 +{#1}{\appendixletter}letter1752,57675 +\appendixnoderef %noderef1755,57775 +\outer\def\unnumberedsec{\unnumberedsec1759,57815 +\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868 +{\chapternofonts%nofonts%1762,57963 +\outer\def\numberedsubsec{\numberedsubsec1770,58131 +\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186 +{\chapternofonts%nofonts%1774,58365 +\outer\def\appendixsubsec{\appendixsubsec1783,58569 +\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624 +\subsecheading {#1}{\appendixletter}letter1786,58746 +{\chapternofonts%nofonts%1787,58811 +{#1}{\appendixletter}letter1789,58870 +\appendixnoderef %noderef1792,58985 +\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025 +\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084 +{\chapternofonts%nofonts%1799,59185 +\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356 +\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417 +{\chapternofonts%nofonts%1812,59614 +\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847 +\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908 + {\appendixletter}letter1827,60047 +{\chapternofonts%nofonts%1828,60113 + {\appendixletter}letter1830,60178 +\appendixnoderef %noderef1834,60312 +\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352 +\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417 +{\chapternofonts%nofonts%1841,60524 +\def\infotop{\infotop1851,60853 +\def\infounnumbered{\infounnumbered1852,60891 +\def\infounnumberedsec{\infounnumberedsec1853,60936 +\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987 +\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044 +\def\infoappendix{\infoappendix1857,61108 +\def\infoappendixsec{\infoappendixsec1858,61149 +\def\infoappendixsubsec{\infoappendixsubsec1859,61196 +\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249 +\def\infochapter{\infochapter1862,61309 +\def\infosection{\infosection1863,61348 +\def\infosubsection{\infosubsection1864,61387 +\def\infosubsubsection{\infosubsubsection1865,61432 +\global\let\section = \numberedsec=1870,61669 +\global\let\subsection = \numberedsubsec=1871,61704 +\global\let\subsubsection = \numberedsubsubsec=1872,61745 +\def\majorheading{\majorheading1886,62252 +\def\majorheadingzzz #1{\majorheadingzzz1887,62297 +\def\chapheading{\chapheading1893,62530 +\def\chapheadingzzz #1{\chapheadingzzz1894,62573 +\def\heading{\heading1899,62768 +\def\subheading{\subheading1901,62805 +\def\subsubheading{\subsubheading1903,62848 +\def\dobreak#1#2{\dobreak1910,63125 +\def\setchapterstyle #1 {\setchapterstyle1912,63203 +\def\chapbreak{\chapbreak1919,63458 +\def\chappager{\chappager1920,63508 +\def\chapoddpage{\chapoddpage1921,63546 +\def\setchapternewpage #1 {\setchapternewpage1923,63625 +\def\CHAPPAGoff{\CHAPPAGoff1925,63682 +\def\CHAPPAGon{\CHAPPAGon1929,63776 +\global\def\HEADINGSon{\HEADINGSon1932,63867 +\def\CHAPPAGodd{\CHAPPAGodd1934,63909 +\global\def\HEADINGSon{\HEADINGSon1937,64005 +\def\CHAPFplain{\CHAPFplain1941,64059 +\def\chfplain #1#2{\chfplain1945,64151 +\def\unnchfplain #1{\unnchfplain1956,64374 +\def\unnchfopen #1{\unnchfopen1964,64603 +\def\chfopen #1#2{\chfopen1970,64811 +\def\CHAPFopen{\CHAPFopen1975,64955 +\def\subsecheadingbreak{\subsecheadingbreak1982,65173 +\def\secheadingbreak{\secheadingbreak1985,65302 +\def\secheading #1#2#3{\secheading1993,65584 +\def\plainsecheading #1{\plainsecheading1994,65640 +\def\secheadingi #1{\secheadingi1995,65683 +\def\subsecheading #1#2#3#4{\subsecheading2006,66051 +\def\subsecheadingi #1{\subsecheadingi2007,66118 +\def\subsubsecfonts{\subsubsecfonts2014,66415 +\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538 +\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616 +\def\startcontents#1{\startcontents2032,67088 + \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361 +\outer\def\contents{\contents2049,67720 +\outer\def\summarycontents{\summarycontents2057,67864 + \def\secentry ##1##2##3##4{\secentry2067,68235 + \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270 + \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305 + \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346 + \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384 + \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431 +\def\chapentry#1#2#3{\chapentry2085,68865 +\def\shortchapentry#1#2#3{\shortchapentry2088,68982 + {#2\labelspace #1}space2091,69092 +\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146 +\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193 +\def\secentry#1#2#3#4{\secentry2102,69357 +\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416 +\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477 +\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547 +\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621 + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655 +\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706 +\def\dochapentry#1#2{\dochapentry2123,70080 +\def\dosecentry#1#2{\dosecentry2138,70685 +\def\dosubsecentry#1#2{\dosubsecentry2145,70863 +\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048 +\def\labelspace{\labelspace2160,71299 +\def\dopageno#1{\dopageno2162,71334 +\def\doshortpageno#1{\doshortpageno2163,71360 +\def\chapentryfonts{\chapentryfonts2165,71392 +\def\secentryfonts{\secentryfonts2166,71427 +\def\point{\point2192,72386 +\def\result{\result2194,72407 +\def\expansion{\expansion2195,72480 +\def\print{\print2196,72551 +\def\equiv{\equiv2198,72618 +\def\error{\error2218,73391 +\def\tex{\tex2224,73620 +\def\@{\@2242,74003 +\gdef\sepspaces{\def {\ }}}\2265,74735 +\def\aboveenvbreak{\aboveenvbreak2268,74817 +\def\afterenvbreak{\afterenvbreak2272,74983 +\def\ctl{\ctl2286,75494 +\def\ctr{\ctr2287,75566 +\def\cbl{\cbl2288,75605 +\def\cbr{\cbr2289,75645 +\def\carttop{\carttop2290,75684 +\def\cartbot{\cartbot2293,75792 +\long\def\cartouche{\cartouche2299,75932 +\def\Ecartouche{\Ecartouche2326,76720 +\def\lisp{\lisp2338,76855 +\def\Elisp{\Elisp2348,77202 +\def\next##1{\next2360,77528 +\def\Eexample{\Eexample2364,77570 +\def\Esmallexample{\Esmallexample2367,77617 +\def\smalllispx{\smalllispx2373,77795 +\def\Esmalllisp{\Esmalllisp2383,78149 +\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505 +\def\next##1{\next2397,78562 +\def\display{\display2401,78642 +\def\Edisplay{\Edisplay2410,78961 +\def\next##1{\next2422,79272 +\def\format{\format2426,79375 +\def\Eformat{\Eformat2434,79671 +\def\next##1{\next2437,79760 +\def\flushleft{\flushleft2441,79812 +\def\Eflushleft{\Eflushleft2451,80183 +\def\next##1{\next2454,80276 +\def\flushright{\flushright2456,80298 +\def\Eflushright{\Eflushright2466,80670 +\def\next##1{\next2470,80801 +\def\quotation{\quotation2474,80859 +\def\Equotation{\Equotation2480,81051 +\def\setdeffont #1 {\setdeffont2493,81449 +\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495 +\newskip\defargsindent \defargsindent=50ptargsindent2496,81538 +\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581 +\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624 +\def\activeparens{\activeparens2503,81822 +\def\opnr{\opnr2529,83034 +\def\lbrb{\lbrb2530,83099 +\def\defname #1#2{\defname2536,83300 +\advance\dimen2 by -\defbodyindentbodyindent2540,83418 +\advance\dimen3 by -\defbodyindentbodyindent2542,83472 +\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526 +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83668 +\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83743 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112 +\advance\leftskip by -\defbodyindentbodyindent2557,84246 +\exdentamount=\defbodyindentbodyindent2558,84283 +\def\defparsebody #1#2#3{\defparsebody2568,84642 +\def#1{2572,84826 +\def#2{2573,84862 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84934 +\exdentamount=\defbodyindentbodyindent2576,85008 +\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112 +\def#1{2585,85273 +\def#2##1 {2586,85309 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85392 +\exdentamount=\defbodyindentbodyindent2589,85466 +\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551 +\def#1{2596,85712 +\def#2##1 ##2 {2597,85748 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85848 +\exdentamount=\defbodyindentbodyindent2601,85922 +\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193 +\def#1{2612,86380 +\def#2{2613,86416 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86475 +\exdentamount=\defbodyindentbodyindent2616,86549 +\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640 +\def#1{2625,86799 +\def#2##1 {2626,86835 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86905 +\exdentamount=\defbodyindentbodyindent2629,86979 +\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051 +\def#1{2636,87215 +\def#2##1 ##2 {2637,87251 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87338 +\exdentamount=\defbodyindentbodyindent2641,87412 +\def\defunargs #1{\defunargs2664,88172 +\def\deftypefunargs #1{\deftypefunargs2676,88554 +\def\deffn{\deffn2690,88936 +\def\deffnheader #1#2#3{\deffnheader2692,88993 +\begingroup\defname {name2693,89041 +\def\defun{\defun2699,89186 +\def\defunheader #1#2{\defunheader2701,89239 +\begingroup\defname {name2702,89314 +\defunargs {unargs2703,89350 +\def\deftypefun{\deftypefun2709,89498 +\def\deftypefunheader #1#2{\deftypefunheader2712,89620 +\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729 +\begingroup\defname {name2716,89821 +\deftypefunargs {typefunargs2717,89867 +\def\deftypefn{\deftypefn2723,90038 +\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187 +\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323 +\begingroup\defname {name2730,90416 +\deftypefunargs {typefunargs2731,90456 +\def\defmac{\defmac2737,90577 +\def\defmacheader #1#2{\defmacheader2739,90634 +\begingroup\defname {name2740,90710 +\defunargs {unargs2741,90743 +\def\defspec{\defspec2747,90867 +\def\defspecheader #1#2{\defspecheader2749,90928 +\begingroup\defname {name2750,91005 +\defunargs {unargs2751,91045 +\def\deffnx #1 {\deffnx2758,91240 +\def\defunx #1 {\defunx2759,91297 +\def\defmacx #1 {\defmacx2760,91354 +\def\defspecx #1 {\defspecx2761,91413 +\def\deftypefnx #1 {\deftypefnx2762,91474 +\def\deftypeunx #1 {\deftypeunx2763,91539 +\def\defop #1 {\defop2769,91685 +\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720 +\def\defopheader #1#2#3{\defopheader2772,91774 +\begingroup\defname {name2774,91863 +\defunargs {unargs2775,91909 +\def\defmethod{\defmethod2780,91970 +\def\defmethodheader #1#2#3{\defmethodheader2782,92043 +\begingroup\defname {name2784,92131 +\defunargs {unargs2785,92171 +\def\defcv #1 {\defcv2790,92245 +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280 +\def\defcvarheader #1#2#3{\defcvarheader2793,92339 +\begingroup\defname {name2795,92425 +\defvarargs {varargs2796,92471 +\def\defivar{\defivar2801,92544 +\def\defivarheader #1#2#3{\defivarheader2803,92607 +\begingroup\defname {name2805,92693 +\defvarargs {varargs2806,92744 +\def\defopx #1 {\defopx2812,92893 +\def\defmethodx #1 {\defmethodx2813,92950 +\def\defcvx #1 {\defcvx2814,93015 +\def\defivarx #1 {\defivarx2815,93072 +\def\defvarargs #1{\defvarargs2822,93343 +\def\defvr{\defvr2828,93487 +\def\defvrheader #1#2#3{\defvrheader2830,93542 +\begingroup\defname {name2831,93590 +\def\defvar{\defvar2835,93675 +\def\defvarheader #1#2{\defvarheader2837,93735 +\begingroup\defname {name2838,93806 +\defvarargs {varargs2839,93842 +\def\defopt{\defopt2844,93908 +\def\defoptheader #1#2{\defoptheader2846,93968 +\begingroup\defname {name2847,94039 +\defvarargs {varargs2848,94078 +\def\deftypevar{\deftypevar2853,94135 +\def\deftypevarheader #1#2{\deftypevarheader2856,94251 +\begingroup\defname {name2858,94334 +\def\deftypevr{\deftypevr2865,94508 +\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579 +\begingroup\defname {name2868,94631 +\def\defvrx #1 {\defvrx2876,94868 +\def\defvarx #1 {\defvarx2877,94925 +\def\defoptx #1 {\defoptx2878,94984 +\def\deftypevarx #1 {\deftypevarx2879,95043 +\def\deftypevrx #1 {\deftypevrx2880,95110 +\def\deftpargs #1{\deftpargs2885,95259 +\def\deftp{\deftp2889,95339 +\def\deftpheader #1#2#3{\deftpheader2891,95394 +\begingroup\defname {name2892,95442 +\def\deftpx #1 {\deftpx2897,95601 +\def\setref#1{\setref2908,95922 +\def\unnumbsetref#1{\unnumbsetref2913,96036 +\def\appendixsetref#1{\appendixsetref2918,96143 +\def\pxref#1{\pxref2929,96554 +\def\xref#1{\xref2930,96590 +\def\ref#1{\ref2931,96625 +\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655 +\def\printedmanual{\printedmanual2933,96698 +\def\printednodename{\printednodename2934,96736 +\def\printednodename{\printednodename2939,96861 +section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493 +\refx{x2957,97571 +\def\dosetq #1#2{\dosetq2965,97791 +\def\internalsetq #1#2{\internalsetq2973,98049 +\def\Ypagenumber{\Ypagenumber2977,98150 +\def\Ytitle{\Ytitle2979,98176 +\def\Ynothing{\Ynothing2981,98203 +\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220 +\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536 +\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566 +\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98621 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98725 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796 + \def\linenumber{\linenumber3009,99135 +\def\refx#1#2{\refx3015,99319 +\def\xrdef #1#2{\xrdef3037,99945 +\def\readauxfile{\readauxfile3040,100030 +\def\supereject{\supereject3110,101811 +\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496 +\def\openindices{\openindices3139,102682 +\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907 +\parindent = \defaultparindentaultparindent3152,102959 +\def\smallbook{\smallbook3175,103683 +\global\def\Esmallexample{\Esmallexample3192,104110 +\def\afourpaper{\afourpaper3196,104201 +\def\finalout{\finalout3224,105009 +\def\normaldoublequote{\normaldoublequote3235,105270 +\def\normaltilde{\normaltilde3236,105296 +\def\normalcaret{\normalcaret3237,105316 +\def\normalunderscore{\normalunderscore3238,105336 +\def\normalverticalbar{\normalverticalbar3239,105361 +\def\normalless{\normalless3240,105387 +\def\normalgreater{\normalgreater3241,105406 +\def\normalplus{\normalplus3242,105428 +\def\ifusingtt#1#2{\ifusingtt3253,105920 +\def\activedoublequote{\activedoublequote3261,106248 +\def~{~3264,106334 +\def^{^3267,106395 +\def_{_3270,106434 +\def\_{\_3272,106508 +\def\lvvmode{\lvvmode3279,106845 +\def|{|3282,106895 +\def<{<3285,106958 +\def>{>3288,107015 +\def+{+3290,107053 +\def\turnoffactive{\turnoffactive3296,107214 +\global\def={=3307,107500 +\def\normalbackslash{\normalbackslash3321,107882 c-src/c.c,76 T f(1,0 @@ -4148,13 +4149,13 @@ yyerror FUN1(286,5948 make_list FUN2(293,6028 #define ERROR 304,6228 yylex FUN0(315,6405 -parse_cell_or_range FUN2(587,11771 -#define CK_ABS_R(671,13213 -#define CK_REL_R(675,13292 -#define CK_ABS_C(680,13421 -#define CK_REL_C(684,13500 -#define MAYBEREL(689,13629 -str_to_col FUN1(847,16830 +parse_cell_or_range FUN2(587,11772 +#define CK_ABS_R(671,13214 +#define CK_REL_R(675,13293 +#define CK_ABS_C(680,13422 +#define CK_REL_C(684,13501 +#define MAYBEREL(689,13630 +str_to_col FUN1(847,16831 y-src/parse.c,520 #define YYBISON 4,64 diff --git a/test/manual/etags/ETAGS.good_5 b/test/manual/etags/ETAGS.good_5 index 583de5cbe22..af70a109ef9 100644 --- a/test/manual/etags/ETAGS.good_5 +++ b/test/manual/etags/ETAGS.good_5 @@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153 protected body Bidule Bidule/b139,2181 protected body Machin_T Machin_T/b146,2281 -c-src/abbrev.c,3274 +c-src/abbrev.c,3055 Lisp_Object Vabbrev_table_name_list;43,1429 Lisp_Object Vglobal_abbrev_table;48,1574 Lisp_Object Vfundamental_mode_abbrev_table;52,1685 @@ -186,57 +186,53 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046 Lisp_Object Vlast_abbrev;70,2155 Lisp_Object Vlast_abbrev_text;75,2324 int last_abbrev_point;79,2414 -Lisp_Object Vpre_abbrev_expand_hook,83,2487 -Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743 -DEFUN ("define-abbrev", Fdefine_abbrev,107,3124 -DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev149,4443 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814 -DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282 -DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282 -DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246 -DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246 -DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761 -DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682 -write_abbrev 426,12889 -describe_abbrev 445,13324 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,466,13839 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description466,13839 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table506,14995 -syms_of_abbrev 540,16072 - DEFVAR_LISP ("abbrev-table-name-list"542,16092 - DEFVAR_LISP ("global-abbrev-table"548,16354 - DEFVAR_LISP ("fundamental-mode-abbrev-table"555,16676 - DEFVAR_LISP ("last-abbrev"561,17018 - DEFVAR_LISP ("last-abbrev-text"564,17141 - DEFVAR_INT ("last-abbrev-location"568,17299 - DEFVAR_LISP ("abbrev-start-location"575,17498 - DEFVAR_LISP ("abbrev-start-location-buffer"581,17775 - DEFVAR_PER_BUFFER ("local-abbrev-table"586,18039 - DEFVAR_BOOL ("abbrevs-changed"589,18182 - DEFVAR_BOOL ("abbrev-all-caps"594,18385 - DEFVAR_LISP ("pre-abbrev-expand-hook"598,18541 - DEFVAR_LISP ("abbrev-table-name-list",\1542,16092 - DEFVAR_LISP ("global-abbrev-table",\1548,16354 - DEFVAR_LISP ("fundamental-mode-abbrev-table",\1555,16676 - DEFVAR_LISP ("last-abbrev",\1561,17018 - DEFVAR_LISP ("last-abbrev-text",\1564,17141 - DEFVAR_INT ("last-abbrev-location",\1568,17299 - DEFVAR_LISP ("abbrev-start-location",\1575,17498 - DEFVAR_LISP ("abbrev-start-location-buffer",\1581,17775 - DEFVAR_PER_BUFFER ("local-abbrev-table",\1586,18039 - DEFVAR_BOOL ("abbrevs-changed",\1589,18182 - DEFVAR_BOOL ("abbrev-all-caps",\1594,18385 - DEFVAR_LISP ("pre-abbrev-expand-hook",\1598,18541 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632 +DEFUN ("define-abbrev", Fdefine_abbrev,104,3013 +DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev146,4332 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703 +DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171 +DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171 +DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135 +DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135 +DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650 +DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495 +write_abbrev 420,12702 +describe_abbrev 439,13137 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,460,13652 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description460,13652 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table500,14808 +syms_of_abbrev 534,15885 + DEFVAR_LISP ("abbrev-table-name-list"536,15905 + DEFVAR_LISP ("global-abbrev-table"542,16167 + DEFVAR_LISP ("fundamental-mode-abbrev-table"549,16489 + DEFVAR_LISP ("last-abbrev"555,16831 + DEFVAR_LISP ("last-abbrev-text"558,16954 + DEFVAR_INT ("last-abbrev-location"562,17112 + DEFVAR_LISP ("abbrev-start-location"569,17311 + DEFVAR_LISP ("abbrev-start-location-buffer"575,17588 + DEFVAR_PER_BUFFER ("local-abbrev-table"580,17852 + DEFVAR_BOOL ("abbrevs-changed"583,17995 + DEFVAR_BOOL ("abbrev-all-caps"588,18198 + DEFVAR_LISP ("abbrev-table-name-list",\1536,15905 + DEFVAR_LISP ("global-abbrev-table",\1542,16167 + DEFVAR_LISP ("fundamental-mode-abbrev-table",\1549,16489 + DEFVAR_LISP ("last-abbrev",\1555,16831 + DEFVAR_LISP ("last-abbrev-text",\1558,16954 + DEFVAR_INT ("last-abbrev-location",\1562,17112 + DEFVAR_LISP ("abbrev-start-location",\1569,17311 + DEFVAR_LISP ("abbrev-start-location-buffer",\1575,17588 + DEFVAR_PER_BUFFER ("local-abbrev-table",\1580,17852 + DEFVAR_BOOL ("abbrevs-changed",\1583,17995 + DEFVAR_BOOL ("abbrev-all-caps",\1588,18198 c-src/torture.c,197 (*tag1 tag118,452 @@ -1368,310 +1364,310 @@ make_lispy_position 5228,157391 toolkit_menubar_in_use 5456,163954 make_scroll_bar_position 5469,164322 make_lispy_event 5485,164968 -make_lispy_movement 6104,183532 -make_lispy_switch_frame 6131,184263 -make_lispy_focus_in 6137,184370 -make_lispy_focus_out 6145,184496 -parse_modifiers_uncached 6163,184946 -#define SINGLE_LETTER_MOD(6185,185466 -#undef SINGLE_LETTER_MOD6212,185907 -#define MULTI_LETTER_MOD(6214,185933 -#undef MULTI_LETTER_MOD6231,186401 -apply_modifiers_uncached 6273,187575 -static const char *const modifier_names[modifier_names6319,189194 -#define NUM_MOD_NAMES 6325,189400 -static Lisp_Object modifier_symbols;6327,189450 -lispy_modifier_list 6331,189587 -#define KEY_TO_CHAR(6353,190253 -parse_modifiers 6356,190329 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191518 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518 -apply_modifiers 6422,192392 -reorder_modifiers 6491,194721 -modify_event_symbol 6536,196529 -DEFUN ("event-convert-list", Fevent_convert_list,6628,199245 -DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199245 -parse_solitary_modifier 6695,201136 -#define SINGLE_LETTER_MOD(6701,201259 -#define MULTI_LETTER_MOD(6705,201344 -#undef SINGLE_LETTER_MOD6763,202642 -#undef MULTI_LETTER_MOD6764,202667 -lucid_event_type_list_p 6775,202890 -get_input_pending 6814,203961 -record_asynch_buffer_change 6834,204580 -gobble_input 6872,205703 -tty_read_avail_input 6967,208311 -handle_async_input 7149,214040 -process_pending_signals 7165,214360 -unblock_input_to 7177,214646 -unblock_input 7200,215278 -totally_unblock_input 7209,215446 -handle_input_available_signal 7217,215530 -deliver_input_available_signal 7226,215701 -struct user_signal_info7235,215866 - int sig;7238,215916 - char *name;name7241,215957 - int npending;7244,216008 - struct user_signal_info *next;next7246,216025 -static struct user_signal_info *user_signals user_signals7250,216091 -add_user_signal 7253,216150 -handle_user_signal 7275,216599 -deliver_user_signal 7316,217559 -find_user_signal_name 7322,217660 -store_user_signal_events 7334,217842 -static void menu_bar_item 7362,218342 -static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417 -static Lisp_Object menu_bar_items_vector;7368,218631 -static int menu_bar_items_index;7369,218673 -static const char *separator_names[separator_names7372,218708 -menu_separator_name_p 7393,219149 -menu_bar_items 7426,219853 -Lisp_Object item_properties;7568,224604 -menu_bar_item 7571,224646 -menu_item_eval_property_1 7647,227176 -eval_dyn 7658,227466 -menu_item_eval_property 7666,227676 -parse_menu_item 7686,228342 -static Lisp_Object tool_bar_items_vector;7965,236337 -static Lisp_Object tool_bar_item_properties;7970,236511 -static int ntool_bar_items;7974,236607 -static void init_tool_bar_items 7978,236665 -static void process_tool_bar_item 7979,236712 -static bool parse_tool_bar_item 7981,236802 -static void append_tool_bar_item 7982,236862 -tool_bar_items 7990,237084 -process_tool_bar_item 8075,239893 -#define PROP(8112,240970 -set_prop 8114,241039 -parse_tool_bar_item 8167,242454 -#undef PROP8379,248845 -init_tool_bar_items 8387,248970 -append_tool_bar_item 8401,249262 -read_char_x_menu_prompt 8443,250772 -read_char_minibuf_menu_prompt 8503,252446 -#define PUSH_C_STR(8527,253015 -follow_key 8726,258554 -active_maps 8733,258696 -typedef struct keyremap8742,259022 - Lisp_Object parent;8745,259108 - Lisp_Object map;8748,259225 - int start,8753,259447 - int start, end;8753,259447 -} keyremap;8754,259465 -access_keymap_keyremap 8764,259809 -keyremap_step 8811,261451 -test_undefined 8867,262935 -read_key_sequence 8916,264862 -read_key_sequence_vs 9826,295822 -DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295 -DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299983 -detect_input_pending 9950,300489 -detect_input_pending_ignore_squeezables 9959,300655 -detect_input_pending_run_timers 9967,300871 -clear_input_pending 9985,301363 -requeued_events_pending_p 9997,301733 -DEFUN ("input-pending-p", Finput_pending_p,10002,301814 -DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814 -DEFUN ("recent-keys", Frecent_keys,10024,302597 -DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597 -DEFUN ("this-command-keys", Fthis_command_keys,10055,303518 -DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303959 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304381 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304956 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305496 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306511 -DEFUN ("recursion-depth", Frecursion_depth,10158,307070 -DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070 -DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407 -DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407 -DEFUN ("discard-input", Fdiscard_input,10203,308448 -DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448 -DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950 -DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950 -stuff_buffered_input 10285,311046 -set_waiting_for_input 10323,312017 -clear_waiting_for_input 10337,312391 -handle_interrupt_signal 10351,312755 -deliver_interrupt_signal 10378,313643 -static int volatile force_quit_count;10387,313933 -handle_interrupt 10401,314415 -quit_throw_to_read_char 10541,318712 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289 -DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517 -DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320517 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321433 -DEFUN ("set-quit-char", Fset_quit_char,10694,322707 -DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707 -DEFUN ("set-input-mode", Fset_input_mode,10729,323571 -DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571 -DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460 -DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324460 -DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838 -DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838 -DEFUN ("posn-at-point", Fposn_at_point,10824,327061 -DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061 -init_kboard 10861,328215 -allocate_kboard 10893,329285 -wipe_kboard 10909,329638 -delete_kboard 10917,329752 -init_keyboard 10942,330282 -struct event_head11021,332697 - short var;11023,332717 - short kind;11024,332730 -static const struct event_head head_table[head_table11027,332748 -syms_of_keyboard 11045,333578 - DEFVAR_LISP ("internal--top-level-message"11058,333973 - DEFVAR_LISP ("last-command-event"11312,342174 - DEFVAR_LISP ("last-nonmenu-event"11315,342298 - DEFVAR_LISP ("last-input-event"11321,342637 - DEFVAR_LISP ("unread-command-events"11324,342731 - DEFVAR_LISP ("unread-post-input-method-events"11332,343191 - DEFVAR_LISP ("unread-input-method-events"11338,343530 - DEFVAR_LISP ("meta-prefix-char"11346,343899 - DEFVAR_KBOARD ("last-command"11351,344107 - DEFVAR_KBOARD ("real-last-command"11368,344788 - DEFVAR_KBOARD ("last-repeatable-command"11372,344974 - DEFVAR_LISP ("this-command"11378,345262 - DEFVAR_LISP ("real-this-command"11384,345499 - DEFVAR_LISP ("this-command-keys-shift-translated"11388,345681 - DEFVAR_LISP ("this-original-command"11396,346124 - DEFVAR_INT ("auto-save-interval"11403,346521 - DEFVAR_LISP ("auto-save-timeout"11408,346735 - DEFVAR_LISP ("echo-keystrokes"11415,347080 - DEFVAR_INT ("polling-period"11421,347351 - DEFVAR_LISP ("double-click-time"11428,347694 - DEFVAR_INT ("double-click-fuzz"11435,348030 - DEFVAR_INT ("num-input-keys"11446,348520 - DEFVAR_INT ("num-nonmacro-input-events"11452,348795 - DEFVAR_LISP ("last-event-frame"11457,349033 - DEFVAR_LISP ("tty-erase-char"11463,349312 - DEFVAR_LISP ("help-char"11466,349435 - DEFVAR_LISP ("help-event-list"11472,349718 - DEFVAR_LISP ("help-form"11477,349929 - DEFVAR_LISP ("prefix-help-command"11483,350177 - DEFVAR_LISP ("top-level"11489,350455 - DEFVAR_KBOARD ("keyboard-translate-table"11495,350676 - DEFVAR_BOOL ("cannot-suspend"11511,351489 - DEFVAR_BOOL ("menu-prompting"11516,351716 - DEFVAR_LISP ("menu-prompt-more-char"11526,352146 - DEFVAR_INT ("extra-keyboard-modifiers"11531,352392 - DEFVAR_LISP ("deactivate-mark"11545,353118 - DEFVAR_LISP ("pre-command-hook"11553,353487 - DEFVAR_LISP ("post-command-hook"11560,353842 - DEFVAR_LISP ("echo-area-clear-hook"11568,354205 - DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354420 - DEFVAR_LISP ("menu-bar-final-items"11578,354623 - DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354873 - DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355231 - DEFVAR_LISP ("overriding-local-map"11598,355653 - DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356104 - DEFVAR_LISP ("special-event-map"11613,356443 - DEFVAR_LISP ("track-mouse"11617,356631 - DEFVAR_KBOARD ("system-key-alist"11620,356758 - DEFVAR_KBOARD ("local-function-key-map"11629,357139 - DEFVAR_KBOARD ("input-decode-map"11658,358598 - DEFVAR_LISP ("function-key-map"11675,359386 - DEFVAR_LISP ("key-translation-map"11683,359802 - DEFVAR_LISP ("deferred-action-list"11689,360146 - DEFVAR_LISP ("deferred-action-function"11694,360394 - DEFVAR_LISP ("delayed-warnings-list"11700,360693 - DEFVAR_LISP ("timer-list"11708,361101 - DEFVAR_LISP ("timer-idle-list"11712,361253 - DEFVAR_LISP ("input-method-function"11716,361416 - DEFVAR_LISP ("input-method-previous-message"11737,362385 - DEFVAR_LISP ("show-help-function"11744,362746 - DEFVAR_LISP ("disable-point-adjustment"11749,362978 - DEFVAR_LISP ("global-disable-point-adjustment"11761,363528 - DEFVAR_LISP ("minibuffer-message-timeout"11770,363894 - DEFVAR_LISP ("throw-on-input"11775,364172 - DEFVAR_LISP ("command-error-function"11781,364423 - DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364910 - DEFVAR_LISP ("select-active-regions"11798,365237 - DEFVAR_LISP ("saved-region-selection"11807,365629 - DEFVAR_LISP ("selection-inhibit-update-commands"11815,366014 - DEFVAR_LISP ("debug-on-event"11825,366555 -keys_of_keyboard 11841,367116 -mark_kboards 11916,370435 - DEFVAR_LISP ("internal--top-level-message",\111058,333973 - DEFVAR_LISP ("last-command-event",\111312,342174 - DEFVAR_LISP ("last-nonmenu-event",\111315,342298 - DEFVAR_LISP ("last-input-event",\111321,342637 - DEFVAR_LISP ("unread-command-events",\111324,342731 - DEFVAR_LISP ("unread-post-input-method-events",\111332,343191 - DEFVAR_LISP ("unread-input-method-events",\111338,343530 - DEFVAR_LISP ("meta-prefix-char",\111346,343899 - DEFVAR_KBOARD ("last-command",\111351,344107 - DEFVAR_KBOARD ("real-last-command",\111368,344788 - DEFVAR_KBOARD ("last-repeatable-command",\111372,344974 - DEFVAR_LISP ("this-command",\111378,345262 - DEFVAR_LISP ("real-this-command",\111384,345499 - DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345681 - DEFVAR_LISP ("this-original-command",\111396,346124 - DEFVAR_INT ("auto-save-interval",\111403,346521 - DEFVAR_LISP ("auto-save-timeout",\111408,346735 - DEFVAR_LISP ("echo-keystrokes",\111415,347080 - DEFVAR_INT ("polling-period",\111421,347351 - DEFVAR_LISP ("double-click-time",\111428,347694 - DEFVAR_INT ("double-click-fuzz",\111435,348030 - DEFVAR_INT ("num-input-keys",\111446,348520 - DEFVAR_INT ("num-nonmacro-input-events",\111452,348795 - DEFVAR_LISP ("last-event-frame",\111457,349033 - DEFVAR_LISP ("tty-erase-char",\111463,349312 - DEFVAR_LISP ("help-char",\111466,349435 - DEFVAR_LISP ("help-event-list",\111472,349718 - DEFVAR_LISP ("help-form",\111477,349929 - DEFVAR_LISP ("prefix-help-command",\111483,350177 - DEFVAR_LISP ("top-level",\111489,350455 - DEFVAR_KBOARD ("keyboard-translate-table",\111495,350676 - DEFVAR_BOOL ("cannot-suspend",\111511,351489 - DEFVAR_BOOL ("menu-prompting",\111516,351716 - DEFVAR_LISP ("menu-prompt-more-char",\111526,352146 - DEFVAR_INT ("extra-keyboard-modifiers",\111531,352392 - DEFVAR_LISP ("deactivate-mark",\111545,353118 - DEFVAR_LISP ("pre-command-hook",\111553,353487 - DEFVAR_LISP ("post-command-hook",\111560,353842 - DEFVAR_LISP ("echo-area-clear-hook",\111568,354205 - DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354420 - DEFVAR_LISP ("menu-bar-final-items",\111578,354623 - DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354873 - DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355231 - DEFVAR_LISP ("overriding-local-map",\111598,355653 - DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356104 - DEFVAR_LISP ("special-event-map",\111613,356443 - DEFVAR_LISP ("track-mouse",\111617,356631 - DEFVAR_KBOARD ("system-key-alist",\111620,356758 - DEFVAR_KBOARD ("local-function-key-map",\111629,357139 - DEFVAR_KBOARD ("input-decode-map",\111658,358598 - DEFVAR_LISP ("function-key-map",\111675,359386 - DEFVAR_LISP ("key-translation-map",\111683,359802 - DEFVAR_LISP ("deferred-action-list",\111689,360146 - DEFVAR_LISP ("deferred-action-function",\111694,360394 - DEFVAR_LISP ("delayed-warnings-list",\111700,360693 - DEFVAR_LISP ("timer-list",\111708,361101 - DEFVAR_LISP ("timer-idle-list",\111712,361253 - DEFVAR_LISP ("input-method-function",\111716,361416 - DEFVAR_LISP ("input-method-previous-message",\111737,362385 - DEFVAR_LISP ("show-help-function",\111744,362746 - DEFVAR_LISP ("disable-point-adjustment",\111749,362978 - DEFVAR_LISP ("global-disable-point-adjustment",\111761,363528 - DEFVAR_LISP ("minibuffer-message-timeout",\111770,363894 - DEFVAR_LISP ("throw-on-input",\111775,364172 - DEFVAR_LISP ("command-error-function",\111781,364423 - DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364910 - DEFVAR_LISP ("select-active-regions",\111798,365237 - DEFVAR_LISP ("saved-region-selection",\111807,365629 - DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366014 - DEFVAR_LISP ("debug-on-event",\111825,366555 +make_lispy_movement 6104,183531 +make_lispy_switch_frame 6131,184262 +make_lispy_focus_in 6137,184369 +make_lispy_focus_out 6145,184495 +parse_modifiers_uncached 6163,184945 +#define SINGLE_LETTER_MOD(6185,185465 +#undef SINGLE_LETTER_MOD6212,185906 +#define MULTI_LETTER_MOD(6214,185932 +#undef MULTI_LETTER_MOD6231,186400 +apply_modifiers_uncached 6273,187574 +static const char *const modifier_names[modifier_names6319,189193 +#define NUM_MOD_NAMES 6325,189399 +static Lisp_Object modifier_symbols;6327,189449 +lispy_modifier_list 6331,189586 +#define KEY_TO_CHAR(6353,190252 +parse_modifiers 6356,190328 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191517 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517 +apply_modifiers 6422,192391 +reorder_modifiers 6491,194720 +modify_event_symbol 6536,196528 +DEFUN ("event-convert-list", Fevent_convert_list,6628,199244 +DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199244 +parse_solitary_modifier 6695,201135 +#define SINGLE_LETTER_MOD(6701,201258 +#define MULTI_LETTER_MOD(6705,201343 +#undef SINGLE_LETTER_MOD6763,202641 +#undef MULTI_LETTER_MOD6764,202666 +lucid_event_type_list_p 6775,202889 +get_input_pending 6814,203960 +record_asynch_buffer_change 6834,204579 +gobble_input 6872,205702 +tty_read_avail_input 6967,208310 +handle_async_input 7149,214039 +process_pending_signals 7165,214359 +unblock_input_to 7177,214645 +unblock_input 7200,215277 +totally_unblock_input 7209,215445 +handle_input_available_signal 7217,215529 +deliver_input_available_signal 7226,215700 +struct user_signal_info7235,215865 + int sig;7238,215915 + char *name;name7241,215956 + int npending;7244,216007 + struct user_signal_info *next;next7246,216024 +static struct user_signal_info *user_signals user_signals7250,216090 +add_user_signal 7253,216149 +handle_user_signal 7275,216598 +deliver_user_signal 7316,217558 +find_user_signal_name 7322,217659 +store_user_signal_events 7334,217841 +static void menu_bar_item 7362,218341 +static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416 +static Lisp_Object menu_bar_items_vector;7368,218630 +static int menu_bar_items_index;7369,218672 +static const char *separator_names[separator_names7372,218707 +menu_separator_name_p 7393,219148 +menu_bar_items 7426,219852 +Lisp_Object item_properties;7568,224603 +menu_bar_item 7571,224645 +menu_item_eval_property_1 7647,227175 +eval_dyn 7658,227465 +menu_item_eval_property 7666,227675 +parse_menu_item 7686,228341 +static Lisp_Object tool_bar_items_vector;7965,236336 +static Lisp_Object tool_bar_item_properties;7970,236510 +static int ntool_bar_items;7974,236606 +static void init_tool_bar_items 7978,236664 +static void process_tool_bar_item 7979,236711 +static bool parse_tool_bar_item 7981,236801 +static void append_tool_bar_item 7982,236861 +tool_bar_items 7990,237083 +process_tool_bar_item 8075,239892 +#define PROP(8112,240969 +set_prop 8114,241038 +parse_tool_bar_item 8167,242453 +#undef PROP8379,248844 +init_tool_bar_items 8387,248969 +append_tool_bar_item 8401,249261 +read_char_x_menu_prompt 8443,250771 +read_char_minibuf_menu_prompt 8503,252445 +#define PUSH_C_STR(8527,253014 +follow_key 8726,258553 +active_maps 8733,258695 +typedef struct keyremap8742,259021 + Lisp_Object parent;8745,259107 + Lisp_Object map;8748,259224 + int start,8753,259446 + int start, end;8753,259446 +} keyremap;8754,259464 +access_keymap_keyremap 8764,259808 +keyremap_step 8811,261450 +test_undefined 8867,262934 +read_key_sequence 8916,264861 +read_key_sequence_vs 9826,295821 +DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294 +DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299982 +detect_input_pending 9950,300488 +detect_input_pending_ignore_squeezables 9959,300654 +detect_input_pending_run_timers 9967,300870 +clear_input_pending 9985,301362 +requeued_events_pending_p 9997,301732 +DEFUN ("input-pending-p", Finput_pending_p,10002,301813 +DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813 +DEFUN ("recent-keys", Frecent_keys,10024,302596 +DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596 +DEFUN ("this-command-keys", Fthis_command_keys,10055,303517 +DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303958 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304380 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304955 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305495 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306510 +DEFUN ("recursion-depth", Frecursion_depth,10158,307069 +DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069 +DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406 +DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406 +DEFUN ("discard-input", Fdiscard_input,10203,308447 +DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447 +DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949 +DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949 +stuff_buffered_input 10285,311045 +set_waiting_for_input 10323,312016 +clear_waiting_for_input 10337,312390 +handle_interrupt_signal 10351,312754 +deliver_interrupt_signal 10378,313642 +static int volatile force_quit_count;10387,313932 +handle_interrupt 10401,314414 +quit_throw_to_read_char 10541,318711 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288 +DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516 +DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320516 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321432 +DEFUN ("set-quit-char", Fset_quit_char,10694,322706 +DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706 +DEFUN ("set-input-mode", Fset_input_mode,10729,323570 +DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570 +DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459 +DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324459 +DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837 +DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837 +DEFUN ("posn-at-point", Fposn_at_point,10824,327060 +DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060 +init_kboard 10861,328214 +allocate_kboard 10893,329284 +wipe_kboard 10909,329637 +delete_kboard 10917,329751 +init_keyboard 10942,330281 +struct event_head11021,332696 + short var;11023,332716 + short kind;11024,332729 +static const struct event_head head_table[head_table11027,332747 +syms_of_keyboard 11045,333577 + DEFVAR_LISP ("internal--top-level-message"11058,333972 + DEFVAR_LISP ("last-command-event"11312,342173 + DEFVAR_LISP ("last-nonmenu-event"11315,342297 + DEFVAR_LISP ("last-input-event"11321,342636 + DEFVAR_LISP ("unread-command-events"11324,342730 + DEFVAR_LISP ("unread-post-input-method-events"11332,343190 + DEFVAR_LISP ("unread-input-method-events"11338,343529 + DEFVAR_LISP ("meta-prefix-char"11346,343898 + DEFVAR_KBOARD ("last-command"11351,344106 + DEFVAR_KBOARD ("real-last-command"11368,344787 + DEFVAR_KBOARD ("last-repeatable-command"11372,344973 + DEFVAR_LISP ("this-command"11378,345261 + DEFVAR_LISP ("real-this-command"11384,345498 + DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680 + DEFVAR_LISP ("this-original-command"11396,346123 + DEFVAR_INT ("auto-save-interval"11403,346520 + DEFVAR_LISP ("auto-save-timeout"11408,346734 + DEFVAR_LISP ("echo-keystrokes"11415,347079 + DEFVAR_INT ("polling-period"11421,347350 + DEFVAR_LISP ("double-click-time"11428,347693 + DEFVAR_INT ("double-click-fuzz"11435,348029 + DEFVAR_INT ("num-input-keys"11446,348519 + DEFVAR_INT ("num-nonmacro-input-events"11452,348794 + DEFVAR_LISP ("last-event-frame"11457,349032 + DEFVAR_LISP ("tty-erase-char"11463,349311 + DEFVAR_LISP ("help-char"11466,349434 + DEFVAR_LISP ("help-event-list"11472,349717 + DEFVAR_LISP ("help-form"11477,349928 + DEFVAR_LISP ("prefix-help-command"11483,350176 + DEFVAR_LISP ("top-level"11489,350454 + DEFVAR_KBOARD ("keyboard-translate-table"11495,350675 + DEFVAR_BOOL ("cannot-suspend"11511,351488 + DEFVAR_BOOL ("menu-prompting"11516,351715 + DEFVAR_LISP ("menu-prompt-more-char"11526,352145 + DEFVAR_INT ("extra-keyboard-modifiers"11531,352391 + DEFVAR_LISP ("deactivate-mark"11545,353117 + DEFVAR_LISP ("pre-command-hook"11553,353486 + DEFVAR_LISP ("post-command-hook"11560,353841 + DEFVAR_LISP ("echo-area-clear-hook"11568,354204 + DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419 + DEFVAR_LISP ("menu-bar-final-items"11578,354622 + DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872 + DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230 + DEFVAR_LISP ("overriding-local-map"11598,355652 + DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103 + DEFVAR_LISP ("special-event-map"11613,356442 + DEFVAR_LISP ("track-mouse"11617,356630 + DEFVAR_KBOARD ("system-key-alist"11620,356757 + DEFVAR_KBOARD ("local-function-key-map"11629,357138 + DEFVAR_KBOARD ("input-decode-map"11658,358597 + DEFVAR_LISP ("function-key-map"11675,359385 + DEFVAR_LISP ("key-translation-map"11683,359801 + DEFVAR_LISP ("deferred-action-list"11689,360145 + DEFVAR_LISP ("deferred-action-function"11694,360393 + DEFVAR_LISP ("delayed-warnings-list"11700,360692 + DEFVAR_LISP ("timer-list"11708,361100 + DEFVAR_LISP ("timer-idle-list"11712,361252 + DEFVAR_LISP ("input-method-function"11716,361415 + DEFVAR_LISP ("input-method-previous-message"11737,362384 + DEFVAR_LISP ("show-help-function"11744,362745 + DEFVAR_LISP ("disable-point-adjustment"11749,362977 + DEFVAR_LISP ("global-disable-point-adjustment"11761,363527 + DEFVAR_LISP ("minibuffer-message-timeout"11770,363893 + DEFVAR_LISP ("throw-on-input"11775,364171 + DEFVAR_LISP ("command-error-function"11781,364422 + DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909 + DEFVAR_LISP ("select-active-regions"11798,365236 + DEFVAR_LISP ("saved-region-selection"11807,365628 + DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013 + DEFVAR_LISP ("debug-on-event"11825,366554 +keys_of_keyboard 11841,367115 +mark_kboards 11916,370434 + DEFVAR_LISP ("internal--top-level-message",\111058,333972 + DEFVAR_LISP ("last-command-event",\111312,342173 + DEFVAR_LISP ("last-nonmenu-event",\111315,342297 + DEFVAR_LISP ("last-input-event",\111321,342636 + DEFVAR_LISP ("unread-command-events",\111324,342730 + DEFVAR_LISP ("unread-post-input-method-events",\111332,343190 + DEFVAR_LISP ("unread-input-method-events",\111338,343529 + DEFVAR_LISP ("meta-prefix-char",\111346,343898 + DEFVAR_KBOARD ("last-command",\111351,344106 + DEFVAR_KBOARD ("real-last-command",\111368,344787 + DEFVAR_KBOARD ("last-repeatable-command",\111372,344973 + DEFVAR_LISP ("this-command",\111378,345261 + DEFVAR_LISP ("real-this-command",\111384,345498 + DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680 + DEFVAR_LISP ("this-original-command",\111396,346123 + DEFVAR_INT ("auto-save-interval",\111403,346520 + DEFVAR_LISP ("auto-save-timeout",\111408,346734 + DEFVAR_LISP ("echo-keystrokes",\111415,347079 + DEFVAR_INT ("polling-period",\111421,347350 + DEFVAR_LISP ("double-click-time",\111428,347693 + DEFVAR_INT ("double-click-fuzz",\111435,348029 + DEFVAR_INT ("num-input-keys",\111446,348519 + DEFVAR_INT ("num-nonmacro-input-events",\111452,348794 + DEFVAR_LISP ("last-event-frame",\111457,349032 + DEFVAR_LISP ("tty-erase-char",\111463,349311 + DEFVAR_LISP ("help-char",\111466,349434 + DEFVAR_LISP ("help-event-list",\111472,349717 + DEFVAR_LISP ("help-form",\111477,349928 + DEFVAR_LISP ("prefix-help-command",\111483,350176 + DEFVAR_LISP ("top-level",\111489,350454 + DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675 + DEFVAR_BOOL ("cannot-suspend",\111511,351488 + DEFVAR_BOOL ("menu-prompting",\111516,351715 + DEFVAR_LISP ("menu-prompt-more-char",\111526,352145 + DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391 + DEFVAR_LISP ("deactivate-mark",\111545,353117 + DEFVAR_LISP ("pre-command-hook",\111553,353486 + DEFVAR_LISP ("post-command-hook",\111560,353841 + DEFVAR_LISP ("echo-area-clear-hook",\111568,354204 + DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419 + DEFVAR_LISP ("menu-bar-final-items",\111578,354622 + DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872 + DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230 + DEFVAR_LISP ("overriding-local-map",\111598,355652 + DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103 + DEFVAR_LISP ("special-event-map",\111613,356442 + DEFVAR_LISP ("track-mouse",\111617,356630 + DEFVAR_KBOARD ("system-key-alist",\111620,356757 + DEFVAR_KBOARD ("local-function-key-map",\111629,357138 + DEFVAR_KBOARD ("input-decode-map",\111658,358597 + DEFVAR_LISP ("function-key-map",\111675,359385 + DEFVAR_LISP ("key-translation-map",\111683,359801 + DEFVAR_LISP ("deferred-action-list",\111689,360145 + DEFVAR_LISP ("deferred-action-function",\111694,360393 + DEFVAR_LISP ("delayed-warnings-list",\111700,360692 + DEFVAR_LISP ("timer-list",\111708,361100 + DEFVAR_LISP ("timer-idle-list",\111712,361252 + DEFVAR_LISP ("input-method-function",\111716,361415 + DEFVAR_LISP ("input-method-previous-message",\111737,362384 + DEFVAR_LISP ("show-help-function",\111744,362745 + DEFVAR_LISP ("disable-point-adjustment",\111749,362977 + DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527 + DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893 + DEFVAR_LISP ("throw-on-input",\111775,364171 + DEFVAR_LISP ("command-error-function",\111781,364422 + DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909 + DEFVAR_LISP ("select-active-regions",\111798,365236 + DEFVAR_LISP ("saved-region-selection",\111807,365628 + DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013 + DEFVAR_LISP ("debug-on-event",\111825,366554 c-src/emacs/src/lisp.h,41391 #define EMACS_LISP_H22,801 @@ -3253,11 +3249,11 @@ main(37,571 D(43,659 int x;44,694 -el-src/TAGTEST.EL,179 -(foo::defmumble bletch 1,0 -(defun foo==bar foo==bar2,33 -(defalias 'pending-delete-mode pending-delete-mode6,149 -(defalias (quote explicitly-quoted-pending-delete-mode)9,222 +el-src/TAGTEST.EL,181 +(foo::defmumble bletch 3,33 +(defun foo==bar foo==bar4,66 +(defalias 'pending-delete-mode pending-delete-mode8,182 +(defalias (quote explicitly-quoted-pending-delete-mode)11,255 el-src/emacs/lisp/progmodes/etags.el,5188 (defvar tags-file-name 34,1035 @@ -4050,22 +4046,22 @@ ord_add_element(71,1867 ord_del_element(85,2344 ord_disjoint(100,2783 ord_intersect(108,2953 -ord_intersection(126,3552 -ord_intersection3(130,3691 -ord_intersection(150,4531 -ord_intersection4(154,4703 -ord_intersection(176,5664 -ord_intersection2(181,5812 -ord_member(200,6318 -ord_seteq(216,6683 -ord_setproduct(225,6971 -ord_subset(240,7377 -ord_subtract(257,7861 -ord_symdiff(265,8054 -ord_union(288,8887 -ord_union4(303,9352 -ord_union(324,10171 -ord_union_all(329,10313 +ord_intersection(126,3553 +ord_intersection3(130,3692 +ord_intersection(150,4533 +ord_intersection4(154,4705 +ord_intersection(176,5666 +ord_intersection2(181,5814 +ord_member(200,6320 +ord_seteq(216,6685 +ord_setproduct(225,6973 +ord_subset(240,7379 +ord_subtract(257,7863 +ord_symdiff(265,8056 +ord_union(288,8889 +ord_union4(303,9354 +ord_union(324,10173 +ord_union_all(329,10315 prol-src/natded.prolog,2319 expandmng(100,2879 @@ -4280,6 +4276,11 @@ module A9,57 alias_method ( :foo2,foo237,586 A::Constant Constant42,655 +rs-src/test.rs,52 +enum IpAddrKind 3,11 +fn test1(8,48 +fn main(12,88 + scm-src/test.scm,260 (define hello 1,0 (set! hello 3,32 @@ -4494,533 +4495,533 @@ tex-src/texinfo.tex,30627 \def\vritemindex #1{\vritemindex1068,35482 \def\tablez #1#2#3#4#5#6{\tablez1074,35631 \def\Edescription{\Edescription1077,35689 -\def\itemfont{\itemfont1082,35891 -\def\Etable{\Etable1090,36117 -\def\itemize{\itemize1103,36441 -\def\itemizezzz #1{\itemizezzz1105,36477 -\def\itemizey #1#2{\itemizey1110,36572 -\def#2{1119,36818 -\def\itemcontents{\itemcontents1120,36859 -\def\bullet{\bullet1123,36907 -\def\minus{\minus1124,36934 -\def\frenchspacing{\frenchspacing1128,37042 -\def\splitoff#1#2\endmark{\splitoff1134,37267 -\def\enumerate{\enumerate1140,37497 -\def\enumeratezzz #1{\enumeratezzz1141,37536 -\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589 - \def\thearg{\thearg1146,37736 - \ifx\thearg\empty \def\thearg{\thearg1147,37755 -\def\numericenumerate{\numericenumerate1184,39089 -\def\lowercaseenumerate{\lowercaseenumerate1190,39219 -\def\uppercaseenumerate{\uppercaseenumerate1203,39566 -\def\startenumeration#1{\startenumeration1219,40056 -\def\alphaenumerate{\alphaenumerate1227,40238 -\def\capsenumerate{\capsenumerate1228,40273 -\def\Ealphaenumerate{\Ealphaenumerate1229,40307 -\def\Ecapsenumerate{\Ecapsenumerate1230,40341 -\def\itemizeitem{\itemizeitem1234,40421 -\def\newindex #1{\newindex1259,41278 -\def\defindex{\defindex1268,41567 -\def\newcodeindex #1{\newcodeindex1272,41675 -\def\defcodeindex{\defcodeindex1279,41935 -\def\synindex #1 #2 {\synindex1283,42115 -\def\syncodeindex #1 #2 {\syncodeindex1292,42455 -\def\doindex#1{\doindex1309,43134 -\def\singleindexer #1{\singleindexer1310,43193 -\def\docodeindex#1{\docodeindex1313,43305 -\def\singlecodeindexer #1{\singlecodeindexer1314,43372 -\def\indexdummies{\indexdummies1316,43430 -\def\_{\_1317,43450 -\def\w{\w1318,43478 -\def\bf{\bf1319,43505 -\def\rm{\rm1320,43534 -\def\sl{\sl1321,43563 -\def\sf{\sf1322,43592 -\def\tt{\tt1323,43620 -\def\gtr{\gtr1324,43648 -\def\less{\less1325,43678 -\def\hat{\hat1326,43710 -\def\char{\char1327,43740 -\def\TeX{\TeX1328,43772 -\def\dots{\dots1329,43802 -\def\copyright{\copyright1330,43835 -\def\tclose##1{\tclose1331,43878 -\def\code##1{\code1332,43923 -\def\samp##1{\samp1333,43964 -\def\t##1{\t1334,44005 -\def\r##1{\r1335,44040 -\def\i##1{\i1336,44075 -\def\b##1{\b1337,44110 -\def\cite##1{\cite1338,44145 -\def\key##1{\key1339,44186 -\def\file##1{\file1340,44225 -\def\var##1{\var1341,44266 -\def\kbd##1{\kbd1342,44305 -\def\indexdummyfont#1{\indexdummyfont1347,44461 -\def\indexdummytex{\indexdummytex1348,44487 -\def\indexdummydots{\indexdummydots1349,44511 -\def\indexnofonts{\indexnofonts1351,44537 -\let\w=\indexdummyfontdummyfont1352,44557 -\let\t=\indexdummyfontdummyfont1353,44580 -\let\r=\indexdummyfontdummyfont1354,44603 -\let\i=\indexdummyfontdummyfont1355,44626 -\let\b=\indexdummyfontdummyfont1356,44649 -\let\emph=\indexdummyfontdummyfont1357,44672 -\let\strong=\indexdummyfontdummyfont1358,44698 -\let\cite=\indexdummyfont=\indexdummyfont1359,44726 -\let\sc=\indexdummyfontdummyfont1360,44752 -\let\tclose=\indexdummyfontdummyfont1364,44924 -\let\code=\indexdummyfontdummyfont1365,44952 -\let\file=\indexdummyfontdummyfont1366,44978 -\let\samp=\indexdummyfontdummyfont1367,45004 -\let\kbd=\indexdummyfontdummyfont1368,45030 -\let\key=\indexdummyfontdummyfont1369,45055 -\let\var=\indexdummyfontdummyfont1370,45080 -\let\TeX=\indexdummytexdummytex1371,45105 -\let\dots=\indexdummydotsdummydots1372,45129 -\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45381 -\def\doind #1#2{\doind1384,45437 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45480 -\def\rawbackslashxx{\rawbackslashxx1389,45620 -{\indexnofontsnofonts1394,45882 -\def\dosubind #1#2#3{\dosubind1405,46193 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46241 -\def\rawbackslashxx{\rawbackslashxx1410,46345 -{\indexnofontsnofonts1414,46499 -\def\findex {\findex1443,47430 -\def\kindex {\kindex1444,47453 -\def\cindex {\cindex1445,47476 -\def\vindex {\vindex1446,47499 -\def\tindex {\tindex1447,47522 -\def\pindex {\pindex1448,47545 -\def\cindexsub {\cindexsub1450,47569 -\def\printindex{\printindex1462,47896 -\def\doprintindex#1{\doprintindex1464,47937 - \def\indexbackslash{\indexbackslash1481,48422 - \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461 -\def\initial #1{\initial1517,49533 -\def\entry #1#2{\entry1523,49740 - \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50387 -\def\indexdotfill{\indexdotfill1549,50715 -\def\primary #1{\primary1552,50821 -\def\secondary #1#2{\secondary1556,50903 -\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985 -\newbox\partialpageialpage1566,51158 -\def\begindoublecolumns{\begindoublecolumns1572,51316 - \output={\global\setbox\partialpage=ialpage=1573,51352 -\def\enddoublecolumns{\enddoublecolumns1577,51540 -\def\doublecolumnout{\doublecolumnout1580,51625 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694 -\def\pagesofar{\pagesofar1584,51872 -\def\balancecolumns{\balancecolumns1588,52109 - \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52280 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541 -\newcount \appendixno \appendixno = `\@no1627,53446 -\def\appendixletter{\appendixletter1628,53487 -\def\opencontents{\opencontents1632,53590 -\def\thischapter{\thischapter1637,53771 -\def\seccheck#1{\seccheck1638,53809 -\def\chapternofonts{\chapternofonts1643,53913 -\def\result{\result1646,53988 -\def\equiv{\equiv1647,54023 -\def\expansion{\expansion1648,54056 -\def\print{\print1649,54097 -\def\TeX{\TeX1650,54130 -\def\dots{\dots1651,54159 -\def\copyright{\copyright1652,54190 -\def\tt{\tt1653,54231 -\def\bf{\bf1654,54258 -\def\w{\w1655,54286 -\def\less{\less1656,54311 -\def\gtr{\gtr1657,54342 -\def\hat{\hat1658,54371 -\def\char{\char1659,54400 -\def\tclose##1{\tclose1660,54431 -\def\code##1{\code1661,54475 -\def\samp##1{\samp1662,54515 -\def\r##1{\r1663,54555 -\def\b##1{\b1664,54589 -\def\key##1{\key1665,54623 -\def\file##1{\file1666,54661 -\def\kbd##1{\kbd1667,54701 -\def\i##1{\i1669,54809 -\def\cite##1{\cite1670,54843 -\def\var##1{\var1671,54883 -\def\emph##1{\emph1672,54921 -\def\dfn##1{\dfn1673,54961 -\def\thischaptername{\thischaptername1676,55002 -\outer\def\chapter{\chapter1677,55041 -\def\chapterzzz #1{\chapterzzz1678,55082 -{\chapternofonts%nofonts%1687,55478 -\global\let\section = \numberedsec=1692,55631 -\global\let\subsection = \numberedsubsec=1693,55666 -\global\let\subsubsection = \numberedsubsubsec=1694,55707 -\outer\def\appendix{\appendix1697,55758 -\def\appendixzzz #1{\appendixzzz1698,55801 -\global\advance \appendixno by 1 \message{no1700,55878 -\chapmacro {#1}{Appendix \appendixletter}letter1701,55947 -\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56040 -{\chapternofonts%nofonts%1705,56112 - {#1}{Appendix \appendixletter}letter1707,56168 -\appendixnoderef %noderef1710,56268 -\global\let\section = \appendixsec=1711,56287 -\global\let\subsection = \appendixsubsec=1712,56322 -\global\let\subsubsection = \appendixsubsubsec=1713,56363 -\outer\def\top{\top1716,56414 -\outer\def\unnumbered{\unnumbered1717,56454 -\def\unnumberedzzz #1{\unnumberedzzz1718,56501 -{\chapternofonts%nofonts%1722,56664 -\global\let\section = \unnumberedsec=1727,56814 -\global\let\subsection = \unnumberedsubsec=1728,56851 -\global\let\subsubsection = \unnumberedsubsubsec=1729,56894 -\outer\def\numberedsec{\numberedsec1732,56947 -\def\seczzz #1{\seczzz1733,56988 -{\chapternofonts%nofonts%1736,57144 -\outer\def\appendixsection{\appendixsection1745,57330 -\outer\def\appendixsec{\appendixsec1746,57387 -\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440 -\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552 -{\chapternofonts%nofonts%1750,57620 -{#1}{\appendixletter}letter1752,57676 -\appendixnoderef %noderef1755,57776 -\outer\def\unnumberedsec{\unnumberedsec1759,57816 -\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869 -{\chapternofonts%nofonts%1762,57964 -\outer\def\numberedsubsec{\numberedsubsec1770,58132 -\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187 -{\chapternofonts%nofonts%1774,58366 -\outer\def\appendixsubsec{\appendixsubsec1783,58570 -\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625 -\subsecheading {#1}{\appendixletter}letter1786,58747 -{\chapternofonts%nofonts%1787,58812 -{#1}{\appendixletter}letter1789,58871 -\appendixnoderef %noderef1792,58986 -\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026 -\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085 -{\chapternofonts%nofonts%1799,59186 -\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357 -\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418 -{\chapternofonts%nofonts%1812,59615 -\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848 -\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909 - {\appendixletter}letter1827,60048 -{\chapternofonts%nofonts%1828,60114 - {\appendixletter}letter1830,60179 -\appendixnoderef %noderef1834,60313 -\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353 -\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418 -{\chapternofonts%nofonts%1841,60525 -\def\infotop{\infotop1851,60854 -\def\infounnumbered{\infounnumbered1852,60892 -\def\infounnumberedsec{\infounnumberedsec1853,60937 -\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988 -\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045 -\def\infoappendix{\infoappendix1857,61109 -\def\infoappendixsec{\infoappendixsec1858,61150 -\def\infoappendixsubsec{\infoappendixsubsec1859,61197 -\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250 -\def\infochapter{\infochapter1862,61310 -\def\infosection{\infosection1863,61349 -\def\infosubsection{\infosubsection1864,61388 -\def\infosubsubsection{\infosubsubsection1865,61433 -\global\let\section = \numberedsec=1870,61670 -\global\let\subsection = \numberedsubsec=1871,61705 -\global\let\subsubsection = \numberedsubsubsec=1872,61746 -\def\majorheading{\majorheading1886,62253 -\def\majorheadingzzz #1{\majorheadingzzz1887,62298 -\def\chapheading{\chapheading1893,62531 -\def\chapheadingzzz #1{\chapheadingzzz1894,62574 -\def\heading{\heading1899,62769 -\def\subheading{\subheading1901,62806 -\def\subsubheading{\subsubheading1903,62849 -\def\dobreak#1#2{\dobreak1910,63126 -\def\setchapterstyle #1 {\setchapterstyle1912,63204 -\def\chapbreak{\chapbreak1919,63459 -\def\chappager{\chappager1920,63509 -\def\chapoddpage{\chapoddpage1921,63547 -\def\setchapternewpage #1 {\setchapternewpage1923,63626 -\def\CHAPPAGoff{\CHAPPAGoff1925,63683 -\def\CHAPPAGon{\CHAPPAGon1929,63777 -\global\def\HEADINGSon{\HEADINGSon1932,63868 -\def\CHAPPAGodd{\CHAPPAGodd1934,63910 -\global\def\HEADINGSon{\HEADINGSon1937,64006 -\def\CHAPFplain{\CHAPFplain1941,64060 -\def\chfplain #1#2{\chfplain1945,64152 -\def\unnchfplain #1{\unnchfplain1956,64375 -\def\unnchfopen #1{\unnchfopen1964,64604 -\def\chfopen #1#2{\chfopen1970,64812 -\def\CHAPFopen{\CHAPFopen1975,64956 -\def\subsecheadingbreak{\subsecheadingbreak1982,65174 -\def\secheadingbreak{\secheadingbreak1985,65303 -\def\secheading #1#2#3{\secheading1993,65585 -\def\plainsecheading #1{\plainsecheading1994,65641 -\def\secheadingi #1{\secheadingi1995,65684 -\def\subsecheading #1#2#3#4{\subsecheading2006,66052 -\def\subsecheadingi #1{\subsecheadingi2007,66119 -\def\subsubsecfonts{\subsubsecfonts2014,66416 -\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539 -\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617 -\def\startcontents#1{\startcontents2032,67089 - \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362 -\outer\def\contents{\contents2049,67721 -\outer\def\summarycontents{\summarycontents2057,67865 - \def\secentry ##1##2##3##4{\secentry2067,68236 - \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271 - \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306 - \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347 - \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385 - \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432 -\def\chapentry#1#2#3{\chapentry2085,68866 -\def\shortchapentry#1#2#3{\shortchapentry2088,68983 - {#2\labelspace #1}space2091,69093 -\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147 -\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194 -\def\secentry#1#2#3#4{\secentry2102,69358 -\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417 -\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478 -\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548 -\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622 - \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656 -\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707 -\def\dochapentry#1#2{\dochapentry2123,70081 -\def\dosecentry#1#2{\dosecentry2138,70686 -\def\dosubsecentry#1#2{\dosubsecentry2145,70864 -\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049 -\def\labelspace{\labelspace2160,71300 -\def\dopageno#1{\dopageno2162,71335 -\def\doshortpageno#1{\doshortpageno2163,71361 -\def\chapentryfonts{\chapentryfonts2165,71393 -\def\secentryfonts{\secentryfonts2166,71428 -\def\point{\point2192,72387 -\def\result{\result2194,72408 -\def\expansion{\expansion2195,72481 -\def\print{\print2196,72552 -\def\equiv{\equiv2198,72619 -\def\error{\error2218,73392 -\def\tex{\tex2224,73621 -\def\@{\@2242,74004 -\gdef\sepspaces{\def {\ }}}\2265,74736 -\def\aboveenvbreak{\aboveenvbreak2268,74818 -\def\afterenvbreak{\afterenvbreak2272,74984 -\def\ctl{\ctl2286,75495 -\def\ctr{\ctr2287,75567 -\def\cbl{\cbl2288,75606 -\def\cbr{\cbr2289,75646 -\def\carttop{\carttop2290,75685 -\def\cartbot{\cartbot2293,75793 -\long\def\cartouche{\cartouche2299,75933 -\def\Ecartouche{\Ecartouche2326,76721 -\def\lisp{\lisp2338,76856 -\def\Elisp{\Elisp2348,77203 -\def\next##1{\next2360,77529 -\def\Eexample{\Eexample2364,77571 -\def\Esmallexample{\Esmallexample2367,77618 -\def\smalllispx{\smalllispx2373,77796 -\def\Esmalllisp{\Esmalllisp2383,78150 -\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506 -\def\next##1{\next2397,78563 -\def\display{\display2401,78643 -\def\Edisplay{\Edisplay2410,78962 -\def\next##1{\next2422,79273 -\def\format{\format2426,79376 -\def\Eformat{\Eformat2434,79672 -\def\next##1{\next2437,79761 -\def\flushleft{\flushleft2441,79813 -\def\Eflushleft{\Eflushleft2451,80184 -\def\next##1{\next2454,80277 -\def\flushright{\flushright2456,80299 -\def\Eflushright{\Eflushright2466,80671 -\def\next##1{\next2470,80802 -\def\quotation{\quotation2474,80860 -\def\Equotation{\Equotation2480,81052 -\def\setdeffont #1 {\setdeffont2493,81450 -\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496 -\newskip\defargsindent \defargsindent=50ptargsindent2496,81539 -\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582 -\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625 -\def\activeparens{\activeparens2503,81823 -\def\opnr{\opnr2529,83035 -\def\lbrb{\lbrb2530,83100 -\def\defname #1#2{\defname2536,83301 -\advance\dimen2 by -\defbodyindentbodyindent2540,83419 -\advance\dimen3 by -\defbodyindentbodyindent2542,83473 -\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527 -\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83669 -\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83744 -\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113 -\advance\leftskip by -\defbodyindentbodyindent2557,84247 -\exdentamount=\defbodyindentbodyindent2558,84284 -\def\defparsebody #1#2#3{\defparsebody2568,84643 -\def#1{2572,84827 -\def#2{2573,84863 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84935 -\exdentamount=\defbodyindentbodyindent2576,85009 -\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113 -\def#1{2585,85274 -\def#2##1 {2586,85310 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85393 -\exdentamount=\defbodyindentbodyindent2589,85467 -\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552 -\def#1{2596,85713 -\def#2##1 ##2 {2597,85749 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85849 -\exdentamount=\defbodyindentbodyindent2601,85923 -\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194 -\def#1{2612,86381 -\def#2{2613,86417 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86476 -\exdentamount=\defbodyindentbodyindent2616,86550 -\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641 -\def#1{2625,86800 -\def#2##1 {2626,86836 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86906 -\exdentamount=\defbodyindentbodyindent2629,86980 -\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052 -\def#1{2636,87216 -\def#2##1 ##2 {2637,87252 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87339 -\exdentamount=\defbodyindentbodyindent2641,87413 -\def\defunargs #1{\defunargs2664,88173 -\def\deftypefunargs #1{\deftypefunargs2676,88555 -\def\deffn{\deffn2690,88937 -\def\deffnheader #1#2#3{\deffnheader2692,88994 -\begingroup\defname {name2693,89042 -\def\defun{\defun2699,89187 -\def\defunheader #1#2{\defunheader2701,89240 -\begingroup\defname {name2702,89315 -\defunargs {unargs2703,89351 -\def\deftypefun{\deftypefun2709,89499 -\def\deftypefunheader #1#2{\deftypefunheader2712,89621 -\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730 -\begingroup\defname {name2716,89822 -\deftypefunargs {typefunargs2717,89868 -\def\deftypefn{\deftypefn2723,90039 -\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188 -\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324 -\begingroup\defname {name2730,90417 -\deftypefunargs {typefunargs2731,90457 -\def\defmac{\defmac2737,90578 -\def\defmacheader #1#2{\defmacheader2739,90635 -\begingroup\defname {name2740,90711 -\defunargs {unargs2741,90744 -\def\defspec{\defspec2747,90868 -\def\defspecheader #1#2{\defspecheader2749,90929 -\begingroup\defname {name2750,91006 -\defunargs {unargs2751,91046 -\def\deffnx #1 {\deffnx2758,91241 -\def\defunx #1 {\defunx2759,91298 -\def\defmacx #1 {\defmacx2760,91355 -\def\defspecx #1 {\defspecx2761,91414 -\def\deftypefnx #1 {\deftypefnx2762,91475 -\def\deftypeunx #1 {\deftypeunx2763,91540 -\def\defop #1 {\defop2769,91686 -\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721 -\def\defopheader #1#2#3{\defopheader2772,91775 -\begingroup\defname {name2774,91864 -\defunargs {unargs2775,91910 -\def\defmethod{\defmethod2780,91971 -\def\defmethodheader #1#2#3{\defmethodheader2782,92044 -\begingroup\defname {name2784,92132 -\defunargs {unargs2785,92172 -\def\defcv #1 {\defcv2790,92246 -\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281 -\def\defcvarheader #1#2#3{\defcvarheader2793,92340 -\begingroup\defname {name2795,92426 -\defvarargs {varargs2796,92472 -\def\defivar{\defivar2801,92545 -\def\defivarheader #1#2#3{\defivarheader2803,92608 -\begingroup\defname {name2805,92694 -\defvarargs {varargs2806,92745 -\def\defopx #1 {\defopx2812,92894 -\def\defmethodx #1 {\defmethodx2813,92951 -\def\defcvx #1 {\defcvx2814,93016 -\def\defivarx #1 {\defivarx2815,93073 -\def\defvarargs #1{\defvarargs2822,93344 -\def\defvr{\defvr2828,93488 -\def\defvrheader #1#2#3{\defvrheader2830,93543 -\begingroup\defname {name2831,93591 -\def\defvar{\defvar2835,93676 -\def\defvarheader #1#2{\defvarheader2837,93736 -\begingroup\defname {name2838,93807 -\defvarargs {varargs2839,93843 -\def\defopt{\defopt2844,93909 -\def\defoptheader #1#2{\defoptheader2846,93969 -\begingroup\defname {name2847,94040 -\defvarargs {varargs2848,94079 -\def\deftypevar{\deftypevar2853,94136 -\def\deftypevarheader #1#2{\deftypevarheader2856,94252 -\begingroup\defname {name2858,94335 -\def\deftypevr{\deftypevr2865,94509 -\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580 -\begingroup\defname {name2868,94632 -\def\defvrx #1 {\defvrx2876,94869 -\def\defvarx #1 {\defvarx2877,94926 -\def\defoptx #1 {\defoptx2878,94985 -\def\deftypevarx #1 {\deftypevarx2879,95044 -\def\deftypevrx #1 {\deftypevrx2880,95111 -\def\deftpargs #1{\deftpargs2885,95260 -\def\deftp{\deftp2889,95340 -\def\deftpheader #1#2#3{\deftpheader2891,95395 -\begingroup\defname {name2892,95443 -\def\deftpx #1 {\deftpx2897,95602 -\def\setref#1{\setref2908,95923 -\def\unnumbsetref#1{\unnumbsetref2913,96037 -\def\appendixsetref#1{\appendixsetref2918,96144 -\def\pxref#1{\pxref2929,96555 -\def\xref#1{\xref2930,96591 -\def\ref#1{\ref2931,96626 -\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656 -\def\printedmanual{\printedmanual2933,96699 -\def\printednodename{\printednodename2934,96737 -\def\printednodename{\printednodename2939,96862 -section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495 -\refx{x2957,97573 -\def\dosetq #1#2{\dosetq2965,97793 -\def\internalsetq #1#2{\internalsetq2973,98051 -\def\Ypagenumber{\Ypagenumber2977,98152 -\def\Ytitle{\Ytitle2979,98178 -\def\Ynothing{\Ynothing2981,98205 -\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222 -\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538 -\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568 -\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98623 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98727 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798 - \def\linenumber{\linenumber3009,99137 -\def\refx#1#2{\refx3015,99321 -\def\xrdef #1#2{\xrdef3037,99947 -\def\readauxfile{\readauxfile3040,100032 -\def\supereject{\supereject3110,101813 -\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498 -\def\openindices{\openindices3139,102684 -\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909 -\parindent = \defaultparindentaultparindent3152,102961 -\def\smallbook{\smallbook3175,103685 -\global\def\Esmallexample{\Esmallexample3192,104112 -\def\afourpaper{\afourpaper3196,104203 -\def\finalout{\finalout3224,105011 -\def\normaldoublequote{\normaldoublequote3235,105272 -\def\normaltilde{\normaltilde3236,105298 -\def\normalcaret{\normalcaret3237,105318 -\def\normalunderscore{\normalunderscore3238,105338 -\def\normalverticalbar{\normalverticalbar3239,105363 -\def\normalless{\normalless3240,105389 -\def\normalgreater{\normalgreater3241,105408 -\def\normalplus{\normalplus3242,105430 -\def\ifusingtt#1#2{\ifusingtt3253,105922 -\def\activedoublequote{\activedoublequote3261,106250 -\def~{~3264,106336 -\def^{^3267,106397 -\def_{_3270,106436 -\def\_{\_3272,106510 -\def\lvvmode{\lvvmode3279,106847 -\def|{|3282,106897 -\def<{<3285,106960 -\def>{>3288,107017 -\def+{+3290,107055 -\def\turnoffactive{\turnoffactive3296,107216 -\global\def={=3307,107502 -\def\normalbackslash{\normalbackslash3321,107884 +\def\itemfont{\itemfont1082,35890 +\def\Etable{\Etable1090,36116 +\def\itemize{\itemize1103,36440 +\def\itemizezzz #1{\itemizezzz1105,36476 +\def\itemizey #1#2{\itemizey1110,36571 +\def#2{1119,36817 +\def\itemcontents{\itemcontents1120,36858 +\def\bullet{\bullet1123,36906 +\def\minus{\minus1124,36933 +\def\frenchspacing{\frenchspacing1128,37041 +\def\splitoff#1#2\endmark{\splitoff1134,37266 +\def\enumerate{\enumerate1140,37496 +\def\enumeratezzz #1{\enumeratezzz1141,37535 +\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588 + \def\thearg{\thearg1146,37735 + \ifx\thearg\empty \def\thearg{\thearg1147,37754 +\def\numericenumerate{\numericenumerate1184,39088 +\def\lowercaseenumerate{\lowercaseenumerate1190,39218 +\def\uppercaseenumerate{\uppercaseenumerate1203,39565 +\def\startenumeration#1{\startenumeration1219,40055 +\def\alphaenumerate{\alphaenumerate1227,40237 +\def\capsenumerate{\capsenumerate1228,40272 +\def\Ealphaenumerate{\Ealphaenumerate1229,40306 +\def\Ecapsenumerate{\Ecapsenumerate1230,40340 +\def\itemizeitem{\itemizeitem1234,40420 +\def\newindex #1{\newindex1259,41277 +\def\defindex{\defindex1268,41566 +\def\newcodeindex #1{\newcodeindex1272,41674 +\def\defcodeindex{\defcodeindex1279,41934 +\def\synindex #1 #2 {\synindex1283,42114 +\def\syncodeindex #1 #2 {\syncodeindex1292,42454 +\def\doindex#1{\doindex1309,43133 +\def\singleindexer #1{\singleindexer1310,43192 +\def\docodeindex#1{\docodeindex1313,43304 +\def\singlecodeindexer #1{\singlecodeindexer1314,43371 +\def\indexdummies{\indexdummies1316,43429 +\def\_{\_1317,43449 +\def\w{\w1318,43477 +\def\bf{\bf1319,43504 +\def\rm{\rm1320,43533 +\def\sl{\sl1321,43562 +\def\sf{\sf1322,43591 +\def\tt{\tt1323,43619 +\def\gtr{\gtr1324,43647 +\def\less{\less1325,43677 +\def\hat{\hat1326,43709 +\def\char{\char1327,43739 +\def\TeX{\TeX1328,43771 +\def\dots{\dots1329,43801 +\def\copyright{\copyright1330,43834 +\def\tclose##1{\tclose1331,43877 +\def\code##1{\code1332,43922 +\def\samp##1{\samp1333,43963 +\def\t##1{\t1334,44004 +\def\r##1{\r1335,44039 +\def\i##1{\i1336,44074 +\def\b##1{\b1337,44109 +\def\cite##1{\cite1338,44144 +\def\key##1{\key1339,44185 +\def\file##1{\file1340,44224 +\def\var##1{\var1341,44265 +\def\kbd##1{\kbd1342,44304 +\def\indexdummyfont#1{\indexdummyfont1347,44460 +\def\indexdummytex{\indexdummytex1348,44486 +\def\indexdummydots{\indexdummydots1349,44510 +\def\indexnofonts{\indexnofonts1351,44536 +\let\w=\indexdummyfontdummyfont1352,44556 +\let\t=\indexdummyfontdummyfont1353,44579 +\let\r=\indexdummyfontdummyfont1354,44602 +\let\i=\indexdummyfontdummyfont1355,44625 +\let\b=\indexdummyfontdummyfont1356,44648 +\let\emph=\indexdummyfontdummyfont1357,44671 +\let\strong=\indexdummyfontdummyfont1358,44697 +\let\cite=\indexdummyfont=\indexdummyfont1359,44725 +\let\sc=\indexdummyfontdummyfont1360,44751 +\let\tclose=\indexdummyfontdummyfont1364,44923 +\let\code=\indexdummyfontdummyfont1365,44951 +\let\file=\indexdummyfontdummyfont1366,44977 +\let\samp=\indexdummyfontdummyfont1367,45003 +\let\kbd=\indexdummyfontdummyfont1368,45029 +\let\key=\indexdummyfontdummyfont1369,45054 +\let\var=\indexdummyfontdummyfont1370,45079 +\let\TeX=\indexdummytexdummytex1371,45104 +\let\dots=\indexdummydotsdummydots1372,45128 +\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45380 +\def\doind #1#2{\doind1384,45436 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45479 +\def\rawbackslashxx{\rawbackslashxx1389,45619 +{\indexnofontsnofonts1394,45881 +\def\dosubind #1#2#3{\dosubind1405,46192 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46240 +\def\rawbackslashxx{\rawbackslashxx1410,46344 +{\indexnofontsnofonts1414,46498 +\def\findex {\findex1443,47429 +\def\kindex {\kindex1444,47452 +\def\cindex {\cindex1445,47475 +\def\vindex {\vindex1446,47498 +\def\tindex {\tindex1447,47521 +\def\pindex {\pindex1448,47544 +\def\cindexsub {\cindexsub1450,47568 +\def\printindex{\printindex1462,47895 +\def\doprintindex#1{\doprintindex1464,47936 + \def\indexbackslash{\indexbackslash1481,48421 + \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460 +\def\initial #1{\initial1517,49532 +\def\entry #1#2{\entry1523,49739 + \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50386 +\def\indexdotfill{\indexdotfill1549,50714 +\def\primary #1{\primary1552,50820 +\def\secondary #1#2{\secondary1556,50902 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984 +\newbox\partialpageialpage1566,51157 +\def\begindoublecolumns{\begindoublecolumns1572,51315 + \output={\global\setbox\partialpage=ialpage=1573,51351 +\def\enddoublecolumns{\enddoublecolumns1577,51539 +\def\doublecolumnout{\doublecolumnout1580,51624 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693 +\def\pagesofar{\pagesofar1584,51871 +\def\balancecolumns{\balancecolumns1588,52108 + \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52279 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540 +\newcount \appendixno \appendixno = `\@no1627,53445 +\def\appendixletter{\appendixletter1628,53486 +\def\opencontents{\opencontents1632,53589 +\def\thischapter{\thischapter1637,53770 +\def\seccheck#1{\seccheck1638,53808 +\def\chapternofonts{\chapternofonts1643,53912 +\def\result{\result1646,53987 +\def\equiv{\equiv1647,54022 +\def\expansion{\expansion1648,54055 +\def\print{\print1649,54096 +\def\TeX{\TeX1650,54129 +\def\dots{\dots1651,54158 +\def\copyright{\copyright1652,54189 +\def\tt{\tt1653,54230 +\def\bf{\bf1654,54257 +\def\w{\w1655,54285 +\def\less{\less1656,54310 +\def\gtr{\gtr1657,54341 +\def\hat{\hat1658,54370 +\def\char{\char1659,54399 +\def\tclose##1{\tclose1660,54430 +\def\code##1{\code1661,54474 +\def\samp##1{\samp1662,54514 +\def\r##1{\r1663,54554 +\def\b##1{\b1664,54588 +\def\key##1{\key1665,54622 +\def\file##1{\file1666,54660 +\def\kbd##1{\kbd1667,54700 +\def\i##1{\i1669,54808 +\def\cite##1{\cite1670,54842 +\def\var##1{\var1671,54882 +\def\emph##1{\emph1672,54920 +\def\dfn##1{\dfn1673,54960 +\def\thischaptername{\thischaptername1676,55001 +\outer\def\chapter{\chapter1677,55040 +\def\chapterzzz #1{\chapterzzz1678,55081 +{\chapternofonts%nofonts%1687,55477 +\global\let\section = \numberedsec=1692,55630 +\global\let\subsection = \numberedsubsec=1693,55665 +\global\let\subsubsection = \numberedsubsubsec=1694,55706 +\outer\def\appendix{\appendix1697,55757 +\def\appendixzzz #1{\appendixzzz1698,55800 +\global\advance \appendixno by 1 \message{no1700,55877 +\chapmacro {#1}{Appendix \appendixletter}letter1701,55946 +\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56039 +{\chapternofonts%nofonts%1705,56111 + {#1}{Appendix \appendixletter}letter1707,56167 +\appendixnoderef %noderef1710,56267 +\global\let\section = \appendixsec=1711,56286 +\global\let\subsection = \appendixsubsec=1712,56321 +\global\let\subsubsection = \appendixsubsubsec=1713,56362 +\outer\def\top{\top1716,56413 +\outer\def\unnumbered{\unnumbered1717,56453 +\def\unnumberedzzz #1{\unnumberedzzz1718,56500 +{\chapternofonts%nofonts%1722,56663 +\global\let\section = \unnumberedsec=1727,56813 +\global\let\subsection = \unnumberedsubsec=1728,56850 +\global\let\subsubsection = \unnumberedsubsubsec=1729,56893 +\outer\def\numberedsec{\numberedsec1732,56946 +\def\seczzz #1{\seczzz1733,56987 +{\chapternofonts%nofonts%1736,57143 +\outer\def\appendixsection{\appendixsection1745,57329 +\outer\def\appendixsec{\appendixsec1746,57386 +\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439 +\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551 +{\chapternofonts%nofonts%1750,57619 +{#1}{\appendixletter}letter1752,57675 +\appendixnoderef %noderef1755,57775 +\outer\def\unnumberedsec{\unnumberedsec1759,57815 +\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868 +{\chapternofonts%nofonts%1762,57963 +\outer\def\numberedsubsec{\numberedsubsec1770,58131 +\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186 +{\chapternofonts%nofonts%1774,58365 +\outer\def\appendixsubsec{\appendixsubsec1783,58569 +\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624 +\subsecheading {#1}{\appendixletter}letter1786,58746 +{\chapternofonts%nofonts%1787,58811 +{#1}{\appendixletter}letter1789,58870 +\appendixnoderef %noderef1792,58985 +\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025 +\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084 +{\chapternofonts%nofonts%1799,59185 +\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356 +\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417 +{\chapternofonts%nofonts%1812,59614 +\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847 +\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908 + {\appendixletter}letter1827,60047 +{\chapternofonts%nofonts%1828,60113 + {\appendixletter}letter1830,60178 +\appendixnoderef %noderef1834,60312 +\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352 +\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417 +{\chapternofonts%nofonts%1841,60524 +\def\infotop{\infotop1851,60853 +\def\infounnumbered{\infounnumbered1852,60891 +\def\infounnumberedsec{\infounnumberedsec1853,60936 +\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987 +\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044 +\def\infoappendix{\infoappendix1857,61108 +\def\infoappendixsec{\infoappendixsec1858,61149 +\def\infoappendixsubsec{\infoappendixsubsec1859,61196 +\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249 +\def\infochapter{\infochapter1862,61309 +\def\infosection{\infosection1863,61348 +\def\infosubsection{\infosubsection1864,61387 +\def\infosubsubsection{\infosubsubsection1865,61432 +\global\let\section = \numberedsec=1870,61669 +\global\let\subsection = \numberedsubsec=1871,61704 +\global\let\subsubsection = \numberedsubsubsec=1872,61745 +\def\majorheading{\majorheading1886,62252 +\def\majorheadingzzz #1{\majorheadingzzz1887,62297 +\def\chapheading{\chapheading1893,62530 +\def\chapheadingzzz #1{\chapheadingzzz1894,62573 +\def\heading{\heading1899,62768 +\def\subheading{\subheading1901,62805 +\def\subsubheading{\subsubheading1903,62848 +\def\dobreak#1#2{\dobreak1910,63125 +\def\setchapterstyle #1 {\setchapterstyle1912,63203 +\def\chapbreak{\chapbreak1919,63458 +\def\chappager{\chappager1920,63508 +\def\chapoddpage{\chapoddpage1921,63546 +\def\setchapternewpage #1 {\setchapternewpage1923,63625 +\def\CHAPPAGoff{\CHAPPAGoff1925,63682 +\def\CHAPPAGon{\CHAPPAGon1929,63776 +\global\def\HEADINGSon{\HEADINGSon1932,63867 +\def\CHAPPAGodd{\CHAPPAGodd1934,63909 +\global\def\HEADINGSon{\HEADINGSon1937,64005 +\def\CHAPFplain{\CHAPFplain1941,64059 +\def\chfplain #1#2{\chfplain1945,64151 +\def\unnchfplain #1{\unnchfplain1956,64374 +\def\unnchfopen #1{\unnchfopen1964,64603 +\def\chfopen #1#2{\chfopen1970,64811 +\def\CHAPFopen{\CHAPFopen1975,64955 +\def\subsecheadingbreak{\subsecheadingbreak1982,65173 +\def\secheadingbreak{\secheadingbreak1985,65302 +\def\secheading #1#2#3{\secheading1993,65584 +\def\plainsecheading #1{\plainsecheading1994,65640 +\def\secheadingi #1{\secheadingi1995,65683 +\def\subsecheading #1#2#3#4{\subsecheading2006,66051 +\def\subsecheadingi #1{\subsecheadingi2007,66118 +\def\subsubsecfonts{\subsubsecfonts2014,66415 +\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538 +\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616 +\def\startcontents#1{\startcontents2032,67088 + \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361 +\outer\def\contents{\contents2049,67720 +\outer\def\summarycontents{\summarycontents2057,67864 + \def\secentry ##1##2##3##4{\secentry2067,68235 + \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270 + \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305 + \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346 + \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384 + \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431 +\def\chapentry#1#2#3{\chapentry2085,68865 +\def\shortchapentry#1#2#3{\shortchapentry2088,68982 + {#2\labelspace #1}space2091,69092 +\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146 +\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193 +\def\secentry#1#2#3#4{\secentry2102,69357 +\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416 +\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477 +\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547 +\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621 + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655 +\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706 +\def\dochapentry#1#2{\dochapentry2123,70080 +\def\dosecentry#1#2{\dosecentry2138,70685 +\def\dosubsecentry#1#2{\dosubsecentry2145,70863 +\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048 +\def\labelspace{\labelspace2160,71299 +\def\dopageno#1{\dopageno2162,71334 +\def\doshortpageno#1{\doshortpageno2163,71360 +\def\chapentryfonts{\chapentryfonts2165,71392 +\def\secentryfonts{\secentryfonts2166,71427 +\def\point{\point2192,72386 +\def\result{\result2194,72407 +\def\expansion{\expansion2195,72480 +\def\print{\print2196,72551 +\def\equiv{\equiv2198,72618 +\def\error{\error2218,73391 +\def\tex{\tex2224,73620 +\def\@{\@2242,74003 +\gdef\sepspaces{\def {\ }}}\2265,74735 +\def\aboveenvbreak{\aboveenvbreak2268,74817 +\def\afterenvbreak{\afterenvbreak2272,74983 +\def\ctl{\ctl2286,75494 +\def\ctr{\ctr2287,75566 +\def\cbl{\cbl2288,75605 +\def\cbr{\cbr2289,75645 +\def\carttop{\carttop2290,75684 +\def\cartbot{\cartbot2293,75792 +\long\def\cartouche{\cartouche2299,75932 +\def\Ecartouche{\Ecartouche2326,76720 +\def\lisp{\lisp2338,76855 +\def\Elisp{\Elisp2348,77202 +\def\next##1{\next2360,77528 +\def\Eexample{\Eexample2364,77570 +\def\Esmallexample{\Esmallexample2367,77617 +\def\smalllispx{\smalllispx2373,77795 +\def\Esmalllisp{\Esmalllisp2383,78149 +\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505 +\def\next##1{\next2397,78562 +\def\display{\display2401,78642 +\def\Edisplay{\Edisplay2410,78961 +\def\next##1{\next2422,79272 +\def\format{\format2426,79375 +\def\Eformat{\Eformat2434,79671 +\def\next##1{\next2437,79760 +\def\flushleft{\flushleft2441,79812 +\def\Eflushleft{\Eflushleft2451,80183 +\def\next##1{\next2454,80276 +\def\flushright{\flushright2456,80298 +\def\Eflushright{\Eflushright2466,80670 +\def\next##1{\next2470,80801 +\def\quotation{\quotation2474,80859 +\def\Equotation{\Equotation2480,81051 +\def\setdeffont #1 {\setdeffont2493,81449 +\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495 +\newskip\defargsindent \defargsindent=50ptargsindent2496,81538 +\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581 +\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624 +\def\activeparens{\activeparens2503,81822 +\def\opnr{\opnr2529,83034 +\def\lbrb{\lbrb2530,83099 +\def\defname #1#2{\defname2536,83300 +\advance\dimen2 by -\defbodyindentbodyindent2540,83418 +\advance\dimen3 by -\defbodyindentbodyindent2542,83472 +\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526 +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83668 +\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83743 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112 +\advance\leftskip by -\defbodyindentbodyindent2557,84246 +\exdentamount=\defbodyindentbodyindent2558,84283 +\def\defparsebody #1#2#3{\defparsebody2568,84642 +\def#1{2572,84826 +\def#2{2573,84862 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84934 +\exdentamount=\defbodyindentbodyindent2576,85008 +\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112 +\def#1{2585,85273 +\def#2##1 {2586,85309 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85392 +\exdentamount=\defbodyindentbodyindent2589,85466 +\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551 +\def#1{2596,85712 +\def#2##1 ##2 {2597,85748 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85848 +\exdentamount=\defbodyindentbodyindent2601,85922 +\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193 +\def#1{2612,86380 +\def#2{2613,86416 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86475 +\exdentamount=\defbodyindentbodyindent2616,86549 +\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640 +\def#1{2625,86799 +\def#2##1 {2626,86835 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86905 +\exdentamount=\defbodyindentbodyindent2629,86979 +\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051 +\def#1{2636,87215 +\def#2##1 ##2 {2637,87251 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87338 +\exdentamount=\defbodyindentbodyindent2641,87412 +\def\defunargs #1{\defunargs2664,88172 +\def\deftypefunargs #1{\deftypefunargs2676,88554 +\def\deffn{\deffn2690,88936 +\def\deffnheader #1#2#3{\deffnheader2692,88993 +\begingroup\defname {name2693,89041 +\def\defun{\defun2699,89186 +\def\defunheader #1#2{\defunheader2701,89239 +\begingroup\defname {name2702,89314 +\defunargs {unargs2703,89350 +\def\deftypefun{\deftypefun2709,89498 +\def\deftypefunheader #1#2{\deftypefunheader2712,89620 +\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729 +\begingroup\defname {name2716,89821 +\deftypefunargs {typefunargs2717,89867 +\def\deftypefn{\deftypefn2723,90038 +\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187 +\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323 +\begingroup\defname {name2730,90416 +\deftypefunargs {typefunargs2731,90456 +\def\defmac{\defmac2737,90577 +\def\defmacheader #1#2{\defmacheader2739,90634 +\begingroup\defname {name2740,90710 +\defunargs {unargs2741,90743 +\def\defspec{\defspec2747,90867 +\def\defspecheader #1#2{\defspecheader2749,90928 +\begingroup\defname {name2750,91005 +\defunargs {unargs2751,91045 +\def\deffnx #1 {\deffnx2758,91240 +\def\defunx #1 {\defunx2759,91297 +\def\defmacx #1 {\defmacx2760,91354 +\def\defspecx #1 {\defspecx2761,91413 +\def\deftypefnx #1 {\deftypefnx2762,91474 +\def\deftypeunx #1 {\deftypeunx2763,91539 +\def\defop #1 {\defop2769,91685 +\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720 +\def\defopheader #1#2#3{\defopheader2772,91774 +\begingroup\defname {name2774,91863 +\defunargs {unargs2775,91909 +\def\defmethod{\defmethod2780,91970 +\def\defmethodheader #1#2#3{\defmethodheader2782,92043 +\begingroup\defname {name2784,92131 +\defunargs {unargs2785,92171 +\def\defcv #1 {\defcv2790,92245 +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280 +\def\defcvarheader #1#2#3{\defcvarheader2793,92339 +\begingroup\defname {name2795,92425 +\defvarargs {varargs2796,92471 +\def\defivar{\defivar2801,92544 +\def\defivarheader #1#2#3{\defivarheader2803,92607 +\begingroup\defname {name2805,92693 +\defvarargs {varargs2806,92744 +\def\defopx #1 {\defopx2812,92893 +\def\defmethodx #1 {\defmethodx2813,92950 +\def\defcvx #1 {\defcvx2814,93015 +\def\defivarx #1 {\defivarx2815,93072 +\def\defvarargs #1{\defvarargs2822,93343 +\def\defvr{\defvr2828,93487 +\def\defvrheader #1#2#3{\defvrheader2830,93542 +\begingroup\defname {name2831,93590 +\def\defvar{\defvar2835,93675 +\def\defvarheader #1#2{\defvarheader2837,93735 +\begingroup\defname {name2838,93806 +\defvarargs {varargs2839,93842 +\def\defopt{\defopt2844,93908 +\def\defoptheader #1#2{\defoptheader2846,93968 +\begingroup\defname {name2847,94039 +\defvarargs {varargs2848,94078 +\def\deftypevar{\deftypevar2853,94135 +\def\deftypevarheader #1#2{\deftypevarheader2856,94251 +\begingroup\defname {name2858,94334 +\def\deftypevr{\deftypevr2865,94508 +\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579 +\begingroup\defname {name2868,94631 +\def\defvrx #1 {\defvrx2876,94868 +\def\defvarx #1 {\defvarx2877,94925 +\def\defoptx #1 {\defoptx2878,94984 +\def\deftypevarx #1 {\deftypevarx2879,95043 +\def\deftypevrx #1 {\deftypevrx2880,95110 +\def\deftpargs #1{\deftpargs2885,95259 +\def\deftp{\deftp2889,95339 +\def\deftpheader #1#2#3{\deftpheader2891,95394 +\begingroup\defname {name2892,95442 +\def\deftpx #1 {\deftpx2897,95601 +\def\setref#1{\setref2908,95922 +\def\unnumbsetref#1{\unnumbsetref2913,96036 +\def\appendixsetref#1{\appendixsetref2918,96143 +\def\pxref#1{\pxref2929,96554 +\def\xref#1{\xref2930,96590 +\def\ref#1{\ref2931,96625 +\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655 +\def\printedmanual{\printedmanual2933,96698 +\def\printednodename{\printednodename2934,96736 +\def\printednodename{\printednodename2939,96861 +section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493 +\refx{x2957,97571 +\def\dosetq #1#2{\dosetq2965,97791 +\def\internalsetq #1#2{\internalsetq2973,98049 +\def\Ypagenumber{\Ypagenumber2977,98150 +\def\Ytitle{\Ytitle2979,98176 +\def\Ynothing{\Ynothing2981,98203 +\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220 +\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536 +\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566 +\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98621 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98725 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796 + \def\linenumber{\linenumber3009,99135 +\def\refx#1#2{\refx3015,99319 +\def\xrdef #1#2{\xrdef3037,99945 +\def\readauxfile{\readauxfile3040,100030 +\def\supereject{\supereject3110,101811 +\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496 +\def\openindices{\openindices3139,102682 +\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907 +\parindent = \defaultparindentaultparindent3152,102959 +\def\smallbook{\smallbook3175,103683 +\global\def\Esmallexample{\Esmallexample3192,104110 +\def\afourpaper{\afourpaper3196,104201 +\def\finalout{\finalout3224,105009 +\def\normaldoublequote{\normaldoublequote3235,105270 +\def\normaltilde{\normaltilde3236,105296 +\def\normalcaret{\normalcaret3237,105316 +\def\normalunderscore{\normalunderscore3238,105336 +\def\normalverticalbar{\normalverticalbar3239,105361 +\def\normalless{\normalless3240,105387 +\def\normalgreater{\normalgreater3241,105406 +\def\normalplus{\normalplus3242,105428 +\def\ifusingtt#1#2{\ifusingtt3253,105920 +\def\activedoublequote{\activedoublequote3261,106248 +\def~{~3264,106334 +\def^{^3267,106395 +\def_{_3270,106434 +\def\_{\_3272,106508 +\def\lvvmode{\lvvmode3279,106845 +\def|{|3282,106895 +\def<{<3285,106958 +\def>{>3288,107015 +\def+{+3290,107053 +\def\turnoffactive{\turnoffactive3296,107214 +\global\def={=3307,107500 +\def\normalbackslash{\normalbackslash3321,107882 c-src/c.c,76 T f(1,0 @@ -5160,13 +5161,13 @@ extern struct node *yylval;yylval306,6246 unsigned char parse_cell_or_range 309,6291 unsigned char parse_cell_or_range 311,6355 yylex FUN0(315,6405 -parse_cell_or_range FUN2(587,11771 -#define CK_ABS_R(671,13213 -#define CK_REL_R(675,13292 -#define CK_ABS_C(680,13421 -#define CK_REL_C(684,13500 -#define MAYBEREL(689,13629 -str_to_col FUN1(847,16830 +parse_cell_or_range FUN2(587,11772 +#define CK_ABS_R(671,13214 +#define CK_REL_R(675,13293 +#define CK_ABS_C(680,13422 +#define CK_REL_C(684,13501 +#define MAYBEREL(689,13630 +str_to_col FUN1(847,16831 y-src/parse.c,520 #define YYBISON 4,64 diff --git a/test/manual/etags/ETAGS.good_6 b/test/manual/etags/ETAGS.good_6 index 86df93afab1..abf21860c7a 100644 --- a/test/manual/etags/ETAGS.good_6 +++ b/test/manual/etags/ETAGS.good_6 @@ -175,7 +175,7 @@ package body Truc.Bidule Truc.Bidule/b138,2153 protected body Bidule Bidule/b139,2181 protected body Machin_T Machin_T/b146,2281 -c-src/abbrev.c,3274 +c-src/abbrev.c,3055 Lisp_Object Vabbrev_table_name_list;43,1429 Lisp_Object Vglobal_abbrev_table;48,1574 Lisp_Object Vfundamental_mode_abbrev_table;52,1685 @@ -186,57 +186,53 @@ Lisp_Object Vabbrev_start_location_buffer;66,2046 Lisp_Object Vlast_abbrev;70,2155 Lisp_Object Vlast_abbrev_text;75,2324 int last_abbrev_point;79,2414 -Lisp_Object Vpre_abbrev_expand_hook,83,2487 -Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook;83,2487 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,85,2551 -DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table85,2551 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,92,2743 -DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table92,2743 -DEFUN ("define-abbrev", Fdefine_abbrev,107,3124 -DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev107,3124 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,149,4443 -DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev149,4443 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,160,4814 -DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev160,4814 -DEFUN ("abbrev-symbol", Fabbrev_symbol,174,5282 -DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol174,5282 -DEFUN ("abbrev-expansion", Fabbrev_expansion,202,6246 -DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion202,6246 -DEFUN ("expand-abbrev", Fexpand_abbrev,218,6761 -DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev218,6761 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,389,11682 -DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev389,11682 -write_abbrev 426,12889 -describe_abbrev 445,13324 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,466,13839 -DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description466,13839 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,506,14995 -DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table506,14995 -syms_of_abbrev 540,16072 - DEFVAR_LISP ("abbrev-table-name-list"542,16092 - DEFVAR_LISP ("global-abbrev-table"548,16354 - DEFVAR_LISP ("fundamental-mode-abbrev-table"555,16676 - DEFVAR_LISP ("last-abbrev"561,17018 - DEFVAR_LISP ("last-abbrev-text"564,17141 - DEFVAR_INT ("last-abbrev-location"568,17299 - DEFVAR_LISP ("abbrev-start-location"575,17498 - DEFVAR_LISP ("abbrev-start-location-buffer"581,17775 - DEFVAR_PER_BUFFER ("local-abbrev-table"586,18039 - DEFVAR_BOOL ("abbrevs-changed"589,18182 - DEFVAR_BOOL ("abbrev-all-caps"594,18385 - DEFVAR_LISP ("pre-abbrev-expand-hook"598,18541 - DEFVAR_LISP ("abbrev-table-name-list",\1542,16092 - DEFVAR_LISP ("global-abbrev-table",\1548,16354 - DEFVAR_LISP ("fundamental-mode-abbrev-table",\1555,16676 - DEFVAR_LISP ("last-abbrev",\1561,17018 - DEFVAR_LISP ("last-abbrev-text",\1564,17141 - DEFVAR_INT ("last-abbrev-location",\1568,17299 - DEFVAR_LISP ("abbrev-start-location",\1575,17498 - DEFVAR_LISP ("abbrev-start-location-buffer",\1581,17775 - DEFVAR_PER_BUFFER ("local-abbrev-table",\1586,18039 - DEFVAR_BOOL ("abbrevs-changed",\1589,18182 - DEFVAR_BOOL ("abbrev-all-caps",\1594,18385 - DEFVAR_LISP ("pre-abbrev-expand-hook",\1598,18541 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,82,2440 +DEFUN ("make-abbrev-table", Fmake_abbrev_table,make-abbrev-table82,2440 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,89,2632 +DEFUN ("clear-abbrev-table", Fclear_abbrev_table,clear-abbrev-table89,2632 +DEFUN ("define-abbrev", Fdefine_abbrev,104,3013 +DEFUN ("define-abbrev", Fdefine_abbrev,define-abbrev104,3013 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,146,4332 +DEFUN ("define-global-abbrev", Fdefine_global_abbrev,define-global-abbrev146,4332 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,157,4703 +DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev,define-mode-abbrev157,4703 +DEFUN ("abbrev-symbol", Fabbrev_symbol,171,5171 +DEFUN ("abbrev-symbol", Fabbrev_symbol,abbrev-symbol171,5171 +DEFUN ("abbrev-expansion", Fabbrev_expansion,199,6135 +DEFUN ("abbrev-expansion", Fabbrev_expansion,abbrev-expansion199,6135 +DEFUN ("expand-abbrev", Fexpand_abbrev,215,6650 +DEFUN ("expand-abbrev", Fexpand_abbrev,expand-abbrev215,6650 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,383,11495 +DEFUN ("unexpand-abbrev", Funexpand_abbrev,unexpand-abbrev383,11495 +write_abbrev 420,12702 +describe_abbrev 439,13137 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,460,13652 +DEFUN ("insert-abbrev-table-description", Finsert_abbrev_table_description,insert-abbrev-table-description460,13652 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,500,14808 +DEFUN ("define-abbrev-table", Fdefine_abbrev_table,define-abbrev-table500,14808 +syms_of_abbrev 534,15885 + DEFVAR_LISP ("abbrev-table-name-list"536,15905 + DEFVAR_LISP ("global-abbrev-table"542,16167 + DEFVAR_LISP ("fundamental-mode-abbrev-table"549,16489 + DEFVAR_LISP ("last-abbrev"555,16831 + DEFVAR_LISP ("last-abbrev-text"558,16954 + DEFVAR_INT ("last-abbrev-location"562,17112 + DEFVAR_LISP ("abbrev-start-location"569,17311 + DEFVAR_LISP ("abbrev-start-location-buffer"575,17588 + DEFVAR_PER_BUFFER ("local-abbrev-table"580,17852 + DEFVAR_BOOL ("abbrevs-changed"583,17995 + DEFVAR_BOOL ("abbrev-all-caps"588,18198 + DEFVAR_LISP ("abbrev-table-name-list",\1536,15905 + DEFVAR_LISP ("global-abbrev-table",\1542,16167 + DEFVAR_LISP ("fundamental-mode-abbrev-table",\1549,16489 + DEFVAR_LISP ("last-abbrev",\1555,16831 + DEFVAR_LISP ("last-abbrev-text",\1558,16954 + DEFVAR_INT ("last-abbrev-location",\1562,17112 + DEFVAR_LISP ("abbrev-start-location",\1569,17311 + DEFVAR_LISP ("abbrev-start-location-buffer",\1575,17588 + DEFVAR_PER_BUFFER ("local-abbrev-table",\1580,17852 + DEFVAR_BOOL ("abbrevs-changed",\1583,17995 + DEFVAR_BOOL ("abbrev-all-caps",\1588,18198 c-src/torture.c,197 (*tag1 tag118,452 @@ -1368,310 +1364,310 @@ make_lispy_position 5228,157391 toolkit_menubar_in_use 5456,163954 make_scroll_bar_position 5469,164322 make_lispy_event 5485,164968 -make_lispy_movement 6104,183532 -make_lispy_switch_frame 6131,184263 -make_lispy_focus_in 6137,184370 -make_lispy_focus_out 6145,184496 -parse_modifiers_uncached 6163,184946 -#define SINGLE_LETTER_MOD(6185,185466 -#undef SINGLE_LETTER_MOD6212,185907 -#define MULTI_LETTER_MOD(6214,185933 -#undef MULTI_LETTER_MOD6231,186401 -apply_modifiers_uncached 6273,187575 -static const char *const modifier_names[modifier_names6319,189194 -#define NUM_MOD_NAMES 6325,189400 -static Lisp_Object modifier_symbols;6327,189450 -lispy_modifier_list 6331,189587 -#define KEY_TO_CHAR(6353,190253 -parse_modifiers 6356,190329 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191518 -DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191518 -apply_modifiers 6422,192392 -reorder_modifiers 6491,194721 -modify_event_symbol 6536,196529 -DEFUN ("event-convert-list", Fevent_convert_list,6628,199245 -DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199245 -parse_solitary_modifier 6695,201136 -#define SINGLE_LETTER_MOD(6701,201259 -#define MULTI_LETTER_MOD(6705,201344 -#undef SINGLE_LETTER_MOD6763,202642 -#undef MULTI_LETTER_MOD6764,202667 -lucid_event_type_list_p 6775,202890 -get_input_pending 6814,203961 -record_asynch_buffer_change 6834,204580 -gobble_input 6872,205703 -tty_read_avail_input 6967,208311 -handle_async_input 7149,214040 -process_pending_signals 7165,214360 -unblock_input_to 7177,214646 -unblock_input 7200,215278 -totally_unblock_input 7209,215446 -handle_input_available_signal 7217,215530 -deliver_input_available_signal 7226,215701 -struct user_signal_info7235,215866 - int sig;7238,215916 - char *name;name7241,215957 - int npending;7244,216008 - struct user_signal_info *next;next7246,216025 -static struct user_signal_info *user_signals user_signals7250,216091 -add_user_signal 7253,216150 -handle_user_signal 7275,216599 -deliver_user_signal 7316,217559 -find_user_signal_name 7322,217660 -store_user_signal_events 7334,217842 -static void menu_bar_item 7362,218342 -static Lisp_Object menu_bar_one_keymap_changed_items;7363,218417 -static Lisp_Object menu_bar_items_vector;7368,218631 -static int menu_bar_items_index;7369,218673 -static const char *separator_names[separator_names7372,218708 -menu_separator_name_p 7393,219149 -menu_bar_items 7426,219853 -Lisp_Object item_properties;7568,224604 -menu_bar_item 7571,224646 -menu_item_eval_property_1 7647,227176 -eval_dyn 7658,227466 -menu_item_eval_property 7666,227676 -parse_menu_item 7686,228342 -static Lisp_Object tool_bar_items_vector;7965,236337 -static Lisp_Object tool_bar_item_properties;7970,236511 -static int ntool_bar_items;7974,236607 -static void init_tool_bar_items 7978,236665 -static void process_tool_bar_item 7979,236712 -static bool parse_tool_bar_item 7981,236802 -static void append_tool_bar_item 7982,236862 -tool_bar_items 7990,237084 -process_tool_bar_item 8075,239893 -#define PROP(8112,240970 -set_prop 8114,241039 -parse_tool_bar_item 8167,242454 -#undef PROP8379,248845 -init_tool_bar_items 8387,248970 -append_tool_bar_item 8401,249262 -read_char_x_menu_prompt 8443,250772 -read_char_minibuf_menu_prompt 8503,252446 -#define PUSH_C_STR(8527,253015 -follow_key 8726,258554 -active_maps 8733,258696 -typedef struct keyremap8742,259022 - Lisp_Object parent;8745,259108 - Lisp_Object map;8748,259225 - int start,8753,259447 - int start, end;8753,259447 -} keyremap;8754,259465 -access_keymap_keyremap 8764,259809 -keyremap_step 8811,261451 -test_undefined 8867,262935 -read_key_sequence 8916,264862 -read_key_sequence_vs 9826,295822 -DEFUN ("read-key-sequence", Fread_key_sequence,9885,297295 -DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297295 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299983 -DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299983 -detect_input_pending 9950,300489 -detect_input_pending_ignore_squeezables 9959,300655 -detect_input_pending_run_timers 9967,300871 -clear_input_pending 9985,301363 -requeued_events_pending_p 9997,301733 -DEFUN ("input-pending-p", Finput_pending_p,10002,301814 -DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301814 -DEFUN ("recent-keys", Frecent_keys,10024,302597 -DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302597 -DEFUN ("this-command-keys", Fthis_command_keys,10055,303518 -DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303518 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303959 -DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303959 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304381 -DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304381 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304956 -DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304956 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305496 -DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305496 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306511 -DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306511 -DEFUN ("recursion-depth", Frecursion_depth,10158,307070 -DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307070 -DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307407 -DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307407 -DEFUN ("discard-input", Fdiscard_input,10203,308448 -DEFUN ("discard-input", Fdiscard_input,discard-input10203,308448 -DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308950 -DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308950 -stuff_buffered_input 10285,311046 -set_waiting_for_input 10323,312017 -clear_waiting_for_input 10337,312391 -handle_interrupt_signal 10351,312755 -deliver_interrupt_signal 10378,313643 -static int volatile force_quit_count;10387,313933 -handle_interrupt 10401,314415 -quit_throw_to_read_char 10541,318712 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319289 -DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319289 -DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320517 -DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320517 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321433 -DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321433 -DEFUN ("set-quit-char", Fset_quit_char,10694,322707 -DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322707 -DEFUN ("set-input-mode", Fset_input_mode,10729,323571 -DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323571 -DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324460 -DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324460 -DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325838 -DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325838 -DEFUN ("posn-at-point", Fposn_at_point,10824,327061 -DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327061 -init_kboard 10861,328215 -allocate_kboard 10893,329285 -wipe_kboard 10909,329638 -delete_kboard 10917,329752 -init_keyboard 10942,330282 -struct event_head11021,332697 - short var;11023,332717 - short kind;11024,332730 -static const struct event_head head_table[head_table11027,332748 -syms_of_keyboard 11045,333578 - DEFVAR_LISP ("internal--top-level-message"11058,333973 - DEFVAR_LISP ("last-command-event"11312,342174 - DEFVAR_LISP ("last-nonmenu-event"11315,342298 - DEFVAR_LISP ("last-input-event"11321,342637 - DEFVAR_LISP ("unread-command-events"11324,342731 - DEFVAR_LISP ("unread-post-input-method-events"11332,343191 - DEFVAR_LISP ("unread-input-method-events"11338,343530 - DEFVAR_LISP ("meta-prefix-char"11346,343899 - DEFVAR_KBOARD ("last-command"11351,344107 - DEFVAR_KBOARD ("real-last-command"11368,344788 - DEFVAR_KBOARD ("last-repeatable-command"11372,344974 - DEFVAR_LISP ("this-command"11378,345262 - DEFVAR_LISP ("real-this-command"11384,345499 - DEFVAR_LISP ("this-command-keys-shift-translated"11388,345681 - DEFVAR_LISP ("this-original-command"11396,346124 - DEFVAR_INT ("auto-save-interval"11403,346521 - DEFVAR_LISP ("auto-save-timeout"11408,346735 - DEFVAR_LISP ("echo-keystrokes"11415,347080 - DEFVAR_INT ("polling-period"11421,347351 - DEFVAR_LISP ("double-click-time"11428,347694 - DEFVAR_INT ("double-click-fuzz"11435,348030 - DEFVAR_INT ("num-input-keys"11446,348520 - DEFVAR_INT ("num-nonmacro-input-events"11452,348795 - DEFVAR_LISP ("last-event-frame"11457,349033 - DEFVAR_LISP ("tty-erase-char"11463,349312 - DEFVAR_LISP ("help-char"11466,349435 - DEFVAR_LISP ("help-event-list"11472,349718 - DEFVAR_LISP ("help-form"11477,349929 - DEFVAR_LISP ("prefix-help-command"11483,350177 - DEFVAR_LISP ("top-level"11489,350455 - DEFVAR_KBOARD ("keyboard-translate-table"11495,350676 - DEFVAR_BOOL ("cannot-suspend"11511,351489 - DEFVAR_BOOL ("menu-prompting"11516,351716 - DEFVAR_LISP ("menu-prompt-more-char"11526,352146 - DEFVAR_INT ("extra-keyboard-modifiers"11531,352392 - DEFVAR_LISP ("deactivate-mark"11545,353118 - DEFVAR_LISP ("pre-command-hook"11553,353487 - DEFVAR_LISP ("post-command-hook"11560,353842 - DEFVAR_LISP ("echo-area-clear-hook"11568,354205 - DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354420 - DEFVAR_LISP ("menu-bar-final-items"11578,354623 - DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354873 - DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355231 - DEFVAR_LISP ("overriding-local-map"11598,355653 - DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356104 - DEFVAR_LISP ("special-event-map"11613,356443 - DEFVAR_LISP ("track-mouse"11617,356631 - DEFVAR_KBOARD ("system-key-alist"11620,356758 - DEFVAR_KBOARD ("local-function-key-map"11629,357139 - DEFVAR_KBOARD ("input-decode-map"11658,358598 - DEFVAR_LISP ("function-key-map"11675,359386 - DEFVAR_LISP ("key-translation-map"11683,359802 - DEFVAR_LISP ("deferred-action-list"11689,360146 - DEFVAR_LISP ("deferred-action-function"11694,360394 - DEFVAR_LISP ("delayed-warnings-list"11700,360693 - DEFVAR_LISP ("timer-list"11708,361101 - DEFVAR_LISP ("timer-idle-list"11712,361253 - DEFVAR_LISP ("input-method-function"11716,361416 - DEFVAR_LISP ("input-method-previous-message"11737,362385 - DEFVAR_LISP ("show-help-function"11744,362746 - DEFVAR_LISP ("disable-point-adjustment"11749,362978 - DEFVAR_LISP ("global-disable-point-adjustment"11761,363528 - DEFVAR_LISP ("minibuffer-message-timeout"11770,363894 - DEFVAR_LISP ("throw-on-input"11775,364172 - DEFVAR_LISP ("command-error-function"11781,364423 - DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364910 - DEFVAR_LISP ("select-active-regions"11798,365237 - DEFVAR_LISP ("saved-region-selection"11807,365629 - DEFVAR_LISP ("selection-inhibit-update-commands"11815,366014 - DEFVAR_LISP ("debug-on-event"11825,366555 -keys_of_keyboard 11841,367116 -mark_kboards 11916,370435 - DEFVAR_LISP ("internal--top-level-message",\111058,333973 - DEFVAR_LISP ("last-command-event",\111312,342174 - DEFVAR_LISP ("last-nonmenu-event",\111315,342298 - DEFVAR_LISP ("last-input-event",\111321,342637 - DEFVAR_LISP ("unread-command-events",\111324,342731 - DEFVAR_LISP ("unread-post-input-method-events",\111332,343191 - DEFVAR_LISP ("unread-input-method-events",\111338,343530 - DEFVAR_LISP ("meta-prefix-char",\111346,343899 - DEFVAR_KBOARD ("last-command",\111351,344107 - DEFVAR_KBOARD ("real-last-command",\111368,344788 - DEFVAR_KBOARD ("last-repeatable-command",\111372,344974 - DEFVAR_LISP ("this-command",\111378,345262 - DEFVAR_LISP ("real-this-command",\111384,345499 - DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345681 - DEFVAR_LISP ("this-original-command",\111396,346124 - DEFVAR_INT ("auto-save-interval",\111403,346521 - DEFVAR_LISP ("auto-save-timeout",\111408,346735 - DEFVAR_LISP ("echo-keystrokes",\111415,347080 - DEFVAR_INT ("polling-period",\111421,347351 - DEFVAR_LISP ("double-click-time",\111428,347694 - DEFVAR_INT ("double-click-fuzz",\111435,348030 - DEFVAR_INT ("num-input-keys",\111446,348520 - DEFVAR_INT ("num-nonmacro-input-events",\111452,348795 - DEFVAR_LISP ("last-event-frame",\111457,349033 - DEFVAR_LISP ("tty-erase-char",\111463,349312 - DEFVAR_LISP ("help-char",\111466,349435 - DEFVAR_LISP ("help-event-list",\111472,349718 - DEFVAR_LISP ("help-form",\111477,349929 - DEFVAR_LISP ("prefix-help-command",\111483,350177 - DEFVAR_LISP ("top-level",\111489,350455 - DEFVAR_KBOARD ("keyboard-translate-table",\111495,350676 - DEFVAR_BOOL ("cannot-suspend",\111511,351489 - DEFVAR_BOOL ("menu-prompting",\111516,351716 - DEFVAR_LISP ("menu-prompt-more-char",\111526,352146 - DEFVAR_INT ("extra-keyboard-modifiers",\111531,352392 - DEFVAR_LISP ("deactivate-mark",\111545,353118 - DEFVAR_LISP ("pre-command-hook",\111553,353487 - DEFVAR_LISP ("post-command-hook",\111560,353842 - DEFVAR_LISP ("echo-area-clear-hook",\111568,354205 - DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354420 - DEFVAR_LISP ("menu-bar-final-items",\111578,354623 - DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354873 - DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355231 - DEFVAR_LISP ("overriding-local-map",\111598,355653 - DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356104 - DEFVAR_LISP ("special-event-map",\111613,356443 - DEFVAR_LISP ("track-mouse",\111617,356631 - DEFVAR_KBOARD ("system-key-alist",\111620,356758 - DEFVAR_KBOARD ("local-function-key-map",\111629,357139 - DEFVAR_KBOARD ("input-decode-map",\111658,358598 - DEFVAR_LISP ("function-key-map",\111675,359386 - DEFVAR_LISP ("key-translation-map",\111683,359802 - DEFVAR_LISP ("deferred-action-list",\111689,360146 - DEFVAR_LISP ("deferred-action-function",\111694,360394 - DEFVAR_LISP ("delayed-warnings-list",\111700,360693 - DEFVAR_LISP ("timer-list",\111708,361101 - DEFVAR_LISP ("timer-idle-list",\111712,361253 - DEFVAR_LISP ("input-method-function",\111716,361416 - DEFVAR_LISP ("input-method-previous-message",\111737,362385 - DEFVAR_LISP ("show-help-function",\111744,362746 - DEFVAR_LISP ("disable-point-adjustment",\111749,362978 - DEFVAR_LISP ("global-disable-point-adjustment",\111761,363528 - DEFVAR_LISP ("minibuffer-message-timeout",\111770,363894 - DEFVAR_LISP ("throw-on-input",\111775,364172 - DEFVAR_LISP ("command-error-function",\111781,364423 - DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364910 - DEFVAR_LISP ("select-active-regions",\111798,365237 - DEFVAR_LISP ("saved-region-selection",\111807,365629 - DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366014 - DEFVAR_LISP ("debug-on-event",\111825,366555 +make_lispy_movement 6104,183531 +make_lispy_switch_frame 6131,184262 +make_lispy_focus_in 6137,184369 +make_lispy_focus_out 6145,184495 +parse_modifiers_uncached 6163,184945 +#define SINGLE_LETTER_MOD(6185,185465 +#undef SINGLE_LETTER_MOD6212,185906 +#define MULTI_LETTER_MOD(6214,185932 +#undef MULTI_LETTER_MOD6231,186400 +apply_modifiers_uncached 6273,187574 +static const char *const modifier_names[modifier_names6319,189193 +#define NUM_MOD_NAMES 6325,189399 +static Lisp_Object modifier_symbols;6327,189449 +lispy_modifier_list 6331,189586 +#define KEY_TO_CHAR(6353,190252 +parse_modifiers 6356,190328 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,6399,191517 +DEFUN ("internal-event-symbol-parse-modifiers", Fevent_symbol_parse_modifiers,event-symbol-parse-modifiers6399,191517 +apply_modifiers 6422,192391 +reorder_modifiers 6491,194720 +modify_event_symbol 6536,196528 +DEFUN ("event-convert-list", Fevent_convert_list,6628,199244 +DEFUN ("event-convert-list", Fevent_convert_list,event-convert-list6628,199244 +parse_solitary_modifier 6695,201135 +#define SINGLE_LETTER_MOD(6701,201258 +#define MULTI_LETTER_MOD(6705,201343 +#undef SINGLE_LETTER_MOD6763,202641 +#undef MULTI_LETTER_MOD6764,202666 +lucid_event_type_list_p 6775,202889 +get_input_pending 6814,203960 +record_asynch_buffer_change 6834,204579 +gobble_input 6872,205702 +tty_read_avail_input 6967,208310 +handle_async_input 7149,214039 +process_pending_signals 7165,214359 +unblock_input_to 7177,214645 +unblock_input 7200,215277 +totally_unblock_input 7209,215445 +handle_input_available_signal 7217,215529 +deliver_input_available_signal 7226,215700 +struct user_signal_info7235,215865 + int sig;7238,215915 + char *name;name7241,215956 + int npending;7244,216007 + struct user_signal_info *next;next7246,216024 +static struct user_signal_info *user_signals user_signals7250,216090 +add_user_signal 7253,216149 +handle_user_signal 7275,216598 +deliver_user_signal 7316,217558 +find_user_signal_name 7322,217659 +store_user_signal_events 7334,217841 +static void menu_bar_item 7362,218341 +static Lisp_Object menu_bar_one_keymap_changed_items;7363,218416 +static Lisp_Object menu_bar_items_vector;7368,218630 +static int menu_bar_items_index;7369,218672 +static const char *separator_names[separator_names7372,218707 +menu_separator_name_p 7393,219148 +menu_bar_items 7426,219852 +Lisp_Object item_properties;7568,224603 +menu_bar_item 7571,224645 +menu_item_eval_property_1 7647,227175 +eval_dyn 7658,227465 +menu_item_eval_property 7666,227675 +parse_menu_item 7686,228341 +static Lisp_Object tool_bar_items_vector;7965,236336 +static Lisp_Object tool_bar_item_properties;7970,236510 +static int ntool_bar_items;7974,236606 +static void init_tool_bar_items 7978,236664 +static void process_tool_bar_item 7979,236711 +static bool parse_tool_bar_item 7981,236801 +static void append_tool_bar_item 7982,236861 +tool_bar_items 7990,237083 +process_tool_bar_item 8075,239892 +#define PROP(8112,240969 +set_prop 8114,241038 +parse_tool_bar_item 8167,242453 +#undef PROP8379,248844 +init_tool_bar_items 8387,248969 +append_tool_bar_item 8401,249261 +read_char_x_menu_prompt 8443,250771 +read_char_minibuf_menu_prompt 8503,252445 +#define PUSH_C_STR(8527,253014 +follow_key 8726,258553 +active_maps 8733,258695 +typedef struct keyremap8742,259021 + Lisp_Object parent;8745,259107 + Lisp_Object map;8748,259224 + int start,8753,259446 + int start, end;8753,259446 +} keyremap;8754,259464 +access_keymap_keyremap 8764,259808 +keyremap_step 8811,261450 +test_undefined 8867,262934 +read_key_sequence 8916,264861 +read_key_sequence_vs 9826,295821 +DEFUN ("read-key-sequence", Fread_key_sequence,9885,297294 +DEFUN ("read-key-sequence", Fread_key_sequence,read-key-sequence9885,297294 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,9938,299982 +DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector,read-key-sequence-vector9938,299982 +detect_input_pending 9950,300488 +detect_input_pending_ignore_squeezables 9959,300654 +detect_input_pending_run_timers 9967,300870 +clear_input_pending 9985,301362 +requeued_events_pending_p 9997,301732 +DEFUN ("input-pending-p", Finput_pending_p,10002,301813 +DEFUN ("input-pending-p", Finput_pending_p,input-pending-p10002,301813 +DEFUN ("recent-keys", Frecent_keys,10024,302596 +DEFUN ("recent-keys", Frecent_keys,recent-keys10024,302596 +DEFUN ("this-command-keys", Fthis_command_keys,10055,303517 +DEFUN ("this-command-keys", Fthis_command_keys,this-command-keys10055,303517 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,10068,303958 +DEFUN ("this-command-keys-vector", Fthis_command_keys_vector,this-command-keys-vector10068,303958 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,10080,304380 +DEFUN ("this-single-command-keys", Fthis_single_command_keys,this-single-command-keys10080,304380 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,10096,304955 +DEFUN ("this-single-command-raw-keys", Fthis_single_command_raw_keys,this-single-command-raw-keys10096,304955 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,10109,305495 +DEFUN ("reset-this-command-lengths", Freset_this_command_lengths,reset-this-command-lengths10109,305495 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,10136,306510 +DEFUN ("clear-this-command-keys", Fclear_this_command_keys,clear-this-command-keys10136,306510 +DEFUN ("recursion-depth", Frecursion_depth,10158,307069 +DEFUN ("recursion-depth", Frecursion_depth,recursion-depth10158,307069 +DEFUN ("open-dribble-file", Fopen_dribble_file,10169,307406 +DEFUN ("open-dribble-file", Fopen_dribble_file,open-dribble-file10169,307406 +DEFUN ("discard-input", Fdiscard_input,10203,308447 +DEFUN ("discard-input", Fdiscard_input,discard-input10203,308447 +DEFUN ("suspend-emacs", Fsuspend_emacs,10225,308949 +DEFUN ("suspend-emacs", Fsuspend_emacs,suspend-emacs10225,308949 +stuff_buffered_input 10285,311045 +set_waiting_for_input 10323,312016 +clear_waiting_for_input 10337,312390 +handle_interrupt_signal 10351,312754 +deliver_interrupt_signal 10378,313642 +static int volatile force_quit_count;10387,313932 +handle_interrupt 10401,314414 +quit_throw_to_read_char 10541,318711 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,10562,319288 +DEFUN ("set-input-interrupt-mode", Fset_input_interrupt_mode,set-input-interrupt-mode10562,319288 +DEFUN ("set-output-flow-control", Fset_output_flow_control,10609,320516 +DEFUN ("set-output-flow-control", Fset_output_flow_control,set-output-flow-control10609,320516 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,10643,321432 +DEFUN ("set-input-meta-mode", Fset_input_meta_mode,set-input-meta-mode10643,321432 +DEFUN ("set-quit-char", Fset_quit_char,10694,322706 +DEFUN ("set-quit-char", Fset_quit_char,set-quit-char10694,322706 +DEFUN ("set-input-mode", Fset_input_mode,10729,323570 +DEFUN ("set-input-mode", Fset_input_mode,set-input-mode10729,323570 +DEFUN ("current-input-mode", Fcurrent_input_mode,10750,324459 +DEFUN ("current-input-mode", Fcurrent_input_mode,current-input-mode10750,324459 +DEFUN ("posn-at-x-y", Fposn_at_x_y,10787,325837 +DEFUN ("posn-at-x-y", Fposn_at_x_y,posn-at-x-y10787,325837 +DEFUN ("posn-at-point", Fposn_at_point,10824,327060 +DEFUN ("posn-at-point", Fposn_at_point,posn-at-point10824,327060 +init_kboard 10861,328214 +allocate_kboard 10893,329284 +wipe_kboard 10909,329637 +delete_kboard 10917,329751 +init_keyboard 10942,330281 +struct event_head11021,332696 + short var;11023,332716 + short kind;11024,332729 +static const struct event_head head_table[head_table11027,332747 +syms_of_keyboard 11045,333577 + DEFVAR_LISP ("internal--top-level-message"11058,333972 + DEFVAR_LISP ("last-command-event"11312,342173 + DEFVAR_LISP ("last-nonmenu-event"11315,342297 + DEFVAR_LISP ("last-input-event"11321,342636 + DEFVAR_LISP ("unread-command-events"11324,342730 + DEFVAR_LISP ("unread-post-input-method-events"11332,343190 + DEFVAR_LISP ("unread-input-method-events"11338,343529 + DEFVAR_LISP ("meta-prefix-char"11346,343898 + DEFVAR_KBOARD ("last-command"11351,344106 + DEFVAR_KBOARD ("real-last-command"11368,344787 + DEFVAR_KBOARD ("last-repeatable-command"11372,344973 + DEFVAR_LISP ("this-command"11378,345261 + DEFVAR_LISP ("real-this-command"11384,345498 + DEFVAR_LISP ("this-command-keys-shift-translated"11388,345680 + DEFVAR_LISP ("this-original-command"11396,346123 + DEFVAR_INT ("auto-save-interval"11403,346520 + DEFVAR_LISP ("auto-save-timeout"11408,346734 + DEFVAR_LISP ("echo-keystrokes"11415,347079 + DEFVAR_INT ("polling-period"11421,347350 + DEFVAR_LISP ("double-click-time"11428,347693 + DEFVAR_INT ("double-click-fuzz"11435,348029 + DEFVAR_INT ("num-input-keys"11446,348519 + DEFVAR_INT ("num-nonmacro-input-events"11452,348794 + DEFVAR_LISP ("last-event-frame"11457,349032 + DEFVAR_LISP ("tty-erase-char"11463,349311 + DEFVAR_LISP ("help-char"11466,349434 + DEFVAR_LISP ("help-event-list"11472,349717 + DEFVAR_LISP ("help-form"11477,349928 + DEFVAR_LISP ("prefix-help-command"11483,350176 + DEFVAR_LISP ("top-level"11489,350454 + DEFVAR_KBOARD ("keyboard-translate-table"11495,350675 + DEFVAR_BOOL ("cannot-suspend"11511,351488 + DEFVAR_BOOL ("menu-prompting"11516,351715 + DEFVAR_LISP ("menu-prompt-more-char"11526,352145 + DEFVAR_INT ("extra-keyboard-modifiers"11531,352391 + DEFVAR_LISP ("deactivate-mark"11545,353117 + DEFVAR_LISP ("pre-command-hook"11553,353486 + DEFVAR_LISP ("post-command-hook"11560,353841 + DEFVAR_LISP ("echo-area-clear-hook"11568,354204 + DEFVAR_LISP ("lucid-menu-bar-dirty-flag"11574,354419 + DEFVAR_LISP ("menu-bar-final-items"11578,354622 + DEFVAR_LISP ("tool-bar-separator-image-expression"11583,354872 + DEFVAR_KBOARD ("overriding-terminal-local-map"11589,355230 + DEFVAR_LISP ("overriding-local-map"11598,355652 + DEFVAR_LISP ("overriding-local-map-menu-flag"11607,356103 + DEFVAR_LISP ("special-event-map"11613,356442 + DEFVAR_LISP ("track-mouse"11617,356630 + DEFVAR_KBOARD ("system-key-alist"11620,356757 + DEFVAR_KBOARD ("local-function-key-map"11629,357138 + DEFVAR_KBOARD ("input-decode-map"11658,358597 + DEFVAR_LISP ("function-key-map"11675,359385 + DEFVAR_LISP ("key-translation-map"11683,359801 + DEFVAR_LISP ("deferred-action-list"11689,360145 + DEFVAR_LISP ("deferred-action-function"11694,360393 + DEFVAR_LISP ("delayed-warnings-list"11700,360692 + DEFVAR_LISP ("timer-list"11708,361100 + DEFVAR_LISP ("timer-idle-list"11712,361252 + DEFVAR_LISP ("input-method-function"11716,361415 + DEFVAR_LISP ("input-method-previous-message"11737,362384 + DEFVAR_LISP ("show-help-function"11744,362745 + DEFVAR_LISP ("disable-point-adjustment"11749,362977 + DEFVAR_LISP ("global-disable-point-adjustment"11761,363527 + DEFVAR_LISP ("minibuffer-message-timeout"11770,363893 + DEFVAR_LISP ("throw-on-input"11775,364171 + DEFVAR_LISP ("command-error-function"11781,364422 + DEFVAR_LISP ("enable-disabled-menus-and-buttons"11790,364909 + DEFVAR_LISP ("select-active-regions"11798,365236 + DEFVAR_LISP ("saved-region-selection"11807,365628 + DEFVAR_LISP ("selection-inhibit-update-commands"11815,366013 + DEFVAR_LISP ("debug-on-event"11825,366554 +keys_of_keyboard 11841,367115 +mark_kboards 11916,370434 + DEFVAR_LISP ("internal--top-level-message",\111058,333972 + DEFVAR_LISP ("last-command-event",\111312,342173 + DEFVAR_LISP ("last-nonmenu-event",\111315,342297 + DEFVAR_LISP ("last-input-event",\111321,342636 + DEFVAR_LISP ("unread-command-events",\111324,342730 + DEFVAR_LISP ("unread-post-input-method-events",\111332,343190 + DEFVAR_LISP ("unread-input-method-events",\111338,343529 + DEFVAR_LISP ("meta-prefix-char",\111346,343898 + DEFVAR_KBOARD ("last-command",\111351,344106 + DEFVAR_KBOARD ("real-last-command",\111368,344787 + DEFVAR_KBOARD ("last-repeatable-command",\111372,344973 + DEFVAR_LISP ("this-command",\111378,345261 + DEFVAR_LISP ("real-this-command",\111384,345498 + DEFVAR_LISP ("this-command-keys-shift-translated",\111388,345680 + DEFVAR_LISP ("this-original-command",\111396,346123 + DEFVAR_INT ("auto-save-interval",\111403,346520 + DEFVAR_LISP ("auto-save-timeout",\111408,346734 + DEFVAR_LISP ("echo-keystrokes",\111415,347079 + DEFVAR_INT ("polling-period",\111421,347350 + DEFVAR_LISP ("double-click-time",\111428,347693 + DEFVAR_INT ("double-click-fuzz",\111435,348029 + DEFVAR_INT ("num-input-keys",\111446,348519 + DEFVAR_INT ("num-nonmacro-input-events",\111452,348794 + DEFVAR_LISP ("last-event-frame",\111457,349032 + DEFVAR_LISP ("tty-erase-char",\111463,349311 + DEFVAR_LISP ("help-char",\111466,349434 + DEFVAR_LISP ("help-event-list",\111472,349717 + DEFVAR_LISP ("help-form",\111477,349928 + DEFVAR_LISP ("prefix-help-command",\111483,350176 + DEFVAR_LISP ("top-level",\111489,350454 + DEFVAR_KBOARD ("keyboard-translate-table",\111495,350675 + DEFVAR_BOOL ("cannot-suspend",\111511,351488 + DEFVAR_BOOL ("menu-prompting",\111516,351715 + DEFVAR_LISP ("menu-prompt-more-char",\111526,352145 + DEFVAR_INT ("extra-keyboard-modifiers",\111531,352391 + DEFVAR_LISP ("deactivate-mark",\111545,353117 + DEFVAR_LISP ("pre-command-hook",\111553,353486 + DEFVAR_LISP ("post-command-hook",\111560,353841 + DEFVAR_LISP ("echo-area-clear-hook",\111568,354204 + DEFVAR_LISP ("lucid-menu-bar-dirty-flag",\111574,354419 + DEFVAR_LISP ("menu-bar-final-items",\111578,354622 + DEFVAR_LISP ("tool-bar-separator-image-expression",\111583,354872 + DEFVAR_KBOARD ("overriding-terminal-local-map",\111589,355230 + DEFVAR_LISP ("overriding-local-map",\111598,355652 + DEFVAR_LISP ("overriding-local-map-menu-flag",\111607,356103 + DEFVAR_LISP ("special-event-map",\111613,356442 + DEFVAR_LISP ("track-mouse",\111617,356630 + DEFVAR_KBOARD ("system-key-alist",\111620,356757 + DEFVAR_KBOARD ("local-function-key-map",\111629,357138 + DEFVAR_KBOARD ("input-decode-map",\111658,358597 + DEFVAR_LISP ("function-key-map",\111675,359385 + DEFVAR_LISP ("key-translation-map",\111683,359801 + DEFVAR_LISP ("deferred-action-list",\111689,360145 + DEFVAR_LISP ("deferred-action-function",\111694,360393 + DEFVAR_LISP ("delayed-warnings-list",\111700,360692 + DEFVAR_LISP ("timer-list",\111708,361100 + DEFVAR_LISP ("timer-idle-list",\111712,361252 + DEFVAR_LISP ("input-method-function",\111716,361415 + DEFVAR_LISP ("input-method-previous-message",\111737,362384 + DEFVAR_LISP ("show-help-function",\111744,362745 + DEFVAR_LISP ("disable-point-adjustment",\111749,362977 + DEFVAR_LISP ("global-disable-point-adjustment",\111761,363527 + DEFVAR_LISP ("minibuffer-message-timeout",\111770,363893 + DEFVAR_LISP ("throw-on-input",\111775,364171 + DEFVAR_LISP ("command-error-function",\111781,364422 + DEFVAR_LISP ("enable-disabled-menus-and-buttons",\111790,364909 + DEFVAR_LISP ("select-active-regions",\111798,365236 + DEFVAR_LISP ("saved-region-selection",\111807,365628 + DEFVAR_LISP ("selection-inhibit-update-commands",\111815,366013 + DEFVAR_LISP ("debug-on-event",\111825,366554 c-src/emacs/src/lisp.h,41391 #define EMACS_LISP_H22,801 @@ -3253,11 +3249,11 @@ main(37,571 D(D::D43,659 int x;D::x44,694 -el-src/TAGTEST.EL,179 -(foo::defmumble bletch 1,0 -(defun foo==bar foo==bar2,33 -(defalias 'pending-delete-mode pending-delete-mode6,149 -(defalias (quote explicitly-quoted-pending-delete-mode)9,222 +el-src/TAGTEST.EL,181 +(foo::defmumble bletch 3,33 +(defun foo==bar foo==bar4,66 +(defalias 'pending-delete-mode pending-delete-mode8,182 +(defalias (quote explicitly-quoted-pending-delete-mode)11,255 el-src/emacs/lisp/progmodes/etags.el,5188 (defvar tags-file-name 34,1035 @@ -4050,22 +4046,22 @@ ord_add_element(71,1867 ord_del_element(85,2344 ord_disjoint(100,2783 ord_intersect(108,2953 -ord_intersection(126,3552 -ord_intersection3(130,3691 -ord_intersection(150,4531 -ord_intersection4(154,4703 -ord_intersection(176,5664 -ord_intersection2(181,5812 -ord_member(200,6318 -ord_seteq(216,6683 -ord_setproduct(225,6971 -ord_subset(240,7377 -ord_subtract(257,7861 -ord_symdiff(265,8054 -ord_union(288,8887 -ord_union4(303,9352 -ord_union(324,10171 -ord_union_all(329,10313 +ord_intersection(126,3553 +ord_intersection3(130,3692 +ord_intersection(150,4533 +ord_intersection4(154,4705 +ord_intersection(176,5666 +ord_intersection2(181,5814 +ord_member(200,6320 +ord_seteq(216,6685 +ord_setproduct(225,6973 +ord_subset(240,7379 +ord_subtract(257,7863 +ord_symdiff(265,8056 +ord_union(288,8889 +ord_union4(303,9354 +ord_union(324,10173 +ord_union_all(329,10315 prol-src/natded.prolog,2319 expandmng(100,2879 @@ -4280,6 +4276,11 @@ module A9,57 alias_method ( :foo2,foo237,586 A::Constant Constant42,655 +rs-src/test.rs,52 +enum IpAddrKind 3,11 +fn test1(8,48 +fn main(12,88 + scm-src/test.scm,260 (define hello 1,0 (set! hello 3,32 @@ -4494,533 +4495,533 @@ tex-src/texinfo.tex,30627 \def\vritemindex #1{\vritemindex1068,35482 \def\tablez #1#2#3#4#5#6{\tablez1074,35631 \def\Edescription{\Edescription1077,35689 -\def\itemfont{\itemfont1082,35891 -\def\Etable{\Etable1090,36117 -\def\itemize{\itemize1103,36441 -\def\itemizezzz #1{\itemizezzz1105,36477 -\def\itemizey #1#2{\itemizey1110,36572 -\def#2{1119,36818 -\def\itemcontents{\itemcontents1120,36859 -\def\bullet{\bullet1123,36907 -\def\minus{\minus1124,36934 -\def\frenchspacing{\frenchspacing1128,37042 -\def\splitoff#1#2\endmark{\splitoff1134,37267 -\def\enumerate{\enumerate1140,37497 -\def\enumeratezzz #1{\enumeratezzz1141,37536 -\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37589 - \def\thearg{\thearg1146,37736 - \ifx\thearg\empty \def\thearg{\thearg1147,37755 -\def\numericenumerate{\numericenumerate1184,39089 -\def\lowercaseenumerate{\lowercaseenumerate1190,39219 -\def\uppercaseenumerate{\uppercaseenumerate1203,39566 -\def\startenumeration#1{\startenumeration1219,40056 -\def\alphaenumerate{\alphaenumerate1227,40238 -\def\capsenumerate{\capsenumerate1228,40273 -\def\Ealphaenumerate{\Ealphaenumerate1229,40307 -\def\Ecapsenumerate{\Ecapsenumerate1230,40341 -\def\itemizeitem{\itemizeitem1234,40421 -\def\newindex #1{\newindex1259,41278 -\def\defindex{\defindex1268,41567 -\def\newcodeindex #1{\newcodeindex1272,41675 -\def\defcodeindex{\defcodeindex1279,41935 -\def\synindex #1 #2 {\synindex1283,42115 -\def\syncodeindex #1 #2 {\syncodeindex1292,42455 -\def\doindex#1{\doindex1309,43134 -\def\singleindexer #1{\singleindexer1310,43193 -\def\docodeindex#1{\docodeindex1313,43305 -\def\singlecodeindexer #1{\singlecodeindexer1314,43372 -\def\indexdummies{\indexdummies1316,43430 -\def\_{\_1317,43450 -\def\w{\w1318,43478 -\def\bf{\bf1319,43505 -\def\rm{\rm1320,43534 -\def\sl{\sl1321,43563 -\def\sf{\sf1322,43592 -\def\tt{\tt1323,43620 -\def\gtr{\gtr1324,43648 -\def\less{\less1325,43678 -\def\hat{\hat1326,43710 -\def\char{\char1327,43740 -\def\TeX{\TeX1328,43772 -\def\dots{\dots1329,43802 -\def\copyright{\copyright1330,43835 -\def\tclose##1{\tclose1331,43878 -\def\code##1{\code1332,43923 -\def\samp##1{\samp1333,43964 -\def\t##1{\t1334,44005 -\def\r##1{\r1335,44040 -\def\i##1{\i1336,44075 -\def\b##1{\b1337,44110 -\def\cite##1{\cite1338,44145 -\def\key##1{\key1339,44186 -\def\file##1{\file1340,44225 -\def\var##1{\var1341,44266 -\def\kbd##1{\kbd1342,44305 -\def\indexdummyfont#1{\indexdummyfont1347,44461 -\def\indexdummytex{\indexdummytex1348,44487 -\def\indexdummydots{\indexdummydots1349,44511 -\def\indexnofonts{\indexnofonts1351,44537 -\let\w=\indexdummyfontdummyfont1352,44557 -\let\t=\indexdummyfontdummyfont1353,44580 -\let\r=\indexdummyfontdummyfont1354,44603 -\let\i=\indexdummyfontdummyfont1355,44626 -\let\b=\indexdummyfontdummyfont1356,44649 -\let\emph=\indexdummyfontdummyfont1357,44672 -\let\strong=\indexdummyfontdummyfont1358,44698 -\let\cite=\indexdummyfont=\indexdummyfont1359,44726 -\let\sc=\indexdummyfontdummyfont1360,44752 -\let\tclose=\indexdummyfontdummyfont1364,44924 -\let\code=\indexdummyfontdummyfont1365,44952 -\let\file=\indexdummyfontdummyfont1366,44978 -\let\samp=\indexdummyfontdummyfont1367,45004 -\let\kbd=\indexdummyfontdummyfont1368,45030 -\let\key=\indexdummyfontdummyfont1369,45055 -\let\var=\indexdummyfontdummyfont1370,45080 -\let\TeX=\indexdummytexdummytex1371,45105 -\let\dots=\indexdummydotsdummydots1372,45129 -\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45381 -\def\doind #1#2{\doind1384,45437 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45480 -\def\rawbackslashxx{\rawbackslashxx1389,45620 -{\indexnofontsnofonts1394,45882 -\def\dosubind #1#2#3{\dosubind1405,46193 -{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46241 -\def\rawbackslashxx{\rawbackslashxx1410,46345 -{\indexnofontsnofonts1414,46499 -\def\findex {\findex1443,47430 -\def\kindex {\kindex1444,47453 -\def\cindex {\cindex1445,47476 -\def\vindex {\vindex1446,47499 -\def\tindex {\tindex1447,47522 -\def\pindex {\pindex1448,47545 -\def\cindexsub {\cindexsub1450,47569 -\def\printindex{\printindex1462,47896 -\def\doprintindex#1{\doprintindex1464,47937 - \def\indexbackslash{\indexbackslash1481,48422 - \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48461 -\def\initial #1{\initial1517,49533 -\def\entry #1#2{\entry1523,49740 - \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50387 -\def\indexdotfill{\indexdotfill1549,50715 -\def\primary #1{\primary1552,50821 -\def\secondary #1#2{\secondary1556,50903 -\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50985 -\newbox\partialpageialpage1566,51158 -\def\begindoublecolumns{\begindoublecolumns1572,51316 - \output={\global\setbox\partialpage=ialpage=1573,51352 -\def\enddoublecolumns{\enddoublecolumns1577,51540 -\def\doublecolumnout{\doublecolumnout1580,51625 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51694 -\def\pagesofar{\pagesofar1584,51872 -\def\balancecolumns{\balancecolumns1588,52109 - \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52280 - \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52541 -\newcount \appendixno \appendixno = `\@no1627,53446 -\def\appendixletter{\appendixletter1628,53487 -\def\opencontents{\opencontents1632,53590 -\def\thischapter{\thischapter1637,53771 -\def\seccheck#1{\seccheck1638,53809 -\def\chapternofonts{\chapternofonts1643,53913 -\def\result{\result1646,53988 -\def\equiv{\equiv1647,54023 -\def\expansion{\expansion1648,54056 -\def\print{\print1649,54097 -\def\TeX{\TeX1650,54130 -\def\dots{\dots1651,54159 -\def\copyright{\copyright1652,54190 -\def\tt{\tt1653,54231 -\def\bf{\bf1654,54258 -\def\w{\w1655,54286 -\def\less{\less1656,54311 -\def\gtr{\gtr1657,54342 -\def\hat{\hat1658,54371 -\def\char{\char1659,54400 -\def\tclose##1{\tclose1660,54431 -\def\code##1{\code1661,54475 -\def\samp##1{\samp1662,54515 -\def\r##1{\r1663,54555 -\def\b##1{\b1664,54589 -\def\key##1{\key1665,54623 -\def\file##1{\file1666,54661 -\def\kbd##1{\kbd1667,54701 -\def\i##1{\i1669,54809 -\def\cite##1{\cite1670,54843 -\def\var##1{\var1671,54883 -\def\emph##1{\emph1672,54921 -\def\dfn##1{\dfn1673,54961 -\def\thischaptername{\thischaptername1676,55002 -\outer\def\chapter{\chapter1677,55041 -\def\chapterzzz #1{\chapterzzz1678,55082 -{\chapternofonts%nofonts%1687,55478 -\global\let\section = \numberedsec=1692,55631 -\global\let\subsection = \numberedsubsec=1693,55666 -\global\let\subsubsection = \numberedsubsubsec=1694,55707 -\outer\def\appendix{\appendix1697,55758 -\def\appendixzzz #1{\appendixzzz1698,55801 -\global\advance \appendixno by 1 \message{no1700,55878 -\chapmacro {#1}{Appendix \appendixletter}letter1701,55947 -\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56040 -{\chapternofonts%nofonts%1705,56112 - {#1}{Appendix \appendixletter}letter1707,56168 -\appendixnoderef %noderef1710,56268 -\global\let\section = \appendixsec=1711,56287 -\global\let\subsection = \appendixsubsec=1712,56322 -\global\let\subsubsection = \appendixsubsubsec=1713,56363 -\outer\def\top{\top1716,56414 -\outer\def\unnumbered{\unnumbered1717,56454 -\def\unnumberedzzz #1{\unnumberedzzz1718,56501 -{\chapternofonts%nofonts%1722,56664 -\global\let\section = \unnumberedsec=1727,56814 -\global\let\subsection = \unnumberedsubsec=1728,56851 -\global\let\subsubsection = \unnumberedsubsubsec=1729,56894 -\outer\def\numberedsec{\numberedsec1732,56947 -\def\seczzz #1{\seczzz1733,56988 -{\chapternofonts%nofonts%1736,57144 -\outer\def\appendixsection{\appendixsection1745,57330 -\outer\def\appendixsec{\appendixsec1746,57387 -\def\appendixsectionzzz #1{\appendixsectionzzz1747,57440 -\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57552 -{\chapternofonts%nofonts%1750,57620 -{#1}{\appendixletter}letter1752,57676 -\appendixnoderef %noderef1755,57776 -\outer\def\unnumberedsec{\unnumberedsec1759,57816 -\def\unnumberedseczzz #1{\unnumberedseczzz1760,57869 -{\chapternofonts%nofonts%1762,57964 -\outer\def\numberedsubsec{\numberedsubsec1770,58132 -\def\numberedsubseczzz #1{\numberedsubseczzz1771,58187 -{\chapternofonts%nofonts%1774,58366 -\outer\def\appendixsubsec{\appendixsubsec1783,58570 -\def\appendixsubseczzz #1{\appendixsubseczzz1784,58625 -\subsecheading {#1}{\appendixletter}letter1786,58747 -{\chapternofonts%nofonts%1787,58812 -{#1}{\appendixletter}letter1789,58871 -\appendixnoderef %noderef1792,58986 -\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59026 -\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59085 -{\chapternofonts%nofonts%1799,59186 -\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59357 -\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59418 -{\chapternofonts%nofonts%1812,59615 -\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59848 -\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59909 - {\appendixletter}letter1827,60048 -{\chapternofonts%nofonts%1828,60114 - {\appendixletter}letter1830,60179 -\appendixnoderef %noderef1834,60313 -\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60353 -\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60418 -{\chapternofonts%nofonts%1841,60525 -\def\infotop{\infotop1851,60854 -\def\infounnumbered{\infounnumbered1852,60892 -\def\infounnumberedsec{\infounnumberedsec1853,60937 -\def\infounnumberedsubsec{\infounnumberedsubsec1854,60988 -\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61045 -\def\infoappendix{\infoappendix1857,61109 -\def\infoappendixsec{\infoappendixsec1858,61150 -\def\infoappendixsubsec{\infoappendixsubsec1859,61197 -\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61250 -\def\infochapter{\infochapter1862,61310 -\def\infosection{\infosection1863,61349 -\def\infosubsection{\infosubsection1864,61388 -\def\infosubsubsection{\infosubsubsection1865,61433 -\global\let\section = \numberedsec=1870,61670 -\global\let\subsection = \numberedsubsec=1871,61705 -\global\let\subsubsection = \numberedsubsubsec=1872,61746 -\def\majorheading{\majorheading1886,62253 -\def\majorheadingzzz #1{\majorheadingzzz1887,62298 -\def\chapheading{\chapheading1893,62531 -\def\chapheadingzzz #1{\chapheadingzzz1894,62574 -\def\heading{\heading1899,62769 -\def\subheading{\subheading1901,62806 -\def\subsubheading{\subsubheading1903,62849 -\def\dobreak#1#2{\dobreak1910,63126 -\def\setchapterstyle #1 {\setchapterstyle1912,63204 -\def\chapbreak{\chapbreak1919,63459 -\def\chappager{\chappager1920,63509 -\def\chapoddpage{\chapoddpage1921,63547 -\def\setchapternewpage #1 {\setchapternewpage1923,63626 -\def\CHAPPAGoff{\CHAPPAGoff1925,63683 -\def\CHAPPAGon{\CHAPPAGon1929,63777 -\global\def\HEADINGSon{\HEADINGSon1932,63868 -\def\CHAPPAGodd{\CHAPPAGodd1934,63910 -\global\def\HEADINGSon{\HEADINGSon1937,64006 -\def\CHAPFplain{\CHAPFplain1941,64060 -\def\chfplain #1#2{\chfplain1945,64152 -\def\unnchfplain #1{\unnchfplain1956,64375 -\def\unnchfopen #1{\unnchfopen1964,64604 -\def\chfopen #1#2{\chfopen1970,64812 -\def\CHAPFopen{\CHAPFopen1975,64956 -\def\subsecheadingbreak{\subsecheadingbreak1982,65174 -\def\secheadingbreak{\secheadingbreak1985,65303 -\def\secheading #1#2#3{\secheading1993,65585 -\def\plainsecheading #1{\plainsecheading1994,65641 -\def\secheadingi #1{\secheadingi1995,65684 -\def\subsecheading #1#2#3#4{\subsecheading2006,66052 -\def\subsecheadingi #1{\subsecheadingi2007,66119 -\def\subsubsecfonts{\subsubsecfonts2014,66416 -\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66539 -\def\subsubsecheadingi #1{\subsubsecheadingi2018,66617 -\def\startcontents#1{\startcontents2032,67089 - \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67362 -\outer\def\contents{\contents2049,67721 -\outer\def\summarycontents{\summarycontents2057,67865 - \def\secentry ##1##2##3##4{\secentry2067,68236 - \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68271 - \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68306 - \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68347 - \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68385 - \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68432 -\def\chapentry#1#2#3{\chapentry2085,68866 -\def\shortchapentry#1#2#3{\shortchapentry2088,68983 - {#2\labelspace #1}space2091,69093 -\def\unnumbchapentry#1#2{\unnumbchapentry2094,69147 -\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69194 -\def\secentry#1#2#3#4{\secentry2102,69358 -\def\unnumbsecentry#1#2{\unnumbsecentry2103,69417 -\def\subsecentry#1#2#3#4#5{\subsecentry2106,69478 -\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69548 -\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69622 - \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69656 -\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69707 -\def\dochapentry#1#2{\dochapentry2123,70081 -\def\dosecentry#1#2{\dosecentry2138,70686 -\def\dosubsecentry#1#2{\dosubsecentry2145,70864 -\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71049 -\def\labelspace{\labelspace2160,71300 -\def\dopageno#1{\dopageno2162,71335 -\def\doshortpageno#1{\doshortpageno2163,71361 -\def\chapentryfonts{\chapentryfonts2165,71393 -\def\secentryfonts{\secentryfonts2166,71428 -\def\point{\point2192,72387 -\def\result{\result2194,72408 -\def\expansion{\expansion2195,72481 -\def\print{\print2196,72552 -\def\equiv{\equiv2198,72619 -\def\error{\error2218,73392 -\def\tex{\tex2224,73621 -\def\@{\@2242,74004 -\gdef\sepspaces{\def {\ }}}\2265,74736 -\def\aboveenvbreak{\aboveenvbreak2268,74818 -\def\afterenvbreak{\afterenvbreak2272,74984 -\def\ctl{\ctl2286,75495 -\def\ctr{\ctr2287,75567 -\def\cbl{\cbl2288,75606 -\def\cbr{\cbr2289,75646 -\def\carttop{\carttop2290,75685 -\def\cartbot{\cartbot2293,75793 -\long\def\cartouche{\cartouche2299,75933 -\def\Ecartouche{\Ecartouche2326,76721 -\def\lisp{\lisp2338,76856 -\def\Elisp{\Elisp2348,77203 -\def\next##1{\next2360,77529 -\def\Eexample{\Eexample2364,77571 -\def\Esmallexample{\Esmallexample2367,77618 -\def\smalllispx{\smalllispx2373,77796 -\def\Esmalllisp{\Esmalllisp2383,78150 -\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78506 -\def\next##1{\next2397,78563 -\def\display{\display2401,78643 -\def\Edisplay{\Edisplay2410,78962 -\def\next##1{\next2422,79273 -\def\format{\format2426,79376 -\def\Eformat{\Eformat2434,79672 -\def\next##1{\next2437,79761 -\def\flushleft{\flushleft2441,79813 -\def\Eflushleft{\Eflushleft2451,80184 -\def\next##1{\next2454,80277 -\def\flushright{\flushright2456,80299 -\def\Eflushright{\Eflushright2466,80671 -\def\next##1{\next2470,80802 -\def\quotation{\quotation2474,80860 -\def\Equotation{\Equotation2480,81052 -\def\setdeffont #1 {\setdeffont2493,81450 -\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81496 -\newskip\defargsindent \defargsindent=50ptargsindent2496,81539 -\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81582 -\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81625 -\def\activeparens{\activeparens2503,81823 -\def\opnr{\opnr2529,83035 -\def\lbrb{\lbrb2530,83100 -\def\defname #1#2{\defname2536,83301 -\advance\dimen2 by -\defbodyindentbodyindent2540,83419 -\advance\dimen3 by -\defbodyindentbodyindent2542,83473 -\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83527 -\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83669 -\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83744 -\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84113 -\advance\leftskip by -\defbodyindentbodyindent2557,84247 -\exdentamount=\defbodyindentbodyindent2558,84284 -\def\defparsebody #1#2#3{\defparsebody2568,84643 -\def#1{2572,84827 -\def#2{2573,84863 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84935 -\exdentamount=\defbodyindentbodyindent2576,85009 -\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85113 -\def#1{2585,85274 -\def#2##1 {2586,85310 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85393 -\exdentamount=\defbodyindentbodyindent2589,85467 -\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85552 -\def#1{2596,85713 -\def#2##1 ##2 {2597,85749 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85849 -\exdentamount=\defbodyindentbodyindent2601,85923 -\def\defvarparsebody #1#2#3{\defvarparsebody2608,86194 -\def#1{2612,86381 -\def#2{2613,86417 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86476 -\exdentamount=\defbodyindentbodyindent2616,86550 -\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86641 -\def#1{2625,86800 -\def#2##1 {2626,86836 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86906 -\exdentamount=\defbodyindentbodyindent2629,86980 -\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87052 -\def#1{2636,87216 -\def#2##1 ##2 {2637,87252 -\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87339 -\exdentamount=\defbodyindentbodyindent2641,87413 -\def\defunargs #1{\defunargs2664,88173 -\def\deftypefunargs #1{\deftypefunargs2676,88555 -\def\deffn{\deffn2690,88937 -\def\deffnheader #1#2#3{\deffnheader2692,88994 -\begingroup\defname {name2693,89042 -\def\defun{\defun2699,89187 -\def\defunheader #1#2{\defunheader2701,89240 -\begingroup\defname {name2702,89315 -\defunargs {unargs2703,89351 -\def\deftypefun{\deftypefun2709,89499 -\def\deftypefunheader #1#2{\deftypefunheader2712,89621 -\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89730 -\begingroup\defname {name2716,89822 -\deftypefunargs {typefunargs2717,89868 -\def\deftypefn{\deftypefn2723,90039 -\def\deftypefnheader #1#2#3{\deftypefnheader2726,90188 -\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90324 -\begingroup\defname {name2730,90417 -\deftypefunargs {typefunargs2731,90457 -\def\defmac{\defmac2737,90578 -\def\defmacheader #1#2{\defmacheader2739,90635 -\begingroup\defname {name2740,90711 -\defunargs {unargs2741,90744 -\def\defspec{\defspec2747,90868 -\def\defspecheader #1#2{\defspecheader2749,90929 -\begingroup\defname {name2750,91006 -\defunargs {unargs2751,91046 -\def\deffnx #1 {\deffnx2758,91241 -\def\defunx #1 {\defunx2759,91298 -\def\defmacx #1 {\defmacx2760,91355 -\def\defspecx #1 {\defspecx2761,91414 -\def\deftypefnx #1 {\deftypefnx2762,91475 -\def\deftypeunx #1 {\deftypeunx2763,91540 -\def\defop #1 {\defop2769,91686 -\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91721 -\def\defopheader #1#2#3{\defopheader2772,91775 -\begingroup\defname {name2774,91864 -\defunargs {unargs2775,91910 -\def\defmethod{\defmethod2780,91971 -\def\defmethodheader #1#2#3{\defmethodheader2782,92044 -\begingroup\defname {name2784,92132 -\defunargs {unargs2785,92172 -\def\defcv #1 {\defcv2790,92246 -\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92281 -\def\defcvarheader #1#2#3{\defcvarheader2793,92340 -\begingroup\defname {name2795,92426 -\defvarargs {varargs2796,92472 -\def\defivar{\defivar2801,92545 -\def\defivarheader #1#2#3{\defivarheader2803,92608 -\begingroup\defname {name2805,92694 -\defvarargs {varargs2806,92745 -\def\defopx #1 {\defopx2812,92894 -\def\defmethodx #1 {\defmethodx2813,92951 -\def\defcvx #1 {\defcvx2814,93016 -\def\defivarx #1 {\defivarx2815,93073 -\def\defvarargs #1{\defvarargs2822,93344 -\def\defvr{\defvr2828,93488 -\def\defvrheader #1#2#3{\defvrheader2830,93543 -\begingroup\defname {name2831,93591 -\def\defvar{\defvar2835,93676 -\def\defvarheader #1#2{\defvarheader2837,93736 -\begingroup\defname {name2838,93807 -\defvarargs {varargs2839,93843 -\def\defopt{\defopt2844,93909 -\def\defoptheader #1#2{\defoptheader2846,93969 -\begingroup\defname {name2847,94040 -\defvarargs {varargs2848,94079 -\def\deftypevar{\deftypevar2853,94136 -\def\deftypevarheader #1#2{\deftypevarheader2856,94252 -\begingroup\defname {name2858,94335 -\def\deftypevr{\deftypevr2865,94509 -\def\deftypevrheader #1#2#3{\deftypevrheader2867,94580 -\begingroup\defname {name2868,94632 -\def\defvrx #1 {\defvrx2876,94869 -\def\defvarx #1 {\defvarx2877,94926 -\def\defoptx #1 {\defoptx2878,94985 -\def\deftypevarx #1 {\deftypevarx2879,95044 -\def\deftypevrx #1 {\deftypevrx2880,95111 -\def\deftpargs #1{\deftpargs2885,95260 -\def\deftp{\deftp2889,95340 -\def\deftpheader #1#2#3{\deftpheader2891,95395 -\begingroup\defname {name2892,95443 -\def\deftpx #1 {\deftpx2897,95602 -\def\setref#1{\setref2908,95923 -\def\unnumbsetref#1{\unnumbsetref2913,96037 -\def\appendixsetref#1{\appendixsetref2918,96144 -\def\pxref#1{\pxref2929,96555 -\def\xref#1{\xref2930,96591 -\def\ref#1{\ref2931,96626 -\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96656 -\def\printedmanual{\printedmanual2933,96699 -\def\printednodename{\printednodename2934,96737 -\def\printednodename{\printednodename2939,96862 -section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97495 -\refx{x2957,97573 -\def\dosetq #1#2{\dosetq2965,97793 -\def\internalsetq #1#2{\internalsetq2973,98051 -\def\Ypagenumber{\Ypagenumber2977,98152 -\def\Ytitle{\Ytitle2979,98178 -\def\Ynothing{\Ynothing2981,98205 -\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98222 -\def\Yappendixletterandtype{\Yappendixletterandtype2992,98538 -\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98568 -\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98623 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98727 -Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98798 - \def\linenumber{\linenumber3009,99137 -\def\refx#1#2{\refx3015,99321 -\def\xrdef #1#2{\xrdef3037,99947 -\def\readauxfile{\readauxfile3040,100032 -\def\supereject{\supereject3110,101813 -\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102498 -\def\openindices{\openindices3139,102684 -\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102909 -\parindent = \defaultparindentaultparindent3152,102961 -\def\smallbook{\smallbook3175,103685 -\global\def\Esmallexample{\Esmallexample3192,104112 -\def\afourpaper{\afourpaper3196,104203 -\def\finalout{\finalout3224,105011 -\def\normaldoublequote{\normaldoublequote3235,105272 -\def\normaltilde{\normaltilde3236,105298 -\def\normalcaret{\normalcaret3237,105318 -\def\normalunderscore{\normalunderscore3238,105338 -\def\normalverticalbar{\normalverticalbar3239,105363 -\def\normalless{\normalless3240,105389 -\def\normalgreater{\normalgreater3241,105408 -\def\normalplus{\normalplus3242,105430 -\def\ifusingtt#1#2{\ifusingtt3253,105922 -\def\activedoublequote{\activedoublequote3261,106250 -\def~{~3264,106336 -\def^{^3267,106397 -\def_{_3270,106436 -\def\_{\_3272,106510 -\def\lvvmode{\lvvmode3279,106847 -\def|{|3282,106897 -\def<{<3285,106960 -\def>{>3288,107017 -\def+{+3290,107055 -\def\turnoffactive{\turnoffactive3296,107216 -\global\def={=3307,107502 -\def\normalbackslash{\normalbackslash3321,107884 +\def\itemfont{\itemfont1082,35890 +\def\Etable{\Etable1090,36116 +\def\itemize{\itemize1103,36440 +\def\itemizezzz #1{\itemizezzz1105,36476 +\def\itemizey #1#2{\itemizey1110,36571 +\def#2{1119,36817 +\def\itemcontents{\itemcontents1120,36858 +\def\bullet{\bullet1123,36906 +\def\minus{\minus1124,36933 +\def\frenchspacing{\frenchspacing1128,37041 +\def\splitoff#1#2\endmark{\splitoff1134,37266 +\def\enumerate{\enumerate1140,37496 +\def\enumeratezzz #1{\enumeratezzz1141,37535 +\def\enumeratey #1 #2\endenumeratey{\enumeratey1142,37588 + \def\thearg{\thearg1146,37735 + \ifx\thearg\empty \def\thearg{\thearg1147,37754 +\def\numericenumerate{\numericenumerate1184,39088 +\def\lowercaseenumerate{\lowercaseenumerate1190,39218 +\def\uppercaseenumerate{\uppercaseenumerate1203,39565 +\def\startenumeration#1{\startenumeration1219,40055 +\def\alphaenumerate{\alphaenumerate1227,40237 +\def\capsenumerate{\capsenumerate1228,40272 +\def\Ealphaenumerate{\Ealphaenumerate1229,40306 +\def\Ecapsenumerate{\Ecapsenumerate1230,40340 +\def\itemizeitem{\itemizeitem1234,40420 +\def\newindex #1{\newindex1259,41277 +\def\defindex{\defindex1268,41566 +\def\newcodeindex #1{\newcodeindex1272,41674 +\def\defcodeindex{\defcodeindex1279,41934 +\def\synindex #1 #2 {\synindex1283,42114 +\def\syncodeindex #1 #2 {\syncodeindex1292,42454 +\def\doindex#1{\doindex1309,43133 +\def\singleindexer #1{\singleindexer1310,43192 +\def\docodeindex#1{\docodeindex1313,43304 +\def\singlecodeindexer #1{\singlecodeindexer1314,43371 +\def\indexdummies{\indexdummies1316,43429 +\def\_{\_1317,43449 +\def\w{\w1318,43477 +\def\bf{\bf1319,43504 +\def\rm{\rm1320,43533 +\def\sl{\sl1321,43562 +\def\sf{\sf1322,43591 +\def\tt{\tt1323,43619 +\def\gtr{\gtr1324,43647 +\def\less{\less1325,43677 +\def\hat{\hat1326,43709 +\def\char{\char1327,43739 +\def\TeX{\TeX1328,43771 +\def\dots{\dots1329,43801 +\def\copyright{\copyright1330,43834 +\def\tclose##1{\tclose1331,43877 +\def\code##1{\code1332,43922 +\def\samp##1{\samp1333,43963 +\def\t##1{\t1334,44004 +\def\r##1{\r1335,44039 +\def\i##1{\i1336,44074 +\def\b##1{\b1337,44109 +\def\cite##1{\cite1338,44144 +\def\key##1{\key1339,44185 +\def\file##1{\file1340,44224 +\def\var##1{\var1341,44265 +\def\kbd##1{\kbd1342,44304 +\def\indexdummyfont#1{\indexdummyfont1347,44460 +\def\indexdummytex{\indexdummytex1348,44486 +\def\indexdummydots{\indexdummydots1349,44510 +\def\indexnofonts{\indexnofonts1351,44536 +\let\w=\indexdummyfontdummyfont1352,44556 +\let\t=\indexdummyfontdummyfont1353,44579 +\let\r=\indexdummyfontdummyfont1354,44602 +\let\i=\indexdummyfontdummyfont1355,44625 +\let\b=\indexdummyfontdummyfont1356,44648 +\let\emph=\indexdummyfontdummyfont1357,44671 +\let\strong=\indexdummyfontdummyfont1358,44697 +\let\cite=\indexdummyfont=\indexdummyfont1359,44725 +\let\sc=\indexdummyfontdummyfont1360,44751 +\let\tclose=\indexdummyfontdummyfont1364,44923 +\let\code=\indexdummyfontdummyfont1365,44951 +\let\file=\indexdummyfontdummyfont1366,44977 +\let\samp=\indexdummyfontdummyfont1367,45003 +\let\kbd=\indexdummyfontdummyfont1368,45029 +\let\key=\indexdummyfontdummyfont1369,45054 +\let\var=\indexdummyfontdummyfont1370,45079 +\let\TeX=\indexdummytexdummytex1371,45104 +\let\dots=\indexdummydotsdummydots1372,45128 +\let\indexbackslash=0 %overridden during \printindex.backslash=01382,45380 +\def\doind #1#2{\doind1384,45436 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1386,45479 +\def\rawbackslashxx{\rawbackslashxx1389,45619 +{\indexnofontsnofonts1394,45881 +\def\dosubind #1#2#3{\dosubind1405,46192 +{\indexdummies % Must do this here, since \bf, etc expand at this stagedummies1407,46240 +\def\rawbackslashxx{\rawbackslashxx1410,46344 +{\indexnofontsnofonts1414,46498 +\def\findex {\findex1443,47429 +\def\kindex {\kindex1444,47452 +\def\cindex {\cindex1445,47475 +\def\vindex {\vindex1446,47498 +\def\tindex {\tindex1447,47521 +\def\pindex {\pindex1448,47544 +\def\cindexsub {\cindexsub1450,47568 +\def\printindex{\printindex1462,47895 +\def\doprintindex#1{\doprintindex1464,47936 + \def\indexbackslash{\indexbackslash1481,48421 + \indexfonts\rm \tolerance=9500 \advance\baselineskip -1ptfonts\rm1482,48460 +\def\initial #1{\initial1517,49532 +\def\entry #1#2{\entry1523,49739 + \null\nobreak\indexdotfill % Have leaders before the page number.dotfill1540,50386 +\def\indexdotfill{\indexdotfill1549,50714 +\def\primary #1{\primary1552,50820 +\def\secondary #1#2{\secondary1556,50902 +\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill #2\pardotfill1559,50984 +\newbox\partialpageialpage1566,51157 +\def\begindoublecolumns{\begindoublecolumns1572,51315 + \output={\global\setbox\partialpage=ialpage=1573,51351 +\def\enddoublecolumns{\enddoublecolumns1577,51539 +\def\doublecolumnout{\doublecolumnout1580,51624 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1581,51693 +\def\pagesofar{\pagesofar1584,51871 +\def\balancecolumns{\balancecolumns1588,52108 + \availdimen@=\pageheight \advance\availdimen@ by-\ht\partialpageialpage1594,52279 + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpageialpage1600,52540 +\newcount \appendixno \appendixno = `\@no1627,53445 +\def\appendixletter{\appendixletter1628,53486 +\def\opencontents{\opencontents1632,53589 +\def\thischapter{\thischapter1637,53770 +\def\seccheck#1{\seccheck1638,53808 +\def\chapternofonts{\chapternofonts1643,53912 +\def\result{\result1646,53987 +\def\equiv{\equiv1647,54022 +\def\expansion{\expansion1648,54055 +\def\print{\print1649,54096 +\def\TeX{\TeX1650,54129 +\def\dots{\dots1651,54158 +\def\copyright{\copyright1652,54189 +\def\tt{\tt1653,54230 +\def\bf{\bf1654,54257 +\def\w{\w1655,54285 +\def\less{\less1656,54310 +\def\gtr{\gtr1657,54341 +\def\hat{\hat1658,54370 +\def\char{\char1659,54399 +\def\tclose##1{\tclose1660,54430 +\def\code##1{\code1661,54474 +\def\samp##1{\samp1662,54514 +\def\r##1{\r1663,54554 +\def\b##1{\b1664,54588 +\def\key##1{\key1665,54622 +\def\file##1{\file1666,54660 +\def\kbd##1{\kbd1667,54700 +\def\i##1{\i1669,54808 +\def\cite##1{\cite1670,54842 +\def\var##1{\var1671,54882 +\def\emph##1{\emph1672,54920 +\def\dfn##1{\dfn1673,54960 +\def\thischaptername{\thischaptername1676,55001 +\outer\def\chapter{\chapter1677,55040 +\def\chapterzzz #1{\chapterzzz1678,55081 +{\chapternofonts%nofonts%1687,55477 +\global\let\section = \numberedsec=1692,55630 +\global\let\subsection = \numberedsubsec=1693,55665 +\global\let\subsubsection = \numberedsubsubsec=1694,55706 +\outer\def\appendix{\appendix1697,55757 +\def\appendixzzz #1{\appendixzzz1698,55800 +\global\advance \appendixno by 1 \message{no1700,55877 +\chapmacro {#1}{Appendix \appendixletter}letter1701,55946 +\xdef\thischapter{Appendix \appendixletter: \noexpand\thischaptername}letter:1704,56039 +{\chapternofonts%nofonts%1705,56111 + {#1}{Appendix \appendixletter}letter1707,56167 +\appendixnoderef %noderef1710,56267 +\global\let\section = \appendixsec=1711,56286 +\global\let\subsection = \appendixsubsec=1712,56321 +\global\let\subsubsection = \appendixsubsubsec=1713,56362 +\outer\def\top{\top1716,56413 +\outer\def\unnumbered{\unnumbered1717,56453 +\def\unnumberedzzz #1{\unnumberedzzz1718,56500 +{\chapternofonts%nofonts%1722,56663 +\global\let\section = \unnumberedsec=1727,56813 +\global\let\subsection = \unnumberedsubsec=1728,56850 +\global\let\subsubsection = \unnumberedsubsubsec=1729,56893 +\outer\def\numberedsec{\numberedsec1732,56946 +\def\seczzz #1{\seczzz1733,56987 +{\chapternofonts%nofonts%1736,57143 +\outer\def\appendixsection{\appendixsection1745,57329 +\outer\def\appendixsec{\appendixsec1746,57386 +\def\appendixsectionzzz #1{\appendixsectionzzz1747,57439 +\gdef\thissection{#1}\secheading {#1}{\appendixletter}letter1749,57551 +{\chapternofonts%nofonts%1750,57619 +{#1}{\appendixletter}letter1752,57675 +\appendixnoderef %noderef1755,57775 +\outer\def\unnumberedsec{\unnumberedsec1759,57815 +\def\unnumberedseczzz #1{\unnumberedseczzz1760,57868 +{\chapternofonts%nofonts%1762,57963 +\outer\def\numberedsubsec{\numberedsubsec1770,58131 +\def\numberedsubseczzz #1{\numberedsubseczzz1771,58186 +{\chapternofonts%nofonts%1774,58365 +\outer\def\appendixsubsec{\appendixsubsec1783,58569 +\def\appendixsubseczzz #1{\appendixsubseczzz1784,58624 +\subsecheading {#1}{\appendixletter}letter1786,58746 +{\chapternofonts%nofonts%1787,58811 +{#1}{\appendixletter}letter1789,58870 +\appendixnoderef %noderef1792,58985 +\outer\def\unnumberedsubsec{\unnumberedsubsec1796,59025 +\def\unnumberedsubseczzz #1{\unnumberedsubseczzz1797,59084 +{\chapternofonts%nofonts%1799,59185 +\outer\def\numberedsubsubsec{\numberedsubsubsec1807,59356 +\def\numberedsubsubseczzz #1{\numberedsubsubseczzz1808,59417 +{\chapternofonts%nofonts%1812,59614 +\outer\def\appendixsubsubsec{\appendixsubsubsec1823,59847 +\def\appendixsubsubseczzz #1{\appendixsubsubseczzz1824,59908 + {\appendixletter}letter1827,60047 +{\chapternofonts%nofonts%1828,60113 + {\appendixletter}letter1830,60178 +\appendixnoderef %noderef1834,60312 +\outer\def\unnumberedsubsubsec{\unnumberedsubsubsec1838,60352 +\def\unnumberedsubsubseczzz #1{\unnumberedsubsubseczzz1839,60417 +{\chapternofonts%nofonts%1841,60524 +\def\infotop{\infotop1851,60853 +\def\infounnumbered{\infounnumbered1852,60891 +\def\infounnumberedsec{\infounnumberedsec1853,60936 +\def\infounnumberedsubsec{\infounnumberedsubsec1854,60987 +\def\infounnumberedsubsubsec{\infounnumberedsubsubsec1855,61044 +\def\infoappendix{\infoappendix1857,61108 +\def\infoappendixsec{\infoappendixsec1858,61149 +\def\infoappendixsubsec{\infoappendixsubsec1859,61196 +\def\infoappendixsubsubsec{\infoappendixsubsubsec1860,61249 +\def\infochapter{\infochapter1862,61309 +\def\infosection{\infosection1863,61348 +\def\infosubsection{\infosubsection1864,61387 +\def\infosubsubsection{\infosubsubsection1865,61432 +\global\let\section = \numberedsec=1870,61669 +\global\let\subsection = \numberedsubsec=1871,61704 +\global\let\subsubsection = \numberedsubsubsec=1872,61745 +\def\majorheading{\majorheading1886,62252 +\def\majorheadingzzz #1{\majorheadingzzz1887,62297 +\def\chapheading{\chapheading1893,62530 +\def\chapheadingzzz #1{\chapheadingzzz1894,62573 +\def\heading{\heading1899,62768 +\def\subheading{\subheading1901,62805 +\def\subsubheading{\subsubheading1903,62848 +\def\dobreak#1#2{\dobreak1910,63125 +\def\setchapterstyle #1 {\setchapterstyle1912,63203 +\def\chapbreak{\chapbreak1919,63458 +\def\chappager{\chappager1920,63508 +\def\chapoddpage{\chapoddpage1921,63546 +\def\setchapternewpage #1 {\setchapternewpage1923,63625 +\def\CHAPPAGoff{\CHAPPAGoff1925,63682 +\def\CHAPPAGon{\CHAPPAGon1929,63776 +\global\def\HEADINGSon{\HEADINGSon1932,63867 +\def\CHAPPAGodd{\CHAPPAGodd1934,63909 +\global\def\HEADINGSon{\HEADINGSon1937,64005 +\def\CHAPFplain{\CHAPFplain1941,64059 +\def\chfplain #1#2{\chfplain1945,64151 +\def\unnchfplain #1{\unnchfplain1956,64374 +\def\unnchfopen #1{\unnchfopen1964,64603 +\def\chfopen #1#2{\chfopen1970,64811 +\def\CHAPFopen{\CHAPFopen1975,64955 +\def\subsecheadingbreak{\subsecheadingbreak1982,65173 +\def\secheadingbreak{\secheadingbreak1985,65302 +\def\secheading #1#2#3{\secheading1993,65584 +\def\plainsecheading #1{\plainsecheading1994,65640 +\def\secheadingi #1{\secheadingi1995,65683 +\def\subsecheading #1#2#3#4{\subsecheading2006,66051 +\def\subsecheadingi #1{\subsecheadingi2007,66118 +\def\subsubsecfonts{\subsubsecfonts2014,66415 +\def\subsubsecheading #1#2#3#4#5{\subsubsecheading2017,66538 +\def\subsubsecheadingi #1{\subsubsecheadingi2018,66616 +\def\startcontents#1{\startcontents2032,67088 + \unnumbchapmacro{#1}\def\thischapter{\thischapter2040,67361 +\outer\def\contents{\contents2049,67720 +\outer\def\summarycontents{\summarycontents2057,67864 + \def\secentry ##1##2##3##4{\secentry2067,68235 + \def\unnumbsecentry ##1##2{\unnumbsecentry2068,68270 + \def\subsecentry ##1##2##3##4##5{\subsecentry2069,68305 + \def\unnumbsubsecentry ##1##2{\unnumbsubsecentry2070,68346 + \def\subsubsecentry ##1##2##3##4##5##6{\subsubsecentry2071,68384 + \def\unnumbsubsubsecentry ##1##2{\unnumbsubsubsecentry2072,68431 +\def\chapentry#1#2#3{\chapentry2085,68865 +\def\shortchapentry#1#2#3{\shortchapentry2088,68982 + {#2\labelspace #1}space2091,69092 +\def\unnumbchapentry#1#2{\unnumbchapentry2094,69146 +\def\shortunnumberedentry#1#2{\shortunnumberedentry2095,69193 +\def\secentry#1#2#3#4{\secentry2102,69357 +\def\unnumbsecentry#1#2{\unnumbsecentry2103,69416 +\def\subsecentry#1#2#3#4#5{\subsecentry2106,69477 +\def\unnumbsubsecentry#1#2{\unnumbsubsecentry2107,69547 +\def\subsubsecentry#1#2#3#4#5#6{\subsubsecentry2110,69621 + \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}space2111,69655 +\def\unnumbsubsubsecentry#1#2{\unnumbsubsubsecentry2112,69706 +\def\dochapentry#1#2{\dochapentry2123,70080 +\def\dosecentry#1#2{\dosecentry2138,70685 +\def\dosubsecentry#1#2{\dosubsecentry2145,70863 +\def\dosubsubsecentry#1#2{\dosubsubsecentry2152,71048 +\def\labelspace{\labelspace2160,71299 +\def\dopageno#1{\dopageno2162,71334 +\def\doshortpageno#1{\doshortpageno2163,71360 +\def\chapentryfonts{\chapentryfonts2165,71392 +\def\secentryfonts{\secentryfonts2166,71427 +\def\point{\point2192,72386 +\def\result{\result2194,72407 +\def\expansion{\expansion2195,72480 +\def\print{\print2196,72551 +\def\equiv{\equiv2198,72618 +\def\error{\error2218,73391 +\def\tex{\tex2224,73620 +\def\@{\@2242,74003 +\gdef\sepspaces{\def {\ }}}\2265,74735 +\def\aboveenvbreak{\aboveenvbreak2268,74817 +\def\afterenvbreak{\afterenvbreak2272,74983 +\def\ctl{\ctl2286,75494 +\def\ctr{\ctr2287,75566 +\def\cbl{\cbl2288,75605 +\def\cbr{\cbr2289,75645 +\def\carttop{\carttop2290,75684 +\def\cartbot{\cartbot2293,75792 +\long\def\cartouche{\cartouche2299,75932 +\def\Ecartouche{\Ecartouche2326,76720 +\def\lisp{\lisp2338,76855 +\def\Elisp{\Elisp2348,77202 +\def\next##1{\next2360,77528 +\def\Eexample{\Eexample2364,77570 +\def\Esmallexample{\Esmallexample2367,77617 +\def\smalllispx{\smalllispx2373,77795 +\def\Esmalllisp{\Esmalllisp2383,78149 +\obeyspaces \obeylines \ninett \indexfonts \rawbackslashfonts2396,78505 +\def\next##1{\next2397,78562 +\def\display{\display2401,78642 +\def\Edisplay{\Edisplay2410,78961 +\def\next##1{\next2422,79272 +\def\format{\format2426,79375 +\def\Eformat{\Eformat2434,79671 +\def\next##1{\next2437,79760 +\def\flushleft{\flushleft2441,79812 +\def\Eflushleft{\Eflushleft2451,80183 +\def\next##1{\next2454,80276 +\def\flushright{\flushright2456,80298 +\def\Eflushright{\Eflushright2466,80670 +\def\next##1{\next2470,80801 +\def\quotation{\quotation2474,80859 +\def\Equotation{\Equotation2480,81051 +\def\setdeffont #1 {\setdeffont2493,81449 +\newskip\defbodyindent \defbodyindent=.4inbodyindent2495,81495 +\newskip\defargsindent \defargsindent=50ptargsindent2496,81538 +\newskip\deftypemargin \deftypemargin=12pttypemargin2497,81581 +\newskip\deflastargmargin \deflastargmargin=18ptlastargmargin2498,81624 +\def\activeparens{\activeparens2503,81822 +\def\opnr{\opnr2529,83034 +\def\lbrb{\lbrb2530,83099 +\def\defname #1#2{\defname2536,83300 +\advance\dimen2 by -\defbodyindentbodyindent2540,83418 +\advance\dimen3 by -\defbodyindentbodyindent2542,83472 +\setbox0=\hbox{\hskip \deflastargmargin{lastargmargin2544,83526 +\dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuationsargsindent2546,83668 +\parshape 2 0in \dimen0 \defargsindent \dimen1 %argsindent2547,83743 +\rlap{\rightline{{\rm #2}\hskip \deftypemargin}typemargin2554,84112 +\advance\leftskip by -\defbodyindentbodyindent2557,84246 +\exdentamount=\defbodyindentbodyindent2558,84283 +\def\defparsebody #1#2#3{\defparsebody2568,84642 +\def#1{2572,84826 +\def#2{2573,84862 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2575,84934 +\exdentamount=\defbodyindentbodyindent2576,85008 +\def\defmethparsebody #1#2#3#4 {\defmethparsebody2581,85112 +\def#1{2585,85273 +\def#2##1 {2586,85309 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2588,85392 +\exdentamount=\defbodyindentbodyindent2589,85466 +\def\defopparsebody #1#2#3#4#5 {\defopparsebody2592,85551 +\def#1{2596,85712 +\def#2##1 ##2 {2597,85748 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2600,85848 +\exdentamount=\defbodyindentbodyindent2601,85922 +\def\defvarparsebody #1#2#3{\defvarparsebody2608,86193 +\def#1{2612,86380 +\def#2{2613,86416 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2615,86475 +\exdentamount=\defbodyindentbodyindent2616,86549 +\def\defvrparsebody #1#2#3#4 {\defvrparsebody2621,86640 +\def#1{2625,86799 +\def#2##1 {2626,86835 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2628,86905 +\exdentamount=\defbodyindentbodyindent2629,86979 +\def\defopvarparsebody #1#2#3#4#5 {\defopvarparsebody2632,87051 +\def#1{2636,87215 +\def#2##1 ##2 {2637,87251 +\advance\leftskip by \defbodyindent \advance \rightskip by \defbodyindentbodyindent2640,87338 +\exdentamount=\defbodyindentbodyindent2641,87412 +\def\defunargs #1{\defunargs2664,88172 +\def\deftypefunargs #1{\deftypefunargs2676,88554 +\def\deffn{\deffn2690,88936 +\def\deffnheader #1#2#3{\deffnheader2692,88993 +\begingroup\defname {name2693,89041 +\def\defun{\defun2699,89186 +\def\defunheader #1#2{\defunheader2701,89239 +\begingroup\defname {name2702,89314 +\defunargs {unargs2703,89350 +\def\deftypefun{\deftypefun2709,89498 +\def\deftypefunheader #1#2{\deftypefunheader2712,89620 +\def\deftypefunheaderx #1#2 #3\relax{\deftypefunheaderx2714,89729 +\begingroup\defname {name2716,89821 +\deftypefunargs {typefunargs2717,89867 +\def\deftypefn{\deftypefn2723,90038 +\def\deftypefnheader #1#2#3{\deftypefnheader2726,90187 +\def\deftypefnheaderx #1#2#3 #4\relax{\deftypefnheaderx2728,90323 +\begingroup\defname {name2730,90416 +\deftypefunargs {typefunargs2731,90456 +\def\defmac{\defmac2737,90577 +\def\defmacheader #1#2{\defmacheader2739,90634 +\begingroup\defname {name2740,90710 +\defunargs {unargs2741,90743 +\def\defspec{\defspec2747,90867 +\def\defspecheader #1#2{\defspecheader2749,90928 +\begingroup\defname {name2750,91005 +\defunargs {unargs2751,91045 +\def\deffnx #1 {\deffnx2758,91240 +\def\defunx #1 {\defunx2759,91297 +\def\defmacx #1 {\defmacx2760,91354 +\def\defspecx #1 {\defspecx2761,91413 +\def\deftypefnx #1 {\deftypefnx2762,91474 +\def\deftypeunx #1 {\deftypeunx2763,91539 +\def\defop #1 {\defop2769,91685 +\defopparsebody\Edefop\defopx\defopheader\defoptype}opparsebody\Edefop\defopx\defopheader\defoptype2770,91720 +\def\defopheader #1#2#3{\defopheader2772,91774 +\begingroup\defname {name2774,91863 +\defunargs {unargs2775,91909 +\def\defmethod{\defmethod2780,91970 +\def\defmethodheader #1#2#3{\defmethodheader2782,92043 +\begingroup\defname {name2784,92131 +\defunargs {unargs2785,92171 +\def\defcv #1 {\defcv2790,92245 +\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}opvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype2791,92280 +\def\defcvarheader #1#2#3{\defcvarheader2793,92339 +\begingroup\defname {name2795,92425 +\defvarargs {varargs2796,92471 +\def\defivar{\defivar2801,92544 +\def\defivarheader #1#2#3{\defivarheader2803,92607 +\begingroup\defname {name2805,92693 +\defvarargs {varargs2806,92744 +\def\defopx #1 {\defopx2812,92893 +\def\defmethodx #1 {\defmethodx2813,92950 +\def\defcvx #1 {\defcvx2814,93015 +\def\defivarx #1 {\defivarx2815,93072 +\def\defvarargs #1{\defvarargs2822,93343 +\def\defvr{\defvr2828,93487 +\def\defvrheader #1#2#3{\defvrheader2830,93542 +\begingroup\defname {name2831,93590 +\def\defvar{\defvar2835,93675 +\def\defvarheader #1#2{\defvarheader2837,93735 +\begingroup\defname {name2838,93806 +\defvarargs {varargs2839,93842 +\def\defopt{\defopt2844,93908 +\def\defoptheader #1#2{\defoptheader2846,93968 +\begingroup\defname {name2847,94039 +\defvarargs {varargs2848,94078 +\def\deftypevar{\deftypevar2853,94135 +\def\deftypevarheader #1#2{\deftypevarheader2856,94251 +\begingroup\defname {name2858,94334 +\def\deftypevr{\deftypevr2865,94508 +\def\deftypevrheader #1#2#3{\deftypevrheader2867,94579 +\begingroup\defname {name2868,94631 +\def\defvrx #1 {\defvrx2876,94868 +\def\defvarx #1 {\defvarx2877,94925 +\def\defoptx #1 {\defoptx2878,94984 +\def\deftypevarx #1 {\deftypevarx2879,95043 +\def\deftypevrx #1 {\deftypevrx2880,95110 +\def\deftpargs #1{\deftpargs2885,95259 +\def\deftp{\deftp2889,95339 +\def\deftpheader #1#2#3{\deftpheader2891,95394 +\begingroup\defname {name2892,95442 +\def\deftpx #1 {\deftpx2897,95601 +\def\setref#1{\setref2908,95922 +\def\unnumbsetref#1{\unnumbsetref2913,96036 +\def\appendixsetref#1{\appendixsetref2918,96143 +\def\pxref#1{\pxref2929,96554 +\def\xref#1{\xref2930,96590 +\def\ref#1{\ref2931,96625 +\def\xrefX[#1,#2,#3,#4,#5,#6]{\xrefX[2932,96655 +\def\printedmanual{\printedmanual2933,96698 +\def\printednodename{\printednodename2934,96736 +\def\printednodename{\printednodename2939,96861 +section ``\printednodename'' in \cite{\printedmanual}\printedmanual2954,97493 +\refx{x2957,97571 +\def\dosetq #1#2{\dosetq2965,97791 +\def\internalsetq #1#2{\internalsetq2973,98049 +\def\Ypagenumber{\Ypagenumber2977,98150 +\def\Ytitle{\Ytitle2979,98176 +\def\Ynothing{\Ynothing2981,98203 +\def\Ysectionnumberandtype{\Ysectionnumberandtype2983,98220 +\def\Yappendixletterandtype{\Yappendixletterandtype2992,98536 +\ifnum\secno=0 Appendix\xreftie'char\the\appendixno{no2993,98566 +\else \ifnum \subsecno=0 Section\xreftie'char\the\appendixno.\the\secno %no.\the\secno2994,98621 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno %no.\the\secno.\the\subsecno2996,98725 +Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %no.\the\secno.\the\subsecno.\the\subsubsecno2998,98796 + \def\linenumber{\linenumber3009,99135 +\def\refx#1#2{\refx3015,99319 +\def\xrdef #1#2{\xrdef3037,99945 +\def\readauxfile{\readauxfile3040,100030 +\def\supereject{\supereject3110,101811 +\footstrut\parindent=\defaultparindent\hang\textindent{aultparindent\hang\textindent3131,102496 +\def\openindices{\openindices3139,102682 +\newdimen\defaultparindent \defaultparindent = 15ptaultparindent3151,102907 +\parindent = \defaultparindentaultparindent3152,102959 +\def\smallbook{\smallbook3175,103683 +\global\def\Esmallexample{\Esmallexample3192,104110 +\def\afourpaper{\afourpaper3196,104201 +\def\finalout{\finalout3224,105009 +\def\normaldoublequote{\normaldoublequote3235,105270 +\def\normaltilde{\normaltilde3236,105296 +\def\normalcaret{\normalcaret3237,105316 +\def\normalunderscore{\normalunderscore3238,105336 +\def\normalverticalbar{\normalverticalbar3239,105361 +\def\normalless{\normalless3240,105387 +\def\normalgreater{\normalgreater3241,105406 +\def\normalplus{\normalplus3242,105428 +\def\ifusingtt#1#2{\ifusingtt3253,105920 +\def\activedoublequote{\activedoublequote3261,106248 +\def~{~3264,106334 +\def^{^3267,106395 +\def_{_3270,106434 +\def\_{\_3272,106508 +\def\lvvmode{\lvvmode3279,106845 +\def|{|3282,106895 +\def<{<3285,106958 +\def>{>3288,107015 +\def+{+3290,107053 +\def\turnoffactive{\turnoffactive3296,107214 +\global\def={=3307,107500 +\def\normalbackslash{\normalbackslash3321,107882 c-src/c.c,76 T f(1,0 @@ -5160,13 +5161,13 @@ extern struct node *yylval;yylval306,6246 unsigned char parse_cell_or_range 309,6291 unsigned char parse_cell_or_range 311,6355 yylex FUN0(315,6405 -parse_cell_or_range FUN2(587,11771 -#define CK_ABS_R(671,13213 -#define CK_REL_R(675,13292 -#define CK_ABS_C(680,13421 -#define CK_REL_C(684,13500 -#define MAYBEREL(689,13629 -str_to_col FUN1(847,16830 +parse_cell_or_range FUN2(587,11772 +#define CK_ABS_R(671,13214 +#define CK_REL_R(675,13293 +#define CK_ABS_C(680,13422 +#define CK_REL_C(684,13501 +#define MAYBEREL(689,13630 +str_to_col FUN1(847,16831 y-src/parse.c,520 #define YYBISON 4,64 diff --git a/test/manual/etags/Makefile b/test/manual/etags/Makefile index c1df703905e..8d56db29b72 100644 --- a/test/manual/etags/Makefile +++ b/test/manual/etags/Makefile @@ -25,13 +25,14 @@ PSSRC=$(addprefix ./ps-src/,rfc1245.ps) PROLSRC=$(addprefix ./prol-src/,ordsets.prolog natded.prolog) PYTSRC=$(addprefix ./pyt-src/,server.py) RBSRC=$(addprefix ./ruby-src/,test.rb test1.ru) +RSSRC=$(addprefix ./rs-src/,test.rs) SCMSRC=$(addprefix ./scm-src/,test.scm) TEXSRC=$(addprefix ./tex-src/,testenv.tex gzip.texi texinfo.tex nonewline.tex) YSRC=$(addprefix ./y-src/,parse.y parse.c atest.y cccp.c cccp.y) SRCS=${ADASRC} ${ASRC} ${CSRC} ${CPSRC} ${ELSRC} ${ERLSRC} ${FSRC}\ ${FORTHSRC} ${GOSRC} ${HTMLSRC} ${JAVASRC} ${LUASRC} ${MAKESRC}\ ${OBJCSRC} ${OBJCPPSRC} ${PASSRC} ${PHPSRC} ${PERLSRC} ${PSSRC}\ - ${PROLSRC} ${PYTSRC} ${RBSRC} ${SCMSRC} ${TEXSRC} ${YSRC} + ${PROLSRC} ${PYTSRC} ${RBSRC} ${RSSRC} ${SCMSRC} ${TEXSRC} ${YSRC} NONSRCS=./f-src/entry.strange ./erl-src/lists.erl ./cp-src/clheir.hpp.gz ETAGS_PROG=../../../lib-src/etags diff --git a/test/manual/etags/rs-src/test.rs b/test/manual/etags/rs-src/test.rs new file mode 100644 index 00000000000..081d0d7d4df --- /dev/null +++ b/test/manual/etags/rs-src/test.rs @@ -0,0 +1,14 @@ +mod test; + +enum IpAddrKind { + V4, + V6, +} + +fn test1() { + println!("Testing"); +} + +fn main() { + test::test1(); +} diff --git a/test/src/comp-tests.el b/test/src/comp-tests.el index e3e4bdd9b61..be02c30a752 100644 --- a/test/src/comp-tests.el +++ b/test/src/comp-tests.el @@ -59,7 +59,7 @@ Check that the resulting binaries do not differ." (comp1-src (make-temp-file "stage1-" nil ".el")) (comp2-src (make-temp-file "stage2-" nil ".el")) ;; Can't use debug symbols. - (comp-debug 0)) + (native-comp-debug 0)) (copy-file comp-src comp1-src t) (copy-file comp-src comp2-src t) (let ((load-no-native t)) @@ -786,7 +786,7 @@ Return a list of results." (comp-deftest tco () "Check for tail recursion elimination." - (let ((comp-speed 3) + (let ((native-comp-speed 3) ;; Disable ipa-pure otherwise `comp-tests-tco-f' gets ;; optimized-out. (comp-disabled-passes '(comp-ipa-pure)) @@ -814,7 +814,7 @@ Return a list of results." (comp-deftest fw-prop-1 () "Some tests for forward propagation." - (let ((comp-speed 2) + (let ((native-comp-speed 2) (comp-post-pass-hooks '((comp-final comp-tests-fw-prop-checker-1)))) (eval '(defun comp-tests-fw-prop-1-f () (let* ((a "xxx") @@ -828,7 +828,7 @@ Return a list of results." (defun comp-tests-check-ret-type-spec (func-form ret-type) (let ((lexical-binding t) - (comp-speed 2) + (native-comp-speed 2) (f-name (cl-second func-form))) (eval func-form t) (native-compile f-name) @@ -1399,7 +1399,7 @@ Return a list of results." (comp-deftest pure () "Some tests for pure functions optimization." - (let ((comp-speed 3) + (let ((native-comp-speed 3) (comp-post-pass-hooks '((comp-final comp-tests-pure-checker-1 comp-tests-pure-checker-2)))) (load (native-compile (ert-resource-file "comp-test-pure.el"))) diff --git a/test/src/emacs-module-tests.el b/test/src/emacs-module-tests.el index 0a68d51e3eb..a4d858113ed 100644 --- a/test/src/emacs-module-tests.el +++ b/test/src/emacs-module-tests.el @@ -37,7 +37,9 @@ "File name of the Emacs binary currently running.") (eval-and-compile - (defconst mod-test-file (ert-resource-file "mod-test") + (defconst mod-test-file + (expand-file-name "../test/src/emacs-module-resources/mod-test" + invocation-directory) "File name of the module test file.")) (require 'mod-test mod-test-file) diff --git a/test/src/emacs-resources/seccomp-filter-exec.bpf b/test/src/emacs-resources/seccomp-filter-exec.bpf deleted file mode 120000 index 5b0e9978221..00000000000 --- a/test/src/emacs-resources/seccomp-filter-exec.bpf +++ /dev/null @@ -1 +0,0 @@ -../../../lib-src/seccomp-filter-exec.bpf
\ No newline at end of file diff --git a/test/src/emacs-resources/seccomp-filter.bpf b/test/src/emacs-resources/seccomp-filter.bpf deleted file mode 120000 index b3d603d0aeb..00000000000 --- a/test/src/emacs-resources/seccomp-filter.bpf +++ /dev/null @@ -1 +0,0 @@ -../../../lib-src/seccomp-filter.bpf
\ No newline at end of file diff --git a/test/src/emacs-tests.el b/test/src/emacs-tests.el index ee5586fbaf4..ac08e055b55 100644 --- a/test/src/emacs-tests.el +++ b/test/src/emacs-tests.el @@ -25,10 +25,13 @@ (require 'cl-lib) (require 'ert) -(require 'ert-x) (require 'rx) (require 'subr-x) +(defconst emacs-tests--lib-src + (substitute-in-file-name "$EMACS_TEST_DIRECTORY/../lib-src/") + "Location of the lib-src directory.") + (ert-deftest emacs-tests/seccomp/absent-file () (skip-unless (string-match-p (rx bow "SECCOMP" eow) system-configuration-features)) @@ -135,7 +138,8 @@ to `make-temp-file', which see." system-configuration-features)) (let ((emacs (expand-file-name invocation-name invocation-directory)) - (filter (ert-resource-file "seccomp-filter.bpf")) + (filter (expand-file-name "seccomp-filter.bpf" + emacs-tests--lib-src)) (process-environment nil)) (skip-unless (file-executable-p emacs)) (skip-unless (file-readable-p filter)) @@ -160,7 +164,8 @@ to `make-temp-file', which see." system-configuration-features)) (let ((emacs (expand-file-name invocation-name invocation-directory)) - (filter (ert-resource-file "seccomp-filter.bpf")) + (filter (expand-file-name "seccomp-filter.bpf" + emacs-tests--lib-src)) (process-environment nil)) (skip-unless (file-executable-p emacs)) (skip-unless (file-readable-p filter)) @@ -186,7 +191,8 @@ to `make-temp-file', which see." (bwrap (executable-find "bwrap")) (emacs (expand-file-name invocation-name invocation-directory)) - (filter (ert-resource-file "seccomp-filter-exec.bpf")) + (filter (expand-file-name "seccomp-filter-exec.bpf" + emacs-tests--lib-src)) (process-environment nil)) (skip-unless bash) (skip-unless bwrap) |