diff --git a/.gitignore b/.gitignore index eb51921aa38..6bf552cbdcc 100644 --- a/.gitignore +++ b/.gitignore @@ -131,6 +131,7 @@ lisp/cedet/semantic/wisent/python-wy.el lisp/cedet/srecode/srt-wy.el lisp/cedet/semantic/grammar-wy.el lisp/eshell/esh-module-loaddefs.el +lisp/eshell/esh-groups.el lisp/finder-inf.el lisp/leim/ja-dic/ leim/small-ja-dic-option diff --git a/ChangeLog.3 b/ChangeLog.3 index 80ea900477e..6efeb8f5dd5 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -997,7 +997,7 @@ 2022-07-11 Stefan Kangas - * lisp/find-dired.el (find-dired): Doc fix; add crossreference. + * lisp/find-dired.el (find-dired): Doc fix; add cross-reference. 2022-07-08 Stefan Kangas @@ -141854,7 +141854,7 @@ client key/cert specification. * doc/misc/emacs-gnutls.texi (Help For Developers): Describe usage of - optional plist argument. Add crossreference to description of + optional plist argument. Add cross-reference to description of .authinfo format for client key/cert specification. * etc/NEWS: Describe new client certificate functionality for diff --git a/ChangeLog.4 b/ChangeLog.4 index be1eb2f80b4..1cd5568e4db 100644 --- a/ChangeLog.4 +++ b/ChangeLog.4 @@ -49037,7 +49037,7 @@ 2022-07-11 Stefan Kangas - * lisp/find-dired.el (find-dired): Doc fix; add crossreference. + * lisp/find-dired.el (find-dired): Doc fix; add cross-reference. 2022-07-11 Stefan Kangas @@ -78967,7 +78967,7 @@ This abstracts out the somewhat-unusual "insert&delete" logic in 'eshell-parse-command' so that it can be used elsewhere, and also - ensures that the deletion occurs even if an an error occurs. + ensures that the deletion occurs even if an error occurs. * lisp/eshell/esh-cmd.el (eshell-with-temp-command): New macro. (eshell-parse-command): Use it. @@ -82043,7 +82043,7 @@ (BClipboard_set_system_data) (BClipboard_set_primary_selection_data) (BClipboard_set_secondary_selection_data): Store count before - saving to the the clipboard. + saving to the clipboard. (BClipboard_owns_clipboard, BClipboard_owns_primary) (BClipboard_owns_secondary): Adjust tests accordingly. diff --git a/INSTALL b/INSTALL index d5ce16db147..e80051faaa1 100644 --- a/INSTALL +++ b/INSTALL @@ -517,12 +517,8 @@ Some tests might fail because the compiler should look in special directories for some header files, or link against optional libraries, or use special compilation options. You can force 'configure' and the build process which follows it to do that by -setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, CPP and CC -before running 'configure'. CPP is the command which invokes the -preprocessor, CPPFLAGS lists the options passed to it, CFLAGS are -compilation options, LDFLAGS are options used when linking, LIBS are -libraries to link against, and CC is the command which invokes the -compiler. By default, gcc is used if available. +setting the variables CC, CFLAGS, CPP, CPPFLAGS, LDFLAGS, and LIBS in +the 'configure' command. Here's an example of a 'configure' invocation, assuming a Bourne-like shell such as Bash, which uses these variables: @@ -689,8 +685,9 @@ configuration), type 'make distclean'. MAKE VARIABLES You can change where the build process installs Emacs and its data -files by specifying values for 'make' variables as part of the 'make' -command line. For example, if you type +files, and what programs and options the build process uses, by +specifying values for 'make' variables as part of the 'make' command +line. For example, if you type make install bindir=/usr/local/gnubin @@ -760,6 +757,19 @@ Here is a complete list of the variables you may want to set. determines the default values for the architecture-dependent path variables - 'bindir' and 'libexecdir'. +'CC' is the command which invokes the compiler. By default, gcc is used + if available. + +'CFLAGS' are compilation options. + +'CPP' is the command which invokes the preprocessor. + +'CPPFLAGS' lists the options passed to CPP. + +'LDFLAGS' are options used when linking. + +'LIBS' are libraries to link against. + The above variables serve analogous purposes in the makefiles for all GNU software; the following variables are specific to Emacs. diff --git a/Makefile.in b/Makefile.in index 20394cb333d..ade7d258a4c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -361,10 +361,10 @@ COPYDIR = ${srcdir}/etc ${srcdir}/lisp COPYDESTS = "$(DESTDIR)${etcdir}" "$(DESTDIR)${lispdir}" ifeq (${ns_self_contained},no) -BIN_DESTDIR='$(DESTDIR)${bindir}/' +BIN_DESTDIR = $(DESTDIR)${bindir}/ ELN_DESTDIR = $(DESTDIR)${libdir}/emacs/${version}/ else -BIN_DESTDIR='${ns_appbindir}/' +BIN_DESTDIR = ${ns_appbindir}/ ELN_DESTDIR = ${ns_applibdir}/ endif @@ -915,8 +915,14 @@ install-etc: install-eln: lisp ifeq ($(HAVE_NATIVE_COMP),yes) umask 022 ; \ - find native-lisp -type d -exec $(MKDIR_P) "$(ELN_DESTDIR){}" \; ; \ - find native-lisp -type f -exec ${INSTALL_ELN} "{}" "$(ELN_DESTDIR){}" \; + find native-lisp -exec sh -c \ + 'for f in "$$@"; do \ + if test -d "$$f"; then \ + $(MKDIR_P) '\''$(ELN_DESTDIR)'\''"$$f" || exit; \ + else \ + $(INSTALL_ELN) "$$f" '\''$(ELN_DESTDIR)'\''"$$f"; \ + fi || exit; \ + done' - {} + endif ### Build Emacs and install it, stripping binaries while installing them. @@ -931,7 +937,7 @@ uninstall: uninstall-$(NTDIR) uninstall-doc uninstall-gsettings-schemas rm -f "$(DESTDIR)$(includedir)/emacs-module.h" $(MAKE) -C lib-src uninstall -unset CDPATH; \ - for dir in "$(DESTDIR)${lispdir}" "$(DESTDIR)${etcdir}" "$(ELN_DESTDIR)" ; do \ + for dir in "$(DESTDIR)${lispdir}" "$(DESTDIR)${etcdir}" '$(ELN_DESTDIR)' ; do \ if [ -d "$${dir}" ]; then \ case `cd "$${dir}" ; pwd -P` in \ "`cd ${srcdir} ; pwd -P`"* ) ;; \ diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS index c15401ddeb2..de74a2b9a20 100644 --- a/admin/MAINTAINERS +++ b/admin/MAINTAINERS @@ -84,14 +84,6 @@ Michael Albinus Simen Heggestøyl lisp/textmodes/css-mode.el -Nicolas Petton - lisp/emacs-lisp/map.el - test/lisp/emac-lisp/map-tests.el - lisp/emacs-lisp/seq.el - test/lisp/emac-lisp/seq-tests.el - lisp/emacs-lisp/thunk.el - test/lisp/emac-lisp/thunk-tests.el - The GNU AUCTeX maintainers (auctex-devel@gnu.org) RefTeX lisp/textmodes/reftex-auc.el @@ -233,6 +225,16 @@ Jim Porter test/lisp/eshell/* doc/misc/eshell.texi +Juri Linkov + lisp/tab-bar.el + lisp/tab-line.el + +Philip Kaludercic + lisp/emacs-lisp/package.el + lisp/emacs-lisp/package-vc.el + lisp/emacs-lisp/compat.el + lisp/net/rcirc.el + ============================================================================== 2. Areas that someone is willing to maintain, although he would not necessarily mind if someone else was the official maintainer. @@ -334,10 +336,6 @@ Michael Albinus doc/misc/auth.texi test/lisp/auth-source-tests.el -Nicolas Petton - lisp/emacs-lisp/subr-x.el - lisp/arc-mode.el - Tassilo Horn lisp/doc-view.el @@ -364,6 +362,23 @@ Po Lu Daniel Pettersson lisp/jsonrpc.el +Juri Linkov + Isearch and Replace + lisp/isearch.el + lisp/replace.el + lisp/misearch.el + lisp/hi-lock.el + Outline minor mode + lisp/outline.el + Repeat mode + lisp/repeat.el + +Philip Kaludercic + lisp/epa-ks.el + +Harald Jörg + lisp/progmodes/cperl-mode.el + ============================================================================== 3. Externally maintained packages. ============================================================================== diff --git a/admin/codespell/codespell.exclude b/admin/codespell/codespell.exclude index 733e548a598..02b7c84c2f4 100644 --- a/admin/codespell/codespell.exclude +++ b/admin/codespell/codespell.exclude @@ -1684,3 +1684,4 @@ argument \\='general-category, is Decimal_Numbers (Nd). It returns ((or (string-equal tag "anc") (string-equal tag "ancestor")) ("ro" :default "Continuare de pe pagina precedentă") ("ro" :default "Continuare pe pagina următoare") +;; avk@rtsg.mot.com (Andrew V. Klein) for a Dired tip. diff --git a/admin/codespell/codespell.ignore b/admin/codespell/codespell.ignore index ebb85e510bb..4f145c290f7 100644 --- a/admin/codespell/codespell.ignore +++ b/admin/codespell/codespell.ignore @@ -9,18 +9,14 @@ blocs callint checkin clen -crossreference -crossreferences debbugs dedented dependant -doas ede grey gud ifset inout -keypair keyserver keyservers lightening @@ -28,7 +24,6 @@ mapp master mimicks mitre -msdos ot parm parms @@ -37,8 +32,6 @@ reenable reenabled requestor sie -spawnve statics -stdio texline typdef diff --git a/admin/notes/bug-triage b/admin/notes/bug-triage index 6fad55dc1e3..e3f93a508bd 100644 --- a/admin/notes/bug-triage +++ b/admin/notes/bug-triage @@ -54,7 +54,7 @@ the ones that are not reproducible on the current release. If you can reproduce, then reply on the thread (either on the original message, or anywhere you find appropriate) that you - can reproduce this on the current release. If your + can reproduce this on the current release. If your reproduction gives additional info (such as a backtrace), then add that as well, since it will help whoever attempts to fix it. @@ -79,7 +79,7 @@ the ones that are not reproducible on the current release. 3. Your changes will take some time to take effect. After a period of minutes to hours, you will get a mail telling you the control message has been processed. At this point, if there were no errors detected, you and - everyone else can see your changes. If there are errors, read the error + everyone else can see your changes. If there are errors, read the error text - if you need help, consulting the bugtracker documentation in this same directory. diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker index 419d91ae854..3cbf490d6de 100644 --- a/admin/notes/bugtracker +++ b/admin/notes/bugtracker @@ -39,7 +39,7 @@ tags 123 moreinfo|unreproducible|wontfix|patch|notabug For a list of all bugs, see https://debbugs.gnu.org/db/pa/lemacs.html This is a static page, updated once a day. There is also a dynamic -list, generated on request. This accepts various options, e.g., to see +list, generated on request. This accepts various options, e.g., to see the most recent bugs: https://debbugs.gnu.org/cgi/pkgreport.cgi?newest=100 @@ -183,7 +183,7 @@ emacs-bug-tracker mailing list, just pick one or the other. ** How to avoid multiple copies of mails. If you reply to reports in the normal way, this should work fine. Basically, reply only to the numbered bug address (and any individual -people's addresses). Do not send mail direct to bug-gnu-emacs or +people's addresses). Do not send mail direct to bug-gnu-emacs or emacs-pretest-bug unless you are reporting a new bug. ** To close bug#123 (for example), send mail @@ -212,7 +212,7 @@ that the bug has been closed. This mail has a header: X-GNU-PR-Message: closed 123 4) Send a copy of your mail to the bug-gnu-emacs list in exactly the -same way as if you had sent mail to "123" (sans -done). This mail has +same way as if you had sent mail to "123" (sans -done). This mail has headers: X-GNU-PR-Message: cc-closed 123 diff --git a/admin/notes/copyright b/admin/notes/copyright index 55924157e9a..085356cfb28 100644 --- a/admin/notes/copyright +++ b/admin/notes/copyright @@ -16,10 +16,10 @@ longer, eg the text "GNU Emacs is free software...". Summary for the impatient: 1. Don't add code to Emacs written by someone other than yourself -without thinking about the legal aspect. Even if the changes are +without thinking about the legal aspect. Even if the changes are trivial, consider if they combine with previous changes by the same -author to make a non-trivial total. If so, make sure they have an -assignment. If adding a whole file adjust the copyright statements in +author to make a non-trivial total. If so, make sure they have an +assignment. If adding a whole file adjust the copyright statements in the file. 2. When installing code written by someone else, the commit @@ -38,23 +38,23 @@ right thing to do. Every non-trivial file distributed through the Emacs repository should be -self-explanatory in terms of copyright and license. This includes +self-explanatory in terms of copyright and license. This includes files that are not distributed in Emacs releases (for example, the admin/ directory), because the whole Emacs repository is publicly available. The definition of triviality is a little vague, but a rule of thumb is -that any file with less than 15 lines of actual content is trivial. If +that any file with less than 15 lines of actual content is trivial. If a file is auto-generated (eg ldefs-boot.el) from another one in the repository, then it does not really matter about adding a copyright statement to the generated file. Legal advice says that we could, if we wished, put a license notice even in trivial files, because copyright law in general looks at the -overall work as a whole. It is not _necessary_ to do so, and rms -prefers that we do not. This means one needs to take care that trivial +overall work as a whole. It is not _necessary_ to do so, and rms +prefers that we do not. This means one needs to take care that trivial files do not grow and become non-trivial without having a license -added. NB consequently, if you add a lot of text to a small file, +added. NB consequently, if you add a lot of text to a small file, consider whether your changes have made the file worthy of a copyright notice, and if so, please add one. @@ -62,10 +62,10 @@ It can be helpful to put a reminder comment at the start of a trivial file, eg: "add a license notice if this grows to > 10 lines of code". The years in the copyright notice should be updated every year (see -file "years" in this directory). The PDF versions of refcards etc +file "years" in this directory). The PDF versions of refcards etc should display copyright notices (an exception to the rule about -"generated" files), but these can just display the latest year. The -full list of years should be kept in comments in the source file. If +"generated" files), but these can just display the latest year. The +full list of years should be kept in comments in the source file. If these are distributed in the repository, check in a regenerated version when the tex files are updated. @@ -75,28 +75,28 @@ Copyright changes should be propagated to any associated repositories All README (and other such text files) that are non-trivial should contain copyright statements and GPL license notices, exactly as .el -files do (see e.g. README in the top-level directory). Before 2007, +files do (see e.g. README in the top-level directory). Before 2007, we used a simple, short statement permitting copying and modification -provided legal notices were retained. In Feb 2007 we switched to the -standard GPL text, on legal advice. Some older text files in etc/ +provided legal notices were retained. In Feb 2007 we switched to the +standard GPL text, on legal advice. Some older text files in etc/ should, however, keep their current licenses (see below for list). For image files, the copyright and license details should be recorded in a README file in each directory with images. (Legal advice says that we need not add notices to each image file individually, if they -allow for that.). It is recommended to use the word "convert" to +allow for that.). It is recommended to use the word "convert" to describe the automatic process of changing an image from one format to another (https://lists.gnu.org/r/emacs-devel/2007-02/msg00618.html). When installing a file with an "unusual" license (after checking first it is ok), put a copy of the copyright and license in the file (if -possible. It's ok if this makes the file incompatible with its +possible. It's ok if this makes the file incompatible with its original format, if it can still be used by Emacs), or in a README file in the relevant directory. The vast majority of files are copyright FSF and distributed under the -GPL. A few files (mainly related to language and charset support) are +GPL. A few files (mainly related to language and charset support) are copyright AIST alone, or both AIST and FSF. (Contact Kenichi Handa with questions about legal issues in such files.) In all these cases, the copyright years in each file should be updated each year. @@ -106,16 +106,16 @@ these are listed below for reference, together with any files where the copyright needs to be updated in "unusual" ways. If you find any other such cases, please consult to check they are ok, -and note them in this file. This includes missing copyright notices, -and "odd" copyright holders. In most cases, individual authors should -not appear in copyright statements. Either the copyright has been +and note them in this file. This includes missing copyright notices, +and "odd" copyright holders. In most cases, individual authors should +not appear in copyright statements. Either the copyright has been assigned (check copyright.list) to the FSF (in which case the original author should be removed and the year(s) transferred to the FSF); or else it is possible the file should not be in Emacs at all (please report!). Note that it seems painfully clear that one cannot rely on commit logs, -or even change log entries, for older changes. People often installed +or even change log entries, for older changes. People often installed changes from others, without recording the true authorship. [For reference, most of these points were established via email with @@ -146,7 +146,7 @@ lib/Makefile.in - copyright FSF, with MIT-like license build-aux/install-sh - - this file is copyright MIT, which is OK. Leave the copyright alone. + - this file is copyright MIT, which is OK. Leave the copyright alone. etc/refcards/*.tex also update the \def\year macro for the latest year. @@ -162,7 +162,7 @@ etc/letter.pbm,letter.xpm etc/HELLO - standard notices. Just a note that although the file itself is not + standard notices. Just a note that although the file itself is not really copyrightable, in the wider context of it being part of Emacs (and written by those with assignments), a standard notice is fine. @@ -183,20 +183,20 @@ leim/quail/PY.el, ZIRANMA.el) are under GPLv1 or later. leim/SKK-DIC/SKK-JISYO.L ja-dic/ja-dic.el - (the latter is auto-generated from the former). Leave the copyright alone. + (the latter is auto-generated from the former). Leave the copyright alone. lib-src/etags.c - Copyright information is duplicated in etc/ETAGS.README. Update that + Copyright information is duplicated in etc/ETAGS.README. Update that file too. Until 2007 etags.c was described as being copyright FSF and Ken Arnold. After some investigation in Feb 2007, then to the best of our knowledge we believe that the original 1984 Emacs version was based - on the version in BSD4.2. See for example this 1985 post from Ken Arnold: + on the version in BSD4.2. See for example this 1985 post from Ken Arnold: I have received enough requests for the current source to ctags - to post it. Here is the latest version (what will go out with - 4.3, modulo any bugs fixed during the beta period). It is the + to post it. Here is the latest version (what will go out with + 4.3, modulo any bugs fixed during the beta period). It is the 4.2 ctags with recognition of yacc and lex tags added. See also a 1984 version of ctags (no copyright) posted to net.sources: @@ -204,9 +204,9 @@ lib-src/etags.c Version of etags.c in emacs-16.56 duplicates comment typos. Accordingly, in Feb 2007 we added a 1984 copyright for the - University of California and a revised BSD license. The terms of + University of California and a revised BSD license. The terms of this require that the full license details be available in binary - distributions - hence the file etc/ETAGS.README. The fact that the + distributions - hence the file etc/ETAGS.README. The fact that the --version output just says "Copyright FSF" is apparently OK from a legal point of view. @@ -216,7 +216,7 @@ lisp/cedet/semantic/imenu.el from authors other than himself were negligible. lisp/play/tetris.el - - no special rules about the copyright. We note here that we believe + - no special rules about the copyright. We note here that we believe (2007/1) there is no problem with our use of the name "tetris" or the concept. rms: "My understanding is that game rules as such are not copyrightable." @@ -225,7 +225,7 @@ lisp/play/tetris.el lisp/net/tramp.el - - there are also copyrights in the body of the file. Update these too. + - there are also copyrights in the body of the file. Update these too. lwlib/ @@ -237,23 +237,23 @@ below). FSF copyrights should only appear in files which have undergone non-trivial cumulative changes from the original versions in the Lucid -Widget Library. NB this means that if you make non-trivial changes to -a file with no FSF copyright, you should add one. Also, if changes are +Widget Library. NB this means that if you make non-trivial changes to +a file with no FSF copyright, you should add one. Also, if changes are reverted to the extent that a file becomes basically the same as the original version, the FSF copyright should be removed. In my (rgm) opinion, as of Feb 2007, all the non-trivial files differ significantly from the original versions, with the exception of -lwlib-Xm.h. Most of the changes that were made to this file have -subsequently been reverted. Therefore I removed the FSF copyright from -this file (which is arguably too trivial to merit a notice anyway). I +lwlib-Xm.h. Most of the changes that were made to this file have +subsequently been reverted. Therefore I removed the FSF copyright from +this file (which is arguably too trivial to merit a notice anyway). I added FSF copyright to the following files which did not have them already: Makefile.in, lwlib-Xaw.c, lwlib-int.h (borderline), lwlib-utils.c (borderline), lwlib.c, lwlib.h. Copyright years before the advent of public CVS in 2001 were those when I judged (from the CVS logs) that non-trivial amounts of change -had taken place. I also adjusted the existing FSF years in xlwmenu.c, +had taken place. I also adjusted the existing FSF years in xlwmenu.c, xlwmenu.h, and xlwmenuP.h on the same basis. Note that until Feb 2007, the following files in lwlib were lacking @@ -264,17 +264,17 @@ xlwmenuP.h. To the best of our knowledge, all the code files in lwlib were originally part of the Lucid Widget Library, even if they did not say -so explicitly. For example, they were all present in Lucid Emacs 19.1 -in 1992. The exceptions are the two Xaw files, which did not appear -till Lucid Emacs 19.9 in 1994. The file lwlib-Xaw.h is too trivial to +so explicitly. For example, they were all present in Lucid Emacs 19.1 +in 1992. The exceptions are the two Xaw files, which did not appear +till Lucid Emacs 19.9 in 1994. The file lwlib-Xaw.h is too trivial to merit a copyright notice, but would presumably have the same one as -lwlib-Xaw.c. We have been unable to find a true standalone version of +lwlib-Xaw.c. We have been unable to find a true standalone version of LWL, if there was such a thing, to check definitively. To clarify the situation, in Feb 2007 we added Lucid copyrights and GPL notices to those files lacking either that were non-trivial, -namely: lwlib-int.h, lwlib.h, xlwmenu.h, xlwmenuP.h. This represents -our best understanding of the legal status of these files. We also +namely: lwlib-int.h, lwlib.h, xlwmenu.h, xlwmenuP.h. This represents +our best understanding of the legal status of these files. We also clarified the notices in Makefile.in, which was originally the Makefile auto-generated from Lucid's Imakefile. @@ -284,16 +284,16 @@ notices: lwlib-Xaw.h, lwlib-Xlw.h, lwlib-utils.h. The version of lwlib/ first installed in Emacs seems to be the same as that used in Lucid Emacs 19.8 (released 6-sep-93); except the two Xaw files, which did not appear till Athena support was added in Lucid -Emacs 19.9. In Lucid Emacs 19.1, all files were under GPLv1 or later, +Emacs 19.9. In Lucid Emacs 19.1, all files were under GPLv1 or later, but by Lucid Emacs 19.8, lwlib.c and xlwmenu.c had been switched to v2 -or later. These are the versions that were first installed in Emacs. +or later. These are the versions that were first installed in Emacs. So in GNU Emacs, these two files have been under v2 or later since 1994. It seems that it was the intention of Lucid to use v1 or later (excepting the two files mentioned previously); so this is the license we have used when adding notices to code that did not have notices -originally. Although we have the legal right to switch to v2 or later, +originally. Although we have the legal right to switch to v2 or later, rms prefers that we do not do so. @@ -302,7 +302,7 @@ doc/*/doclicense.texi doc/*/*.texi - All manuals should be under GFDL (but see below), and should include a copy of it, so that they can be distributed -separately. faq.texi has a different license, for some reason no-one +separately. efaq.texi has a different license, for some reason no-one can remember. https://lists.gnu.org/r/emacs-devel/2007-04/msg00583.html https://lists.gnu.org/r/emacs-devel/2007-04/msg00618.html @@ -319,23 +319,23 @@ an MIT-like license. oldXMenu/ Keep the "copyright.h" method used by X11, rather than moving the - licenses into the files. Note that the original X10.h did not use + licenses into the files. Note that the original X10.h did not use copyright.h, but had an explicit notice, which we retain. If you make non-trivial changes to a file which does not have an FSF -notice, add one and a GPL notice (as per Activate.c). If changes to a +notice, add one and a GPL notice (as per Activate.c). If changes to a file are reverted such that it becomes essentially the same as the original X11 version, remove the FSF notice and GPL. Only the files which differ significantly from the original X11 -versions should have FSF copyright and GPL notices. At time of writing -(Feb 2007), this is: Activate.c, Create.c, Internal.c. I (rgm) +versions should have FSF copyright and GPL notices. At time of writing +(Feb 2007), this is: Activate.c, Create.c, Internal.c. I (rgm) established this by diff'ing the current files against those in X11R1, and when I found significant differences looking in the ChangeLog for -the years they originated (the CVS logs are truncated before 1999). I +the years they originated (the CVS logs are truncated before 1999). I therefore removed the FSF notices (added in 200x) from the other -files. There are some borderline cases IMO: AddSel.c, InsSel.c, -XMakeAssoc.c, XMenu.h. For these I erred on the side of NOT adding FSF +files. There are some borderline cases IMO: AddSel.c, InsSel.c, +XMakeAssoc.c, XMenu.h. For these I erred on the side of NOT adding FSF notices. With regards to whether the files we have changed should have GPL @@ -347,41 +347,41 @@ added or not, rms says (2007-02-25, "oldXmenu issues"): So, to make things simple, please put our changes under the GPL. -insque.c had no copyright notice until 2005. The version of insque.c +insque.c had no copyright notice until 2005. The version of insque.c added to Emacs 1992-01-27 is essentially the same as insremque.c added to glic three days later by Roland McGrath, with an FSF copyright and GPL, but no ChangeLog entry. To the best of his recollection, McGrath (who has a copyright assignment) was the author of this file (email from roland at frob.com -to rms, 2007-02-23, "Where did insque.c come from?"). The FSF +to rms, 2007-02-23, "Where did insque.c come from?"). The FSF copyright and GPL in this file are therefore correct as far as we understand it. Imakefile had no legal info in Feb 2007, but was obviously based on -the X11 version (which also had no explicit legal info). As it was -unused, I removed it. It would have the same MIT copyright as +the X11 version (which also had no explicit legal info). As it was +unused, I removed it. It would have the same MIT copyright as Makefile.in does now. src/gmalloc.c - - contains numerous copyrights from the GNU C library. Leave them alone. + - contains numerous copyrights from the GNU C library. Leave them alone. nt/inc/dirent.h - - see comments below. This file is OK to be released with Emacs + - see comments below. This file is OK to be released with Emacs 22, but we may want to revisit it afterwards. ** Some notes on resolved issues, for historical information only etc/TERMS -rms: "surely written either by me or by ESR. (If you can figure out -which year, I can probably tell you which.) Either way, we have papers -for it." It was present in Emacs-16.56 (15-jul-85). rms: "Then I +rms: "surely written either by me or by ESR. (If you can figure out +which year, I can probably tell you which.) Either way, we have papers +for it." It was present in Emacs-16.56 (15-jul-85). rms: "Then I conclude it was written by me." lisp/term/README - - had no copyright notice till Feb 2007. ChangeLog.3 suggests it was - written by Eric S. Raymond. When asked by rms on 14 Feb 2007 he said: + - had no copyright notice till Feb 2007. ChangeLog.3 suggests it was + written by Eric S. Raymond. When asked by rms on 14 Feb 2007 he said: I don't remember writing it, but it reads like my prose and I believe I wrote the feature(s) it's describing. So I would have been the @@ -393,10 +393,10 @@ lisp/term/README src/unexhp9k800.c https://lists.gnu.org/r/emacs-devel/2007-02/msg00138.html - - briefly removed due to legal uncertainly Jan-Mar 2007. The - relevant assignment is under "hp9k800" in copyright.list. File was + - briefly removed due to legal uncertainly Jan-Mar 2007. The + relevant assignment is under "hp9k800" in copyright.list. File was written by John V. Morris at HP, and disclaimed by the author and - HP. So this file is public domain. + HP. So this file is public domain. lisp/progmodes/python.el @@ -424,20 +424,20 @@ nt/inc/dirent.h algorithm in this format. With the addition of this notice, these files are OK for the - upcoming Emacs-22 release. Post-release, we can revisit this issue + upcoming Emacs-22 release. Post-release, we can revisit this issue and possibly add a list of all authors who have changed these files. (details in email from Matt Norwood to rms, 2007/02/03). src/s/aix3-2.h, hpux8.h, hpux9.h, irix5-0.h, netbsd.h, usg5-4-2.h [note some of these have since been merged into other files] - all these (not obviously trivial) files were missing copyrights - till Feb 2007, when FSF copyright was added. Matt Norwood advised: + till Feb 2007, when FSF copyright was added. Matt Norwood advised: For now, I think the best policy is to assume that we do have assignments from the authors (I recall many of these header files as having been originally written by rms), and to attach an FSF - copyright with GPL notice. We can amend this if and when we - complete the code audit. Any additions to these files by + copyright with GPL notice. We can amend this if and when we + complete the code audit. Any additions to these files by non-assigned authors are arguably "de minimis" contributions to Emacs: small changes or suggestions to a work that are subsumed in the main authors' copyright in the entire work. @@ -446,18 +446,18 @@ Here is my (rgm) take on the details of the above files: ? irix5-0.h I would say started non-trivial (1993, jimb, heavily based - on irix4-0.h). A few borderline non-tiny changes since. + on irix4-0.h). A few borderline non-tiny changes since. usg5-4-2.h started non-trivial, but was heavily based on usg5-4.h, which was and is - copyright FSF. only tiny changes since installed. + copyright FSF. only tiny changes since installed. aix3-2.h, hpux8.h, hpux9.h, netbsd.h started trivial, grown in tiny changes. netbsd.h: Roland McGrath said to rms (2007/02/17): "I don't really remember -anything about it. If I put it in without other comment, then probably +anything about it. If I put it in without other comment, then probably I wrote it myself." @@ -491,13 +491,13 @@ noted in this file. REMOVED etc/gnu.xpm, nt/icons/emacs21.ico, nt/icons/sink.ico - - Restore if find legal info. emacs21.ico is not due to Davenport. + - Restore if find legal info. emacs21.ico is not due to Davenport. Geoff Voelker checked but could not find a record of where it came from. etc/images - Image files from GTK, Gnome are under GPLv2 (no "or later"?). RMS will + Image files from GTK, Gnome are under GPLv2 (no "or later"?). RMS will contact image authors in regards to future switch to v3. @@ -525,9 +525,9 @@ Some notes: (see https://lists.gnu.org/r/emacs-devel/2007-07/msg01431.html) 1. There are some files in the Emacs tree which are not part of Emacs (eg -those included from Gnulib). These are all copyright FSF and (at time -of writing) GPL >= 2. rms says may as well leave the licenses of these -alone (may import them from Gnulib again). These are: +those included from Gnulib). These are all copyright FSF and (at time +of writing) GPL >= 2. rms says may as well leave the licenses of these +alone (may import them from Gnulib again). These are: Gnulib: build-aux/config.guess @@ -555,7 +555,7 @@ ChangeLog, etc), ie remain under GPL v1 or later, or v2 or later. (rms: "We may as well leave this alone, since we are never going to change it much.") -4. There are some files where the FSF holds no copyright. These were +4. There are some files where the FSF holds no copyright. These were left alone: leim/MISC-DIC/CTLau-b5.html >= v2 @@ -568,7 +568,7 @@ left alone: leim/ja-dic/ja-dic.el >= v2 5. At time of writing, some non-Emacs icons included from Gnome remain -under GPLv2 (no "or later"). See: +under GPLv2 (no "or later"). See: etc/images/gnus/README etc/images/mail/README diff --git a/admin/notes/documentation b/admin/notes/documentation index d894175e212..22bacb48b68 100644 --- a/admin/notes/documentation +++ b/admin/notes/documentation @@ -54,9 +54,9 @@ combine them into a single entry, e.g.: https://lists.gnu.org/r/emacs-devel/2008-10/msg00414.html In Emacs tradition, we treat "point" as a proper name when it refers -to the current editing location. It should not have an article. +to the current editing location. It should not have an article. -Thus, it is incorrect to write, "The point does not move". It should +Thus, it is incorrect to write, "The point does not move". It should be, "Point does not move". If you see "the point" anywhere in Emacs documentation or comments, diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty index f021799b294..508f9abdc17 100644 --- a/admin/notes/multi-tty +++ b/admin/notes/multi-tty @@ -117,7 +117,7 @@ with (Make sure both emacs and emacsclient are multi-tty versions.) You'll hopefully have two fully working, independent frames on -separate terminals. The new frame is closed automatically when you +separate terminals. The new frame is closed automatically when you finish editing the specified files (C-x #), but delete-frame (C-x 5 0) also works. Of course, you can create frames on more than two tty devices. @@ -325,7 +325,7 @@ THINGS TO DO example, custom's buttons are broken on non-initial device types. ** Possibly turn off the double C-g feature when there is an X frame. - C.f. (emacs)Emergency Escape. + Cf. (emacs)Emergency Escape. ** frames-on-display-list should also accept frames. @@ -773,7 +773,7 @@ DIARY OF CHANGES with it. (Done, there was a stupid mistake in - Ftty_supports_face_attributes_p. Colors are broken, though.) + Ftty_supports_face_attributes_p. Colors are broken, though.) -- C-x 5 2, C-x 5 o, C-x 5 0 on an emacsclient frame unexpectedly exits emacsclient. This is a result of trying to be clever with @@ -1080,7 +1080,7 @@ DIARY OF CHANGES fine. Sometimes faces on these screens become garbled. This only seems to affect displays that are of the same terminfo - type as the selected one. Interestingly, in screen Emacs normally + type as the selected one. Interestingly, in screen Emacs normally reports the up arrow key as 'M-o A', but after the above SNAFU, it complains about 'M-[ a'. UNIX ttys are a complete mystery to me, but it seems the reset-reinitialize cycle somehow leaves the @@ -1232,7 +1232,7 @@ DIARY OF CHANGES -- Understand Emacs's low-level input system (it's black magic) :-) What exactly does interrupt_input do? I tried to disable it for raw secondary tty support, but it does not seem to do anything - useful. (Update: Look again. X unconditionally enables this, maybe + useful. (Update: Look again. X unconditionally enables this, maybe that's why raw terminal support is broken again. I really do need to understand input.) (Update: I am starting to understand the read_key_sequence->read-char diff --git a/admin/notes/repo b/admin/notes/repo index 2be707db27f..b4535bcb556 100644 --- a/admin/notes/repo +++ b/admin/notes/repo @@ -113,8 +113,8 @@ pre-commit state. If you have pushed commit, resetting will be ineffective because it will only vanish the commit in your local copy. Instead, use 'git -revert', giving it the commit ID as argument. This will create a -new commit that backs out the change. Then push that. +revert', giving it the commit ID as argument. This will create a +new commit that backs out the change. Then push that. Note that git will generate a log message for the revert that includes a git hash. Please edit this to refer to the commit by the first line diff --git a/admin/notes/spelling b/admin/notes/spelling index b20f68bf624..e0cf3998ace 100644 --- a/admin/notes/spelling +++ b/admin/notes/spelling @@ -8,4 +8,10 @@ Re "behavior" vs "behaviour", etc. - It's probably (IMHO --ttn, 2017-10-13) not a high priority to change existing text; use your best judgment (ask if unsure). +- The admin/run-codespell script treats many non-US spellings as + typos and fixes them. It does not consider Lisp symbols. + +- Consider renaming especially commands and user options for + consistency. Leave obsolete aliases, as always. + - https://lists.gnu.org/r/emacs-devel/2005-06/msg00489.html diff --git a/admin/notes/tree-sitter/performance b/admin/notes/tree-sitter/performance index 23f84743ced..7af217ffc72 100644 --- a/admin/notes/tree-sitter/performance +++ b/admin/notes/tree-sitter/performance @@ -3,14 +3,14 @@ TREE-SITTER PERFORMANCE NOTES -*- org -*- * Facts Incremental parsing of a few characters worth of edit usually takes -less than 0.1ms. If it takes longer than that, something is wrong. +less than 0.1ms. If it takes longer than that, something is wrong. There’s one time where I found tree-sitter-c takes ~30ms to -incremental parse. Updating to the latest version of tree-sitter-c +incremental parse. Updating to the latest version of tree-sitter-c solves it, so I didn’t investigate further. The ranges set for a parser doesn’t grow when you insert text into a range, so you have to update the ranges every time before -parsing. Fortunately, changing ranges doesn’t invalidate incremental +parsing. Fortunately, changing ranges doesn’t invalidate incremental parsing, so there isn’t any performance lost in update ranges frequently. diff --git a/admin/notes/tree-sitter/starter-guide b/admin/notes/tree-sitter/starter-guide index 846614f1446..72102250bbb 100644 --- a/admin/notes/tree-sitter/starter-guide +++ b/admin/notes/tree-sitter/starter-guide @@ -34,10 +34,9 @@ merged) and rebuild Emacs. * Install language definitions -Tree-sitter by itself doesn’t know how to parse any particular -language. We need to install language definitions (or “grammars”) for -a language to be able to parse it. There are a couple of ways to get -them. +Tree-sitter by itself doesn’t know how to parse any particular language. +We need to install language definitions (or “grammars”) for a language +to be able to parse it. There are a couple of ways to get them. You can use this script that I put together here: @@ -45,54 +44,53 @@ You can use this script that I put together here: This script automatically pulls and builds language definitions for C, C++, Rust, JSON, Go, HTML, JavaScript, CSS, Python, Typescript, -C#, etc. Better yet, I pre-built these language definitions for +C#, etc. Better yet, I pre-built these language definitions for GNU/Linux and macOS, they can be downloaded here: - https://github.com/casouri/tree-sitter-module/releases/tag/v2.1 + https://github.com/casouri/tree-sitter-module/releases/tag/v2.4 -To build them yourself, run +To build them yourself, run: git clone git@github.com:casouri/tree-sitter-module.git cd tree-sitter-module ./batch.sh -and language definitions will be in the /dist directory. You can +and language definitions will be in the /dist directory. You can either copy them to standard dynamic library locations of your system, -eg, /usr/local/lib, or leave them in /dist and later tell Emacs where +e.g., /usr/local/lib, or leave them in /dist and later tell Emacs where to find language definitions by setting ‘treesit-extra-load-path’. Language definition sources can be found on GitHub under -tree-sitter/xxx, like tree-sitter/tree-sitter-python. The tree-sitter +tree-sitter/xxx, like tree-sitter/tree-sitter-python. The tree-sitter organization has all the "official" language definitions: https://github.com/tree-sitter Alternatively, you can use treesit-install-language-grammar command -and follow its instructions. If everything goes right, it should +and follow its instructions. If everything goes right, it should automatically download and compile the language grammar for you. * Setting up for adding major mode features -Start Emacs and load tree-sitter with +Start Emacs and load tree-sitter with: (require 'treesit) -Now check if Emacs is built with tree-sitter library +Now check if Emacs is built with tree-sitter library: (treesit-available-p) -Make sure Emacs can find the language grammar you want to use +Make sure Emacs can find the language grammar you want to use: (treesit-language-available-p 'lang) * Tree-sitter major modes Tree-sitter modes should be separate major modes, so other modes -inheriting from the original mode don't break if tree-sitter is -enabled. For example js2-mode inherits js-mode, we can't enable -tree-sitter in js-mode, lest js-mode would not setup things that -js2-mode expects to inherit from. So it's best to use separate major -modes. +inheriting from the original mode don't break if tree-sitter is enabled. +For example js2-mode inherits js-mode, we can't enable tree-sitter in +js-mode, lest js-mode would not setup things that js2-mode expects to +inherit from. So it's best to use separate major modes. If the tree-sitter variant and the "native" variant could share some setup, you can create a "base mode", which only contains the common @@ -115,27 +113,26 @@ symbol (variable, function). Tree-sitter works like this: You provide a query made of patterns and capture names, tree-sitter finds the nodes that match these patterns, tag the corresponding capture names onto the nodes and return them to -you. The query function returns a list of (capture-name . node). For -font-lock, we use face names as capture names. And the captured node +you. The query function returns a list of (capture-name . node). For +font-lock, we use face names as capture names. And the captured node will be fontified in their capture name. -The capture name could also be a function, in which case (NODE -OVERRIDE START END) is passed to the function for fontification. START -and END are the start and end of the region to be fontified. The -function should only fontify within that region. The function should -also allow more optional arguments with (&rest _), for future -extensibility. For OVERRIDE check out the docstring of -treesit-font-lock-rules. +The capture name could also be a function, in which case (NODE OVERRIDE +START END) is passed to the function for fontification. START and END +are the start and end of the region to be fontified. The function +should only fontify within that region. The function should also allow +more optional arguments with (&rest _), for future extensibility. For +OVERRIDE check out the docstring of treesit-font-lock-rules. ** Query syntax There are two types of nodes, named, like (identifier), (function_definition), and anonymous, like "return", "def", "(", -"}". Parent-child relationship is expressed as +"}". Parent-child relationship is expressed as: (parent (child) (child) (child (grand_child))) -Eg, an argument list (1, "3", 1) could be: +For example, an argument list (1, "3", 1) could be: (argument_list "(" (number) (string) (number) ")") @@ -155,8 +152,7 @@ The query above captures both parent and child. ["return" "continue" "break"] @keyword -The query above captures all the keywords with capture name -"keyword". +The query above captures all the keywords with capture name "keyword". These are the common syntax, see all of them in the manual ("Parsing Program Source" section). @@ -167,8 +163,8 @@ But how do one come up with the queries? Take python for an example, open any python source file, type M-x treesit-explore-mode RET. Now you should see the parse-tree in a separate window, automatically updated as you select text or edit the buffer. Besides this, you can -consult the grammar of the language definition. For example, Python’s -grammar file is at +consult the grammar of the language definition. For example, Python’s +grammar file is at: https://github.com/tree-sitter/tree-sitter-python/blob/master/grammar.js @@ -182,24 +178,24 @@ The manual explains how to read grammar files in the bottom of section ** Debugging queries If your query has problems, use ‘treesit-query-validate’ to debug the -query. It will pop a buffer containing the query (in text format) and +query. It will pop a buffer containing the query (in text format) and mark the offending part in red. ** Code To enable tree-sitter font-lock, set ‘treesit-font-lock-settings’ and ‘treesit-font-lock-feature-list’ buffer-locally and call -‘treesit-major-mode-setup’. For example, see -‘python--treesit-settings’ in python.el. Below is a snippet of it. +‘treesit-major-mode-setup’. For example, see +‘python--treesit-settings’ in python.el. Below is a snippet of it. Just like the current font-lock, if the to-be-fontified region already has a face (ie, an earlier match fontified part/all of the region), -the new face is discarded rather than applied. If you want later +the new face is discarded rather than applied. If you want later matches always override earlier matches, use the :override keyword. Each rule should have a :feature, like function-name, -string-interpolation, builtin, etc. Users can then enable/disable each -feature individually. See Appendix 1 at the bottom for a set of common +string-interpolation, builtin, etc. Users can then enable/disable each +feature individually. See Appendix 1 at the bottom for a set of common features names. #+begin_src elisp @@ -262,22 +258,22 @@ Concretely, something like this: * Indent -Indent works like this: We have a bunch of rules that look like +Indent works like this: We have a bunch of rules that look like: (MATCHER ANCHOR OFFSET) When the indentation process starts, point is at the BOL of a line, we -want to know which column to indent this line to. Let NODE be the node +want to know which column to indent this line to. Let NODE be the node at point, we pass this node to the MATCHER of each rule, one of them -will match the node (eg, "this node is a closing bracket!"). Then we -pass the node to the ANCHOR, which returns a point, eg, the BOL of the -previous line. We find the column number of that point (eg, 4), add -OFFSET to it (eg, 0), and that is the column we want to indent the +will match the node (e.g., "this node is a closing bracket!"). Then we +pass the node to the ANCHOR, which returns a point, e.g., the BOL of the +previous line. We find the column number of that point (e.g., 4), add +OFFSET to it (e.g., 0), and that is the column we want to indent the current line to (4 + 0 = 4). Matchers and anchors are functions that takes (NODE PARENT BOL &rest -_). Matches return nil/non-nil for no match/match, and anchors return -the anchor point. Below are some convenient builtin matchers and anchors. +_). Matches return nil/non-nil for no match/match, and anchors return +the anchor point. Below are some convenient builtin matchers and anchors. For MATCHER we have @@ -289,8 +285,8 @@ For MATCHER we have (match NODE-TYPE PARENT-TYPE NODE-FIELD NODE-INDEX-MIN NODE-INDEX-MAX) - => checks everything. If an argument is nil, don’t match that. Eg, - (match nil TYPE) is the same as (parent-is TYPE) + => checks everything. If an argument is nil, don’t match that. + E.g., (match nil TYPE) is the same as (parent-is TYPE) For ANCHOR we have @@ -305,8 +301,8 @@ For ANCHOR we have There is also a manual section for indent: "Parser-based Indentation". When writing indent rules, you can use ‘treesit-check-indent’ to -check if your indentation is correct. To debug what went wrong, set -‘treesit--indent-verbose’ to non-nil. Then when you indent, Emacs +check if your indentation is correct. To debug what went wrong, set +‘treesit--indent-verbose’ to non-nil. Then when you indent, Emacs tells you which rule is applied in the echo area. #+begin_src elisp @@ -354,9 +350,8 @@ Set ‘treesit-simple-imenu-settings’ and call * Navigation -Set ‘treesit-defun-type-regexp’ and call -‘treesit-major-mode-setup’. You can additionally set -‘treesit-defun-name-function’. +Set ‘treesit-defun-type-regexp’ and call ‘treesit-major-mode-setup’. +You can additionally set ‘treesit-defun-name-function’. * Which-func @@ -370,7 +365,7 @@ find the current function by ‘treesit-defun-at-point’. Obviously this list is just a starting point, if there are features in the major mode that would benefit from a parse tree, adding tree-sitter -support for that would be great. But in the minimal case, just adding +support for that would be great. But in the minimal case, just adding font-lock is awesome. * Common tasks @@ -403,14 +398,13 @@ BTW ‘treesit-node-string’ does different things. * Manual -I suggest you read the manual section for tree-sitter in Info. The -section is Parsing Program Source. Typing +I suggest you read the manual section for tree-sitter in Info. The +section is Parsing Program Source. Typing: C-h i d m elisp RET g Parsing Program Source RET -will bring you to that section. You don’t need to read through every -sentence, just read the text paragraphs and glance over function -names. +will bring you to that section. You don’t need to read through every +sentence, just read the text paragraphs and glance over function names. * Appendix 1 @@ -439,13 +433,13 @@ error highlight parse error Abstract features: -assignment: the LHS of an assignment (thing being assigned to), eg: +assignment: the LHS of an assignment (thing being assigned to), e.g.: a = b <--- highlight a a.b = c <--- highlight b a[1] = d <--- highlight a -definition: the thing being defined, eg: +definition: the thing being defined, e.g.: int a(int b) { <--- highlight a return 0 diff --git a/admin/notes/tree-sitter/treesit_record_change b/admin/notes/tree-sitter/treesit_record_change index e80df4adfa7..db79f0d8174 100644 --- a/admin/notes/tree-sitter/treesit_record_change +++ b/admin/notes/tree-sitter/treesit_record_change @@ -47,7 +47,7 @@ EXCEPTIONS There are a couple of functions that replaces characters in-place -rather than insert/delete. They are in casefiddle.c and editfns.c. +rather than insert/delete. They are in casefiddle.c and editfns.c. In casefiddle.c, do_casify_unibyte_region and do_casify_multibyte_region modifies buffer, but they are static @@ -177,7 +177,7 @@ all safe. json.c:790: signal_after_change (PT, 0, inserted); Called in json-insert, calls either decode_coding_gap or -insert_from_gap_1, both are safe. Calls memmove but it’s for +insert_from_gap_1, both are safe. Calls memmove but it’s for decode_coding_gap. keymap.c:2873: /* Insert calls signal_after_change which may GC. */ diff --git a/admin/nt/dist-build/README-scripts b/admin/nt/dist-build/README-scripts index e99fbe07062..da7d03c327b 100644 --- a/admin/nt/dist-build/README-scripts +++ b/admin/nt/dist-build/README-scripts @@ -6,8 +6,8 @@ The scripts are used to build the binary distribution zip files for windows. Environment ----------- -A full installation of msys2 is required along for the build. The -various dependencies of Emacs need to be installed also. These change +A full installation of msys2 is required along for the build. The +various dependencies of Emacs need to be installed also. These change over time, but are listed in build-deps-zips.py. @@ -16,7 +16,7 @@ File System Organization ------------------------ -They are relatively strict about the file system organization. In +They are relatively strict about the file system organization. In general, they should work across several more than just the version of Emacs they come with, as the dependencies of Emacs change relatively slowly. @@ -34,35 +34,36 @@ A checkout out of the master branch of the Emacs git repository. ~/emacs-build/git/emacs-$major-version A worktree of the git repository containing the current release -branch. This has to be created by hand. +branch. This has to be created by hand. ~/emacs-build/git/emacs-$release-version -A branch of the git repository containing the last release. The +A branch of the git repository containing the last release. The build-zips.sh file will create this for you. ~/emacs-build/deps -A location for the dependencies. This needs to contain two zip files -with the dependencies. build-dep-zips.py will create these files for you. +A location for the dependencies. This needs to contain two zip files +with the dependencies. build-dep-zips.py will create these files for +you. ~/emacs-build/deps/libXpm -Contain libXpm-noX4.dll. This file is used to load images for the -splash screen, menu items and so on. Emacs runs without it, but looks -horrible. The files came original from msys2, and contains no -dependencies. It has to be placed manually (but probably never +Contain libXpm-noX4.dll. This file is used to load images for the +splash screen, menu items and so on. Emacs runs without it, but looks +horrible. The files came original from msys2, and contains no +dependencies. It has to be placed manually (but probably never need updating). ~/emacs-build/build/$version -We build Emacs out-of-source here. This directory is created by -build-zips.sh. This directory can be freely deleted after zips have +We build Emacs out-of-source here. This directory is created by +build-zips.sh. This directory can be freely deleted after zips have been created ~/emacs-build/install/$version -We install Emacs here. This directory is created by build-zips.sh. +We install Emacs here. This directory is created by build-zips.sh. This directory can and *should* be deleted after zips have been created. @@ -79,7 +80,7 @@ Build Process ### For each major version -The dependencies files need to be created. This can be around the time +The dependencies files need to be created. This can be around the time of the pre-tests, then used for all releases of that version, to ensure the maximum stability. @@ -87,16 +88,16 @@ To do this: Update msys to the latest version with `pacman -Syu`. -Then run build-dep-zips.py, in the ~/emacs-build/deps directory. Two +Then run build-dep-zips.py, in the ~/emacs-build/deps directory. Two zips will be created, containing the dependencies, as well as the source for these. For emacs release or pre-test version: -Run `build-zips.sh -g` in the release branch. This will create a worktree +Run `build-zips.sh -g` in the release branch. This will create a worktree with the tag of the last version. -Then run `build-zips.sh` in this worktree. Eventually, four new zip +Then run `build-zips.sh` in this worktree. Eventually, four new zip files will be created in ~/emacs-upload from where they can be signed and uploaded with `gnupload`. @@ -104,7 +105,7 @@ and uploaded with `gnupload`. ### For snapshots from Master Snapshots are generally created from master when there is a release -branch on which a release has already been created. At this point, +branch on which a release has already been created. At this point, only pre-tests or full releases need to happen from the release branch. @@ -112,11 +113,11 @@ To do this: Update msys to the latest version with `pacman -Syu`. -Then run build-dep-zips.py, in ~/emacs-build/deps directory. Two zips +Then run build-dep-zips.py, in ~/emacs-build/deps directory. Two zips will be created, containing the dependencies, as well as the source -for these. These deps files contain the date of creation in their -name. The deps file can be reused as desired, or a new version -created. Where multiple deps files exist, the most recent will be +for these. These deps files contain the date of creation in their +name. The deps file can be reused as desired, or a new version +created. Where multiple deps files exist, the most recent will be used. Now, run `build-zips.sh -s` to build a snapshot release. @@ -137,8 +138,8 @@ version (e.g emacs-27.0.50.zip). ### For snapshots from another branch -Snapshots can be build from any other branch. There is rarely a need +Snapshots can be built from any other branch. There is rarely a need to do this, except where some significant, wide-ranging feature is being added on a feature branch. In this case, the branch can be -given using `build-zips.sh -b pdumper -s` for example. Any "/" +given using `build-zips.sh -b pdumper -s` for example. Any "/" characters in the branch title are replaced. diff --git a/admin/nt/dist-build/README-windows-binaries b/admin/nt/dist-build/README-windows-binaries index c51cea73333..3bdb0913869 100644 --- a/admin/nt/dist-build/README-windows-binaries +++ b/admin/nt/dist-build/README-windows-binaries @@ -40,7 +40,7 @@ installer but as a zip file which some users may prefer. emacs-$VERSION-no-deps.zip -Contains Emacs without any dependencies. This may be useful if you +Contains Emacs without any dependencies. This may be useful if you wish to install where the dependencies are already available, or if you want the small possible Emacs. @@ -49,7 +49,7 @@ for most end-users. emacs-$VERSION-deps.zip -The dependencies. Unzipping this file on top of +The dependencies. Unzipping this file on top of emacs-$VERSION-no-deps.zip should result in the same install as emacs-$VERSION.zip. diff --git a/admin/run-codespell b/admin/run-codespell index c61bd47d451..514de157e5c 100755 --- a/admin/run-codespell +++ b/admin/run-codespell @@ -42,6 +42,7 @@ emacs_run_codespell () git ls-files |\ grep -v -E -e '^(lib|m4)/.*' |\ grep -v -E -e '^admin/(charsets|codespell|unidata)/.*' |\ + grep -v -E -e '^doc/lispref/spellfile$' |\ grep -v -E -e '^doc/misc/texinfo.tex$' |\ grep -v -E -e '^doc/translations/.*' |\ grep -v -E -e '^etc/(AUTHORS|HELLO|publicsuffix.txt)$' |\ diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog index 49e7ef95cef..a2c348e2cf0 100755 --- a/build-aux/gitlog-to-changelog +++ b/build-aux/gitlog-to-changelog @@ -35,7 +35,7 @@ eval 'exec perl -wSx "$0" "$@"' if 0; -my $VERSION = '2023-06-24 21:59'; # UTC +my $VERSION = '2024-07-04 10:56'; # UTC # The definition above must lie within the first 8 lines in order # for the Emacs time-stamp write hook (at end) to update it. # If you change this file with Emacs, please let the write hook @@ -97,6 +97,7 @@ OPTIONS: --strip-cherry-pick remove data inserted by "git cherry-pick"; this includes the "cherry picked from commit ..." line, and the possible final "Conflicts:" paragraph. + --commit-timezone use dates respecting the timezone commits were made in. --help display this help and exit --version output version information and exit @@ -247,6 +248,7 @@ sub git_dir_option($) my $ignore_line; my $strip_tab = 0; my $strip_cherry_pick = 0; + my $commit_timezone = 0; my $srcdir; GetOptions ( @@ -262,6 +264,7 @@ sub git_dir_option($) 'ignore-line=s' => \$ignore_line, 'strip-tab' => \$strip_tab, 'strip-cherry-pick' => \$strip_cherry_pick, + 'commit-timezone' => \$commit_timezone, 'srcdir=s' => \$srcdir, ) or usage 1; @@ -274,10 +277,12 @@ sub git_dir_option($) # that makes a correction in the log or attribution of that commit. my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {}; + my $commit_time_format = $commit_timezone ? '%cI' : '%ct'; my @cmd = ('git', git_dir_option $srcdir, qw(log --log-size), - '--pretty=format:%H:%ct %an <%ae>%n%n'.$format_string, @ARGV); + ("--pretty=format:%H:$commit_time_format" + . ' %an <%ae>%n%n'.$format_string, @ARGV)); open PIPE, '-|', @cmd or die ("$ME: failed to run '". quoted_cmd (@cmd) ."': $!\n" . "(Is your Git too old? Version 1.5.1 or later is required.)\n"); @@ -350,17 +355,31 @@ sub git_dir_option($) my $author_line = shift @line; defined $author_line or die "$ME:$.: unexpected EOF\n"; - $author_line =~ /^(\d+) (.*>)$/ + $author_line =~ /^(\S+) (.*>)$/ or die "$ME:$.: Invalid line " . "(expected date/author/email):\n$author_line\n"; + # Author + my $author = $2; + + my $commit_date = $1; + if (! $commit_timezone) + { + # Seconds since the Epoch. + $commit_date = strftime "%Y-%m-%d", localtime ($commit_date); + } + else + { + # ISO 8601 date. + $commit_date =~ s/T.*$//; + } + # Format 'Copyright-paperwork-exempt: Yes' as a standard ChangeLog # '(tiny change)' annotation. my $tiny = (grep (/^(?:Copyright-paperwork-exempt|Tiny-change):\s+[Yy]es$/, @line) ? ' (tiny change)' : ''); - my $date_line = sprintf "%s %s$tiny\n", - strftime ("%Y-%m-%d", localtime ($1)), $2; + my $date_line = "$commit_date $author$tiny\n"; my @coauthors = grep /^Co-authored-by:.*$/, @line; # Omit meta-data lines we've already interpreted. @@ -507,7 +526,7 @@ sub git_dir_option($) # Local Variables: # mode: perl # indent-tabs-mode: nil -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-line-limit: 50 # time-stamp-start: "my $VERSION = '" # time-stamp-format: "%:y-%02m-%02d %02H:%02M" diff --git a/build-aux/move-if-change b/build-aux/move-if-change index 18a720735cd..a73bd2403cf 100755 --- a/build-aux/move-if-change +++ b/build-aux/move-if-change @@ -2,7 +2,7 @@ # Like mv $1 $2, but if the files are the same, just delete $1. # Status is zero if successful, nonzero otherwise. -VERSION='2018-03-07 03:47'; # UTC +VERSION='2024-07-04 10:56'; # UTC # The definition above must lie within the first 8 lines in order # for the Emacs time-stamp write hook (at end) to update it. # If you change this file with Emacs, please let the write hook @@ -76,7 +76,7 @@ else fi ## Local Variables: -## eval: (add-hook 'before-save-hook 'time-stamp) +## eval: (add-hook 'before-save-hook 'time-stamp nil t) ## time-stamp-start: "VERSION='" ## time-stamp-format: "%:y-%02m-%02d %02H:%02M" ## time-stamp-time-zone: "UTC0" diff --git a/build-aux/update-copyright b/build-aux/update-copyright index ea3e46fe60f..42f26933835 100755 --- a/build-aux/update-copyright +++ b/build-aux/update-copyright @@ -138,7 +138,7 @@ eval 'exec perl -wSx -0777 -pi "$0" "$@"' if 0; -my $VERSION = '2024-01-15.18:30'; # UTC +my $VERSION = '2024-07-04.10:56'; # UTC # The definition above must lie within the first 8 lines in order # for the Emacs time-stamp write hook (at end) to update it. # If you change this file with Emacs, please let the write hook @@ -298,7 +298,7 @@ if (!$found) # coding: utf-8 # mode: perl # indent-tabs-mode: nil -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-line-limit: 200 # time-stamp-start: "my $VERSION = '" # time-stamp-format: "%:y-%02m-%02d.%02H:%02M" diff --git a/configure.ac b/configure.ac index 54109b35466..b79f12a1266 100644 --- a/configure.ac +++ b/configure.ac @@ -1045,7 +1045,7 @@ Please verify that the path to the SDK build tools you specified is correct]) fi AC_PATH_PROGS([D8], [d8], [], "${SDK_BUILD_TOOLS}:$PATH") - if test "D8" = ""; then + if test "$D8" = ""; then AC_MSG_ERROR([The Android dexer was not found. Please verify that the path to the SDK build tools you specified is correct]) fi @@ -1625,30 +1625,6 @@ AC_DEFUN([gl_TYPE_OFF64_T], [HAVE_OFF64_T=1 AC_SUBST([HAVE_OFF64_T])]) -# `strnlen' cannot accept nlen greater than the size of the object S -# on Android 5.0 and earlier. -m4_define([ORIGINAL_AC_FUNC_STRNLEN], m4_defn([AC_FUNC_STRNLEN])) -AC_DEFUN([AC_FUNC_STRNLEN], [ -AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_CACHE_CHECK([for strnlen capable of accepting large limits], - [emacs_cv_func_strnlen_working], - [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT], [[ - volatile size_t (*strnlen_pointer) (const char *s, size_t) = &strnlen; - if ((*strnlen_pointer) ("", -1) != 0) - return 1; - return 0; -]])],[emacs_cv_func_strnlen_working=yes], - [emacs_cv_func_strnlen_working=no], - [# Guess no on Android 21 and earlier, yes elsewhere. - AS_IF([test -n "$ANDROID_SDK" && test "$ANDROID_SDK" -lt 22], - [emacs_cv_func_strnlen_working=no], - [emacs_cv_func_strnlen_working='guessing yes'])])]) -AS_IF([test "$emacs_cv_func_strnlen_working" != "no"], - [ORIGINAL_AC_FUNC_STRNLEN], - [ac_cv_func_strnlen_working=no - AC_LIBOBJ([strnlen])])]) - # Initialize gnulib right after choosing the compiler. dnl Amongst other things, this sets AR and ARFLAGS. gl_EARLY @@ -1835,7 +1811,6 @@ AS_IF([test $gl_gcc_warnings = no], nw="$nw -Wcast-align=strict" # Emacs is tricky with pointers. nw="$nw -Wduplicated-branches" # Too many false alarms nw="$nw -Wformat-overflow=2" # False alarms due to GCC bug 110333 - nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings nw="$nw -Woverlength-strings" # Not a problem these days nw="$nw -Wvla" # Emacs uses . nw="$nw -Wunused-const-variable=2" # lisp.h declares const objects. @@ -2107,7 +2082,7 @@ AC_CACHE_CHECK([for 'find' args to delete a file], [if touch conftest.tmp && find conftest.tmp -delete 2>/dev/null && test ! -f conftest.tmp then emacs_cv_find_delete="-delete" - else emacs_cv_find_delete="-exec rm -f {} ';'" + else emacs_cv_find_delete="-exec rm -f {} +" fi]) FIND_DELETE=$emacs_cv_find_delete AC_SUBST([FIND_DELETE]) @@ -2372,6 +2347,51 @@ case $canonical in fi ;; esac + +AC_CACHE_CHECK([for flags to work around GCC bug 58416], + [emacs_cv_gcc_bug_58416_CFLAGS], + [emacs_cv_gcc_bug_58416_CFLAGS='none needed' + AS_CASE([$canonical], + [[i[3456]86-* | x86_64-*]], + [AS_IF([test "$GCC" = yes], + [old_CFLAGS=$CFLAGS + # If no flags are needed (e.g., not GCC 4+), don't use any. + # Otherwise, use -mfpmath=sse if already assuming SSE2. + # Otherwise, use -fno-tree-sra. + for emacs_cv_gcc_bug_58416_CFLAGS in \ + 'none needed' -mfpmath=sse -fno-tree-sra + do + AS_CASE([$emacs_cv_gcc_bug_58416_CFLAGS], + ['none needed'], [], + [-fno-tree-sra], [break], + [CFLAGS="$old_CFLAGS $emacs_cv_gcc_bug_58416_CFLAGS"]) + AC_COMPILE_IFELSE( + [AC_LANG_DEFINES_PROVIDED + [/* Work around GCC bug with double in unions on x86, + where the generated insns copy non-floating-point data + via fldl/fstpl instruction pairs. This can misbehave + the data's bit pattern looks like a NaN. See, e.g.: + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58416#c10 + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71460 + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93271 + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114659 + Problem observed with 'gcc -m32' with GCC 14.1.1 + 20240607 (Red Hat 14.1.1-5) on x86-64. */ + #include + #if \ + (4 <= __GNUC__ && !defined __clang__ \ + && (defined __i386__ || defined __x86_64__) \ + && ! (0 <= FLT_EVAL_METHOD && FLT_EVAL_METHOD <= 1)) + # error "GCC bug 58416 is possibly present" + #endif + ]], + [break]) + done + CFLAGS=$old_CFLAGS])])]) +AS_CASE([$emacs_cv_gcc_bug_58416_CFLAGS], + [-*], + [C_SWITCH_MACHINE="$C_SWITCH_MACHINE $emacs_cv_gcc_bug_58416_CFLAGS"]) + AC_SUBST([C_SWITCH_MACHINE]) C_SWITCH_SYSTEM= diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi index c3d86bf3426..8fd3d61ec64 100644 --- a/doc/emacs/ack.texi +++ b/doc/emacs/ack.texi @@ -1,4 +1,3 @@ -@c -*- coding: utf-8 -*- @c This is part of the Emacs manual. @c Copyright (C) 1994--1997, 1999--2024 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @@ -53,7 +52,7 @@ D-Bus message bus protocol; @file{zeroconf.el}, a mode for browsing Avahi services; @file{secrets.el}, an interface to keyring daemons for storing confidential data; and @file{filenotify.el} and the associated low-level interface routines, for watching file status changes. -He and Kai Großjohann wrote the Tramp package, which provides +He and Kai Gro@ss{}johann wrote the Tramp package, which provides transparent remote file editing using ssh, ftp, and other network protocols. He and Daniel Pittman wrote @file{tramp-cache.el}. @@ -63,7 +62,7 @@ point vertically fixed by scrolling the window when moving up and down in the buffer. @item -Aurélien Aptel added dynamic module support to Emacs. Philipp +Aur@'elien Aptel added dynamic module support to Emacs. Philipp Stephani and others also worked on the dynamic module code. @item @@ -71,7 +70,7 @@ Joe Arceneaux wrote the original text property implementation, and implemented support for X11. @item -Emil Åström, Milan Zamaza, and Stefan Bruda wrote @file{prolog.el}, +Emil @AA{}str@''om, Milan Zamaza, and Stefan Bruda wrote @file{prolog.el}, a mode for editing Prolog (and Mercury) code. @item @@ -108,7 +107,7 @@ footnotes in email messages; and @file{gnus-audio.el} and @item Alexander L. Belikoff, Sergey Berezin, Sacha Chua, David Edmondson, Noah Friedman, Andreas Fuchs, Mario Lang, Ben Mesander, Lawrence -Mitchell, Gergely Nagy, Michael Olson, Per Persson, Jorgen Schäfer, +Mitchell, Gergely Nagy, Michael Olson, Per Persson, Jorgen Sch@"afer, Alex Schroeder, and Tom Tromey wrote ERC, an advanced Internet Relay Chat client (for more information, see the file @file{CREDITS} in the ERC distribution). @@ -174,7 +173,7 @@ David M. Brown wrote @file{array.el}, for editing arrays and other tabular data. @item -Włodek Bzyl and Ryszard Kubiak wrote @file{ogonek.el}, a package for +W@l{}odek Bzyl and Ryszard Kubiak wrote @file{ogonek.el}, a package for changing the encoding of Polish characters. @item @@ -247,7 +246,7 @@ generating JSON files. @item Andrea Corallo was the Emacs (co-)maintainer from 29.3 onwards. He wrote the native compilation support in @file{comp.c} and -and @file{comp.el}, for compiling Emacs Lisp to native code using +@file{comp.el}, for compiling Emacs Lisp to native code using @samp{libgccjit}. @item @@ -283,7 +282,7 @@ text replace the current selection. Eric Ding wrote @file{goto-addr.el}, @item -Jan Djärv added support for the GTK+ toolkit and X drag-and-drop. +Jan Dj@"arv added support for the GTK+ toolkit and X drag-and-drop. He also wrote @file{dynamic-setting.el}. @item @@ -291,11 +290,11 @@ Carsten Dominik wrote Ref@TeX{}, a package for setting up labels and cross-references in @LaTeX{} documents; and co-wrote IDLWAVE mode (q.v.). He was the original author of Org mode, for maintaining notes, todo lists, and project planning. Bastien Guerry subsequently took -over maintainership. Benjamin Andresen, Thomas Baumann, Joel Boehland, Jan Böcker, Lennart +over maintainership. Benjamin Andresen, Thomas Baumann, Joel Boehland, Jan B@"ocker, Lennart Borgman, Baoqiu Cui, Dan Davison, Christian Egli, Eric S. Fraga, Daniel German, Chris Gray, Konrad Hinsen, Tassilo Horn, Philip Jackson, Martyn Jago, Thorsten Jolitz, Jambunathan K, Tokuya Kameshima, Sergey Litvinov, David Maus, Ross Patterson, Juan Pechiar, Sebastian Rose, Eric Schulte, Paul Sexton, Ulf Stegemann, Andy Stewart, Christopher Suckling, David O'Toole, John Wiegley, Zhang Weize, -Piotr Zieliński, and others also wrote various Org mode components. +Piotr Zieli@'nski, and others also wrote various Org mode components. For more information, @pxref{History and Acknowledgments,,, org, The Org Manual}. @item @@ -325,7 +324,7 @@ Stephen Eglen wrote @file{mspools.el}, which tells you which Procmail folders have mail waiting in them. @item -Torbjörn Einarsson wrote @file{f90.el}, a mode for Fortran 90 files. +Torbj@"orn Einarsson wrote @file{f90.el}, a mode for Fortran 90 files. @item Tsugutomo Enami co-wrote the support for international character sets. @@ -390,7 +389,7 @@ Kevin Gallagher rewrote and enhanced the EDT emulation, and wrote flow control. @item -Fabián E. Gallina rewrote @file{python.el}, the major mode for the +Fabi@'an E. Gallina rewrote @file{python.el}, the major mode for the Python programming language used in Emacs 24.3 onwards. @item @@ -398,7 +397,7 @@ Kevin Gallo added multiple-frame support for Windows NT and wrote @file{w32-win.el}, support functions for the MS-Windows window system. @item -Juan León Lahoz García wrote @file{wdired.el}, a package for +Juan Le@'on Lahoz Garc@'ia wrote @file{wdired.el}, a package for performing file operations by directly editing Dired buffers. @item @@ -537,9 +536,9 @@ He also wrote @file{network-stream.el}, for opening network processes; and implemented libxml2 support. He also wrote @file{eww.el}, an Emacs Lisp web browser; and implemented native zlib decompression. Components of Gnus have also been written by: Nagy Andras, David -Blacka, Scott Byer, Ludovic Courtès, Julien Danjou, Kevin Greiner, Kai -Großjohann, Joe Hildebrand, Paul Jarc, Simon Josefsson, Sascha -Lüdecke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz, +Blacka, Scott Byer, Ludovic Court@`es, Julien Danjou, Kevin Greiner, Kai +Gro@ss{}johann, Joe Hildebrand, Paul Jarc, Simon Josefsson, Sascha +L@"udecke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz, Thomas Steffen, Reiner Steib, Jan Tatarik, Didier Verna, Ilja Weis, Katsumi Yamaoka, Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the Gnus Manual}). @@ -580,7 +579,7 @@ S/MIME and Sieve components; and @file{tls.el} and @file{starttls.el} for the Transport Layer Security protocol. @item -Arne Jørgensen wrote @file{latexenc.el}, a package to +Arne J@o{}rgensen wrote @file{latexenc.el}, a package to automatically guess the correct coding system in @LaTeX{} files. @item @@ -635,7 +634,7 @@ files and running a PostScript interpreter interactively from within Emacs. @item -Karel Klíč contributed SELinux support, for preserving the +Karel Kl@'i@v{c} contributed SELinux support, for preserving the Security-Enhanced Linux context of files on backup and copy. @item @@ -665,7 +664,7 @@ R. Dodd. He also wrote @file{ls-lisp.el}, a Lisp emulation of the program. @item -David Kågedal wrote @file{tempo.el}, providing support for +David K@aa{}gedal wrote @file{tempo.el}, providing support for easy insertion of boilerplate text and other common constructions. @item @@ -730,7 +729,7 @@ Leo Liu wrote @file{pcmpl-x.el}, providing completion for miscellaneous external tools; and revamped support for Octave in Emacs 24.4. @item -Károly Lőrentey wrote the multi-terminal code, which allows +K@'aroly L@H{o}rentey wrote the multi-terminal code, which allows Emacs to run on graphical and text terminals simultaneously. @item @@ -855,7 +854,7 @@ and @file{rfc822.el}, a parser for E-mail addresses in the format used in mail messages and news articles (Internet RFC 822 and its successors). @item -Gerd Möllmann was the Emacs maintainer from the beginning of Emacs 21 +Gerd M@"ollmann was the Emacs maintainer from the beginning of Emacs 21 development until the release of 21.1. He wrote the new display engine used from Emacs 21 onwards, and the asynchronous timers facility. He also wrote @code{ebrowse}, the C@t{++} browser; @@ -923,7 +922,7 @@ and @code{winterm} terminal emulators; and @file{vc-dir.el}, displaying the status of version-controlled directories. @item -Hrvoje Nikšić wrote @file{savehist.el}, for saving the minibuffer +Hrvoje Nik@v{s}i@'c wrote @file{savehist.el}, for saving the minibuffer history between Emacs sessions. @item @@ -1011,7 +1010,7 @@ Fred Pierresteguy and Paul Reilly made Emacs work with X Toolkit widgets. @item -François Pinard, Greg McGary, and Bruno Haible wrote @file{po.el}, +Fran@,{c}ois Pinard, Greg McGary, and Bruno Haible wrote @file{po.el}, support for PO translation files. @item @@ -1026,7 +1025,7 @@ minor mode for displaying a ruler in the header line; and structures. @item -Francesco A. Potortì wrote @file{cmacexp.el}, providing a command which +Francesco A. Potort@`i wrote @file{cmacexp.el}, providing a command which runs the C preprocessor on a region of a file and displays the results. He also expanded and redesigned the @code{etags} program. @@ -1266,11 +1265,11 @@ Olaf Sylvester wrote @file{bs.el}, a package for manipulating Emacs buffers. @item -Tibor Šimko and Milan Zamazal wrote @file{slovak.el}, support for +Tibor @v{S}imko and Milan Zamazal wrote @file{slovak.el}, support for editing text in Slovak language. @item -João Távora wrote many improvements for @file{flymake.el}, an +Jo@~ao T@'avora wrote many improvements for @file{flymake.el}, an on-the-fly syntax-checking package. @item @@ -1392,7 +1391,7 @@ John Wiegley was the Emacs (co-)maintainer from Emacs 25 to 29.1. He wrote @file{align.el}, a set of commands for aligning text according to regular-expression based rules; @file{isearchb.el} for fast buffer switching; @file{timeclock.el}, a package for keeping track of time -spent on projects; the Bahá'í calendar support; @file{pcomplete.el}, a +spent on projects; the Bah@'a'@'i calendar support; @file{pcomplete.el}, a programmable completion facility; @file{remember.el}, a mode for jotting down things to remember; @file{eudcb-mab.el}, an address book backend for the Emacs Unified Directory Client; and @code{eshell}, a diff --git a/doc/emacs/android.texi b/doc/emacs/android.texi index 606c5e719cb..28ae964a1e4 100644 --- a/doc/emacs/android.texi +++ b/doc/emacs/android.texi @@ -267,7 +267,7 @@ system. @cindex temp~unlinked.NNNN files, Android On Android devices running very old (2.6.29) versions of the Linux kernel, Emacs needs to create files named starting with -@file{temp~unlinked} in the the temporary file directory in order to +@file{temp~unlinked} in the temporary file directory in order to read from asset files. Do not create files with such names yourself, or they may be overwritten or removed. @@ -364,17 +364,52 @@ consult the values of the variables @code{ctags-program-name}, @code{ebrowse-program-name}, and @code{rcs2log-program-name}. @xref{Subprocess Creation,,, elisp, the Emacs Lisp Reference Manual}. - The @file{/assets} directory containing Emacs start-up files is -meant to be inaccessible to processes not directly created by -@code{zygote}, the system service responsible for starting -applications. Since required Lisp is found in the @file{/assets} -directory, it would thus follow that it is not possible for Emacs to -start itself as a subprocess. A special binary named -@command{libandroid-emacs.so} is provided with Emacs, which tries its -best to start Emacs for the purpose of running Lisp in batch mode. -However, the approach it takes was devised by reading Android source -code, and is not sanctioned by the Android compatibility definition -documents, so your mileage may vary. + The @file{/assets} directory containing Emacs start-up files is meant +to be inaccessible to processes not directly created by @code{zygote}, +the system service responsible for starting applications. Since +required Lisp is found in the @file{/assets} directory, it would thus +follow that it is not possible for Emacs to start itself as a +subprocess. A special binary named @command{libandroid-emacs.so} is +provided with Emacs, which is installed into the library directory, and +which tries its best to start Emacs for the purpose of running Lisp in +batch mode. The approach it takes was devised by reference to Android +source code, and is not sanctioned by the Android compatibility +definition documents, so your mileage may vary. + +@cindex EMACS_CLASS_PATH environment variable, Android + Even when the location of the @command{libandroid-emacs.so} command is +known in advance, special preparation is required to run Emacs from +elsewhere than a subprocess of an existing Emacs session, as it must be +made to understand the location of resources and shared libraries in or +extracted from the installed application package. The OS command +@command{pm path org.gnu.emacs} will print the location of the +application package, though the said command must be invoked in a +peculiar manner to satisfy system restrictions on communication between +pseudoterminal devices created by user applications and system services +such as the package manager, which is to say, with the standard IO +streams redirected to a real file or a pipe. This value, once +established, must be specified in the environment variables +@code{EMACS_CLASS_PATH}, so that this sample shell script may be +installed as @code{emacs} in any location that is accessible: + +@example +#!/system/bin/sh + +package_name=`pm path org.gnu.emacs 2>/dev/null -Return the file. This will be the tarball for a multi-file +Return the file. This will be the tarball for a multi-file package, or the single file for a simple package. @end table diff --git a/doc/lispref/parsing.texi b/doc/lispref/parsing.texi index 21e14b4632c..ddf02d9283b 100644 --- a/doc/lispref/parsing.texi +++ b/doc/lispref/parsing.texi @@ -1,4 +1,4 @@ -@c -*- mode: texinfo; coding: utf-8 -*- +@c -*- mode: texinfo -*- @c This is part of the GNU Emacs Lisp Reference Manual. @c Copyright (C) 2021--2024 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @@ -413,13 +413,6 @@ is non-@code{nil}, this function always creates a new parser. @var{tag} can be any symbol except @code{t}, and defaults to @code{nil}. Different parsers can have the same tag. - -If that buffer is an indirect buffer, its base buffer is used instead. -That is, indirect buffers use their base buffer's parsers. If the -base buffer is narrowed, an indirect buffer might not be able to -retrieve information of the portion of the buffer text that is -invisible in the base buffer. Lisp programs should widen as necessary -should they want to use a parser in an indirect buffer. @end defun Given a parser, we can query information about it. @@ -458,9 +451,7 @@ tree incrementally. @defun treesit-parser-list &optional buffer language tag This function returns the parser list of @var{buffer}, filtered by @var{language} and @var{tag}. If @var{buffer} is @code{nil} or -omitted, it defaults to the current buffer. If that buffer is an -indirect buffer, its base buffer is used instead. That is, indirect -buffers use their base buffer's parsers. +omitted, it defaults to the current buffer. If @var{language} is non-@var{nil}, only include parsers for that language, and only include parsers with @var{tag}. @var{tag} defaults @@ -540,6 +531,30 @@ symbol, rather than a lambda function. This function returns the list of @var{parser}'s notifier functions. @end defun +@heading Substitute parser for another language +@cindex remap language grammar, tree-sitter +@cindex replace language grammar, tree-sitter +@cindex replace parser language, tree-sitter +@cindex extended grammar, tree-sitter + +Sometimes, a grammar for language B is a strict superset of the grammar +of another language A. Then it makes sense to reuse configurations +(font-lock rules, indentation rules, etc.) of language A for language B. +For that purpose, @var{treesit-language-remap-alist} allows users to +remap language A into language B. + +@defvar treesit-language-remap-alist +The value of this variable should be an alist of +@w{@code{(@var{language-a} . @var{language-b})}}. When such pair exists +in the alist, creating a parser for @var{language-a} actually creates a +parser for @var{language-b}. By extension, anything that creates a node +or makes a query of @var{language-a} will be redirected to use +@var{language-b} instead. + +Note that calling @code{treesit-parser-language} on a parser for +@var{language-a} still returns @var{language-a}. +@end defvar + @node Retrieving Nodes @section Retrieving Nodes @cindex retrieve node, tree-sitter @@ -2159,7 +2174,7 @@ node is a defun node but doesn't have a name, or the node is @node Tree-sitter C API @section Tree-sitter C API Correspondence -Emacs' tree-sitter integration doesn't expose every feature +Emacs's tree-sitter integration doesn't expose every feature provided by tree-sitter's C API@. Missing features include: @itemize diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi index ead7833af61..37cfe264157 100644 --- a/doc/lispref/positions.texi +++ b/doc/lispref/positions.texi @@ -450,7 +450,7 @@ in the buffer, or in the region if the region is active. @cindex line number This function returns the line number in the current buffer corresponding to the buffer position @var{pos}. If @var{pos} is -@code{nil} or omitted, the current buffer position is used. If +@code{nil} or omitted, the current buffer position is used. If @var{absolute} is @code{nil}, the default, counting starts at @code{(point-min)}, so the value refers to the contents of the accessible portion of the (potentially narrowed) buffer. If diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index c5fbb0fb818..53468e0d252 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -135,7 +135,7 @@ stream to a different destination. @cindex program arguments All three of the subprocess-creating functions allow specifying -command-line arguments for the process to run. For @code{call-process} +command-line arguments for the process to run. For @code{call-process} and @code{call-process-region}, these come in the form of a @code{&rest} argument, @var{args}. For @code{make-process}, both the program to run and its command-line arguments are specified as a list diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index 6e3680bdb4f..7b4a9100e77 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -1771,7 +1771,7 @@ required for @code{rx-to-string} to work. Example: Another difference from @code{rx-let} is that the @var{bindings} are dynamically scoped, and thus also available in functions called from -@var{body}. However, they are not visible inside functions defined in +@var{body}. However, they are not visible inside functions defined in @var{body}. @end defmac @@ -1919,7 +1919,7 @@ symptoms less likely and help alleviate problems that do arise. @itemize @item Anchor regexps at the beginning of a line, string or buffer using -zero-width assertions (@samp{^} and @code{\`}). This takes advantage +zero-width assertions (@samp{^} and @code{\`}). This takes advantage of fast paths in the implementation and can avoid futile matching attempts. Other zero-width assertions may also bring benefits by causing a match to fail early. @@ -1977,7 +1977,7 @@ To help diagnose problems in your regexps or in the regexp engine itself, this function returns a string describing the compiled form of @var{regexp}. To make sense of it, it can be necessary to read at least the description of the @code{re_opcode_t} type in the -@code{src/regex-emacs.c} file in Emacs' source code. +@code{src/regex-emacs.c} file in Emacs's source code. It is currently able to give a meaningful description only if Emacs was compiled with @code{--enable-checking}. diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi index d5695e4c83d..9b0a0d74f30 100644 --- a/doc/lispref/sequences.texi +++ b/doc/lispref/sequences.texi @@ -937,7 +937,7 @@ use instead of the default @code{equal}. @defun seq-set-equal-p sequence1 sequence2 &optional testfn This function checks whether @var{sequence1} and @var{sequence2} -contain the same elements, regardless of the order. If the optional +contain the same elements, regardless of the order. If the optional argument @var{testfn} is non-@code{nil}, it is a function of two arguments to use instead of the default @code{equal}. diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi index 86ec82b66a1..a48e6380d32 100644 --- a/doc/lispref/streams.texi +++ b/doc/lispref/streams.texi @@ -970,7 +970,7 @@ you can use, see the variable's documentation string. @defvar print-integers-as-characters When this variable is non-@code{nil}, integers that represent graphic base characters will be printed using Lisp character syntax -(@pxref{Basic Char Syntax}). Other numbers are printed the usual way. +(@pxref{Basic Char Syntax}). Other numbers are printed the usual way. For example, the list @code{(4 65 -1 10)} would be printed as @samp{(4 ?A -1 ?\n)}. diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi index e290e2e7a6b..06094e45aad 100644 --- a/doc/lispref/strings.texi +++ b/doc/lispref/strings.texi @@ -1499,7 +1499,7 @@ case. The definition of a word is any sequence of consecutive characters that are assigned to the word constituent syntax class in the current syntax table (@pxref{Syntax Class Table}); if @code{case-symbols-as-words} -is non-nil, characters assigned to the symbol constituent syntax +is non-@code{nil}, characters assigned to the symbol constituent syntax class are also considered as word constituent. When @var{string-or-char} is a character, this function does the same @@ -1682,7 +1682,7 @@ Exits}). Some language environments modify the case conversions of @acronym{ASCII} characters; for example, in the Turkish language environment, the @acronym{ASCII} capital I is downcased into -a Turkish dotless i (@samp{ı}). This can interfere with code that requires +a Turkish dotless i (@samp{@dotless{i}}). This can interfere with code that requires ordinary @acronym{ASCII} case conversion, such as implementations of @acronym{ASCII}-based network protocols. In that case, use the @code{with-case-table} macro with the variable @var{ascii-case-table}, diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 41ab90a80f3..196fe89a092 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -3854,13 +3854,19 @@ controls the total height of the display line ending in that newline. @xref{Line Height}. @item wrap-prefix -If text has a @code{wrap-prefix} property, the prefix it defines will -be added at display time to the beginning of every continuation line -due to text wrapping (so if lines are truncated, the wrap-prefix is -never used). It may be a string or an image (@pxref{Other Display -Specs}), or a stretch of whitespace such as specified by the -@code{:width} or @code{:align-to} display properties (@pxref{Specified -Space}). +If a region of text has a @code{wrap-prefix} property, the prefix it +defines will be added at display time to the beginning of every +continuation line due to text wrapping (so if lines are truncated, the +wrap-prefix is never used). The property value may be a string or an +image (@pxref{Other Display Specs}), or a stretch of whitespace such as +specified by the @code{:width} or @code{:align-to} display properties +(@pxref{Specified Space}). Note that to have its effect, the +@code{wrap-prefix} property must be set on the entire region of text, +starting from the first character of the first line of that text and up +to the last character of the last line; otherwise, breaking the text +into lines in a different way might fail to display the prefix, because +the display engine checks for this property only immediately after +continuing a line. A wrap-prefix may also be specified for an entire buffer using the @code{wrap-prefix} buffer-local variable (however, a @@ -3868,12 +3874,18 @@ A wrap-prefix may also be specified for an entire buffer using the the @code{wrap-prefix} variable). @xref{Truncation}. @item line-prefix -If text has a @code{line-prefix} property, the prefix it defines will -be added at display time to the beginning of every non-continuation -line. It may be a string or an image (@pxref{Other Display -Specs}), or a stretch of whitespace such as specified by the -@code{:width} or @code{:align-to} display properties (@pxref{Specified -Space}). +If a region of text has a @code{line-prefix} property, the prefix it +defines will be added at display time to the beginning of every +non-continuation line. The property value may be a string or an image +(@pxref{Other Display Specs}), or a stretch of whitespace such as +specified by the @code{:width} or @code{:align-to} display properties +(@pxref{Specified Space}). Note that to have its effect, the +@code{line-prefix} property must be set on the entire region of text, +starting from the first character of the first line of that text and up +to the last character of the last line; otherwise, breaking the text +into lines in a different way might fail to display the prefix, because +the display engine checks for this property only when starting a new +line. A line-prefix may also be specified for an entire buffer using the @code{line-prefix} buffer-local variable (however, a @@ -6009,7 +6021,7 @@ This API has mandatory and optional parts. To allow its users to initiate JSONRPC contacts (notifications or requests) or reply to endpoint requests, the new transport implementation must equip the @code{jsonrpc-connection-send} generic -function with a specialization for the the new subclass +function with a specialization for the new subclass (@pxref{Generic Functions}). This generic function is called automatically by primitives such as @code{jsonrpc-request} and @code{jsonrpc-notify}. The specialization should ensure that the diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi index 802fa0febed..dc0679ed3a1 100644 --- a/doc/lispref/tips.texi +++ b/doc/lispref/tips.texi @@ -1087,11 +1087,11 @@ set more variables in the @samp{-*-} specification, add it after @code{lexical-binding}. If this would make the first line too long, use a Local Variables section at the end of the file. - The copyright notice usually lists your name (if you wrote the -file). If you have an employer who claims copyright on your work, you -might need to list them instead. Do not say that the copyright holder -is the Free Software Foundation (or that the file is part of GNU -Emacs) unless your file has been accepted into the Emacs distribution. + The copyright notice usually lists your name (if you wrote the file). +If you have an employer who claims copyright on your work, you might +need to list them instead. Do not say that the copyright holder is the +Free Software Foundation (or that the file is part of GNU Emacs) unless +your file has been accepted into the Emacs distribution or GNU ELPA. For more information on the form of copyright and license notices, see @uref{https://www.gnu.org/licenses/gpl-howto.html, the guide on the GNU website}. diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index 0ed1936cd84..76f15b2595c 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -2613,7 +2613,7 @@ compatibility. You can do this with @code{defvaralias}. @defun defvaralias new-alias base-variable &optional docstring This function defines the symbol @var{new-alias} as a variable alias -for symbol @var{base-variable}. This means that retrieving the value +for symbol @var{base-variable}. This means that retrieving the value of @var{new-alias} returns the value of @var{base-variable}, and changing the value of @var{new-alias} changes the value of @var{base-variable}. The two aliased variable names always share the diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 01ec2a6ecd5..656a44dfcbf 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -1647,6 +1647,45 @@ Ordering}). Specifically, the meanings of @code{t} and @code{nil} here are the opposite of what they are in those other functions. @end deffn +@cindex implicit deletion of windows +@cindex deleting windows implicitly + + The above commands delete windows explicitly. However, Emacs may also +delete a window implicitly when it thinks that it's more intuitive to +eliminate it rather than showing some unrelated buffer in it. Functions +that may delete windows implicitly are @code{kill-buffer} +(@pxref{Killing Buffers}), @code{quit-restore-window} (@pxref{Quitting +Windows}) and @code{bury-buffer} (@pxref{Buffer List}). Some of these +delete a window if and only if that window is dedicated to its buffer +(@pxref{Dedicated Windows}). Others delete a window when that window +has been created by @code{display-buffer} (@pxref{Displaying Buffers}). +Some will also try to delete a window's frame together with the window, +provided there are other frames on the same terminal and the frame does +not host the active minibuffer window. + + The hook described next can be used to avoid that a window gets +deleted by these functions. + +@defopt window-deletable-functions +This is an abnormal hook that can be used to avoid that a window gets +deleted implicitly. The value should be a list of functions that take +two arguments. The first argument is the window about to be deleted. +The second argument, if non-@code{nil}, means that the window is the +only window on its frame and would be deleted together with its frame. +The window's buffer is current when running this hook. + +If any of these functions returns @code{nil}, the window will not be +deleted and another buffer will be shown in it. This hook is run +(indirectly) by the functions @code{quit-restore-window}, +@code{kill-buffer} and @code{bury-buffer}. It is not run by functions +that delete windows explicitly like @code{delete-window}, +@code{delete-other-windows} or @code{delete-windows-on}. + +The purpose of this hook is to give its clients a chance to save a +window or its frame from deletion because they might still want to use +that window or frame for their own purposes. +@end defopt + @node Recombining Windows @section Recombining Windows @@ -2297,16 +2336,41 @@ all windows displaying it. @var{buffer-or-name} should be a buffer, or the name of an existing buffer; if omitted or @code{nil}, it defaults to the current buffer. -The replacement buffer in each window is chosen via +The replacement buffer in each window is usually chosen via @code{switch-to-prev-buffer} (@pxref{Window History}). With the exception of side windows (@pxref{Side Windows}), any dedicated window displaying @var{buffer-or-name} is deleted if possible (@pxref{Dedicated Windows}). If such a window is the only window on its frame and there -are other frames on the same terminal, the frame is deleted as well. -If the dedicated window is the only window on the only frame on its +are other frames on the same terminal, the frame is deleted as well. If +the dedicated window is the only window on the only frame on its terminal, the buffer is replaced anyway. + +The main purpose of this function is to decide what to do with windows +whose buffers are about to be killed by @code{kill-buffer} +(@pxref{Killing Buffers}). It will, however, also remove the buffer +specified by @var{buffer-or-name} from the lists of previous and next +buffers (@pxref{Window History}) of all windows (including dead windows +that are only referenced by window configurations) and remove any +@code{quit-restore} or @code{quit-restore-prev} parameters +(@pxref{Window Parameters}) referencing that buffer. @end deffn +By default, @code{replace-buffer-in-windows} deletes only windows +dedicated to their buffers and ignores any @code{quit-restore} or +@code{quit-restore-prev} parameters of the windows it works on. The +following option is useful for circumventing these restrictions. + +@defopt kill-buffer-quit-windows +If this option is @code{nil}, @code{kill-buffer} (and in consequence +@code{replace-buffer-in-windows}) may only delete windows that are +dedicated to the buffer about to be killed. If this is non-@code{nil}, +@code{replace-buffer-in-windows} has @code{quit-restore-window} +(@pxref{Quitting Windows}) deal with any such window. That function may +delete such a window even if it's not dedicated to its buffer. Also, +@code{delete-windows-on} will use @code{quit-restore-window} as fallback +when a window cannot be deleted and another buffer must be shown in it. +@end defopt + @node Switching Buffers @section Switching to a Buffer in a Window @@ -3312,12 +3376,11 @@ only addressee. @vindex pop-up-frames@r{, a buffer display action alist entry} @item pop-up-frames -The value controls whether @code{display-buffer} may display buffers -by making new frames. It has the same meaning as the -@code{pop-up-frames} variable and takes precedence over it when present. -Its main intended purpose is to override a non-nil value of the -variable for particular buffers which the user prefers to keep -in the selected frame. +The value controls whether @code{display-buffer} may display buffers by +making new frames. It has the same meaning as the @code{pop-up-frames} +variable and takes precedence over it when present. Its main intended +purpose is to override a non-@code{nil} value of the variable for +particular buffers which the user prefers to keep in the selected frame. @vindex parent-frame@r{, a buffer display action alist entry} @item parent-frame @@ -4447,9 +4510,12 @@ the value assigned by the last call of @code{set-window-dedicated-p} for selected window. @end defun +@findex toggle-window-dedicated @defun set-window-dedicated-p window flag This function marks @var{window} as dedicated to its buffer if @var{flag} is non-@code{nil}, and non-dedicated otherwise. +Interactively you can use the @kbd{C-x w d} +(@code{toggle-window-dedicated}) command to do the same. As a special case, if @var{flag} is @code{t}, @var{window} becomes @dfn{strongly} dedicated to its buffer. @code{set-window-buffer} @@ -4530,6 +4596,15 @@ this buffer again, short of killing the buffer. @item kill This means to kill @var{window}'s buffer. + +@item killing +This is handled like @code{kill} but assumes that @var{window}'s buffer +gets killed elsewhere. This value is used by +@code{replace-buffer-in-windows} and @code{quit-windows-on}. + +@item burying +This is handled like @code{bury} but assumes that @var{window}'s buffer +gets buried elsewhere. This value is used by @code{quit-windows-on}. @end table The argument @var{bury-or-kill} also specifies what to do with @@ -4539,14 +4614,18 @@ terminal. If @var{bury-or-kill} equals @code{kill}, it means to delete the frame. Otherwise, the fate of the frame is determined by calling @code{frame-auto-hide-function} (see below) with that frame as sole argument. - -This function always sets @var{window}'s @code{quit-restore} parameter -to @code{nil} unless it deletes the window. @end defun -The window @var{window}'s @code{quit-restore} parameter (@pxref{Window -Parameters}) should be @code{nil} or a list of four elements: -@c FIXME: describe what quit-restore-window does if this is nil. + A window's @code{quit-restore} and @code{quit-restore-prev} parameters +(@pxref{Window Parameters}) guide @code{quit-restore-window} through its +process of dealing with its @var{window} argument. If such a parameter +is absent or @code{nil}, this usually means that the window has been +created by a command like @code{split-window-below} or +@code{split-window-right} (@pxref{Split Window,,, emacs, The GNU Emacs +Manual}) and @code{quit-restore-window} will delete the window only if +it was dedicated to its buffer. + + If non-@code{nil}, any such parameter is a list of four elements: @lisp (@var{method} @var{obuffer} @var{owindow} @var{this-buffer}) @@ -4584,17 +4663,17 @@ just before the displaying was done. If quitting deletes @var{window}, it tries to select @var{owindow}. The fourth element, @var{this-buffer}, is the buffer whose displaying -set the @code{quit-restore} parameter. Quitting @var{window} may delete -that window only if it still shows that buffer. +set the @code{quit-restore} parameter. Quitting @var{window} will use +the information stored by that parameter if and only if it still shows +that buffer. -Quitting @var{window} tries to delete it if and only if (1) -@var{method} is either @code{window} or @code{frame}, (2) the window -has no history of previously-displayed buffers and (3) -@var{this-buffer} equals the buffer currently displayed in -@var{window}. If @var{window} is part of an atomic window -(@pxref{Atomic Windows}), quitting will try to delete the root of that -atomic window instead. In either case, it tries to avoid signaling an -error when @var{window} cannot be deleted. +@code{quit-restore-window} tries to delete its @var{window} if (1) +@var{method} is either @code{window} or @code{frame}, (2) the window has +no history of previously-displayed buffers and (3) @var{this-buffer} +equals the buffer currently displayed in @var{window}. If @var{window} +is part of an atomic window (@pxref{Atomic Windows}), it will try to +delete the root of that atomic window instead. In either case, it tries +to avoid signaling an error when @var{window} cannot be deleted. If @var{obuffer} is a list, and @var{prev-buffer} is still live, quitting displays @var{prev-buffer} in @var{window} according to the @@ -4606,6 +4685,58 @@ Otherwise, if @var{window} was previously used for displaying other buffers (@pxref{Window History}), the most recent buffer in that history will be displayed. + Conceptually, the @code{quit-restore} parameter is used for undoing +the first buffer display operation for a specific window. The +@code{quit-restore-prev} parameter is used for undoing the last buffer +display operation in a row of such operations for a specific window. +Any buffer display operation for that window that happened in between, +is undone by displaying the buffer previously shown in that window. + + @code{display-buffer} sets up the @code{quit-restore} parameter of any +window it uses when that window has been either created by it or has no +non-@code{nil} @code{quit-restore} parameter. If the window already has +a @code{quit-restore} parameter, @code{display-buffer} adds a +@code{quit-restore-prev} parameter whose @var{method} element is either +@code{same} or @code{other}. In either case, if the window already has +a @code{quit-restore-prev} or @code{quit-restore} parameter, it may +update that parameter's contents. + + @code{quit-restore-window} now first tries to find a suitable +@code{quit-restore-prev} parameter for its window telling which buffer +to show instead. If it doesn't find one, it will look for a suitable +@code{quit-restore} parameter to either delete the window or show +another buffer in it. + + Once it has used one of these parameters, @code{quit-restore-window} +resets it to @code{nil}. Parameters it did not use are left alone. Any +of these parameters are also reset by @code{replace-buffer-in-windows} +(@pxref{Buffers and Windows}) when they reference a buffer that is about +to be killed, either as the buffer specified by @var{prev-buffer} or as +the buffer specified by @var{this-buffer}. + + All operations on these parameters are supposed to preserve the +following invariant: If a window has a non-@code{nil} +@code{quit-restore-prev} parameter, it also has a non-@code{nil} +@code{quit-restore} parameter. + +The following option allows @code{quit-restore-window} to delete its +window more aggressively. + +@defopt quit-restore-window-no-switch +If this option is @code{nil}, @code{quit-restore-window} will always +call @code{switch-to-prev-buffer} unless the window has been made by +@code{display-buffer}. If this is @code{t}, @code{quit-restore-window} +will try hard to switch only to buffers previously shown in that window. +If this is the symbol @code{skip-first}, it will switch to a previous +buffer if and only the window has at least two previous buffers. + +In either case, if @code{quit-restore-window} doesn't switch to a +previous buffer, it will try to delete the window (and maybe its +frame) instead. Note also that if a window is dedicated, +@code{quit-restore-window} will usually not switch to a previous +buffer in it either. +@end defopt + @ignore @c FIXME: Should we document display-buffer-reuse-window? If we document display-buffer-record-window, it should be with @defun. @@ -6666,12 +6797,14 @@ parameter is installed and updated by the function @code{window-preserve-size} (@pxref{Preserving Window Sizes}). @item quit-restore +@item quit-restore-prev @vindex quit-restore@r{, a window parameter} -This parameter is installed by the buffer display functions +@vindex quit-restore-prev@r{, a window parameter} +These parameters ares installed by the buffer display functions (@pxref{Choosing Window}) and consulted by @code{quit-restore-window} -(@pxref{Quitting Windows}). It is a list of four elements, see the -description of @code{quit-restore-window} in @ref{Quitting Windows} -for details. +(@pxref{Quitting Windows}). They are lists of four elements, see the +description of @code{quit-restore-window} in @ref{Quitting Windows} for +details. @item window-side @itemx window-slot diff --git a/doc/man/emacs.1.in b/doc/man/emacs.1.in index b478b5196ee..3e5c6de930f 100644 --- a/doc/man/emacs.1.in +++ b/doc/man/emacs.1.in @@ -1,5 +1,5 @@ .\" See section COPYING for copyright and redistribution information. -.TH EMACS 1 "2022-06-07" "GNU Emacs @version@" "GNU" +.TH EMACS 1 "2024-07-18" "GNU Emacs @version@" "GNU" . . .SH NAME @@ -115,7 +115,7 @@ This is useful for debugging problems in the init file. .BI \-u " user\fR,\fP " \-\-user= "user" Load .IR user 's -init file. +init file instead of your own. .TP .BI \-\-init\-directory= "directory" Start emacs with user-emacs-directory set to @@ -144,7 +144,7 @@ Display version information and exit. .TP .B \-\-help -Display this help and exit. +Display help and exit. .RE .PP The following options are Lisp-oriented @@ -664,7 +664,7 @@ For detailed credits and acknowledgments, see the GNU Emacs manual. . . .SH COPYING -Copyright 1995, 1999-2024 Free Software Foundation, Inc. +Copyright 1995-2024 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are @@ -679,6 +679,8 @@ Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Free Software Foundation. +.PP +There is NO WARRANTY, to the extent permitted by law. . .\" Local Variables: diff --git a/doc/man/etags.1 b/doc/man/etags.1 index c567c51d7ef..9b8df50a6bb 100644 --- a/doc/man/etags.1 +++ b/doc/man/etags.1 @@ -171,7 +171,7 @@ of \- means standard output; overrides default \fBTAGS\fP or \fBtags\fP. Make tags based on regexp matching for the files following this option, in addition to the tags made with the standard parsing based on -language. May be freely intermixed with filenames and the \fB\-R\fP +language. May be freely intermixed with filenames and the \fB\-R\fP option. The regexps are cumulative, i.e., each such option will add to the previous ones. The regexps are of one of the forms: .br diff --git a/doc/misc/ChangeLog.1 b/doc/misc/ChangeLog.1 index 03b5037229e..37b304c2dca 100644 --- a/doc/misc/ChangeLog.1 +++ b/doc/misc/ChangeLog.1 @@ -343,9 +343,8 @@ 2014-06-22 Mario Lang - * srecode.texi (Base Arguments): The the -> to the. - - * org.texi (Images in ODT export): The the -> the. + * srecode.texi (Base Arguments): + * org.texi (Images in ODT export): Fix typos. 2014-06-21 Eli Zaretskii diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi index 8d802be535c..bb4beb38837 100644 --- a/doc/misc/auth.texi +++ b/doc/misc/auth.texi @@ -136,12 +136,12 @@ You can use spaces inside a password or other token by surrounding the token with either single or double quotes. You can use apostrophes inside a password or other token by -surrounding it with double quotes, e.g., @code{"he'llo"}. Similarly you +surrounding it with double quotes, e.g., @code{"he'llo"}. Similarly you can use double quotes inside a password or other token by surrounding -it with apostrophes, e.g., @code{'he"llo'}. You can't mix both (so a +it with apostrophes, e.g., @code{'he"llo'}. You can't mix both (so a password or other token can't have both apostrophes and double quotes). -All this is optional. You could just say (but we don't recommend it, +All this is optional. You could just say (but we don't recommend it, we're just showing that it's possible) @example @@ -267,7 +267,7 @@ earlier. Since Tramp has about 88 connection methods, this may be necessary if you have an unusual (see earlier comment on those) setup. The netrc format is directly translated into JSON, if you are into -that sort of thing. Just point to a JSON file with entries like this: +that sort of thing. Just point to a JSON file with entries like this: @example [ @@ -501,7 +501,9 @@ The username can also be expressed as a prefix, separated from the host with an at-sign (@code{@@}). @item gnu.org:22.gpg -The port (aka. service) to match can only be expressed after the host and separated with a colon (@code{:}). The separator can be changed through the @code{auth-source-pass-port-separator} variable. +The port (aka. service) to match can only be expressed after the host +and separated with a colon (@code{:}). The separator can be changed +through the @code{auth-source-pass-port-separator} variable. @item gnu.org:22/rms.gpg diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi index d927816c492..4bd07c8d312 100644 --- a/doc/misc/autotype.texi +++ b/doc/misc/autotype.texi @@ -290,7 +290,7 @@ be inserted. It can also be a function, which allows doing various things. The function can simply insert some text, indeed, it can be skeleton command (@pxref{Using Skeletons}). It can be a lambda function which will for example conditionally -call another function. Or it can even reset the mode for the buffer. If you +call another function. Or it can even reset the mode for the buffer. If you want to perform several such actions in order, you use a vector, i.e., several of the above elements between square brackets (@samp{[@r{@dots{}}]}). diff --git a/doc/misc/bovine.texi b/doc/misc/bovine.texi index 5cef9ffbb93..f4eb0784cb2 100644 --- a/doc/misc/bovine.texi +++ b/doc/misc/bovine.texi @@ -346,7 +346,7 @@ semantic list. @item (EXPANDFULL @var{$1} @var{nonterminal} @var{depth}) Is like @code{EXPAND}, except that the parser will iterate over @var{nonterminal} until there are no more matches. (The same way the -parser iterates over the starting rule (@pxref{Starting Rules}). This +parser iterates over the starting rule (@pxref{Starting Rules}). This lets you have much simpler rules in this specific case, and also lets you have positional information in the returned tokens, and error skipping. diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index 54909c130c3..384ad889ae1 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi @@ -355,7 +355,7 @@ To print the Calc manual in one huge tome, you will need the Emacs source, which contains the source code to this manual, @file{calc.texi}. Change to the @file{doc/misc} subdirectory of the Emacs source distribution, which contains source code for this manual, -and type @kbd{make calc.pdf}. (Don't worry if you get some ``overfull +and type @kbd{make calc.pdf}. (Don't worry if you get some ``overfull box'' warnings while @TeX{} runs.) The result will be this entire manual as a pdf file. @end ifnottex @@ -524,7 +524,7 @@ matrix into a @infoline 2x3 matrix. Type @w{@kbd{v u}} to unpack the rows into two separate vectors. Now type @w{@kbd{V R + @key{TAB} V R +}} to compute the sums -of the two original columns. (There is also a special +of the two original columns. (There is also a special grab-and-sum-columns command, @kbd{C-x * :}.) @strong{Units conversion.} Units are entered algebraically. @@ -929,7 +929,7 @@ is Calc has added annotations to the file to help it remember the modes that were used for this formula. They are formatted like comments in the @TeX{} typesetting language, just in case you are using @TeX{} or -@LaTeX{}. (In this example @TeX{} is not being used, so you might want +@LaTeX{}. (In this example @TeX{} is not being used, so you might want to move these comments up to the top of the file or otherwise put them out of the way.) @@ -1174,7 +1174,7 @@ that arbitrary-size integers were just as easy as large integers. Arbitrary floating-point precision was the logical next step. Also, since the large integer arithmetic was there anyway it seemed only fair to give the user direct access to it, which in turn made it -practical to support fractions as well as floats. All these features +practical to support fractions as well as floats. All these features inspired me to look around for other data types that might be worth having. @@ -5762,7 +5762,7 @@ which in algebraic notation is written like @samp{ninteg(f(t), t, 0, x)} with any integrand @samp{f(t)}. Define a @kbd{z s} command and @code{Si} function that implement this. You will need to edit the default argument list a bit. As a test, @samp{Si(1)} should return -0.946083. (If you don't get this answer, you might want to check that +0.946083. (If you don't get this answer, you might want to check that Calc is in Radians mode. Also, @code{ninteg} will run a lot faster if you reduce the precision to, say, six digits beforehand.) @xref{Programming Answer 1, 1}. (@bullet{}) @@ -9758,7 +9758,7 @@ by a zero) resets the Calculator to its initial state. This clears the stack, resets all the modes to their initial values (the values that were saved with @kbd{m m} (@code{calc-save-modes})), clears the caches (@pxref{Caches}), and so on. (It does @emph{not} erase the -values of any variables.) With an argument of 0, Calc will be reset to +values of any variables.) With an argument of 0, Calc will be reset to its default state; namely, the modes will be given their default values. With a positive prefix argument, @kbd{C-x * 0} preserves the contents of the stack but resets everything else to its initial state; with a @@ -10254,7 +10254,7 @@ specified number of operations. When the Calculator is quit, as with the @kbd{q} (@code{calc-quit}) command, the undo history will be truncated to the length of the customizable variable @code{calc-undo-length} (@pxref{Customizing Calc}), which by default -is @expr{100}. (Recall that @kbd{C-x * c} is synonymous with +is @expr{100}. (Recall that @kbd{C-x * c} is synonymous with @code{calc-quit} while inside the Calculator; this also truncates the undo history.) @@ -11050,8 +11050,8 @@ calendar. Some calendars attempt to mimic the historical situation by using the Gregorian calendar for recent dates and the Julian calendar for older -dates. The @code{cal} program in most Unix implementations does this, -for example. While January 1 wasn't always the beginning of a calendar +dates. The @code{cal} program in most Unix implementations does this, +for example. While January 1 wasn't always the beginning of a calendar year, these hybrid calendars still use January 1 as the beginning of the year even for older dates. The customizable variable @code{calc-gregorian-switch} (@pxref{Customizing Calc}) can be set to @@ -11405,7 +11405,7 @@ means a variable is random, and its value could be anything but is ``probably'' within one @texline @math{\sigma} @infoline @var{sigma} -of the mean value @expr{x}. An interval +of the mean value @expr{x}. An interval `@tfn{[}@var{a} @tfn{..@:} @var{b}@tfn{]}' means a variable's value is unknown, but guaranteed to lie in the specified range. Error forms are statistical or ``average case'' approximations; @@ -11862,7 +11862,7 @@ any portion of a vector or formula on the stack. @cindex Moving stack entries The command @kbd{C-x C-t} (@code{calc-transpose-lines}) will transpose the stack object determined by the point with the stack object at the -next higher level. For example, with @samp{10 20 30 40 50} on the +next higher level. For example, with @samp{10 20 30 40 50} on the stack and the point on the line containing @samp{30}, @kbd{C-x C-t} creates @samp{10 20 40 30 50}. More generally, @kbd{C-x C-t} acts on the stack objects determined by the current point (and mark) similar @@ -11871,7 +11871,7 @@ lines. With argument @var{n}, @kbd{C-x C-t} will move the stack object at the level above the current point and move it past N other objects; for example, with @samp{10 20 30 40 50} on the stack and the point on 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 +@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 @@ -12062,14 +12062,14 @@ the stack contains the sole number 5, but after @kbd{2 @key{RET} 3 K +}, the stack contains the arguments and the result: @samp{2 3 5}. With the exception of keyboard macros, this works for all commands that -take arguments off the stack. (To avoid potentially unpleasant behavior, +take arguments off the stack. (To avoid potentially unpleasant behavior, a @kbd{K} prefix before a keyboard macro will be ignored. A @kbd{K} prefix called @emph{within} the keyboard macro will still take effect.) As another example, @kbd{K a s} simplifies a formula, pushing the simplified version of the formula onto the stack after the original formula (rather than replacing the original formula). Note that you could get the same effect by typing @kbd{@key{RET} a s}, copying the -formula and then simplifying the copy. One difference is that for a very +formula and then simplifying the copy. One difference is that for a very large formula the time taken to format the intermediate copy in @kbd{@key{RET} a s} could be noticeable; @kbd{K a s} would avoid this extra work. @@ -13171,7 +13171,7 @@ Calc can display @expr{w}-bit integers using two's complement notation, although this is most useful with the binary, octal and hexadecimal display modes. This option is selected by using the @kbd{O} option prefix before setting the display radix, and a negative word -size might be appropriate (@pxref{Binary Functions}). In two's +size might be appropriate (@pxref{Binary Functions}). In two's complement notation, the integers in the (nearly) symmetric interval from @texline @math{-2^{w-1}} @@ -13502,7 +13502,7 @@ date representation, this week goes from 2013-W01-1 (December 31, All three ISO 8601 representations arrange the numbers from most significant to least significant; as well as being unambiguous representations, they are easy to sort since chronological order in -this formats corresponds to lexicographical order. The hyphens are +this formats corresponds to lexicographical order. The hyphens are sometimes omitted. The ISO 8601 standard uses a 24 hour clock; a particular time is @@ -13744,7 +13744,7 @@ order), then all other characters are ignored and this information determines the date. Otherwise, all words and numbers are isolated from the string; other characters are ignored. All words must be either month names or day-of-week names (the latter of which are -ignored). Names can be written in full or as three-letter +ignored). Names can be written in full or as three-letter abbreviations. Large numbers, or numbers with @samp{+} or @samp{-} signs, @@ -14205,9 +14205,9 @@ quotients are written using @code{\over} in @TeX{} mode (as in @code{\choose} in @TeX{} mode (as in @code{@{a \choose b@}}) and @code{\binom} in @LaTeX{} mode (as in @code{\binom@{a@}@{b@}}). Interval forms are written with @code{\ldots}, and error forms are -written with @code{\pm}. Absolute values are written as in +written with @code{\pm}. Absolute values are written as in @samp{|x + 1|}, and the floor and ceiling functions are written with -@code{\lfloor}, @code{\rfloor}, etc. The words @code{\left} and +@code{\lfloor}, @code{\rfloor}, etc. The words @code{\left} and @code{\right} are ignored when reading formulas in @TeX{} and @LaTeX{} modes. Both @code{inf} and @code{uinf} are written as @code{\infty}; when read, @code{\infty} always translates to @code{inf}. @@ -16290,7 +16290,7 @@ interpretations; the expression @samp{a/b*c} should be written @samp{(a/b)*c} or @samp{a/(b*c)}, as appropriate. Without the parentheses, Calc will interpret @samp{a/b*c} as @samp{a/(b*c)}, since in algebraic entry Calc gives division a lower precedence than -multiplication. (This is not standard across all computer languages, and +multiplication. (This is not standard across all computer languages, and Calc may change the precedence depending on the language mode being used. @xref{Language Modes}.) This default ordering can be changed by setting the customizable variable @code{calc-multiplication-has-precedence} to @@ -17456,7 +17456,7 @@ converting into a generalized time zone (see below). The Lisp function @code{math-prev-weekday-in-month} is useful for daylight saving computations. This is an internal version of the user-level @code{pwday} function described in the previous -section. It takes four arguments: The floating-point date value, +section. It takes four arguments: The floating-point date value, the corresponding six-element date list, the day-of-month number, and the weekday number (0--6). @@ -20150,7 +20150,7 @@ that the counts in the result vector don't add up to the length of the input vector.) If no prefix is given, then you will be prompted for a vector which -will be used to determine the bins. (If a positive integer is given at +will be used to determine the bins. (If a positive integer is given at this prompt, it will be still treated as if it were given as a prefix.) Each bin will consist of the interval of numbers closest to the corresponding number of this new vector; if the vector @@ -21636,7 +21636,7 @@ to @noindent Every character not part of the sub-formula @samp{b} has been changed -to a dot. (If the customizable variable +to a dot. (If the customizable variable @code{calc-highlight-selections-with-faces} is non-@code{nil}, then the characters not part of the sub-formula are de-emphasized by using a less noticeable face instead of using dots. @pxref{Displaying Selections}.) @@ -22837,12 +22837,12 @@ suitable numbers. This section describes all simplifications that are performed by the algebraic simplification mode, which is the default simplification mode. If you have switched to a different simplification mode, you can -switch back with the @kbd{m A} command. Even in other simplification +switch back with the @kbd{m A} command. Even in other simplification modes, the @kbd{a s} command will use these algebraic simplifications to simplify the formula. There is a variable, @code{AlgSimpRules}, in which you can put rewrites -to be applied. Its use is analogous to @code{EvalRules}, +to be applied. Its use is analogous to @code{EvalRules}, but without the special restrictions. Basically, the simplifier does @samp{@w{a r} AlgSimpRules} with an infinite repeat count on the whole expression being simplified, then it traverses the expression applying @@ -22991,7 +22991,7 @@ function; for example, @expr{1/@tfn{sec}(x)} is simplified to hyperbolic functions are also handled. Trigonometric functions of their inverse functions are -simplified. The expression @expr{@tfn{sin}(@tfn{arcsin}(x))} is +simplified. The expression @expr{@tfn{sin}(@tfn{arcsin}(x))} is simplified to @expr{x}, and similarly for @code{cos} and @code{tan}. Trigonometric functions of inverses of different trigonometric functions can also be simplified, as in @expr{@tfn{sin}(@tfn{arccos}(x))} @@ -27646,7 +27646,7 @@ simplifications. Most of the special limitations for @code{EvalRules} don't apply to @code{AlgSimpRules}. Calc simply does an @kbd{a r AlgSimpRules} command with an infinite repeat count as the first step of algebraic -simplifications. It then applies its own built-in simplifications +simplifications. It then applies its own built-in simplifications throughout the formula, and then repeats these two steps (along with applying the default simplifications) until no further changes are possible. @@ -27883,7 +27883,7 @@ while typing @kbd{u c au/yr @key{RET}} produces If the units you request are inconsistent with the original units, the number will be converted into your units times whatever ``remainder'' units are left over. For example, converting @samp{55 mph} into acres -produces @samp{6.08e-3 acre / (m s)}. Remainder units are expressed in terms of +produces @samp{6.08e-3 acre / (m s)}. Remainder units are expressed in terms of ``fundamental'' units like @samp{m} and @samp{s}, regardless of the input units. @@ -28257,7 +28257,7 @@ is defined to be @infoline @math{10 log10(P1/P0) dB}. @texline @math{10 \log_{10}(P_{1}/P_{0}) {\rm dB}}. (The factor of 10 is because a decibel, as its name implies, is -one-tenth of a bel. The bel, named after Alexander Graham Bell, was +one-tenth of a bel. The bel, named after Alexander Graham Bell, was considered to be too large of a unit and was effectively replaced by the decibel.) If @math{F} is a field quantity with power @math{P=k F^2}, then a reference quantity of @@ -28353,10 +28353,10 @@ capital @kbd{O} prefix is used. @tindex lufquant The @kbd{l q} (@code{calc-lu-quant}) [@code{lupquant}] command computes the power quantity corresponding to a given number of -logarithmic units. With the capital @kbd{O} prefix, @kbd{O l q}, the -reference level will be read from the top of the stack. (In an +logarithmic units. With the capital @kbd{O} prefix, @kbd{O l q}, the +reference level will be read from the top of the stack. (In an algebraic formula, @code{lupquant} can be given an optional second -argument which will be used for the reference level.) For example, +argument which will be used for the reference level.) For example, @code{20 dB @key{RET} l q} will return @code{100 mW}; @code{20 dB @key{RET} 4 W @key{RET} O l q} will return @code{400 W}. The @kbd{H l q} [@code{lufquant}] command behaves like @kbd{l q} but @@ -28469,7 +28469,7 @@ The @kbd{l *} (@code{calc-lu-times}) [@code{lupmul}] and @kbd{H l *} [@code{lufmul}] commands will ``multiply'' a logarithmic unit by a number; the @kbd{l /} (@code{calc-lu-divide}) [@code{lupdiv}] and @kbd{H l /} [@code{lufdiv}] commands will ``divide'' a logarithmic -unit by a number. Note that the reference quantities don't play a role +unit by a number. Note that the reference quantities don't play a role in this arithmetic. @node Musical Notes @@ -28528,7 +28528,7 @@ example, @code{500 Hz} gets converted to @tindex midi The @kbd{l m} (@code{calc-midi}) [@code{midi}] command converts either a frequency or a note given in scientific pitch notation to the -corresponding midi number. For example, @code{C_6} gets converted to 84 +corresponding midi number. For example, @code{C_6} gets converted to 84 and @code{440 Hz} to 69. @kindex l f @@ -28536,7 +28536,7 @@ and @code{440 Hz} to 69. @tindex freq The @kbd{l f} (@code{calc-freq}) [@code{freq}] command converts either either a midi number or a note given in scientific pitch notation to -the corresponding frequency. For example, @code{Asharp_2 + 30 cents} +the corresponding frequency. For example, @code{Asharp_2 + 30 cents} gets converted to @code{118.578040134 Hz} and @code{55} to @code{195.99771799 Hz}. @@ -29530,7 +29530,7 @@ will be computed for the surface. Data values in the graph of a function are normally computed to a precision of five digits, regardless of the current precision at the -time. This is usually more than adequate, but there are cases where +time. This is usually more than adequate, but there are cases where it will not be. For example, plotting @expr{1 + x} with @expr{x} in the interval @samp{[0 ..@: 1e-6]} will round all the data points down to 1.0! Putting the command @samp{set precision @var{n}} in the @@ -29975,7 +29975,7 @@ register will be deleted from the Calc buffer. It is possible to add additional stack entries to a register. The command @kbd{M-x calc-append-to-register} will prompt for a register, then add the stack entries in the region to the end of the register -contents. The command @kbd{M-x calc-prepend-to-register} will +contents. The command @kbd{M-x calc-prepend-to-register} will similarly prompt for a register and add the stack entries in the 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 @@ -30620,7 +30620,7 @@ like most Calc commands, but rather in regular editing buffers that are visiting your own files. Calc will try to guess an appropriate language based on the major mode -of the editing buffer. (@xref{Language Modes}.) If the current buffer is +of the editing buffer. (@xref{Language Modes}.) If the current buffer is in @code{latex-mode}, for example, Calc will set its language to @LaTeX{}. Similarly, Calc will use @TeX{} language for @code{tex-mode}, @code{plain-tex-mode} and @code{context-mode}, C language for @@ -30657,7 +30657,7 @@ on their own separate lines or in-line with the formula. If you give a positive or negative numeric prefix argument, Calc instead uses the current point as one end of the formula, and includes that many lines forward or backward (respectively, including the current -line). Explicit delimiters are not necessary in this case. +line). Explicit delimiters are not necessary in this case. With a prefix argument of zero, Calc uses the current region (delimited by point and mark) instead of formula delimiters. With a prefix @@ -31189,7 +31189,7 @@ use @kbd{C-x * u} to update the buffer by hand. @noindent The mode settings can be changed while Calc is in embedded mode, but by default they will revert to their original values when embedded mode -is ended. However, the modes saved when the mode-recording mode is +is ended. However, the modes saved when the mode-recording mode is @code{Save} (see below) and the modes in effect when the @kbd{m e} (@code{calc-embedded-preserve-modes}) command is given will be preserved when embedded mode is ended. @@ -31315,7 +31315,7 @@ on it in order to get it to notice the new annotation. Two more mode-recording modes selectable by @kbd{m R} are available which are also available outside of Embedded mode. -(@pxref{General Mode Commands}.) They are @code{Save}, in which mode +(@pxref{General Mode Commands}.) They are @code{Save}, in which mode settings are recorded permanently in your Calc init file (the file given by the variable @code{calc-settings-file}, typically @file{~/.emacs.d/calc.el}) rather than by annotating the current document, and no-recording @@ -35645,7 +35645,7 @@ formulas in normal language modes. If @code{calc-multiplication-has-precedence} is non-@code{nil}, then multiplication has precedence (and, for certain obscure reasons, is right associative), and so for example @samp{a/b*c} will be interpreted -as @samp{a/(b*c)}. If @code{calc-multiplication-has-precedence} is +as @samp{a/(b*c)}. If @code{calc-multiplication-has-precedence} is @code{nil}, then multiplication has the same precedence as division (and, like division, is left associative), and so for example @samp{a/b*c} will be interpreted as @samp{(a/b)*c}. The default value diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi index bcbd9faf0c9..c0819b232a4 100644 --- a/doc/misc/cc-mode.texi +++ b/doc/misc/cc-mode.texi @@ -182,7 +182,7 @@ modify this GNU manual.'' @end quotation @end copying -@comment Info directory entry for use by install-info. The indentation +@comment Info directory entry for use by install-info. The indentation @comment here is by request from the FSF folks. @dircategory Emacs editing modes @direntry @@ -1429,7 +1429,7 @@ continuation of the preceding @code{if}. @findex abbrev-mode @cindex Abbrev mode @ccmode{} uses Abbrev mode (@pxref{Abbrevs,,,@emacsman{}, @emacsmantitle{}}) -to accomplish this. It's therefore turned on by default in all language +to accomplish this. It's therefore turned on by default in all language modes except IDL mode, since CORBA IDL doesn't have any statements. @end deffn @@ -2704,7 +2704,7 @@ for C code in GNU programs. @item k&r @cindex K&R style -The classic Kernighan and Ritchie style for C code. If you're looking +The classic Kernighan and Ritchie style for C code. If you're looking for the style used in the 2nd edition of their book ``The C Programming Language'', then check out the @code{stroustrup} style. @@ -6283,8 +6283,8 @@ returned if there's no template argument on the first line. @defun c-lineup-template-args-indented-from-margin @findex lineup-template-args-indented-from-margin (c-) -Indent a template argument line `c-basic-offset' from the left-hand -margin of the line with the containing <. +Indent a template argument line @code{c-basic-offset} from the +left-hand margin of the line with the containing <. @workswith @code{template-args-cont}. @end defun @@ -7591,7 +7591,7 @@ Started}. @kindex C-M-\ @emph{How do I reindent the whole file?} -Visit the file and hit @kbd{C-x h} to mark the whole buffer. Then hit +Visit the file and hit @kbd{C-x h} to mark the whole buffer. Then hit @kbd{C-M-\}. @xref{Indentation Commands}. @item diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index a4a34ae07d6..113029700ec 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -388,10 +388,11 @@ This function prints an ellipsis (``@dots{}'') to @var{stream} (see above). When @var{stream} is a buffer, the ellipsis will be given the @code{cl-print-ellipsis} text property. The value of the text property will contain state (including @var{start}) in order to print -the elided part of @var{object} later. @var{start} should be nil if -the whole @var{object} is being elided, otherwise it should be an -index or other pointer into the internals of @var{object} which can be -passed to `cl-print-object-contents' at a later time. +the elided part of @var{object} later. @var{start} should be +@code{nil} if the whole @var{object} is being elided, otherwise it +should be an index or other pointer into the internals of @var{object} +which can be passed to @code{cl-print-object-contents} at a later +time. @end defun @defvar cl-print-expand-ellipsis-function @@ -859,7 +860,7 @@ Thus @code{(cl-typep @var{object} 'null)} is equivalent to @item The type symbol @code{atom} represents all objects that are not cons -cells. Thus @code{(cl-typep @var{object} 'atom)} is equivalent to +cells. Thus @code{(cl-typep @var{object} 'atom)} is equivalent to @code{(atom @var{object})}. @item @@ -2190,7 +2191,7 @@ term restricts the search to just the specified property. The Properties,,,elisp}. @item for @var{var} being the frames -This clause iterates over all Emacs frames. The clause @code{screens} is +This clause iterates over all Emacs frames. The clause @code{screens} is a synonym for @code{frames}. The frames are visited in @code{next-frame} order starting from @code{selected-frame}. diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi index 20d26c80d38..b81c862c80f 100644 --- a/doc/misc/dbus.texi +++ b/doc/misc/dbus.texi @@ -1259,7 +1259,7 @@ object. Example: @end lisp With the @code{dbus-introspect} function it is possible to explore the -interfaces of @samp{org.freedesktop.Hal} service. It offers the +interfaces of @samp{org.freedesktop.Hal} service. It offers the interfaces @samp{org.freedesktop.Hal.Manager} for the object at the path @samp{/org/freedesktop/Hal/Manager} as well as the interface @samp{org.freedesktop.Hal.Device} for all objects prefixed with the @@ -1428,7 +1428,7 @@ We are not an owner of the name @var{service}. @end table When @var{service} is not a known name but a unique name, the function -returns nil. +returns @code{nil}. @end defun When a name has been chosen, Emacs can offer its own methods, which @@ -1978,7 +1978,7 @@ If this variable is non-@code{nil}, D-Bus specific debug messages are raised. Input parameters of @code{dbus-call-method}, @code{dbus-call-method-asynchronously}, @code{dbus-send-signal}, @code{dbus-register-method}, @code{dbus-register-property} and -@code{dbus-register-signal} are checked for correct D-Bus types. If +@code{dbus-register-signal} are checked for correct D-Bus types. If there is a type mismatch, the Lisp error @code{wrong-type-argument} @code{D-Bus @var{arg}} is raised. diff --git a/doc/misc/ebrowse.texi b/doc/misc/ebrowse.texi index dca6266d8ae..27a5deb86d9 100644 --- a/doc/misc/ebrowse.texi +++ b/doc/misc/ebrowse.texi @@ -513,8 +513,8 @@ practical than to clutter up the buffer list with dozens of member buffers. If you want to display more than one member list at a time you can -@dfn{freeze} its member buffer. Freezing a member buffer prevents it -from being overwritten the next time you display a member list. You can +@dfn{freeze} its member buffer. Freezing a member buffer prevents it +from being overwritten the next time you display a member list. You can toggle this buffer status at any time. Every member list display command in the tree buffer can be used with a @@ -747,7 +747,7 @@ menu. @cindex unmark all @item M a Unmark all classes. With prefix argument @kbd{C-u}, mark all classes in -the tree. Since this command operates on the whole buffer, it can also be +the tree. Since this command operates on the whole buffer, it can also be found in the buffer's object menu. @end table diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi index ae179832753..4ed3fc9d1df 100644 --- a/doc/misc/ede.texi +++ b/doc/misc/ede.texi @@ -1120,7 +1120,7 @@ number. It also holds a list of @code{ede-target} objects and a list of sub projects, or more @code{ede-project} objects. New project types must subclass @code{ede-project} to add special -behavior. New project types also need to subclass @code{ede-target} to +behavior. New project types also need to subclass @code{ede-target} to add specialty behavior. In this way, the common @ede{} interface is designed to work against diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi index 749025c870b..ae107323d9c 100644 --- a/doc/misc/ediff.texi +++ b/doc/misc/ediff.texi @@ -135,10 +135,10 @@ The architecture and the interface are, of course, drastically different. When Ediff starts up, it displays a small control window, which accepts the Ediff commands, and two or three windows displaying the files to be compared -or merged. The control window can be in its own small frame or it can be -part of a bigger frame that displays other buffers. In any case, it is +or merged. The control window can be in its own small frame or it can be +part of a bigger frame that displays other buffers. In any case, it is important that the control window be active (i.e., be the one receiving the -keystrokes) when you use Ediff. You can switch to other Emacs buffers at +keystrokes) when you use Ediff. You can switch to other Emacs buffers at will and even edit the files currently being compared with Ediff and then switch back to Ediff at any time by activating the appropriate Emacs windows. @@ -156,13 +156,13 @@ Compare two files. @item ediff-backup @findex ediff-backup -Compare a file with its backup. If there are several numerical backups, use -the latest. If the file is itself a backup, then compare it with its +Compare a file with its backup. If there are several numerical backups, use +the latest. If the file is itself a backup, then compare it with its original. @item ediff-current-file @findex ediff-current-file -Compare the buffer with its file on disk. This function can be used as a +Compare the buffer with its file on disk. This function can be used as a safe version of @code{revert-buffer}. @item ediff-buffers @@ -220,14 +220,14 @@ Compare text visible in 2 windows line-by-line. @findex ediff-regions-wordwise Compare regions word-by-word. The regions can come from the same buffer and they can even overlap. You will be asked to specify the buffers that -contain the regions, which you want to compare. For each buffer, you will -also be asked to mark the regions to be compared. Pay attention to the +contain the regions, which you want to compare. For each buffer, you will +also be asked to mark the regions to be compared. Pay attention to the messages that appear in the minibuffer. @item ediff-regions-linewise @findex ediff-regions-linewise Similar to @code{ediff-windows-linewise}, but compares the regions -line-by-line. See @code{ediff-windows-linewise} for more details. +line-by-line. See @code{ediff-windows-linewise} for more details. @item ediff-revision @findex ediff-revision @@ -246,7 +246,7 @@ will be able to patch the files selectively. @xref{Session Groups}, for more details. Since the patch might be in a buffer or a file, you will be asked which is -the case. To avoid this extra prompt, you can invoke this command with a +the case. To avoid this extra prompt, you can invoke this command with a prefix argument. With an odd prefix argument, Ediff assumes the patch is in a file; with an even argument, a buffer is assumed. @@ -280,7 +280,7 @@ This function would refuse to apply a multifile patch to a buffer. Use modified by the @code{patch} utility). Since the patch might be in a buffer or a file, you will be asked which is -the case. To avoid this extra prompt, you can invoke this command with a +the case. To avoid this extra prompt, you can invoke this command with a prefix argument. With an odd prefix argument, Ediff assumes the patch is in a file; with an even argument, a buffer is assumed. @@ -683,7 +683,7 @@ again puts Ediff back in the original state. @vindex ediff-ignore-case-option @vindex ediff-ignore-case-option3 @vindex ediff-ignore-case -Toggle case sensitivity in the diff program. All diffs are recomputed. +Toggle case sensitivity in the diff program. All diffs are recomputed. Case sensitivity is controlled by the variables @code{ediff-ignore-case-option}, @code{ediff-ignore-case-option3}, and @code{ediff-ignore-case}, which are explained elsewhere. @@ -814,7 +814,7 @@ it. Typing @kbd{$$} again undoes this setting. @kindex $* When merging files with large number of differences, it is sometimes convenient to be able to skip the difference regions for which you already -decided which variant is most appropriate. Typing @kbd{$*} will accomplish +decided which variant is most appropriate. Typing @kbd{$*} will accomplish precisely this. To be more precise, this toggles the check for whether the current merge is @@ -898,9 +898,9 @@ child Ediff session for comparing regions in buffers A, B, or C as follows. First, you will be asked whether you want to compare the fine differences -between the currently highlighted buffers on a word-by-word basis. If you +between the currently highlighted buffers on a word-by-word basis. If you accept, a child Ediff session will start using the currently highlighted -regions. Ediff will let you step over the differences word-wise. +regions. Ediff will let you step over the differences word-wise. If you reject the offer, you will be asked to select regions of your choice. @@ -1054,9 +1054,9 @@ directories. @cindex Directory difference buffer Sometimes it is desirable to copy some files from one directory to another -without exiting Ediff. The @emph{directory difference buffer}, which is +without exiting Ediff. The @emph{directory difference buffer}, which is displayed by typing @kbd{D} as discussed above, can be used for this -purpose. If a file is, say, in Ediff's Directory A, but is missing in +purpose. If a file is, say, in Ediff's Directory A, but is missing in Ediff's Directory B (Ediff will refuse to override existing files), then typing @kbd{C} or clicking mouse button 2 over that file (which must be displayed in directory difference buffer) will copy that file from @@ -1130,7 +1130,7 @@ for hiding or, with @kbd{=m}, for further operations. The comparison operations @kbd{==}, @kbd{=h}, and @kbd{=m} can recurse into subdirectories to see if they have identical contents (so the user will not -need to descend into those subdirectories manually). These commands ask the +need to descend into those subdirectories manually). These commands ask the user whether or not to do a recursive descent. @@ -1221,7 +1221,7 @@ of Ediff. @vindex ediff-after-setup-windows-hook These two hooks are called before and after Ediff sets up its window configuration. These hooks are run each time Ediff rearranges windows to -its liking. This happens whenever it detects that the user changed the +its liking. This happens whenever it detects that the user changed the windows setup. @item ediff-suspend-hook @@ -1323,7 +1323,7 @@ Hooks run after setting up the registry for all active Ediff session. @item ediff-before-session-group-setup-hook @vindex ediff-before-session-group-setup-hook Hooks run before setting up a control panel for a group of related Ediff -sessions. Can be used, for example, to save window configuration to restore +sessions. Can be used, for example, to save window configuration to restore later. @item ediff-after-session-group-setup-hook @vindex ediff-after-session-group-setup-hook @@ -1598,21 +1598,21 @@ problem. @vindex ediff-ignore-case-option @vindex ediff-ignore-case-option3 @vindex ediff-ignore-case -Finally, Ediff can be told to ignore the case of the letters. This behavior +Finally, Ediff can be told to ignore the case of the letters. This behavior can be toggled with @kbd{#c} and it is controlled with three variables: @code{ediff-ignore-case-option}, @code{ediff-ignore-case-option3}, and @code{ediff-ignore-case}. The variable @code{ediff-ignore-case-option} specifies the option to pass -to the diff program for comparing two files or buffers. For GNU -@code{diff}, this option is @code{"-i"}. The variable +to the diff program for comparing two files or buffers. For GNU +@code{diff}, this option is @code{"-i"}. The variable @code{ediff-ignore-case-option3} specifies the option to pass to the -@code{diff3} program in order to make it case-insensitive. GNU @code{diff3} +@code{diff3} program in order to make it case-insensitive. GNU @code{diff3} does not have such an option, so when merging or comparing three files with this program, ignoring the letter case is not supported. The variable @code{ediff-ignore-case} controls whether Ediff starts out by -ignoring letter case or not. It can be set in @file{.emacs} using +ignoring letter case or not. It can be set in @file{.emacs} using @code{setq-default}. When case sensitivity is toggled, all difference @@ -1875,11 +1875,11 @@ Customize interface instead of using @code{setq} directly.) @item ediff-coding-system-for-read @vindex ediff-coding-system-for-read This variable specifies the coding system to use when reading the output -that the programs @code{diff3} and @code{diff} send to Emacs. The default +that the programs @code{diff3} and @code{diff} send to Emacs. The default is @code{raw-text}, and this should work fine in Unix and in most -cases under Windows NT/98/2000. There are @code{diff} programs -for which the default option doesn't work under Windows. In such cases, -@code{raw-text-dos} might work. If not, you will have to experiment with +cases under Windows NT/98/2000. There are @code{diff} programs +for which the default option doesn't work under Windows. In such cases, +@code{raw-text-dos} might work. If not, you will have to experiment with other coding systems or use GNU diff. @item ediff-patch-program @@ -1992,7 +1992,7 @@ the difference region from the ancestor buffer, if available ======= end @end example -The above is the default template for the combined region. The user can +The above is the default template for the combined region. The user can customize this template using the variable @code{ediff-combination-pattern}. @@ -2000,11 +2000,11 @@ customize this template using the variable The variable @code{ediff-combination-pattern} specifies the template that determines how the combined merged region looks like. The template is represented as a list of the form @code{(STRING1 Symbol1 STRING2 Symbol2 -STRING3 Symbol3 STRING4)}. The symbols here must be atoms of the form -@code{A}, @code{B}, or @code{Ancestor}. They determine the order in which +STRING3 Symbol3 STRING4)}. The symbols here must be atoms of the form +@code{A}, @code{B}, or @code{Ancestor}. They determine the order in which the corresponding difference regions (from buffers A, B, and the ancestor buffer) are displayed in the merged region of buffer C@. The strings in the -template determine the text that separates the aforesaid regions. The +template determine the text that separates the aforesaid regions. The default template is @smallexample @@ -2014,8 +2014,8 @@ default template is @noindent (this is one long line) and the corresponding combined region is shown -above. The order in which the regions are shown (and the separator -strings) can be changed by changing the above template. It is even +above. The order in which the regions are shown (and the separator +strings) can be changed by changing the above template. It is even possible to add or delete region specifiers in this template (although the only possibly useful such modification seems to be the deletion of the ancestor). @@ -2154,7 +2154,7 @@ change this variable. @vindex ediff-merge-filename-prefix When merge buffers are saved automatically as directed by @code{ediff-autostore-merges}, Ediff attaches a prefix to each file, as -specified by the variable @code{ediff-merge-filename-prefix}. The default +specified by the variable @code{ediff-merge-filename-prefix}. The default is @code{merge_}, but this can be changed by the user. @node Support for Version Control @@ -2318,9 +2318,9 @@ unconditionally (e.g., by making @code{ediff-janitor} into one of these hooks). @item ediff-keep-tmp-versions @vindex ediff-keep-tmp-versions -Default is @code{nil}. If @code{t}, the versions of the files being +Default is @code{nil}. If @code{t}, the versions of the files being compared or merged using operations such as @code{ediff-revision} or -@code{ediff-merge-revisions} are not deleted on exit. The normal action is +@code{ediff-merge-revisions} are not deleted on exit. The normal action is to clean up and delete these version files. @item ediff-grab-mouse diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi index c5ba6c8609f..9ee5b679fed 100644 --- a/doc/misc/efaq-w32.texi +++ b/doc/misc/efaq-w32.texi @@ -773,7 +773,7 @@ corrupted while unpacking and Emacs will not start. If it is still not working, send mail to the @email{help-gnu-emacs@@gnu.org} mailing list, describing what you've -done, and what you are seeing. (The more information you send the more +done, and what you are seeing. (The more information you send the more likely it is that you'll receive a helpful response.) @node Virus @@ -1592,7 +1592,7 @@ smtpmail is loaded, then you'll need to change @code{smtpmail-smtp-server}. If you are experiencing problems with sending large messages, check -the value of the variable @code{smtpmail-debug-info}. If it is +the value of the variable @code{smtpmail-debug-info}. If it is non-@code{nil}, you should set it to @code{nil}: @node Incoming mail with Rmail @@ -1908,9 +1908,9 @@ See the following two URLs for details: @cindex MSVC++, compiling within Emacs @findex compile -This is an app note on how to use Microsoft Visual C++ with Emacs. The +This is an app note on how to use Microsoft Visual C++ with Emacs. The experiments done below were done with Emacs 19.34.1 on Windows 95, -using Visual C++ 4.0 Standard Edition. Your mileage may vary. +using Visual C++ 4.0 Standard Edition. Your mileage may vary. This writeup assumes minimal knowledge of Emacs hacking on the part of the reader. @@ -1939,14 +1939,14 @@ For all versions of Windows you can alternatively set the variables just inside Emacs by using @code{setenv} calls in your init file. @xref{Installing Emacs,,Where do I put my init file?}. -You should now be able to compile from Emacs. Load a source file from -a VC++ project. Type @kbd{M-x compile}. Replace the proposed command line +You should now be able to compile from Emacs. Load a source file from +a VC++ project. Type @kbd{M-x compile}. Replace the proposed command line with: @example nmake -f @var{ProjectName}.mak @end example -You will find that this defaults to a debug build. You can change it +You will find that this defaults to a debug build. You can change it to a release build with: @example nmake -f @var{ProjectName}.mak CFG="@var{ProjectName} - Win32 Release" @@ -2018,21 +2018,21 @@ click on @code{Customize...}. In the @code{Tools} tab, click on @file{emacsclientw.exe} file in your Emacs bin directory, and select it. For arguments, use @option{+$(CurLine)} @option{"$(FilePath)"} and for the directory use the @code{$(WkspDir)} -(the quotes around FilePath handle paths with spaces in them). Set the -Menu Text to say "Em&acs". The @option{+$(CurLine)} will set point in -Emacs to the same line as the cursor position in VC++. The ampersand +(the quotes around FilePath handle paths with spaces in them). Set the +Menu Text to say "Em&acs". The @option{+$(CurLine)} will set point in +Emacs to the same line as the cursor position in VC++. The ampersand in the word @code{Em&acs} allows you to select emacs from the keyboard. (E is already used for the OLE control test container.) -You should now be able to go to any source file in your project. Then, -use the pull-down menu @code{Tools->Emacs}. The active file in your +You should now be able to go to any source file in your project. Then, +use the pull-down menu @code{Tools->Emacs}. The active file in your VC++ IDE should now be front and center in Emacs, all ready to edit as -you wish. If you use keystrokes to work the menus, try @kbd{Alt-T A} to -move the file into Emacs. Binding this tool to a keystroke will be +you wish. If you use keystrokes to work the menus, try @kbd{Alt-T A} to +move the file into Emacs. Binding this tool to a keystroke will be left as an exercise for the student. If you have the option of saving files before running tools, make sure -this option is set. (I don't see it on VC++ 4.0.) +this option is set. (I don't see it on VC++ 4.0.) @node Borland C++ Builder @section Emacs and Borland C++ Builder @@ -2072,8 +2072,8 @@ Free native Windows binaries. For those that don't Cygwin may be an option. From Jay Rogers: Some versions of the perl debugger itself need to be patched to work -with emacs. They are perl versions 5.001 and less, and version -5.004_01. To fix, locate and change the code similar to the following +with emacs. They are perl versions 5.001 and less, and version +5.004_01. To fix, locate and change the code similar to the following code in lib/perl5db.pl @example if (-e "/dev/tty") @{ @@ -2218,7 +2218,7 @@ outdated. Tools available here that are useful for Emacs include: @item OpenSSL - used by @code{gnus} to talk to servers over SSL. @item Patch - used by @code{ediff-patch-file} and others to apply patches. @item Tar - used by @code{tar-mode} to edit tar files. -@item TexInfo - used to build Emacs' manuals. +@item TexInfo - used to build Emacs's manuals. @item Unzip - used by @code{archive-mode} for extracting zip files. @item Xpm - library to support XPM images (bundled with Emacs binaries) @item Zip - used by @code{archive-mode} for editing zip files. @@ -2245,7 +2245,7 @@ image libraries that it provides, even if they are not on the @findex man Man pages for Emacs and other ported programs that you have can be -read using Emacs' built-in manual reader @code{woman}. This +read using Emacs's built-in manual reader @code{woman}. This requires no external programs, but if you do have a port of @command{man}, there is also an Emacs wrapper @code{man} that which may be slightly faster. A Windows version of @command{man} is @@ -2273,7 +2273,7 @@ If you have general questions about Emacs, the best places to start looking are @ref{Top,,, emacs, The GNU Emacs Manual}, and @ref{Top,,, efaq, the standard Emacs FAQ}. In Emacs, you can browse the manual using Info by typing @kbd{C-h r}, -and you can view the FAQ by typing @kbd{C-h C-f}. Other resources include: +and you can view the FAQ by typing @kbd{C-h C-f}. Other resources include: @itemize @item @uref{https://www.gnu.org/software/emacs/, The Emacs website} diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi index 73bc2442678..b342e73bb52 100644 --- a/doc/misc/efaq.texi +++ b/doc/misc/efaq.texi @@ -3692,7 +3692,7 @@ feature. Emacs has a list of local variables that are known to be safe to set. If a file tries to set any variable outside this list, it asks the -user to confirm whether the variables should be set. You can also tell +user to confirm whether the variables should be set. You can also tell Emacs whether to allow the evaluation of Emacs Lisp code found at the bottom of files by setting the variable @code{enable-local-eval}. @@ -3835,7 +3835,7 @@ in the distribution. To build Emacs from source for MS-DOS, see the instructions in the file @file{msdos/INSTALL} in the distribution. The DOS port builds and runs on plain DOS, and also on all versions of MS-Windows from version 3.X -onwards, including Windows XP and Vista. Pre-built binaries may be +onwards, including Windows XP and Vista. Pre-built binaries may be available at @uref{https://www.delorie.com/pub/djgpp/current/v2gnu/emacs.README} @@ -4761,14 +4761,14 @@ these systems, you should configure @code{movemail} to use @code{flock}. Ron Isaacson says: When you hit @kbd{r} to reply in Rmail, by default it Ccs all of the original recipients (everyone on the original @samp{To} and @samp{CC} -lists). With a prefix argument (i.e., typing @kbd{C-u} before @kbd{r}), +lists). With a prefix argument (i.e., typing @kbd{C-u} before @kbd{r}), it replies only to the sender. However, going through the whole @kbd{C-u} business every time you want to reply is a pain. This is the best fix I've been able to come up with: @lisp (defun rmail-reply-t () - "Reply only to the sender of the current message. (See rmail-reply.)" + "Reply only to the sender of the current message. (See rmail-reply.)" (interactive) (rmail-reply t)) diff --git a/doc/misc/eglot.texi b/doc/misc/eglot.texi index 85fef6be553..ba7aeb448e5 100644 --- a/doc/misc/eglot.texi +++ b/doc/misc/eglot.texi @@ -1313,7 +1313,7 @@ based on compile-time information. The language server reports the regions by periodically sending a @code{textDocument/inactiveRegions} notification for each managed -buffer (@pxref{Eglot and Buffers}). Normally, unknown server +buffer (@pxref{Eglot and Buffers}). Normally, unknown server notifications are ignored by Eglot, but we're going change that. Both the announcement of the client capability and the handling of the @@ -1353,7 +1353,7 @@ called @code{eglot-clangd}, so that the method would be simplified: However, this would require that users tweak @code{eglot-server-program} to tell Eglot instantiate such sub-classes instead of the generic @code{eglot-lsp-server} (@pxref{Setting Up LSP -Servers}). For the purposes of this particular demonstration, we're +Servers}). For the purposes of this particular demonstration, we're going to use the more hacky regexp route which doesn't require that. Note, however, that detecting server versions before announcing new diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi index ef7ea614f8b..22bef4739a4 100644 --- a/doc/misc/emacs-mime.texi +++ b/doc/misc/emacs-mime.texi @@ -379,7 +379,7 @@ This variable is @code{resize} by default, which means that images that are bigger than the Emacs window are resized so that they fit. If you set this to @code{nil}, large images are not displayed in Emacs, but can instead be displayed externally (e.g., with -@samp{ImageMagick} or @samp{xv}). Setting this variable to @code{t} +@samp{ImageMagick} or @samp{xv}). Setting this variable to @code{t} disables this check and makes the library display all inline images as inline, regardless of their size. diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi index 75138a9963f..c7822793a20 100644 --- a/doc/misc/erc.texi +++ b/doc/misc/erc.texi @@ -2127,7 +2127,7 @@ to IRC, and don't forget that you can roll back to the previous version by running @kbd{M-x package-delete @key{RET}}. @xref{Packages,,,emacs, The Emacs Editor}, for more information. -Note that a bug affecting Emacs' packaging machinery may prevent the +Note that a bug affecting Emacs's packaging machinery may prevent the above method from working on Emacs versions 29 and below. Users on 29 can try running @kbd{C-u M-x package-install @key{RET}} instead. Users on 28 and below can click on the @emph{installed} @samp{erc} diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi index cecde5f3232..109dbd0f0ce 100644 --- a/doc/misc/ert.texi +++ b/doc/misc/ert.texi @@ -203,11 +203,11 @@ different Emacs versions. @cindex interactive testing @findex ert -You can run the tests that are currently defined in your Emacs with -the command @kbd{M-x ert @key{RET} t @key{RET}}. (For an -explanation of the @code{t} argument, @pxref{Test Selectors}.) ERT will pop -up a new buffer, the ERT results buffer, showing the results of the -tests run. It looks like this: +You can run the tests that are currently defined in your Emacs with the +command @kbd{M-x ert @key{RET} t @key{RET}}. (For an explanation of the +@code{t} argument, @pxref{Test Selectors}.) ERT will pop up a new +buffer, the ERT results buffer, showing the results of the tests run. +It looks like this: @example Selector: t diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi index 8547131194e..f8abb3d860a 100644 --- a/doc/misc/eshell.texi +++ b/doc/misc/eshell.texi @@ -76,6 +76,7 @@ similar to command shells such as @command{bash}, @command{zsh}, @menu * Introduction:: A brief introduction to the Emacs Shell. +* Entry Points:: * Commands:: * Expansion:: * Input/Output:: @@ -186,6 +187,131 @@ Apart from these, a lot of people have sent suggestions, ideas, requests, bug reports and encouragement. Thanks a lot! Without you there would be no new releases of Eshell. +@node Entry Points +@chapter Entry Points +@cindex starting Eshell +@cindex Eshell, starting + +Eshell provides several different ways to start it, depending on the +situation. + +@menu +* Interactive Shell:: +* One-Off Commands:: +* Scripts:: +@end menu + +@node Interactive Shell +@section Interactive Shell +@cindex interactive session + +The most common way to use Eshell is via an interactive shell. You can +start this via the @code{eshell} command: + +@deffn Command eshell &optional arg +Start a new interactive Eshell session, or switch to an already active +session. The exact behavior depends on the value of @var{arg} +(interactively, the prefix argument): + +@table @asis + +@item @code{nil} or omitted +Start or switch to the default Eshell session. This is the behavior +when typing @kbd{M-x eshell @key{RET}}. + +@item a number +Start or switch to the Eshell session with the specified number (e.g.@: +@samp{*eshell*<2>}). + +@item anything else +Start a new Eshell session, no matter if another one already exists. + +@end table +@end deffn + +@node One-Off Commands +@section One-Off Commands +@cindex command invocation, from anywhere + +You can also run individual Eshell commands from anywhere within Emacs: + +@deffn Command eshell-command command &optional output-target error-target +Execute the Eshell command string @var{command} and show the output in a +buffer. If @var{output-target} is @code{t} (interactively, with the +prefix argument), write the command's standard output to the current +buffer at point. If @code{nil}, write the output to a new output +buffer. For any other value, output to that Eshell target +(@pxref{Redirection}). + +@var{error-target} is similar to @var{output-target}, except that it +controls where to write standard error, and a @code{nil} value means to +write standard error to the same place as standard output. (To suppress +standard error, you can write to the Eshell virtual target +@file{/dev/null}.) + +When the command ends with @kbd{&}, Eshell will evaluate the command +asynchronously. Otherwise, it will wait until the command has finished +execution. +@end deffn + +@defun eshell-command-result command &optional status-var +Execute the Eshell command string @var{command} and return the result, +like using the variable @code{$$} in an interactive session +(@pxref{Variables}). If @var{status-var} is a symbol, this function +will set it to the exit status of the command (like using the variable +@code{$?} in an interactive session). +@end defun + +@node Scripts +@section Scripts +@cindex scripts + +@cmindex source +@cmindex . +Like other shells, you can create Eshell @dfn{scripts}. An Eshell +script is simply a file containing a sequence of commands that will be +executed as though you entered them one at a time in an interactive +Eshell session. You can invoke these scripts from within Eshell with +@command{source}, which will run the script in a subshell. If you wish +to run a script in your @emph{current} Eshell environment, use the +@code{.} command instead. + +Like with aliases (@pxref{Aliases}), Eshell scripts can accept any +number of arguments. Within the script, you can refer to these with +the special variables @code{$0}, @code{$1}, @dots{}, @code{$9}, and +@code{$*}. + +You can also invoke Eshell scripts from outside of Eshell: + +@deffn Command eshell-execute-file file &optional args output-target error-target +Execute the Eshell commands contained in @var{file}, passing an optional +list of @var{args} to the script. If @var{output-target} is @code{t} +(interactively, with the prefix argument), write the command output to +the current buffer. If @code{nil}, don't write the output anywhere. +For any other value, output to the corresponding Eshell target +(@pxref{Redirection}). + +@var{error-target} is similar to @var{output-target}, except that it +controls where to write standard error, and a @code{nil} value means to +write standard error to the same place as standard output. (To suppress +standard error, you can write to the Eshell virtual target +@file{/dev/null\}.) +@end deffn + +@cindex batch scripts +@defun eshell-batch-file +This function lets you make an Eshell script file executable from +outside of Emacs by adding it to the script's interpreter directive like +this: + +@example +#!/usr/bin/env -S emacs --batch -f eshell-batch-file +@end example + +As with other ways of invoking Eshell scripts, you can pass extra +arguments to the script on the command line. +@end defun + @node Commands @chapter Commands @@ -208,7 +334,6 @@ that will be invoked, type this as the Eshell prompt: * Aliases:: * Remote Access:: * Control Flow:: -* Scripts:: @end menu @node Invocation @@ -219,7 +344,7 @@ form} or in @dfn{Lisp form}. You can use the semicolon (@code{;}) to separate multiple command invocations on a single line, executing each in turn. You can also -separate commands with @code{&&} or @code{||}. When using @code{&&}, +separate commands with @code{&&} or @code{||}. When using @code{&&}, Eshell will execute the second command only if the first succeeds (i.e.@: has an exit status of 0); with @code{||}, Eshell will execute the second command only if the first fails. @@ -1597,33 +1722,6 @@ treat it as a list of one element. If you specify multiple @end table -@node Scripts -@section Scripts -@cmindex source -@fnindex eshell-execute-file -@fnindex eshell-batch-file -You can run Eshell scripts much like scripts for other shells; the main -difference is that since Eshell is not a system command, you have to run -it from within Emacs. An Eshell script is simply a file containing a -sequence of commands, as with almost any other shell script. You can -invoke scripts from within Eshell with @command{source}, or from -anywhere in Emacs with @code{eshell-execute-file}. Additionally, you -can make an Eshell script file executable by calling -@code{eshell-batch-file} in the interpreter directive: - -@example -#!/usr/bin/env -S emacs --batch -f eshell-batch-file -@end example - -Like with aliases (@pxref{Aliases}), Eshell scripts can accept any -number of arguments. Within the script, you can refer to these with -the special variables @code{$0}, @code{$1}, @dots{}, @code{$9}, and -@code{$*}. - -@cmindex . -If you wish to load a script into your @emph{current} environment, -rather than in a subshell, use the @code{.} command. - @node Expansion @chapter Expansion Expansion in a command shell is somewhat like macro expansion in macro @@ -1678,8 +1776,8 @@ shells, there are also many differences. Don't let these similarities lull you into a false sense of familiarity. When using command form (@pxref{Invocation}), Eshell will ignore any -leading nil values, so if @var{foo} is @code{nil}, @samp{$@var{foo} -echo hello} is equivalent to @samp{echo hello}. +leading @code{nil} values, so if @var{foo} is @code{nil}, +@samp{$@var{foo} echo hello} is equivalent to @samp{echo hello}. @table @code @@ -1897,7 +1995,7 @@ Matches one or more copies of the glob pattern @var{x}. Thus, etc. @item @var{x}~@var{y} -Matches anything that matches the pattern @var{x} but not @var{y}. For +Matches anything that matches the pattern @var{x} but not @var{y}. For example, @samp{[[:digit:]]#~4?} matches @file{1} and @file{12}, but not @file{42}. Note that unlike in Zsh, only a single @samp{~} operator can be used in a pattern, and it cannot be inside of a group @@ -2318,9 +2416,9 @@ Adds the text passed to it to the clipboard. @findex eshell-close-target You can, of course, define your own virtual targets. These are entries in @code{eshell-virtual-targets} with the form @samp{(@var{filename} -@var{output-function} @var{pass-mode})}. The first element, +@var{output-function} @var{pass-mode})}. The first element, @var{filename}, is the device name, usually of the form -@samp{"/dev/@var{name}"}. The second, @var{output-function}, should be a +@samp{"/dev/@var{name}"}. The second, @var{output-function}, should be a function: Eshell will repeatedly call it with the redirected output. This argument can also be an @code{eshell-generic-target} instance. In this case, Eshell will repeatedly call the generic function @@ -2339,8 +2437,9 @@ an @code{eshell-generic-target} as described above). @defun eshell-function-target-create output-function &optional close-function Create a new virtual target for Eshell that repeatedly calls @var{output-function} with the redirected output, as described above. -If @var{close-function} is non-nil, Eshell will call it when closing the -target, passing non-@code{nil} if the redirected command succeeded. +If @var{close-function} is non-@code{nil}, Eshell will call it when +closing the target, passing non-@code{nil} if the redirected command +succeeded. @end defun @node Pipelines @@ -2448,7 +2547,7 @@ for the built-in functions and some common external commands, and you can define your own for any command. @kindex TAB -Eshell completion also works for Lisp forms and glob patterns. If the +Eshell completion also works for Lisp forms and glob patterns. If the point is on a Lisp form, then @key{TAB} will behave similarly to completion in @code{elisp-mode} and @code{lisp-interaction-mode}. For glob patterns, the pattern will be removed from the input line, and @@ -2734,12 +2833,12 @@ An implementation of @command{expr} using the Calc package. @cmindex ff @item ff @var{directory} @var{pattern} -Shorthand for the the function @code{find-name-dired} (@pxref{Dired +Shorthand for the function @code{find-name-dired} (@pxref{Dired and Find, , , emacs, The Emacs Editor}). @cmindex gf @item gf @var{directory} @var{regexp} -Shorthand for the the function @code{find-grep-dired} (@pxref{Dired +Shorthand for the function @code{find-grep-dired} (@pxref{Dired and Find, , , emacs, The Emacs Editor}). @cmindex intersection @@ -2886,7 +2985,7 @@ Also a new @command{less} buffer was created with nothing in it@dots{} If @command{less.exe} is invoked from the Eshell command line, the expected output is written to the buffer. -Note that this happens on NT-Emacs 20.6.1 on Windows 2000. The term.el +Note that this happens on NT-Emacs 20.6.1 on Windows 2000. The term.el package and the supplied shell both use the @command{cmdproxy} program for running shells. @@ -2970,8 +3069,6 @@ current interactive process. @item Display file and line number if an error occurs in a script -@item @command{wait} doesn't work with process ids at the moment - @item Enable the direct-to-process input code in @file{em-term.el} @item Problem with repeating @samp{echo $@{find /tmp@}} diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi index 615ab76c326..0a16f2561f7 100644 --- a/doc/misc/eudc.texi +++ b/doc/misc/eudc.texi @@ -131,7 +131,7 @@ Quoted from RFC 1777: @quotation [LDAP] is designed to provide access to the X.500 Directory while not incurring the resource requirements of the Directory Access Protocol -(DAP). This protocol is specifically targeted at simple management +(DAP). This protocol is specifically targeted at simple management applications and browser applications that provide simple read/write interactive access to the X.500 Directory, and is intended to be a complement to the DAP itself. @@ -564,7 +564,7 @@ to customize in this process. Before doing any query you will need to set the directory server. You need to specify the name of the host machine running the server software -and the protocol to use. If you do not set the server in any fashion, +and the protocol to use. If you do not set the server in any fashion, EUDC will ask you for one when you make your first query. You can set the server by selecting one from your hotlist of servers @@ -579,9 +579,9 @@ buffer will be displayed where you can edit the search base and other parameters for the server. @defvar eudc-server -The name or IP address of the remote directory server. A TCP port number +The name or IP address of the remote directory server. A TCP port number may be specified by appending a colon and a number to the name of the -server. You will not need this unless your server runs on a port other +server. You will not need this unless your server runs on a port other than the default (which depends on the protocol). If the directory server resides on your own computer (which is the case if you use the BBDB back end) then @samp{localhost} is a reasonable value but @@ -609,12 +609,12 @@ attributes you want to see, if different from the server defaults. @defvar eudc-default-return-attributes A list of the default attributes to extract from directory entries. If set to the symbol @code{all} then all available attributes are -returned. A value of @code{nil}, the default, means to return the +returned. A value of @code{nil}, the default, means to return the default attributes as configured in the server. @end defvar -The server may return several matching records to a query. Some of the -records may however not contain all the attributes you requested. You can +The server may return several matching records to a query. Some of the +records may however not contain all the attributes you requested. You can discard those records. @defopt eudc-strict-return-matches @@ -626,32 +626,32 @@ attributes are ignored. Default is @code{t}. @subsection Duplicate Attributes Directory standards may authorize different instances of the same -attribute in a record. For instance the record of a person may contain +attribute in a record. For instance the record of a person may contain several email fields containing different email addresses, in which case EUDC will consider the attribute duplicated. -EUDC has several methods to deal with duplicated attributes. The +EUDC has several methods to deal with duplicated attributes. The available methods are: @table @code @item list -Makes a list with the different values of the duplicate attribute. The +Makes a list with the different values of the duplicate attribute. The record is returned with only one instance of the attribute with a list -of all the different values as a value. This is the default method that +of all the different values as a value. This is the default method that is used to handle duplicate fields for which no other method has been specified. @item first Discards all the duplicate values of the field keeping only the first one. @item concat -Concatenates the different values using a newline as a separator. The +Concatenates the different values using a newline as a separator. The record keeps only one instance of the field the value of which is a single multi-line string. @item duplicate Duplicates the whole record into as many instances as there are different -values for the field. This is the default for the email field. Thus a +values for the field. This is the default for the email field. Thus a record containing 3 different email addresses is duplicated into three -different records each having a single email address. This is +different records each having a single email address. This is particularly useful in combination with @code{select} as the method to handle multiple matches in inline expansion queries (@pxref{Inline Query Expansion}) because you are presented with the 3 addresses in a @@ -667,7 +667,7 @@ A method to handle entries containing duplicate attributes. This is either an alist of elements @code{(@var{attr} . @var{method})}, or a symbol @var{method}. The alist form of the variable associates a method to an individual attribute name; the second form specifies a method applicable -to all attribute names. Available methods are: @code{list}, +to all attribute names. Available methods are: @code{list}, @code{first}, @code{concat}, and @code{duplicate} (see above). The default is @code{list}. @end defvar @@ -678,8 +678,8 @@ to all attribute names. Available methods are: @code{list}, @section Query Form The simplest way to query your directory server is to use the query -form. You display the query form with the @samp{Query with Form} menu -item or by invoking the command @kbd{M-x eudc-query-form}. The attribute +form. You display the query form with the @samp{Query with Form} menu +item or by invoking the command @kbd{M-x eudc-query-form}. The attribute names presented in this form are defined by the @code{eudc-query-form-attributes} variable (unless a non-@code{nil} argument is supplied to @code{eudc-query-form}). @@ -717,7 +717,7 @@ names for directory attribute names. This variable is ignored if @defvar eudc-user-attribute-names-alist This is an alist of user-defined names for the directory attributes used in -query/response forms. Prompt strings for attributes that are not in this +query/response forms. Prompt strings for attributes that are not in this alist are derived by splitting the attribute name at underscores and capitalizing the individual words. @end defvar @@ -893,7 +893,7 @@ against the @code{cn} attribute of LDAP servers: @defvar eudc-inline-expansion-format This variable lets you control exactly what is inserted into the -buffer upon an inline expansion request. It can be set to @code{nil}, +buffer upon an inline expansion request. It can be set to @code{nil}, to a function, or to a list. Default is @code{nil}. When the value is a list, the first element is a string passed to @@ -926,7 +926,7 @@ any of the formats: Email address specifications, as are generated by inline expansion, need to comply with RFC 5322 in order to be useful in email -messages. When an invalid address specification is present in an email +messages. When an invalid address specification is present in an email message header, the message is likely to be rejected by a receiving MTA. It is hence recommended to switch old configurations, which use a list value, to the new @code{nil}, or function value type since it diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi index 6b605a6c095..af9639ebb5a 100644 --- a/doc/misc/flymake.texi +++ b/doc/misc/flymake.texi @@ -194,7 +194,7 @@ The following statuses are defined: @item [@var{nerrors} @var{nwarnings} ...] @tab Normal operation. @var{nerrors} and @var{nwarnings} are, respectively, the total number of errors and warnings found during the last buffer -check, for all backends. They may be followed by other totals for +check, for all backends. They may be followed by other totals for other types of diagnostics (@pxref{Flymake error types}). @item @code{Wait} diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi index e0221d90fd9..226445ff9a0 100644 --- a/doc/misc/forms.texi +++ b/doc/misc/forms.texi @@ -298,9 +298,9 @@ Similar to @code{forms-next-field} but moves backwards. @item M-x forms-save-buffer @kindex C-x C-s @itemx C-x C-s -Forms mode replacement for @code{save-buffer}. When executed in the +Forms mode replacement for @code{save-buffer}. When executed in the forms buffer it will save the contents of the (modified) data buffer -instead. In Forms mode this function will be bound to @kbd{C-x C-s}. +instead. In Forms mode this function will be bound to @kbd{C-x C-s}. @findex forms-print @item M-x forms-print @@ -374,10 +374,10 @@ string @code{forms-field-sep}, which is @code{"\t"} (a Tab) by default. If the format of the data file is not suitable enough you can define the filter functions @code{forms-read-file-filter} and @code{forms-write-file-filter}. @code{forms-read-file-filter} is called -when the data file is read from disk into the data buffer. It operates -on the data buffer, ignoring read-only protections. When the data file +when the data file is read from disk into the data buffer. It operates +on the data buffer, ignoring read-only protections. When the data file is saved to disk @code{forms-write-file-filter} is called to cancel the -effects of @code{forms-read-file-filter}. After being saved, +effects of @code{forms-read-file-filter}. After being saved, @code{forms-read-file-filter} is called again to prepare the data buffer for further processing. @@ -488,7 +488,7 @@ The default value is @code{"\^k"}, the character Control-K@. Example: @findex forms-read-file-filter @item forms-read-file-filter This variable holds the name of a function to be called after the data -file has been read in. This can be used to transform the contents of the +file has been read in. This can be used to transform the contents of the data file into a format more suitable for forms processing. If it is @code{nil}, no function is called. For example, to maintain a gzipped database: @@ -533,7 +533,7 @@ modified, just before updating the Forms data file. If it is @findex forms-insert-after @item forms-insert-after If this variable is not @code{nil}, new records are created @emph{after} the -current record. Also, upon visiting a file, the initial position will be +current record. Also, upon visiting a file, the initial position will be at the last record instead of the first one. @findex forms-check-number-of-fields @@ -798,8 +798,8 @@ newline in a field, while @code{forms-multi-line} was @code{nil}. @item Field separator occurs in record - update refused! The current record contains the field separator string inside one of the -fields. It can not be written back to the data file, for it would -corrupt it. Probably you inserted the field separator string in a field. +fields. It can not be written back to the data file, for it would +corrupt it. Probably you inserted the field separator string in a field. @item Record number @var{xx} out of range 1..@var{yy} A jump was made to non-existing record @var{xx}. @var{yy} denotes the @@ -813,7 +813,7 @@ An attempt was made to enable edit mode on a file that has been write protected. @item Search failed: @var{regexp} -The @var{regexp} could not be found in the data file. Forward searching +The @var{regexp} could not be found in the data file. Forward searching is done from the current location until the end of the file, then retrying from the beginning of the file until the current location. Backward searching is done from the current location until the beginning @@ -828,7 +828,7 @@ Forms mode's idea of the number of records has been adjusted to the number of records actually present in the data file. @item Problem saving buffers? -An error occurred while saving the data file buffer. Most likely, Emacs +An error occurred while saving the data file buffer. Most likely, Emacs did ask to confirm deleting the buffer because it had been modified, and you said ``no''. @end table diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi index 33c9f3bea81..c21f19cc784 100644 --- a/doc/misc/gnus-faq.texi +++ b/doc/misc/gnus-faq.texi @@ -115,7 +115,7 @@ development version that became Gnus 5.12. * FAQ 2-4:: My group buffer becomes a bit crowded, is there a way to sort my groups into categories so I can easier browse through them? -* FAQ 2-5:: How to manually sort the groups in Group buffer? How to +* FAQ 2-5:: How to manually sort the groups in Group buffer? How to sort the groups in a topic? @end menu @@ -146,7 +146,7 @@ what's this? @subsubheading Answer You get the message described in the q/a pair above while -starting Gnus, right? It's another symptom for the same +starting Gnus, right? It's another symptom for the same problem, so read the answer above. @node FAQ 2-3 @@ -190,7 +190,7 @@ groups nicely indented. @node FAQ 2-5 @subsubheading Question 2.5 -How to manually sort the groups in Group buffer? How to +How to manually sort the groups in Group buffer? How to sort the groups in a topic? @subsubheading Answer @@ -583,7 +583,7 @@ each POP3 mail source. @xref{Mail Source Specifiers}, for details on * FAQ 4-8:: Is there anything I can do to make poorly formatted mails more readable? * FAQ 4-9:: Is there a way to automatically ignore posts by specific - authors or with specific words in the subject? And can I + authors or with specific words in the subject? And can I highlight more interesting ones in some way? * FAQ 4-10:: How can I disable threading in some (e.g., mail-) groups, or set other variables specific for some groups? @@ -593,7 +593,7 @@ each POP3 mail source. @xref{Mail Source Specifiers}, for details on displays in group buffer is by far to high, especially in mail groups. Is this a bug? * FAQ 4-13:: I don't like the layout of summary and article buffer, - how to change it? Perhaps even a three pane display? + how to change it? Perhaps even a three pane display? * FAQ 4-14:: I don't like the way the Summary buffer looks, how to tweak it? * FAQ 4-15:: How to split incoming mails in several groups? @@ -750,7 +750,7 @@ other deuglifications). @subsubheading Question 4.9 Is there a way to automatically ignore posts by specific -authors or with specific words in the subject? And can I +authors or with specific words in the subject? And can I highlight more interesting ones in some way? @subsubheading Answer @@ -876,7 +876,7 @@ groups again). @subsubheading Question 4.13 I don't like the layout of summary and article buffer, how -to change it? Perhaps even a three pane display? +to change it? Perhaps even a three pane display? @subsubheading Answer @@ -1056,7 +1056,7 @@ of the variables @code{shr-color-visible-distance-min} and signature...? * FAQ 5-4:: Can I set things like From, Signature etc. group based on the group I post too? -* FAQ 5-5:: Is there a spell-checker? Perhaps even on-the-fly +* FAQ 5-5:: Is there a spell-checker? Perhaps even on-the-fly spell-checking? * FAQ 5-6:: Can I set the dictionary based on the group I'm posting to? @@ -1173,12 +1173,11 @@ to postings you send to the gmane hierarchy, use send to groups containing the string binaries in their name etc. -You can instead of specifying a regexp specify a function -which is evaluated, only if it returns true, the -corresponding settings take effect. Two interesting -candidates for this are message-news-p which returns t if -the current Group is a newsgroup and the corresponding -message-mail-p. +You can instead of specifying a regexp specify a function which is +evaluated, only if it returns true, the corresponding settings take +effect. Two interesting candidates for this are @code{message-news-p} +which returns @code{t} if the current Group is a newsgroup and the +corresponding @code{message-mail-p}. Note that all forms that match are applied, that means in the example below, when I post to @@ -1212,7 +1211,7 @@ at the bottom. @node FAQ 5-5 @subsubheading Question 5.5 -Is there a spell-checker? Perhaps even on-the-fly spell-checking? +Is there a spell-checker? Perhaps even on-the-fly spell-checking? @subsubheading Answer @@ -1562,7 +1561,7 @@ gnu.emacs.gnus and want to archive it there are several solutions. The first and easiest is to save it to a file by saying @kbd{O f}. However, wouldn't it be much more convenient to have more direct access to -the archived message from Gnus? If you say yes, put this +the archived message from Gnus? If you say yes, put this snippet by Frank Haun in @file{~/.gnus.el}: @@ -1584,7 +1583,7 @@ more then one article." @noindent You can now say @kbd{M-x my-archive-article} in summary buffer to -archive the article under the cursor in a nnml group. (Change nnml to +archive the article under the cursor in a nnml group. (Change nnml to your preferred back end.) Of course you can also make sure the cache is enabled by saying @@ -1664,7 +1663,7 @@ follows a slightly different approach, here all article where the read mark is set are expirable. To activate auto-expire, include auto-expire in the -Group parameters for the group. (Hit @kbd{G +Group parameters for the group. (Hit @kbd{G c} in summary buffer with point over the group to change group parameters). For total-expire add total-expire to the group-parameters. @@ -1808,7 +1807,7 @@ other possibility is to set, again in the summary buffer, downloadable (%) marks for the articles you want by typing @kbd{@@} with point over the article and then typing @kbd{J u}. -What's the difference? Well, process marks are erased as +What's the difference? Well, process marks are erased as soon as you exit the summary buffer while downloadable marks are permanent. You can actually set downloadable marks in several groups then use fetch session ('J s' in diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index b2dfc46f74c..dbe4da29d54 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -5837,7 +5837,7 @@ Mail a very wide reply to the author of the current article (@code{gnus-summary-very-wide-reply}). A @dfn{very wide reply} is a reply that goes out to all people listed in the @code{To}, @code{From} (or @code{Reply-To}) and @code{Cc} headers in all the process/prefixed -articles. This command uses the process/prefix convention. If given a +articles. This command uses the process/prefix convention. If given a prefix argument, the body of the current article will also be yanked. @item S V @@ -7424,7 +7424,7 @@ meaningful. Here's one example: @end lisp And another example: the protonmail bridge adds fake message-ids to -@code{References} in message headers, which can confuse threading. To +@code{References} in message headers, which can confuse threading. To remove these spurious ids @lisp @@ -10558,7 +10558,7 @@ course, it'll make group entry somewhat slow. @vindex gnus-refer-thread-use-search If @code{gnus-refer-thread-use-search} is @code{nil} (the default) -then thread-referral only looks for articles in the current group. If +then thread-referral only looks for articles in the current group. If this variable is @code{t} the server to which the current group belongs is searched (provided that searching is available for the server's backend). If this variable is a list of servers, each server @@ -11513,7 +11513,7 @@ even with @sc{xover} by registering the @code{Xref} lines of all articles you actually read, but if you kill the articles, or just mark them as read without reading them, Gnus will not get a chance to snoop the @code{Xref} lines out of these articles, and will be unable to use -the cross reference mechanism. +the cross-reference mechanism. @cindex LIST overview.fmt @cindex overview.fmt @@ -12075,7 +12075,7 @@ article buffer. There are many methods for doing that, but two of them are kind of default methods. If your Emacs copy has been built with libxml2 support, then Gnus uses -Emacs' built-in, plain elisp Simple HTML Renderer @code{shr} +Emacs's built-in, plain elisp Simple HTML Renderer @code{shr} @footnote{@code{shr} displays colors as declared in the @acronym{HTML} article but tries to adjust them in order to be readable. If you prefer more contrast, @xref{FAQ 4-16}.} which is also used by Emacs' @@ -14706,7 +14706,7 @@ Here's a complete example @code{nnimap} backend with a client-side If you're using Google's Gmail, you may want to see your Gmail labels when reading your mail. Gnus can give you this information if you ask -for @samp{X-GM-LABELS} in the variable @code{gnus-extra-headers}. For +for @samp{X-GM-LABELS} in the variable @code{gnus-extra-headers}. For example: @example @@ -15387,7 +15387,7 @@ corresponding keywords. @item :mailbox The name of the mailbox to get mail from. The default is @samp{INBOX} -which normally is the mailbox which receives incoming mail. Instead of +which normally is the mailbox which receives incoming mail. Instead of a single mailbox, this can be a list of mailboxes to fetch mail from. @item :predicate @@ -19842,7 +19842,8 @@ may ask: @table @dfn @item If I read an article while plugged, do they get entered into the Agent? -@strong{No}. If you want this behavior, add +Yes, because of the default value of +@code{gnus-agent-eagerly-store-articles}. An alternative is to add @code{gnus-agent-fetch-selected-article} to @code{gnus-select-article-hook}. @@ -20601,7 +20602,7 @@ key will lead to creation of @file{ADAPT} files.) @cindex score file atoms @item score-fn The value of this entry should be one or more user-defined function -names in parentheses. Each function will be called in order and the +names in parentheses. Each function will be called in order and the returned value is required to be an integer. @example @@ -22354,7 +22355,7 @@ calling @code{nnmairix-search} with @samp{f:From}. @item G G o @kindex G G o @r{(Summary)} @findex nnmairix-goto-original-article -(Only in @code{nnmairix} groups!) Tries determine the group this article +(Only in @code{nnmairix} groups!) Tries determine the group this article originally came from and displays the article in this group, so that, e.g., replying to this article the correct posting styles/group parameters are applied (@code{nnmairix-goto-original-article}). This @@ -26640,13 +26641,13 @@ data across multiple machines. Very often, you want all your marks (what articles you've read, which ones were important, and so on) to be synchronized between several -machines. With IMAP, that's built into the protocol, so you can read +machines. With IMAP, that's built into the protocol, so you can read nnimap groups from many machines and they are automatically -synchronized. But NNTP, nnrss, and many other backends do not store +synchronized. But NNTP, nnrss, and many other backends do not store marks, so you have to do it locally. The Gnus Cloud package stores the marks, plus any files you choose, on -an IMAP server in a special folder. It's like a +an IMAP server in a special folder. It's like a DropTorrentSyncBoxOakTree(TM).@footnote{The name ``Gnus Cloud'' parodizes but otherwise has little to do with ``cloud computing'', a @url{https://www.gnu.org/philosophy/words-to-avoid.html#CloudComputing, @@ -26660,17 +26661,17 @@ misleading term normally best avoided}.} @node Gnus Cloud Setup @subsection Gnus Cloud Setup -Setting up the Gnus Cloud takes less than a minute. From the Group +Setting up the Gnus Cloud takes less than a minute. From the Group buffer: -Press @kbd{^} to go to the Server buffer. Here you'll see all the +Press @kbd{^} to go to the Server buffer. Here you'll see all the servers that Gnus knows. @xref{Server Buffer}. Then press @kbd{i} to mark any servers as cloud-synchronized (their marks are synchronized). Then press @kbd{I} to mark a single server as the cloud host (it must be an IMAP server, and will host a special IMAP folder with all the -synchronization data). This will set the variable +synchronization data). This will set the variable @code{gnus-cloud-method} (using the Customize facilities), then ask you to optionally upload your first CloudSynchronizationDataPack(TM). @@ -26690,37 +26691,37 @@ Download the latest Gnus Cloud data. @item ~ ~ @findex gnus-cloud-upload-all-data @cindex cloud, download -Upload the local Gnus Cloud data. Creates a new +Upload the local Gnus Cloud data. Creates a new CloudSynchronizationDataPack(TM). @end table -But wait, there's more. Of course there's more. So much more. You can +But wait, there's more. Of course there's more. So much more. You can customize all of the following. @defvar gnus-cloud-synced-files These are the files that will be part of every -CloudSynchronizationDataPack(TM). They are included in every upload, -so don't synchronize a lot of large files. Files under 100Kb are best. +CloudSynchronizationDataPack(TM). They are included in every upload, +so don't synchronize a lot of large files. Files under 100Kb are best. @end defvar @defvar gnus-cloud-storage-method -This is a choice from several storage methods. It's highly recommended -to use the EPG facilities. It will be automatic if have GnuPG -installed and EPG loaded. Otherwise, you could use Base64+gzip, +This is a choice from several storage methods. It's highly recommended +to use the EPG facilities. It will be automatic if have GnuPG +installed and EPG loaded. Otherwise, you could use Base64+gzip, Base64, or no encoding. @end defvar @defvar gnus-cloud-interactive When this is set, and by default it is, the Gnus Cloud package will -ask you for confirmation here and there. Leave it on until you're +ask you for confirmation here and there. Leave it on until you're comfortable with the package. @end defvar @defvar gnus-cloud-method The name of the IMAP server to store the -CloudSynchronizationDataPack(TM)s. It's easiest to set this from the +CloudSynchronizationDataPack(TM)s. It's easiest to set this from the Server buffer (@pxref{Gnus Cloud Setup}). @end defvar diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi index 258c743ac8f..40d5d13b51f 100644 --- a/doc/misc/htmlfontify.texi +++ b/doc/misc/htmlfontify.texi @@ -751,7 +751,7 @@ should do this. (hfy-face-to-css @var{fn}) @end lisp -Take @var{fn}, a font or @code{defface} specification (c.f. +Take @var{fn}, a font or @code{defface} specification (cf. @code{face-attr-construct}) and return a CSS style specification. See also: @ref{hfy-face-to-style} @@ -1167,7 +1167,7 @@ An assoc of @code{(point . @var{face-symbol})} or . end)} elements, in descending order of point value (i.e., from the file's end to its beginning). The map is in reverse order because inserting a @samp{