Merge branch 'master' into harfbuzz

This commit is contained in:
YAMAMOTO Mitsuharu 2019-05-23 10:53:23 +09:00
commit b40dde705a
603 changed files with 8316 additions and 6499 deletions

View file

@ -21,7 +21,7 @@
# any particular service that uses that protocol. Also, it is intended for
# evaluation purposes, thus possibly temporary.
# Maintainer: tzz@lifelogs.com
# Maintainer: Ted Zlatanov <tzz@lifelogs.com>
# URL: https://emba.gnu.org/emacs/emacs
image: debian:stretch

41
INSTALL
View file

@ -34,11 +34,12 @@ some of the steps manually. The more detailed description in the other
sections of this guide will help you do that, so please refer to those
sections if you need to.
1. Unpacking the Emacs release requires about 200 MB of free
disk space. Building Emacs uses about another 200 MB of space.
The final installed Emacs uses about 150 MB of disk space.
This includes the space-saving that comes from automatically
compressing the Lisp source files on installation.
1. Obtain and unpack the Emacs release, with commands like this:
wget https://ftp.gnu.org/gnu/emacs/emacs-VERSION.tar.xz
tar -xf emacs-VERSION.tar.xz
where VERSION is the Emacs version number.
2a. 'cd' to the directory where you unpacked Emacs and invoke the
'configure' script:
@ -81,13 +82,17 @@ sections if you need to.
src/emacs -Q
To test Emacs further (intended mostly to help developers):
make check
6. Assuming that the program 'src/emacs' starts and displays its
opening screen, you can install the program and its auxiliary
files into their installation directories:
make install
You are now ready to use Emacs. If you wish to conserve disk space,
You are now ready to use Emacs. If you wish to conserve space,
you may remove the program binaries and object files from the
directory where you built Emacs:
@ -118,7 +123,7 @@ packages. Note that if there is a separate 'dev' or 'devel' package,
for use at compilation time rather than run time, you will need that
as well as the corresponding run time package; typically the dev
package will contain header files and a library archive. Otherwise,
you can download the libraries from <http://www.nongnu.org/m17n/>.
you can download the libraries from <https://www.nongnu.org/m17n/>.
Note that Emacs cannot support complex scripts on a TTY, unless the
terminal includes such a support.
@ -162,14 +167,14 @@ can be found (in the unlikely event that your distribution does not
provide them). By default, libraries marked with an X are required if
X11 is being used.
libXaw3d https://directory.fsf.org/project/xaw3d/
X libxpm for XPM: http://www.x.org/releases/current/src/lib/
libXaw3d https://directory.fsf.org/project/Xaw3d
X libxpm for XPM: https://www.x.org/releases/current/src/lib/
X libpng for PNG: http://www.libpng.org/
libz (for PNG): http://www.zlib.net/
X libjpeg for JPEG: http://www.ijg.org/
X libtiff for TIFF: http://www.remotesensing.org/libtiff/
X libgif for GIF: http://sourceforge.net/projects/giflib/
librsvg2 for SVG: http://wiki.gnome.org/action/show/Projects/LibRsvg
libz (for PNG): https://www.zlib.net/
X libjpeg for JPEG: https://www.ijg.org/
X libtiff for TIFF: http://www.simplesystems.org/libtiff/
X libgif for GIF: http://giflib.sourceforge.net/
librsvg2 for SVG: https://wiki.gnome.org/Projects/LibRsvg
If you supply the appropriate --without-LIB option, 'configure' will
omit the corresponding library from Emacs, even if that makes for a
@ -213,7 +218,7 @@ DETAILED BUILDING AND INSTALLATION:
see nextstep/INSTALL. For non-ancient versions of MS Windows, see
the file nt/INSTALL. For MS-DOS and MS Windows 3.X, see msdos/INSTALL.)
1) See the basic installation summary above for the disk space requirements.
1) See BASIC INSTALLATION above for getting and configuring Emacs.
2) In the unlikely event that 'configure' does not detect your system
type correctly, consult './etc/MACHINES' to see what --host, --build
@ -294,7 +299,9 @@ or more of these options:
--without-gif for GIF image support
--without-png for PNG image support
--without-rsvg for SVG image support
--without-imagemagick for Imagemagick support
Although ImageMagick support is disabled by default due to security
and stability concerns, you can enable it with --with-imagemagick.
Use --without-toolkit-scroll-bars to disable Motif or Xaw3d scroll bars.
@ -352,7 +359,7 @@ Use --enable-link-time-optimization to enable link-time optimization.
With GCC, you need GCC 4.5.0 and later, and 'configure' arranges for
linking to be parallelized if possible. With Clang, you need GNU
binutils with the gold linker and plugin support, along with the LLVM
gold plugin <http://llvm.org/docs/GoldPlugin.html>. Link time
gold plugin <https://llvm.org/docs/GoldPlugin.html>. Link time
optimization is not the default as it tends to cause crashes and to
make Emacs slower.

View file

@ -32,8 +32,8 @@ can invoke './configure -C'. After configuring, build Emacs as follows:
$ make
If you want to install Emacs, type 'make install' instead of 'make' in
the last command.
You can also type 'make check' to test and 'make install' to install
Emacs.
Occasionally the file 'lisp/loaddefs.el' (and similar automatically
generated files, such as 'esh-groups.el', and '*-loaddefs.el' in some

View file

@ -320,7 +320,8 @@ SUBDIR_MAKEFILES = $(patsubst ${srcdir}/%,%,${SUBDIR_MAKEFILES_IN:.in=})
# Non-makefile files created by config.status.
CONFIG_STATUS_FILES_IN = \
${srcdir}/nt/emacs.rc.in ${srcdir}/nt/emacsclient.rc.in \
${srcdir}/doc/man/emacs.1.in ${srcdir}/src/emacs-module.h.in
${srcdir}/doc/man/emacs.1.in ${srcdir}/src/emacs-module.h.in \
${srcdir}/src/module-env-*.h
# Subdirectories to install, and where they'll go. lib-src's and nt's
# makefiles know how to install them, so we don't do that here.
@ -949,17 +950,15 @@ extraclean: $(extraclean_dirs:=_extraclean)
TAGS tags: lib lib-src # src
$(MAKE) -C src tags
.PHONY: have-tests
have-tests:
@if test ! -d test; then \
echo "You do not seem to have the test/ directory."; \
echo "Maybe you are using a release tarfile, rather than a repository checkout."; \
exit 1; \
fi
.PHONY: check check-maybe check-expensive check-all
check check-maybe check-expensive check-all: have-tests all
CHECK_TARGETS = check check-maybe check-expensive check-all
.PHONY: $(CHECK_TARGETS)
$(CHECK_TARGETS): all
ifeq ($(wildcard test),test)
$(MAKE) -C test $@
else
@echo "You do not seem to have the test/ directory."
@echo "Maybe you used a release tarfile that lacks tests."
endif
dist:
cd ${srcdir}; ./make-dist

View file

@ -138,10 +138,10 @@ Root must be the root of an Emacs source tree."
(if (eq 2 (length newversion)) 0 1))))
(majorbump (and oldversion (not (equal oldmajor newmajor))))
(minorbump (and oldversion (not majorbump)
(or (not (equal (cadr oldversion)
(cadr newversion)))
(and (equal (cadr oldversion) (cadr newversion))
(equal (nth 2 newversion) 50)))))
(or (not (equal (cadr oldversion) (cadr newversion)))
;; Eg 26.2 -> 26.2.50.
(and (> (length newversion)
(length oldversion))))))
(newsfile (expand-file-name "etc/NEWS" root))
(oldnewsfile (expand-file-name (format "etc/NEWS.%s" oldmajor) root)))
(unless (> (length newversion) 2) ; pretest or release candidate?

View file

@ -1,10 +1,8 @@
;;; authors.el --- utility for maintaining Emacs's AUTHORS file
;; Copyright (C) 2000-2019 Free Software Foundation, Inc.
;; Author: Gerd Moellmann <gerd@gnu.org>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: maint
;; Package: emacs

View file

@ -2,8 +2,6 @@
;; Copyright (C) 1992, 2001-2019 Free Software Foundation, Inc.
;; Maintainer: emacs-devel@gnu.org
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify

View file

@ -3,7 +3,6 @@
;; Copyright (C) 2016-2019 Free Software Foundation, Inc.
;; Author: Thien-Thi Nguyen <ttn@gnu.org>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: maint
;; Package: emacs

View file

@ -115,7 +115,7 @@ General steps (for each step, check for possible errors):
results against the new tar contents.
7. tar -xf emacs-NEW.tar; cd emacs-NEW
./configure --prefix=/tmp/emacs && make && make install
./configure --prefix=/tmp/emacs && make check && make install
Use 'script' or M-x compile to save the compilation log in
compile-NEW.log and compare it against an old one. The easiest way
to do that is to visit the old log in Emacs, change the version

View file

@ -50,6 +50,7 @@ repo_files=$(git ls-files) &&
# Do not update the copyright of files that have one or more of the
# following problems:
# . They are license files, maintained by the FSF, with their own dates.
# . They are GMP files, maintained by the GMP project, with their own dates.
# . Their format cannot withstand changing the contents of copyright strings.
updatable_files=$(find $repo_files \
@ -70,6 +71,7 @@ updatable_files=$(find $repo_files \
! -name hand.cur \
! -name key.pub \
! -name key.sec \
! -name 'mini-gmp.[ch]' \
-print) &&
build-aux/update-copyright $updatable_files

View file

@ -4,7 +4,6 @@
## Copyright (C) 2011-2019 Free Software Foundation, Inc.
## Author: Glenn Morris <rgm@gnu.org>
## Maintainer: emacs-devel@gnu.org
## This file is part of GNU Emacs.
@ -316,8 +315,16 @@ git_config transfer.fsckObjects true
# Configure 'git diff' hunk header format.
# This xfuncname is based on Git's built-in 'cpp' pattern.
# The first line rejects jump targets and access declarations.
# The second line matches top-level functions and methods.
# The third line matches preprocessor and DEFUN macros.
git_config diff.cpp.xfuncname \
'!^[ \t]*[A-Za-z_][A-Za-z_0-9]*:[[:space:]]*($|/[/*])
^((::[[:space:]]*)?[A-Za-z_][A-Za-z_0-9]*[[:space:]]*\(.*)$
^((#define[[:space:]]|DEFUN).*)$'
git_config diff.elisp.xfuncname \
'^\(def[^[:space:]]+[[:space:]]+([^()[:space:]]+)'
'^\([^[:space:]]*def[^[:space:]]+[[:space:]]+([^()[:space:]]+)'
git_config 'diff.m4.xfuncname' '^((m4_)?define|A._DEFUN(_ONCE)?)\([^),]*'
git_config 'diff.make.xfuncname' \
'^([$.[:alnum:]_].*:|[[:alnum:]_]+[[:space:]]*([*:+]?[:?]?|!?)=|define .*)'
@ -332,7 +339,7 @@ git_config diff.texinfo.xfuncname \
tailored_hooks=
sample_hooks=
for hook in commit-msg pre-commit; do
for hook in commit-msg pre-commit prepare-commit-msg; do
cmp -- build-aux/git-hooks/$hook "$hooks/$hook" >/dev/null 2>&1 ||
tailored_hooks="$tailored_hooks $hook"
done

View file

@ -2,7 +2,7 @@
# Attempt to guess a canonical system name.
# Copyright 1992-2019 Free Software Foundation, Inc.
timestamp='2019-03-04'
timestamp='2019-04-28'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@ -1468,6 +1468,14 @@ cat > "$dummy.c" <<EOF
#include <sys/types.h>
#include <sys/utsname.h>
#endif
#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
#include <signal.h>
#if defined(_SIZE_T_) || defined(SIGLOST)
#include <sys/utsname.h>
#endif
#endif
#endif
main ()
{
#if defined (sony)
@ -1554,19 +1562,24 @@ main ()
#else
printf ("vax-dec-bsd\n"); exit (0);
#endif
#else
#if defined(_SIZE_T_) || defined(SIGLOST)
struct utsname un;
uname (&un);
printf ("vax-dec-ultrix%s\n", un.release); exit (0);
#else
printf ("vax-dec-ultrix\n"); exit (0);
#endif
#endif
#endif
#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
#include <signal.h>
#if defined(_SIZE_T_) /* >= ULTRIX4 */
printf ("mips-dec-ultrix4\n"); exit (0);
#if defined(_SIZE_T_) || defined(SIGLOST)
struct utsname *un;
uname (&un);
printf ("mips-dec-ultrix%s\n", un.release); exit (0);
#else
#if defined(ULTRIX3) || defined(ultrix3) || defined(SIGLOST)
printf ("mips-dec-ultrix3\n"); exit (0);
#endif
printf ("mips-dec-ultrix\n"); exit (0);
#endif
#endif
#endif

View file

@ -0,0 +1,45 @@
#!/bin/sh
# Check the format of GNU Emacs change log entries.
# Copyright 2019 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
# GNU Emacs is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3
# Prefer gawk if available, as it handles NUL bytes properly.
if type gawk >/dev/null 2>&1; then
awk=gawk
else
awk=awk
fi
exec $awk '
# Catch the case when someone ran git-commit with -s option,
# which automatically adds Signed-off-by.
/^Signed-off-by: / {
print "'\''Signed-off-by:'\'' in commit message"
status = 1
}
END {
if (status != 0) {
print "Commit aborted; please see the file 'CONTRIBUTE'"
}
exit status
}
' <"$COMMIT_MSG_FILE"

View file

@ -5,7 +5,6 @@
## Copyright (C) 2013-2019 Free Software Foundation, Inc.
## Author: Glenn Morris <rgm@gnu.org>
## Maintainer: emacs-devel@gnu.org
## This file is part of GNU Emacs.

View file

@ -432,7 +432,7 @@ OPTION_DEFAULT_ON([lcms2],[don't compile with Little CMS support])
OPTION_DEFAULT_ON([libsystemd],[don't compile with libsystemd support])
OPTION_DEFAULT_OFF([cairo],[compile with Cairo drawing (experimental)])
OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
OPTION_DEFAULT_OFF([imagemagick],[compile with ImageMagick image support])
OPTION_DEFAULT_ON([json], [don't compile with native JSON support])
OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
@ -3708,6 +3708,8 @@ AC_SUBST_FILE([module_env_snippet_27])
module_env_snippet_25="$srcdir/src/module-env-25.h"
module_env_snippet_26="$srcdir/src/module-env-26.h"
module_env_snippet_27="$srcdir/src/module-env-27.h"
emacs_major_version="${PACKAGE_VERSION%%.*}"
AC_SUBST(emacs_major_version)
### Use -lpng if available, unless '--with-png=no'.
HAVE_PNG=no
@ -5736,9 +5738,8 @@ m4_define([subdir_makefiles],
SUBDIR_MAKEFILES="subdir_makefiles"
AC_CONFIG_FILES(subdir_makefiles)
dnl test/ is not present in release tarfiles.
dnl The test/ directory is missing if './make-dist --no-tests' was used.
opt_makefile=test/Makefile
if test -f "$srcdir/$opt_makefile.in"; then
SUBDIR_MAKEFILES="$SUBDIR_MAKEFILES $opt_makefile"
dnl Again, it's best not to use a variable. Though you can add

View file

@ -4,8 +4,9 @@
@c
@c This file is included either in emacs-xtra.texi (when producing the
@c printed version) or in the main Emacs manual (for the on-line version).
@node Autorevert
@section Auto Reverting Non-File Buffers
@node Non-File Buffers
@subsection Auto Reverting Non-File Buffers
Global Auto Revert Mode normally only reverts file buffers. There are
two ways to auto-revert certain non-file buffers: by enabling Auto
@ -34,6 +35,14 @@ the Buffer Menu.) In this case, Auto Revert does not print any
messages while reverting, even when @code{auto-revert-verbose} is
non-@code{nil}.
@vindex buffer-auto-revert-by-notification
Some non-file buffers can be updated reliably by file notification on
their default directory; Dired buffers is an example. The major mode
can indicate this by setting @code{buffer-auto-revert-by-notification}
to a non-@code{nil} value in that buffer, allowing Auto Revert to
avoid periodic polling. Such notification does not include changes to
files in that directory, only to the directory itself.
The details depend on the particular types of buffers and are
explained in the corresponding sections.
@ -43,7 +52,7 @@ explained in the corresponding sections.
@end menu
@node Auto Reverting the Buffer Menu
@subsection Auto Reverting the Buffer Menu
@subsubsection Auto Reverting the Buffer Menu
If auto-reverting of non-file buffers is enabled, the Buffer Menu
@iftex
@ -65,7 +74,7 @@ adding marks sets the buffer's modified flag prevents Auto Revert from
automatically erasing the marks.
@node Auto Reverting Dired
@subsection Auto Reverting Dired buffers
@subsubsection Auto Reverting Dired buffers
Dired buffers only auto-revert when the file list of the buffer's main
directory changes (e.g., when a new file is added or deleted). They

View file

@ -568,10 +568,10 @@ mode in this buffer, as long as it is not marked modified. Global
Auto Revert mode applies to the @file{*Buffer List*} buffer only if
@code{global-auto-revert-non-file-buffers} is non-@code{nil}.
@iftex
@inforef{Autorevert,, emacs-xtra}, for details.
@inforef{Auto Reverting the Buffer Menu,, emacs-xtra}, for details.
@end iftex
@ifnottex
@xref{Autorevert, global-auto-revert-non-file-buffers}, for details.
@xref{Auto Reverting the Buffer Menu, global-auto-revert-non-file-buffers}, for details.
@end ifnottex
@node Indirect Buffers

View file

@ -1521,6 +1521,12 @@ library lets Emacs properly set up the hyperlinks in the @file{*Help*}
buffer). To disable this feature, change the variable
@code{help-enable-auto-load} to @code{nil}.
@vindex help-enable-completion-auto-load
Automatic loading also occurs when completing names for
@code{describe-variable} and @code{describe-function}, based on the
prefix being completed. To disable this feature, change the variable
@code{help-enable-completion-auto-load} to @code{nil}.
@vindex load-dangerous-libraries
@cindex Lisp files byte-compiled by XEmacs
By default, Emacs refuses to load compiled Lisp files which were

View file

@ -39,7 +39,7 @@ corresponding long form.
The long forms with @samp{--} are easier to remember, but longer to
type. However, you don't have to spell out the whole option name; any
unambiguous abbreviation is enough. When a long option takes an
unambiguous abbreviation is enough. When a long option requires an
argument, you can use either a space or an equal sign to separate the
option name and the argument. Thus, for the option @samp{--display},
you can write either @samp{--display sugar-bombs:0.0} or
@ -347,13 +347,15 @@ Start Emacs with minimum customizations. This is similar to using
@itemx --bg-daemon[=@var{name}]
@itemx --fg-daemon[=@var{name}]
Start Emacs as a daemon: after Emacs starts up, it starts the Emacs
server without opening any frames.
(Optionally, you can specify an explicit @var{name} for the server.)
You can then use the @command{emacsclient} command to connect to Emacs
for editing. @xref{Emacs Server}, for information about using Emacs
as a daemon. A ``background'' daemon disconnects from the terminal
and runs in the background (@samp{--daemon} is an alias for
@samp{--bg-daemon}).
server without opening any frames. You can then use the
@command{emacsclient} command to connect to Emacs for editing.
(Optionally, you can specify an explicit @var{name} for the server; if
you do, you will need to specify the same @var{name} when you invoke
@command{emacsclient}, via its @option{--socket-name} option, see
@ref{emacsclient Options}.) @xref{Emacs Server}, for information
about using Emacs as a daemon. A ``background'' daemon disconnects
from the terminal and runs in the background (@samp{--daemon} is an
alias for @samp{--bg-daemon}).
@item --no-desktop
@opindex --no-desktop

View file

@ -801,6 +801,7 @@ Its value is 70
Automatically becomes buffer-local when set.
This variable is safe as a file local variable if its value
satisfies the predicate integerp.
Probably introduced at or before Emacs version 18.
Documentation:
Column beyond which automatic line-wrapping should happen.
@ -1331,7 +1332,7 @@ On MS-DOS, the name of this file should be @file{_dir-locals.el}, due
to limitations of the DOS filesystems. If the filesystem is limited
to 8+3 file names, the name of the file will be truncated by the OS to
@file{_dir-loc.el}.
}in a directory. Whenever Emacs visits any file in that directory or
} in a directory. Whenever Emacs visits any file in that directory or
any of its subdirectories, it will apply the directory-local variables
specified in @file{.dir-locals.el}, as though they had been defined as
file-local variables for that file (@pxref{File Variables}). Emacs
@ -1377,6 +1378,28 @@ be applied in the current directory, not in any subdirectories.
Finally, it specifies a different @file{ChangeLog} file name for any
file in the @file{src/imported} subdirectory.
If the @file{.dir-locals.el} file contains multiple different values
for a variable using different mode names or directories, the values
will be applied in an order such that the values for more specific
modes take priority over more generic modes. Values specified under a
directory have even more priority. For example:
@example
((nil . ((fill-column . 40)))
(c-mode . ((fill-column . 50)))
(prog-mode . ((fill-column . 60)))
("narrow-files" . ((nil . ((fill-column . 20))))))
@end example
Files that use @code{c-mode} also match @code{prog-mode} because the
former inherits from the latter. The value used for
@code{fill-column} in C files will however be @code{50} because the
mode name is more specific than @code{prog-mode}. Files using other
modes inheriting from @code{prog-mode} will use @code{60}. Any file
under the directory @file{narrow-files} will use the value @code{20}
even if they use @code{c-mode} because directory entries have priority
over mode entries.
You can specify the variables @code{mode}, @code{eval}, and
@code{unibyte} in your @file{.dir-locals.el}, and they have the same
meanings as they would have in file local variables. @code{coding}

View file

@ -1141,6 +1141,55 @@ right-to-left paragraphs.
@node Displaying Boundaries
@section Displaying Boundaries
@cindex mode, display-fill-column-indicator
@findex display-fill-column-indicator-mode
@findex global-display-fill-column-indicator-mode
Emacs can add an indicator to display a fill column position. The
fill column indicator is a useful functionality specially in
prog-mode to indicate the position of an specific column.
You can set the buffer-local variables @code{display-fill-column-indicator}
and @code{display-fill-column-indicator-character} to activate the
indicator and controls how the indicator looks.
Alternatively you can type @w{@kbd{M-x display-fill-column-indicator-mode}}
or @w{@kbd{M-x global-display-fill-column-indicator-mode}} which enables the
indicator locally and globally respectively and also chooses the
character to use if none is set already. It is possible to use the
first one to activate the indicator in a hook or the second one to
enable it globally.
There are 2 buffer local variables and 1 face to customize this mode:
@table @code
@item display-fill-column-indicator-column
@vindex display-fill-column-indicator-column
Specifies the column number where the indicator should be set. It can
take positive numerical values for the column or the special value
@code{t} which means that the variable @code{fill-column} will be
used.
Any other value disables the indicator. The default value is @code{t}.
@item display-fill-column-indicator-char
@vindex display-fill-column-indicator-char
Specifies the character used for the indicator. This character can be
any valid char including unicode ones if the actual font supports
them.
When the mode is enabled through the functions
@code{display-fill-column-indicator-mode} or
@code{global-display-fill-column-indicator-mode}, the initialization
functions check if this variable is @code{non-nil}, otherwise the
initialization tries to set it to U+2502 or @samp{|}.
@item fill-column-indicator
@vindex fill-column-indicator
Specifies the face used to display the indicator. It inherits its
default values from shadow but without background color. To change
the indicator color you need to set only the foreground color of this face.
@end table
@vindex indicate-buffer-boundaries
On graphical displays, Emacs can indicate the buffer boundaries in
the fringes. If you enable this feature, the first line and the last

View file

@ -59,7 +59,7 @@ modify this GNU manual.''
* Picture Mode:: Editing pictures made up of characters using
the quarter-plane screen model.
* Autorevert:: Auto Reverting non-file buffers.
* Non-File Buffers:: Auto Reverting non-file buffers.
* Subdir Switches:: Subdirectory switches in Dired.
* Advanced Calendar/Diary Usage:: Advanced Calendar/Diary customization.
* Emerge:: A convenient way of merging two versions of a program.

View file

@ -443,9 +443,7 @@ File Handling
* Visiting:: Visiting a file prepares Emacs to edit the file.
* Saving:: Saving makes your changes permanent.
* Reverting:: Reverting cancels all the changes not saved.
@ifnottex
* Autorevert:: Auto Reverting non-file buffers.
@end ifnottex
* Auto Revert:: Keeping buffers automatically up-to-date.
* Auto Save:: Auto Save periodically protects against loss of data.
* File Aliases:: Handling multiple names for one file.
* Directories:: Creating, deleting, and listing file directories.

View file

@ -25,9 +25,7 @@ on file directories.
* Visiting:: Visiting a file prepares Emacs to edit the file.
* Saving:: Saving makes your changes permanent.
* Reverting:: Reverting cancels all the changes not saved.
@ifnottex
* Autorevert:: Auto Reverting non-file buffers.
@end ifnottex
* Auto Revert:: Keeping buffers automatically up-to-date.
* Auto Save:: Auto Save periodically protects against loss of data.
* File Aliases:: Handling multiple names for one file.
* Directories:: Creating, deleting, and listing file directories.
@ -955,6 +953,11 @@ revert it automatically if it has changed---provided the buffer itself
is not modified. (If you have edited the text, it would be wrong to
discard your changes.)
You can also tell Emacs to revert buffers automatically when their
visited files change on disk; @pxref{Auto Revert}.
@node Auto Revert
@section Auto Revert: Keeping buffers automatically up-to-date
@cindex Global Auto Revert mode
@cindex mode, Global Auto Revert
@cindex Auto Revert mode
@ -962,22 +965,39 @@ discard your changes.)
@findex global-auto-revert-mode
@findex auto-revert-mode
@findex auto-revert-tail-mode
@vindex auto-revert-interval
@vindex auto-revert-remote-files
A buffer can get out of sync with respect to its visited file on
disk if that file is changed by another program. To keep it up to
date, you can enable Auto Revert mode by typing @kbd{M-x auto-revert-mode}.
This automatically reverts the buffer when its visited file changes on
disk. To do the same for all file buffers, type
@kbd{M-x global-auto-revert-mode} to enable Global Auto Revert mode.
Auto Revert will not revert a buffer if it has unsaved changes, or if
its file on disk is deleted or renamed.
One use of Auto Revert mode is to ``tail'' a file such as a system
log, so that changes made to that file by other programs are
continuously displayed. To do this, just move the point to the end of
the buffer, and it will stay there as the file contents change.
However, if you are sure that the file will only change by growing at
the end, use Auto Revert Tail mode instead
(@code{auto-revert-tail-mode}). It is more efficient for this.
Auto Revert Tail mode also works for remote files.
@vindex auto-revert-verbose
You can also tell Emacs to revert buffers periodically. To do this
for a specific buffer, enable the minor mode Auto-Revert mode by
typing @kbd{M-x auto-revert-mode}. This automatically reverts the
current buffer when its visited file changes on disk. To do the same
for all file buffers, type @kbd{M-x global-auto-revert-mode} to enable
Global Auto-Revert mode. These minor modes do not check or revert
remote files, because that is usually too slow. This behavior can be
changed by setting the variable @code{auto-revert-remote-files} to
non-@code{nil}.
When a buffer is auto-reverted, a message is generated. This can be
suppressed by setting @code{auto-revert-verbose} to @code{nil}.
@vindex auto-revert-remote-files
The Auto Revert modes do not check or revert remote files, because
that is usually too slow. This behavior can be changed by setting the
variable @code{auto-revert-remote-files} to non-@code{nil}.
@cindex file notifications
@vindex auto-revert-use-notify
By default, Auto-Revert mode works using @dfn{file notifications},
@vindex auto-revert-interval
By default, Auto Revert mode works using @dfn{file notifications},
whereby changes in the filesystem are reported to Emacs by the OS.
You can disable use of file notifications by customizing the variable
@code{auto-revert-use-notify} to a @code{nil} value, then Emacs will
@ -988,19 +1008,22 @@ the polling interval through the variable @code{auto-revert-interval}.
supported, @code{auto-revert-use-notify} will be @code{nil} by
default.
One use of Auto-Revert mode is to ``tail'' a file such as a system
log, so that changes made to that file by other programs are
continuously displayed. To do this, just move the point to the end of
the buffer, and it will stay there as the file contents change.
However, if you are sure that the file will only change by growing at
the end, use Auto-Revert Tail mode instead
(@code{auto-revert-tail-mode}). It is more efficient for this.
Auto-Revert Tail mode works also for remote files.
@vindex auto-revert-avoid-polling
@vindex auto-revert-notify-exclude-dir-regexp
By default, Auto Revert mode will poll files for changes
periodically even when file notifications are used. Polling is
unnecessary in many cases, and turning it off may save power by
relying on notifications only. To do so, set the variable
@code{auto-revert-avoid-polling} to non-@code{nil}. However,
notification is ineffective on certain file systems; mainly network
file system on Unix-like machines, where files can be altered from
other machines. For such file systems, polling may be necessary.
To force polling when
@code{auto-revert-avoid-polling} is non-@code{nil}, set
@code{auto-revert-notify-exclude-dir-regexp} to match files that
should be excluded from using notification.
When a buffer is auto-reverted, a message is generated. This can be
suppressed by setting @code{auto-revert-verbose} to @code{nil}.
In Dired buffers (@pxref{Dired}), Auto-Revert mode refreshes the
In Dired buffers (@pxref{Dired}), Auto Revert mode refreshes the
buffer when a file is created or deleted in the buffer's directory.
@xref{VC Undo}, for commands to revert to earlier versions of files
@ -1008,6 +1031,9 @@ under version control. @xref{VC Mode Line}, for Auto Revert
peculiarities when visiting files under version control.
@ifnottex
@menu
* Non-File Buffers:: Auto Reverting Non-File Buffers.
@end menu
@include arevert-xtra.texi
@end ifnottex

View file

@ -1033,6 +1033,7 @@ systems support modifying change comments.
Visit the revision indicated at the current line.
@item d
@itemx =
Display a diff between the revision at point and the next earlier
revision, for the specific file.
@ -1047,6 +1048,16 @@ L}), toggle between showing and hiding the full log entry for the
revision at point.
@end table
To compare two arbitrary revisions, activate the region: set the
beginning of the region to the line with the first revision and the
end of the region to the line with the second revision to compare,
then type @kbd{d} or @kbd{=}. When the beginning of the region is on
the top line that has no revision, it uses the current working revision
as the first revision to compare. When the end of the region is on
the bottom non-revision line after the last revision line, then it
uses the next earlier revision after the last displayed revision as
the second revision to compare.
@vindex vc-log-show-limit
Because fetching many log entries can be slow, the
@file{*vc-change-log*} buffer displays no more than 2000 revisions by

View file

@ -775,6 +775,13 @@ documentation for more possibilities.
displayed only when the command generates output, set
@code{async-shell-command-display-buffer} to @code{nil}.
@vindex async-shell-command-width
The option @code{async-shell-command-width} defines the number of display
columns available for output of asynchronous shell commands.
A positive integer tells the shell to use that number of columns for
command output. The default value is @code{nil} that means to use
the same number of columns as provided by the shell.
@kindex M-|
@findex shell-command-on-region
@kbd{M-|} (@code{shell-command-on-region}) is like @kbd{M-!}, but
@ -1976,6 +1983,9 @@ omitted, @command{emacsclient} connects to the first server it finds.
If you set @code{server-name} of the Emacs server to an absolute file
name, give the same absolute file name as @var{server-name} to this
option to instruct @command{emacsclient} to connect to that server.
You need to use this option if you started Emacs as daemon
(@pxref{Initial Options}) and specified the name for the server
started by the daemon.
Alternatively, you can set the @env{EMACS_SOCKET_NAME} environment
variable to point to the server socket. (The command-line option
@ -2475,10 +2485,13 @@ automatically back to binary.
into hex. This is useful if you visit a file normally and then discover
it is a binary file.
Ordinary text characters overwrite in Hexl mode. This is to reduce
Inserting text always overwrites in Hexl mode. This is to reduce
the risk of accidentally spoiling the alignment of data in the file.
There are special commands for insertion. Here is a list of the
commands of Hexl mode:
Ordinary text characters insert themselves (i.e., overwrite with
themselves). There are commands for insertion of special characters
by their code. Most cursor motion keys, as well as @kbd{C-x C-s}, are
bound in Hexl mode to commands that produce the same effect. Here is
a list of other important commands special to Hexl mode:
@c I don't think individual index entries for these commands are useful--RMS.
@table @kbd
@ -2491,6 +2504,12 @@ Insert a byte with a code typed in octal.
@item C-M-x
Insert a byte with a code typed in hex.
@item C-M-a
Move to the beginning of a 512-byte page.
@item C-M-e
Move to the end of a 512-byte page.
@item C-x [
Move to the beginning of a 1k-byte page.

View file

@ -1298,8 +1298,11 @@ count as blocks.
@findex hs-show-block
@findex hs-show-region
@findex hs-hide-level
@findex hs-toggle-hiding
@findex hs-mouse-toggle-hiding
@kindex C-c @@ C-h
@kindex C-c @@ C-s
@kindex C-c @@ C-c
@kindex C-c @@ C-M-h
@kindex C-c @@ C-M-s
@kindex C-c @@ C-r
@ -1312,7 +1315,7 @@ Hide the current block (@code{hs-hide-block}).
@item C-c @@ C-s
Show the current block (@code{hs-show-block}).
@item C-c @@ C-c
@itemx C-x @@ C-e
@itemx C-c @@ C-e
Either hide or show the current block (@code{hs-toggle-hiding}).
@item S-mouse-2
Toggle hiding for the block you click on (@code{hs-mouse-toggle-hiding}).

View file

@ -644,6 +644,10 @@ or before @samp{)}, @samp{:} or @samp{?}); and
@code{fill-polish-nobreak-p} (don't break after a one letter word,
even if preceded by a non-whitespace character).
Emacs can display an indicator in the @code{fill-column} position
using the Display fill column indicator mode
(@pxref{Displaying Boundaries, display-fill-column-indicator}).
@node Fill Prefix
@subsection The Fill Prefix

View file

@ -21858,14 +21858,17 @@ MENU ENTRY: NODE NAME.
@end ifnottex
@quotation
Robert J. Chassell has worked with GNU Emacs since 1985. He writes
and edits, teaches Emacs and Emacs Lisp, and speaks throughout the
Robert J. Chassell (1946--2017) started working with GNU Emacs in 1985. He wrote
and edited, taught Emacs and Emacs Lisp, and spoke throughout the
world on software freedom. Chassell was a founding Director and
Treasurer of the Free Software Foundation, Inc. He is co-author of
the @cite{Texinfo} manual, and has edited more than a dozen other
books. He graduated from Cambridge University, in England. He has an
abiding interest in social and economic history and flies his own
Treasurer of the Free Software Foundation, Inc. He was co-author of
the @cite{Texinfo} manual, and edited more than a dozen other
books. He graduated from Cambridge University, in England. He had an
abiding interest in social and economic history and flew his own
airplane.
@uref{https://www.fsf.org/blogs/community/goodbye-to-bob-chassell,
"Goodbye to Bob Chassell"}
@end quotation
@c @page

View file

@ -1047,12 +1047,9 @@ and meaning of input events in detail.
This function returns non-@code{nil} if @var{object} is an input event
or event type.
Note that any symbol might be used as an event or an event type.
@code{eventp} cannot distinguish whether a symbol is intended by Lisp
code to be used as an event. Instead, it distinguishes whether the
symbol has actually been used in an event that has been read as input in
the current Emacs session. If a symbol has not yet been so used,
@code{eventp} returns @code{nil}.
Note that any non-@code{nil} symbol might be used as an event or an
event type; @code{eventp} cannot distinguish whether a symbol is
intended by Lisp code to be used as an event.
@end defun
@menu

View file

@ -251,6 +251,7 @@ I thought did not need to be mentioned here:
Lisp:
after-load-functions
after-set-visited-file-name-hook
auto-coding-functions
choose-completion-string-functions
completing-read-function

View file

@ -1191,6 +1191,17 @@ grow with new Emacs releases. Given the version of Emacs, the module
can use only the parts of the module @acronym{API} that existed in
that version, since those parts are identical in later versions.
@file{emacs-module.h} defines a preprocessor macro
@code{EMACS_MAJOR_VERSION}. It expands to an integer literal which is
the latest major version of Emacs supported by the header.
@xref{Version Info}. Note that the value of
@code{EMACS_MAJOR_VERSION} is a compile-time constant and does not
represent the version of Emacs that is currently running and has
loaded your module. If you want your module to be compatible with
various versions of @file{emacs-module.h} as well as various versions
of Emacs, you can use conditional compilation based on
@code{EMACS_MAJOR_VERSION}.
We recommend that modules always perform the compatibility
verification, unless they do their job entirely in the initialization
function, and don't access any Lisp objects or use any Emacs functions

View file

@ -466,9 +466,11 @@ first call to the function automatically loads the proper library, in
order to install the real definition and other associated code, then
runs the real definition as if it had been loaded all along.
Autoloading can also be triggered by looking up the documentation of
the function or macro (@pxref{Documentation Basics}).
the function or macro (@pxref{Documentation Basics}), and completion
of variable and function names (@pxref{Autoload by Prefix} below).
@menu
* Autoload by Prefix:: Autoload by Prefix.
* When to Autoload:: When to Use Autoload.
@end menu
@ -703,6 +705,25 @@ symbol's new function value. If the value of the optional argument
function, only a macro.
@end defun
@node Autoload by Prefix
@subsection Autoload by Prefix
@cindex autoload by prefix
@vindex definition-prefixes
@findex register-definition-prefixes
@vindex autoload-compute-prefixes
During completion for the commands @code{describe-variable} and
@code{describe-function}, Emacs will try to load files which may
contain definitions matching the prefix being completed. The variable
@code{definition-prefixes} holds a hashtable which maps a prefix to
the corresponding list of files to load for it. Entries to this
mapping are added by calls to @code{register-definition-prefixes}
which are generated by @code{update-file-autoloads}
(@pxref{Autoload}). Files which don't contain any definitions worth
loading (test files, for examples), should set
@code{autoload-compute-prefixes} to @code{nil} as a file-local
variable.
@node When to Autoload
@subsection When to Use Autoload
@cindex autoload, when to use

View file

@ -3238,7 +3238,12 @@ is disabled, @code{font-lock-face} has no effect on the display.
It is ok for a mode to use @code{font-lock-face} for some text and
also use the normal Font Lock machinery. But if the mode does not use
the normal Font Lock machinery, it should not set the variable
@code{font-lock-defaults}.
@code{font-lock-defaults}. In this case the @code{face} property will
not be overriden, so using the @code{face} property could work too.
However, using @code{font-lock-face} is generally preferable as it
allows the user to control the fontification by toggling
@code{font-lock-mode}, and lets the code work regardless of whether
the mode uses Font Lock machinery or not.
@node Faces for Font Lock
@subsection Faces for Font Lock

View file

@ -1049,7 +1049,7 @@ is like @code{undecided}, but it prefers to choose @code{utf-8} when
possible.
In general, a coding system doesn't guarantee roundtrip identity:
decoding a byte sequence using coding system, then encoding the
decoding a byte sequence using a coding system, then encoding the
resulting text in the same coding system, can produce a different byte
sequence. But some coding systems do guarantee that the byte sequence
will be the same as what you originally decoded. Here are a few

View file

@ -2197,7 +2197,7 @@ is the character Emacs currently uses for quitting, usually @kbd{C-g}.
@subsection Recording Input
@cindex recording input
@defun recent-keys
@defun recent-keys &optional include-cmds
This function returns a vector containing the last 300 input events from
the keyboard or mouse. All input events are included, whether or not
they were used as parts of key sequences. Thus, you always get the last
@ -2205,6 +2205,11 @@ they were used as parts of key sequences. Thus, you always get the last
(These are excluded because they are less interesting for debugging; it
should be enough to see the events that invoked the macros.)
If @var{include-cmds} is non-@code{nil}, complete key sequences in the
result vector are interleaved with pseudo-events of the form
@code{(nil . @var{COMMAND})}, where @var{COMMAND} is the binding of
the key sequence (@pxref{Command Overview}).
A call to @code{clear-this-command-keys} (@pxref{Command Loop Info})
causes this function to return an empty vector immediately afterward.
@end defun

View file

@ -1688,7 +1688,7 @@ how to do these things:
(save-excursion
;; @r{Insert the text, advancing the process marker.}
(goto-char (process-mark proc))
(insert string)
(insert-before-markers string)
(set-marker (process-mark proc) (point)))
(if moving (goto-char (process-mark proc)))))))
@end group

View file

@ -1070,6 +1070,13 @@ list of characters @var{chars}.
@c Internal functions: regexp-opt-group
@defvar regexp-unmatchable
This variable contains a regexp that is guaranteed not to match any
string at all. It is particularly useful as default value for
variables that may be set to a pattern that actually matches
something.
@end defvar
@node Regexp Search
@section Regular Expression Searching
@cindex regular expression searching

View file

@ -601,7 +601,7 @@ returned value is a list.
@defun seq-mapn function &rest sequences
This function returns the result of applying @var{function} to each
element of @var{sequences}. The arity (@pxref{What Is a Function,
sub-arity}) of @var{function} must match the number of sequences.
subr-arity}) of @var{function} must match the number of sequences.
Mapping stops at the end of the shortest sequence, and the returned
value is a list.

View file

@ -2252,9 +2252,11 @@ If it is impossible to move to column @var{column} because that is in
the middle of a multicolumn character such as a tab, point moves to the
end of that character. However, if @var{force} is non-@code{nil}, and
@var{column} is in the middle of a tab, then @code{move-to-column}
converts the tab into spaces so that it can move precisely to column
@var{column}. Other multicolumn characters can cause anomalies despite
@var{force}, since there is no way to split them.
either converts the tab into spaces (when @code{indent-tabs-mode} is
@code{nil}), or inserts enough spaces before it (otherwise), so that
point can move precisely to column @var{column}. Other multicolumn
characters can cause anomalies despite @var{force}, since there is no
way to split them.
The argument @var{force} also has an effect if the line isn't long
enough to reach column @var{column}; if it is @code{t}, that means to

View file

@ -2009,7 +2009,7 @@ all files in those directories. The list in @var{variables} can be of
one of the two forms: @code{(@var{major-mode} . @var{alist})} or
@code{(@var{directory} . @var{list})}. With the first form, if the
file's buffer turns on a mode that is derived from @var{major-mode},
then the all the variables in the associated @var{alist} are applied;
then all the variables in the associated @var{alist} are applied;
@var{alist} should be of the form @code{(@var{name} . @var{value})}.
A special value @code{nil} for @var{major-mode} means the settings are
applicable to any mode. In @var{alist}, you can use a special

View file

@ -2601,6 +2601,63 @@ window and displaying the buffer in that window. It can fail if all
windows are dedicated to other buffers (@pxref{Dedicated Windows}).
@end defun
@defun display-buffer-in-direction buffer alist
This function tries to display @var{buffer} at a location specified by
@var{alist}. For this purpose, @var{alist} should contain a
@code{direction} entry whose value is one of @code{left}, @code{above}
(or @code{up}), @code{right} and @code{below} (or @code{down}). Other
values are usually interpreted as @code{below}.
If @var{alist} also contains a @code{window} entry, its value
specifies a reference window. That value can be a special symbol like
@code{main} which stands for the selected frame's main window
(@pxref{Side Window Options and Functions}) or @code{root} standing
for the selected frame's root window (@pxref{Windows and Frames}). It
can also specify an arbitrary valid window. Any other value (or
omitting the @code{window} entry entirely) means to use the selected
window as reference window.
This function first tries to reuse a window in the specified direction
that already shows @var{buffer}. If no such window exists, it tries
to split the reference window in order to produce a new window in the
specified direction. If this fails as well, it will try to display
@var{buffer} in an existing window in the specified direction. In
either case, the window chosen will appear on the side of the
reference window specified by the @code{direction} entry, sharing at
least one edge with the reference window.
If the reference window is live, the edge the chosen window will share
with it is always the opposite of the one specified by the
@code{direction} entry. For example, if the value of the
@code{direction} entry is @code{left}, the chosen window's right edge
coordinate (@pxref{Coordinates and Windows}) will equal the reference
window's left edge coordinate.
If the reference window is internal, a reused window must share with
it the edge specified by the @code{direction} entry. Hence if, for
example, the reference window is the frame's root window and the value
of the @code{direction} entry is @code{left}, a reused window must be
on the left of the frame. This means that the left edge coordinate of
the chosen window and that of the reference window are the same.
A new window, however, will be created by splitting the reference
window such that the chosen window will share the opposite edge with
the reference window. In our example, a new root window would be
created with a new live window and the reference window as its
children. The chosen window's right edge coordinate would then equal
the left edge coordinate of the reference window. Its left edge
coordinate would equal the left edge coordinate of the frame's new
root window.
Four special values for @code{direction} entries allow to implicitly
specify the selected frame's main window as the reference window:
@code{leftmost}, @code{top}, @code{rightmost} and @code{bottom}. This
means that instead of, for example, @w{@code{(direction . left)
(window . main)}} one can just specify @w{@code{(direction
. leftmost)}}. An existing @code{window} @var{alist} entry is ignored
in such cases.
@end defun
@defun display-buffer-below-selected buffer alist
This function tries to display @var{buffer} in a window below the
selected window. If there is a window below the selected one and that
@ -2934,12 +2991,20 @@ If non-@code{nil}, the value specifies the slot of the side window
supposed to display the buffer. This entry is used only by
@code{display-buffer-in-side-window}.
@vindex direction@r{, a buffer display action alist entry}
@item direction
The value specifies a direction which, together with a @code{window}
entry, allows @code{display-buffer-in-direction} to determine the
location of the window to display the buffer.
@vindex window@r{, a buffer display action alist entry}
@item window
The value specifies a window that is in some way related to the window
chosen by @code{display-buffer}. This entry is currently used by
@code{display-buffer-in-atom-window} to indicate the window on whose
side the new window shall be created.
side the new window shall be created. It is also used by
@code{display-buffer-in-direction} to specify the reference window on
whose side the resulting window shall appear.
@vindex allow-no-window@r{, a buffer display action alist entry}
@item allow-no-window

View file

@ -87,10 +87,6 @@ Syntax check is done ``on-the-fly''. It is started whenever
the buffer is saved, unless @code{flymake-start-on-save-buffer} is
nil;
@item
a newline character is added to the buffer, unless
@code{flymake-start-syntax-check-on-newline} is nil;
@item
some changes were made to the buffer more than @code{0.5} seconds ago
(the delay is configurable in @code{flymake-no-changes-timeout}).
@ -222,10 +218,6 @@ If any changes are made to the buffer, syntax check is automatically
started after this many seconds, unless the user makes another change,
which resets the timer.
@item flymake-start-syntax-check-on-newline
A boolean flag indicating whether to start syntax check immediately
after a newline character is inserted into the buffer.
@item flymake-start-on-flymake-mode
A boolean flag indicating whether to start syntax check immediately
after enabling @code{flymake-mode}.

View file

@ -3,8 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
\def\texinfoversion{2019-03-03.15}
\def\texinfoversion{2019-04-12.13}
%
% Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc.
%
@ -387,14 +386,8 @@
% take effect in \write's, yet the group defined by the \vbox ends
% before the \shipout runs.
%
\indexdummies % don't expand commands in the output.
\normalturnoffactive % \ in index entries must not stay \, e.g., if
% the page break happens to be in the middle of an example.
% We don't want .vr (or whatever) entries like this:
% \entry{{\indexbackslash }acronym}{32}{\code {\acronym}}
% "\acronym" won't work when it's read back in;
% it needs to be
% {\code {{\backslashcurfont }acronym}
\atdummies % don't expand commands in the output.
\turnoffactive
\shipout\vbox{%
% Do this early so pdf references go to the beginning of the page.
\ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
@ -455,11 +448,10 @@
}%
}
% First remove any @comment, then any @c comment. Also remove a @texinfoc
% comment (see \scanmacro for details). Pass the result on to \argcheckspaces.
% First remove any @comment, then any @c comment. Pass the result on to
% \argcheckspaces.
\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm}
\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
%
@ -1131,6 +1123,16 @@
\fi
\fi
\newif\ifpdforxetex
\pdforxetexfalse
\ifpdf
\pdforxetextrue
\fi
\ifx\XeTeXrevision\thisisundefined\else
\pdforxetextrue
\fi
% PDF uses PostScript string constants for the names of xref targets,
% for display in the outlines, and in other places. Thus, we have to
% double any backslashes. Otherwise, a name like "\node" will be
@ -2173,7 +2175,7 @@
% A few fonts for @defun names and args.
\setfont\defbf\bfshape{10}{\magstep1}{OT1}
\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
\setfont\defsl\slshape{10}{\magstep1}{OT1TT}
\setfont\defsl\slshape{10}{\magstep1}{OT1}
\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
\def\df{\let\ttfont=\deftt \let\bffont = \defbf
\let\ttslfont=\defttsl \let\slfont=\defsl \bf}
@ -2321,7 +2323,7 @@
% A few fonts for @defun names and args.
\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
\setfont\defsl\slshape{10}{\magstephalf}{OT1TT}
\setfont\defsl\slshape{10}{\magstephalf}{OT1}
\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
\def\df{\let\ttfont=\deftt \let\bffont = \defbf
\let\slfont=\defsl \let\ttslfont=\defttsl \bf}
@ -2844,7 +2846,7 @@
% @t, explicit typewriter.
\def\t#1{%
{\tt \rawbackslash \plainfrenchspacing #1}%
{\tt \plainfrenchspacing #1}%
\null
}
@ -2871,7 +2873,6 @@
% Turn off hyphenation.
\nohyphenation
%
\rawbackslash
\plainfrenchspacing
#1%
}%
@ -3097,9 +3098,9 @@
% Allow a ragged right output to aid breaking long URL's. Putting stretch in
% between characters of the URL doesn't look good.
\def\urefallowbreak{%
\hskip 0pt plus 1fil\relax
\hskip 0pt plus 4 em\relax
\allowbreak
\hskip 0pt plus -1fil\relax
\hskip 0pt plus -4 em\relax
}
\urefbreakstyle after
@ -3112,7 +3113,7 @@
% So now @email is just like @uref, unless we are pdf.
%
%\def\email#1{\angleleft{\tt #1}\angleright}
\ifpdf
\ifpdforxetex
\def\email#1{\doemail#1,,\finish}
\def\doemail#1,#2,#3\finish{\begingroup
\unsepspaces
@ -3122,18 +3123,7 @@
\endlink
\endgroup}
\else
\ifx\XeTeXrevision\thisisundefined
\let\email=\uref
\else
\def\email#1{\doemail#1,,\finish}
\def\doemail#1,#2,#3\finish{\begingroup
\unsepspaces
\pdfurl{mailto:#1}%
\setbox0 = \hbox{\ignorespaces #2}%
\ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
\endlink
\endgroup}
\fi
\let\email=\uref
\fi
% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
@ -4667,19 +4657,6 @@
}
}
% We have this subroutine so that we can handle at least some @value's
% properly in indexes (we call \makevalueexpandable in \indexdummies).
% The command has to be fully expandable (if the variable is set), since
% the result winds up in the index file. This means that if the
% variable's value contains other Texinfo commands, it's almost certain
% it will fail (although perhaps we could fix that with sufficient work
% to do a one-level expansion on the result, instead of complete).
%
% Unfortunately, this has the consequence that when _ is in the *value*
% of an @set, it does not print properly in the roman fonts (get the cmr
% dot accent at position 126 instead). No fix comes to mind, and it's
% been this way since 2003 or earlier, so just ignore it.
%
\def\expandablevalue#1{%
\expandafter\ifx\csname SET#1\endcsname\relax
{[No value for ``#1'']}%
@ -4708,7 +4685,7 @@
% if possible, otherwise sort late.
\def\indexnofontsvalue#1{%
\expandafter\ifx\csname SET#1\endcsname\relax
ZZZZZZZ
ZZZZZZZ%
\else
\csname SET#1\endcsname
\fi
@ -4858,23 +4835,8 @@
\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}}
% Used when writing an index entry out to an index file to prevent
% expansion of Texinfo commands that can appear in an index entry.
%
\def\indexdummies{%
\escapechar = `\\ % use backslash in output files.
\definedummyletter\@%
\definedummyletter\ %
%
% For texindex which always views { and } as separators.
\def\{{\lbracechar{}}%
\def\}{\rbracechar{}}%
%
% Do the redefinitions.
\definedummies
}
% Used for the aux and toc files, where @ is the escape character.
% Used for the aux, toc and index files to prevent expansion of Texinfo
% commands.
%
\def\atdummies{%
\definedummyletter\@%
@ -4904,8 +4866,7 @@
\def\definedummyletter#1{\def#1{\string#1}}%
\let\definedummyaccent\definedummyletter
% Called from \indexdummies and \atdummies, to effectively prevent
% the expansion of commands.
% Called from \atdummies to prevent the expansion of commands.
%
\def\definedummies{%
%
@ -4954,6 +4915,7 @@
% Assorted special characters.
\definedummyword\atchar
\definedummyword\arrow
\definedummyword\backslashchar
\definedummyword\bullet
\definedummyword\comma
\definedummyword\copyright
@ -5070,11 +5032,10 @@
\commondummyword\xref
}
% This does nothing, but for a time it was recommended to use
% \usebracesinindexestrue to be able to use braces in index entries.
\let\indexlbrace\relax
\let\indexrbrace\relax
\let\indexatchar\relax
\let\indexbackslash\relax
{\catcode`\@=0
\catcode`\\=13
@ -5108,10 +5069,8 @@
}
\gdef\indexnonalnumreappear{%
\useindexbackslash
\let-\normaldash
\let<\normalless
\def\@{@}%
}
}
@ -5222,8 +5181,6 @@
\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
% #1 is the index name, #2 is the entry text.
\def\doind#1#2{%
\iflinks
@ -5255,13 +5212,6 @@
\fi}
\def\indexisfl{fl}
% Output \ as {\indexbackslash}, because \ is an escape character in
% the index files.
\let\indexbackslash=\relax
{\catcode`\@=0 \catcode`\\=\active
@gdef@useindexbackslash{@def\{{@indexbackslash}}}
}
% Definition for writing index entry sort key.
{
\catcode`\-=13
@ -5273,14 +5223,31 @@
\xdef\indexsortkey{#1}\endgroup}
}
\def\indexwriteseealso#1{
\gdef\pagenumbertext{@seealso{#1}}%
}
\def\indexwriteseeentry#1{
\gdef\pagenumbertext{@seeentry{#1}}%
}
% The default definitions
\def\sortas#1{}%
\def\seealso#1{\i{\putwordSeeAlso}\ #1}% for sorted index file only
\def\putwordSeeAlso{See also}
\def\seeentry#1{\i{\putwordSee}\ #1}% for sorted index file only
% Given index entry text like "aaa @subentry bbb @sortas{ZZZ}":
% * Set \bracedtext to "{aaa}{bbb}"
% * Set \fullindexsortkey to "aaa @subentry ZZZ"
% * If @seealso occurs, set \pagenumbertext
%
\def\splitindexentry#1{%
\gdef\fullindexsortkey{}%
\xdef\bracedtext{}%
\def\sep{}%
\def\seealso##1{}%
\def\seeentry##1{}%
\expandafter\doindexsegment#1\subentry\finish\subentry
}
@ -5292,7 +5259,6 @@
%
% Fully expand the segment, throwing away any @sortas directives, and
% trim spaces.
\def\sortas##1{}%
\edef\trimmed{\segment}%
\edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
%
@ -5302,16 +5268,23 @@
% font commands turned off.
\bgroup
\let\sortas\indexwritesortas
\let\seealso\indexwriteseealso
\let\seeentry\indexwriteseeentry
\indexnofonts
% The braces around the commands are recognized by texindex.
\def\lbracechar{{\indexlbrace}}%
\def\rbracechar{{\indexrbrace}}%
\def\lbracechar{{\string\indexlbrace}}%
\def\rbracechar{{\string\indexrbrace}}%
\let\{=\lbracechar
\let\}=\rbracechar
\def\@{{\string\indexatchar}}%
\def\atchar##1{\@}%
\def\backslashchar{{\string\indexbackslash}}%
\uccode`\~=`\\ \uppercase{\let~\backslashchar}%
%
\let\indexsortkey\empty
\global\let\pagenumbertext\empty
% Execute the segment and throw away the typeset output. This executes
% any @sortas commands in this segment.
% any @sortas or @seealso commands in this segment.
\setbox\dummybox = \hbox{\segment}%
\ifx\indexsortkey\empty{%
\indexnonalnumdisappear
@ -5332,21 +5305,31 @@
\fi
}
\def\isfinish{\finish}%
\newbox\dummybox % used above
\let\subentry\relax
% Write the entry in \toks0 to the index file.
% Use \ instead of @ in index files. To support old texi2dvi and texindex.
% This works without changing the escape character used in the toc or aux
% files because the index entries are fully expanded here, and \string uses
% the current value of \escapechar.
\def\escapeisbackslash{\escapechar=`\\}
% Write the entry in \indextext to the index file.
%
\def\doindwrite{%
% Put the index entry in the margin if desired.
\ifx\SETmarginindex\relax\else
\insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
\maybemarginindex
%
\atdummies
%
\expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax\else
\escapeisbackslash
\fi
%
% Remember, we are within a group.
\indexdummies % Must do this here, since \bf, etc expand at this stage
\useindexbackslash % \indexbackslash isn't defined now so it will be output
% as is; and it will print as backslash.
% For texindex which always views { and } as separators.
\def\{{\lbracechar{}}%
\def\}{\rbracechar{}}%
\uccode`\~=`\\ \uppercase{\def~{\backslashchar{}}}%
%
% Split the entry into primary entry and any subentries, and get the index
% sort key.
@ -5360,11 +5343,21 @@
%
\edef\temp{%
\write\writeto{%
\string\entry{\fullindexsortkey}{\noexpand\folio}\bracedtext}%
\string\entry{\fullindexsortkey}%
{\ifx\pagenumbertext\empty\noexpand\folio\else\pagenumbertext\fi}%
\bracedtext}%
}%
\temp
}
\newbox\dummybox % used above
% Put the index entry in the margin if desired (undocumented).
\def\maybemarginindex{%
\ifx\SETmarginindex\relax\else
\insert\margin{\hbox{\vrule height8pt depth3pt width0pt \relax\indextext}}%
\fi
}
\let\SETmarginindex=\relax
% Take care of unwanted page breaks/skips around a whatsit:
%
@ -5452,9 +5445,14 @@
% \entry {topic}{pagelist}
% for a topic that is used without subtopics
% \primary {topic}
% \entry {topic}{}
% for the beginning of a topic that is used with subtopics
% \secondary {subtopic}{pagelist}
% for each subtopic.
% \secondary {subtopic}{}
% for a subtopic with sub-subtopics
% \tertiary {subtopic}{subsubtopic}{pagelist}
% for each sub-subtopic.
% Define the user-accessible indexing commands
% @findex, @vindex, @kindex, @cindex.
@ -5479,14 +5477,10 @@
\plainfrenchspacing
\everypar = {}% don't want the \kern\-parindent from indentation suppression.
%
% See if the index file exists and is nonempty.
% Change catcode of @ here so that if the index file contains
% \initial {@}
% as its first line, TeX doesn't complain about mismatched braces
% (because it thinks @} is a control sequence).
\catcode`\@ = 12
% See comment in \requireopenindexfile.
\def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi
%
% See if the index file exists and is nonempty.
\openin 1 \jobname.\indexname s
\ifeof 1
% \enddoublecolumns gets confused if there is no text in the index,
@ -5496,8 +5490,6 @@
\putwordIndexNonexistent
\typeout{No file \jobname.\indexname s.}%
\else
\catcode`\\ = 0
%
% If the index file exists but is empty, then \openin leaves \ifeof
% false. We have to make TeX try to read something from the file, so
% it can discover if there is anything in it.
@ -5505,47 +5497,52 @@
\ifeof 1
\putwordIndexIsEmpty
\else
% Index files are almost Texinfo source, but we use \ as the escape
% character. It would be better to use @, but that's too big a change
% to make right now.
\def\indexbackslash{\ttbackslash}%
\let\indexlbrace\{ % Likewise, set these sequences for braces
\let\indexrbrace\} % used in the sort key.
\begindoublecolumns
\let\dotheinsertentrybox\dotheinsertentryboxwithpenalty
%
% Read input from the index file line by line.
\loopdo
\ifeof1 \else
\read 1 to \nextline
\fi
%
\indexinputprocessing
\thisline
%
\ifeof1\else
\let\thisline\nextline
\repeat
%%
\enddoublecolumns
\expandafter\printindexzz\thisline\relax\relax\finish%
\fi
\fi
\closein 1
\endgroup}
\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx}
\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next}
\def\indexinputprocessing{%
\ifeof1
\let\firsttoken\relax
% If the index file starts with a backslash, forgo reading the index
% file altogether. If somebody upgrades texinfo.tex they may still have
% old index files using \ as the escape character. Reading this would
% at best lead to typesetting garbage, at worst a TeX syntax error.
\def\printindexzz#1#2\finish{%
\expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax
\uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1
\expandafter\ifx\csname SETtxiskipindexfileswithbackslash\endcsname\relax
\errmessage{%
ERROR: A sorted index file in an obsolete format was skipped.
To fix this problem, please upgrade your version of 'texi2dvi'
or 'texi2pdf' to that at <https://ftp.gnu.org/gnu/texinfo>.
If you are using an old version of 'texindex' (part of the Texinfo
distribution), you may also need to upgrade to a newer version (at least 6.0).
You may be able to typeset the index if you run
'texindex \jobname.\indexname' yourself.
You could also try setting the 'txiindexescapeisbackslash' flag by
running a command like
'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'. If you do
this, Texinfo will try to use index files in the old format.
If you continue to have problems, deleting the index files and starting again
might help (with 'rm \jobname.?? \jobname.??s')%
}%
\else
(Skipped sorted index file in obsolete format)
\fi
\else
\begindoublecolumns
\input \jobname.\indexname s
\enddoublecolumns
\fi
\else
\edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}%
\act
\message{trying to print index \indexname}%
\begindoublecolumns
\catcode`\\=0\relax
\catcode`\@=12\relax
\input \jobname.\indexname s
\enddoublecolumns
\fi
}
\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken}
\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1}
% These macros are used by the sorted index file itself.
% Change them to control the appearance of the index.
@ -5554,12 +5551,19 @@
\catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13
\catcode`\$=3
\gdef\initialglyphs{%
% special control sequences used in the index sort key
\let\indexlbrace\{%
\let\indexrbrace\}%
\let\indexatchar\@%
\def\indexbackslash{\math{\backslash}}%
%
% Some changes for non-alphabetic characters. Using the glyphs from the
% math fonts looks more consistent than the typewriter font used elsewhere
% for these characters.
\def\indexbackslash{\math{\backslash}}%
\let\\=\indexbackslash
\uccode`\~=`\\ \uppercase{\def~{\math{\backslash}}}
%
% In case @\ is used for backslash
\uppercase{\let\\=~}
% Can't get bold backslash so don't use bold forward slash
\catcode`\/=13
\def/{{\secrmnotbold \normalslash}}%
@ -5618,12 +5622,6 @@
%
\def\entry{%
\begingroup
%
% For pdfTeX and XeTeX.
% The redefinition of \domark stops marks being added in \pdflink to
% preserve coloured links across page boundaries. Otherwise the marks
% would get in the way of \lastbox in \insertentrybox.
\let\domark\relax
%
% Start a new paragraph if necessary, so our assignments below can't
% affect previous text.
@ -5657,35 +5655,31 @@
\gdef\finishentry#1{%
\egroup % end box A
\dimen@ = \wd\boxA % Length of text of entry
\global\setbox\boxA=\hbox\bgroup\unhbox\boxA
% #1 is the page number.
%
% Get the width of the page numbers, and only use
% leaders if they are present.
\global\setbox\boxB = \hbox{#1}%
\ifdim\wd\boxB = 0pt
\null\nobreak\hfill\ %
\else
\global\setbox\boxA=\hbox\bgroup
\unhbox\boxA
% #1 is the page number.
%
\null\nobreak\indexdotfill % Have leaders before the page number.
%
\ifpdf
\pdfgettoks#1.%
\hskip\skip\thinshrinkable\the\toksA
% Get the width of the page numbers, and only use
% leaders if they are present.
\global\setbox\boxB = \hbox{#1}%
\ifdim\wd\boxB = 0pt
\null\nobreak\hfill\ %
\else
\ifx\XeTeXrevision\thisisundefined
\hskip\skip\thinshrinkable #1%
\else
%
\null\nobreak\indexdotfill % Have leaders before the page number.
%
\ifpdforxetex
\pdfgettoks#1.%
\hskip\skip\thinshrinkable\the\toksA
\else
\hskip\skip\thinshrinkable #1%
\fi
\fi
\fi
\egroup % end \boxA
\ifdim\wd\boxB = 0pt
\global\setbox\entrybox=\vbox{\unhbox\boxA}%
\else
\global\setbox\entrybox=\vbox\bgroup
\noindent\unhbox\boxA\par
\nobreak
\else\bgroup
% We want the text of the entries to be aligned to the left, and the
% page numbers to be aligned to the right.
%
@ -5751,55 +5745,11 @@
\egroup % The \vbox
\fi
\endgroup
\dotheinsertentrybox
}}
\newskip\thinshrinkable
\skip\thinshrinkable=.15em minus .15em
\newbox\entrybox
\def\insertentrybox{%
\ourunvbox\entrybox
}
% default definition
\let\dotheinsertentrybox\insertentrybox
% Use \lastbox to take apart vbox box by box, and add each sub-box
% to the current vertical list.
\def\ourunvbox#1{%
\bgroup % for local binding of \delayedbox
% Remove the last box from box #1
\global\setbox#1=\vbox{%
\unvbox#1%
\unskip % remove any glue
\unpenalty
\global\setbox\interbox=\lastbox
}%
\setbox\delayedbox=\box\interbox
\ifdim\ht#1=0pt\else
\ourunvbox#1 % Repeat on what's left of the box
\nobreak
\fi
\box\delayedbox
\egroup
}
\newbox\delayedbox
\newbox\interbox
% Used from \printindex. \firsttoken should be the first token
% after the \entry. If it's not another \entry, we are at the last
% line of a group of index entries, so insert a penalty to discourage
% widowed index entries.
\def\dotheinsertentryboxwithpenalty{%
\ifx\firsttoken\isentry
\else
\penalty 9000
\fi
\insertentrybox
}
\def\isentry{\entry}%
% Like plain.tex's \dotfill, except uses up at least 1 em.
% The filll stretch here overpowers both the fil and fill stretch to push
% the page number to the right.
@ -5809,24 +5759,15 @@
\def\primary #1{\line{#1\hfil}}
\newskip\secondaryindent \secondaryindent=0.5cm
\def\secondary#1#2{{%
\parfillskip=0in
\parskip=0in
\hangindent=1in
\hangafter=1
\noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
\ifpdf
\pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
\else
\ifx\XeTeXrevision\thisisundefined
#2
\else
\pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
\fi
\fi
\par
}}
\def\secondary{\indententry{0.5cm}}
\def\tertiary{\indententry{1cm}}
\def\indententry#1#2#3{%
\bgroup
\leftskip=#1
\entry{#2}{#3}%
\egroup
}
% Define two-column mode, which we use to typeset indexes.
% Adapted from the TeXbook, page 416, which is to say,
@ -5844,17 +5785,6 @@
\output = {%
\savetopmark
%
% Here is a possibility not foreseen in manmac: if we accumulate a
% whole lot of material, we might end up calling this \output
% routine twice in a row (see the doublecol-lose test, which is
% essentially a couple of indexes with @setchapternewpage off). In
% that case we just ship out what is in \partialpage with the normal
% output routine. Generally, \partialpage will be empty when this
% runs and this will be a no-op. See the indexspread.tex test case.
\ifvoid\partialpage \else
\onepageout{\pagecontents\partialpage}%
\fi
%
\global\setbox\partialpage = \vbox{%
% Unvbox the main output page.
\unvbox\PAGE
@ -6134,11 +6064,9 @@
% @raisesections: treat @section as chapter, @subsection as section, etc.
\def\raisesections{\global\advance\secbase by -1}
\let\up=\raisesections % original BFox name
% @lowersections: treat @chapter as section, @section as subsection, etc.
\def\lowersections{\global\advance\secbase by 1}
\let\down=\lowersections % original BFox name
% we only have subsub.
\chardef\maxseclevel = 3
@ -6790,13 +6718,8 @@
% 1 and 2 (the page numbers aren't printed), and so are the first
% two pages of the document. Thus, we'd have two destinations named
% `1', and two named `2'.
\ifpdf
\ifpdforxetex
\global\pdfmakepagedesttrue
\else
\ifx\XeTeXrevision\thisisundefined
\else
\global\pdfmakepagedesttrue
\fi
\fi
}
@ -7159,11 +7082,7 @@
% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
% environment contents.
\font\circle=lcircle10
\newdimen\circthick
\newdimen\cartouter\newdimen\cartinner
\newskip\normbskip\newskip\normpskip\newskip\normlskip
\circthick=\fontdimen8\circle
%
\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
\def\ctr{{\hskip 6pt\circle\char'010}}
@ -7178,7 +7097,18 @@
%
\newskip\lskip\newskip\rskip
% only require the font if @cartouche is actually used
\def\cartouchefontdefs{%
\font\circle=lcircle10\relax
\circthick=\fontdimen8\circle
}
\newdimen\circthick
\newdimen\cartouter\newdimen\cartinner
\newskip\normbskip\newskip\normpskip\newskip\normlskip
\envdef\cartouche{%
\cartouchefontdefs
\ifhmode\par\fi % can't be in the midst of a paragraph.
\startsavinginserts
\lskip=\leftskip \rskip=\rightskip
@ -8050,36 +7980,18 @@
}
\fi
% alias because \c means cedilla in @tex or @math
\let\texinfoc=\c
\newcount\savedcatcodeone
\newcount\savedcatcodetwo
% Used at the time of macro expansion.
% Argument is macro body with arguments substituted
\def\scanmacro#1{%
\newlinechar`\^^M
\def\xeatspaces{\eatspaces}%
%
% Temporarily undo catcode changes of \printindex. Set catcode of @ to
% 0 so that @-commands in macro expansions aren't printed literally when
% formatting an index file, where \ is used as the escape character.
\savedcatcodeone=\catcode`\@
\savedcatcodetwo=\catcode`\\
\catcode`\@=0
\catcode`\\=\active
%
% Process the macro body under the current catcode regime.
\scantokens{#1@texinfoc}%
\scantokens{#1@comment}%
%
\catcode`\@=\savedcatcodeone
\catcode`\\=\savedcatcodetwo
%
% The \texinfoc is to remove the \newlinechar added by \scantokens, and
% can be noticed by \parsearg.
% We avoid surrounding the call to \scantokens with \bgroup and \egroup
% to allow macros to open or close groups themselves.
% The \comment is to remove the \newlinechar added by \scantokens, and
% can be noticed by \parsearg. Note \c isn't used because this means cedilla
% in math mode.
}
% Used for copying and captions
@ -8180,12 +8092,14 @@
\def\macroargctxt{%
\scanctxt
\catcode`\ =\active
\catcode`\@=\other
\catcode`\^^M=\other
\catcode`\\=\active
}
\def\macrolineargctxt{% used for whole-line arguments without braces
\scanctxt
\catcode`\@=\other
\catcode`\{=\other
\catcode`\}=\other
}
@ -8749,9 +8663,29 @@
% also remove a trailing comma, in case of something like this:
% @node Help-Cross, , , Cross-refs
\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}\omittopnode}
% Used so that the @top node doesn't have to be wrapped in an @ifnottex
% conditional.
% \doignore goes to more effort to skip nested conditionals but we don't need
% that here.
\def\omittopnode{%
\ifx\lastnode\wordTop
\expandafter\ignorenode\fi
}
\def\wordTop{Top}
% Until the next @node or @bye command, divert output to a box that is not
% output.
\def\ignorenode{\setbox\dummybox\vbox\bgroup\def\node{\egroup\node}%
\ignorenodebye
}
{\let\bye\relax
\gdef\ignorenodebye{\let\bye\ignorenodebyedef}
\gdef\ignorenodebyedef{\egroup(`Top' node ignored)\bye}}
% The redefinition of \bye here is because it is declared \outer
\let\nwnode=\node
\let\lastnode=\empty
% Write a cross-reference definition for the current node. #1 is the
@ -9226,19 +9160,6 @@
\catcode`\^^]=\other
\catcode`\^^^=\other
\catcode`\^^_=\other
% It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
% in xref tags, i.e., node names. But since ^^e4 notation isn't
% supported in the main text, it doesn't seem desirable. Furthermore,
% that is not enough: for node names that actually contain a ^
% character, we would end up writing a line like this: 'xrdef {'hat
% b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
% argument, and \hat is not an expandable control sequence. It could
% all be worked out, but why? Either we support ^^ or we don't.
%
% The other change necessary for this was to define \auxhat:
% \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
% and then to call \auxhat in \setq.
%
\catcode`\^=\other
%
% Special characters. Should be turned off anyway, but...
@ -9256,14 +9177,7 @@
\catcode`\%=\other
\catcode`+=\other % avoid \+ for paranoia even though we've turned it off
%
% This is to support \ in node names and titles, since the \
% characters end up in a \csname. It's easier than
% leaving it active and making its active definition an actual \
% character. What I don't understand is why it works in the *value*
% of the xrdef. Seems like it should be a catcode12 \, and that
% should not typeset properly. But it works, so I'm moving on for
% now. --karl, 15jan04.
\catcode`\\=\other
\catcode`\\=\active
%
% @ is our escape character in .aux files, and we need braces.
\catcode`\{=1
@ -11534,11 +11448,9 @@
% \backslashcurfont outputs one backslash character in current font,
% as in \char`\\.
\global\chardef\backslashcurfont=`\\
\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
% \realbackslash is an actual character `\' with catcode other, and
% \doublebackslash is two of them (for the pdf outlines).
{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
% \realbackslash is an actual character `\' with catcode other.
{\catcode`\\=\other @gdef@realbackslash{\}}
% In Texinfo, backslash is an active character; it prints the backslash
% in fixed width font.
@ -11556,10 +11468,8 @@
@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents.
% \rawbackslash defines an active \ to do \backslashcurfont.
% \otherbackslash defines an active \ to be a literal `\' character with
% catcode other. We switch back and forth between these.
@gdef@rawbackslash{@let\=@backslashcurfont}
% catcode other.
@gdef@otherbackslash{@let\=@realbackslash}
% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
@ -11631,7 +11541,7 @@
@ifx\@eatinput @let\ = @ttbackslash @fi
@catcode13=5 % regular end of line
@enableemergencynewline
@let@c=@texinfoc
@let@c=@comment
@let@parsearg@originalparsearg
% Also turn back on active characters that might appear in the input
% file name, in case not using a pre-dumped format.

View file

@ -545,7 +545,7 @@ file system), @file{@trampfn{dav,user@@host,/path/to/file}} and
@cindex google drive
@cindex method @option{nextcloud}
@cindex @option{nextcloud} method
@cindex owncloud
@cindex nextcloud
GVFS-based methods include also @acronym{GNOME} Online Accounts, which
support the @option{Files} service. These are the Google Drive file
@ -1208,7 +1208,7 @@ directory have the same @code{display-name}, such a situation must be avoided.
@cindex @acronym{GNOME} Online Accounts
@cindex method @option{nextcloud}
@cindex @option{nextcloud} method
@cindex owncloud
@cindex nextcloud
As the name indicates, the method @option{nextcloud} allows you to
access OwnCloud or NextCloud hosted files and directories. Like the
@ -3083,6 +3083,8 @@ host. Example:
@kbd{M-x auto-revert-tail-mode @key{RET}} runs similarly showing
continuous output.
@vindex shell-file-name
@vindex shell-command-switch
@code{shell-command} uses the variables @code{shell-file-name} and
@code{shell-command-switch} in order to determine which shell to run.
For remote hosts, their default values are @file{/bin/sh} and
@ -3091,6 +3093,15 @@ uses @file{/system/bin/sh}). Like the variables in the previous
section, these variables can be changed via connection-local
variables.
@vindex async-shell-command-width
@vindex COLUMNS@r{, environment variable}
If Emacs supports the variable @code{async-shell-command-width} (since Emacs
27.1), @value{tramp} cares about its value for asynchronous shell
commands. It specifies the number of display columns for command
output. For synchronous shell commands, a similar effect can be
achieved by adding the environment variable @env{COLUMNS} to
@code{tramp-remote-process-environment}.
@subsection Running @code{eshell} on a remote host
@cindex @code{eshell}

337
etc/NEWS
View file

@ -43,11 +43,15 @@ functions 'json-serialize', 'json-insert', 'json-parse-string', and
'json-parse-buffer' are typically much faster than their Lisp
counterparts from json.el.
** Emacs no longer defaults to using ImageMagick to display images,
due to security and stability concerns. To override the default, use
'configure --with-imagemagick'.
** Several configure options now accept an option-argument 'ifavailable'.
For example, './configure --with-xpm=ifavailable' now configures Emacs
to attempt to use libxpm but to continue building even if libxpm is absent.
The other affected options are --with-gif, --with-gnutls, --with-jpeg,
--with-png, and --with-tiff.
to attempt to use libxpm but to continue building even if libxpm is
absent. The other affected options are '--with-gif', '--with-gnutls',
'--with-jpeg', '--with-png', and '--with-tiff'.
** The etags program now uses the C library's regular expression matcher
when possible, and a compatible regex substitute otherwise. This will
@ -103,6 +107,10 @@ option was useful with modern debugging tools such as AddressSanitizer.
(See etc/DEBUG for the details of using the modern replacements of the
removed configure options.)
+++
** The distribution tarball now has test cases; 'make check' runs them.
This is intended mostly to help developers.
---
** Emacs now requires GTK 2.24 and GTK 3.10 for the GTK 2 and GTK 3
builds respectively.
@ -134,13 +142,14 @@ file, which was previously done when Emacs was started. As a result
of this change, it is no longer necessary to call 'package-initialize'
in your init file.
However, if your init file changes the values of 'package-load-list' or
'package-user-dir', or sets 'package-enable-at-startup' to nil then it won't
work right without some adjustment:
- you can move that code to the early init file (see above), so those settings
apply before Emacs tries to activate the packages.
- you can use the new 'package-quickstart' so activation of packages does not
need to pay attention to 'package-load-list' or 'package-user-dir' any more.
However, if your init file changes the values of 'package-load-list'
or 'package-user-dir', or sets 'package-enable-at-startup' to nil then
it won't work right without some adjustment:
- You can move that code to the early init file (see above), so those
settings apply before Emacs tries to activate the packages.
- You can use the new 'package-quickstart' so activation of packages
does not need to pay attention to 'package-load-list' or
'package-user-dir' any more.
---
** Emacs now notifies systemd when startup finishes or shutdown begins.
@ -150,6 +159,12 @@ after Emacs has finished initialization and is ready for use.
emacs.service file to eg "~/.config/systemd/user/", you will need to copy
the new version of the file again.)
+++
** New option 'help-enable-completion-auto-load'.
This allows disabling the new feature introduced in Emacs 26.1 which
loads files during completion of 'C-h f' and 'C-h v' according to
'definition-prefixes'.
* Changes in Emacs 27.1
@ -159,16 +174,16 @@ the new version of the file again.)
*** emacsclient now supports the 'EMACS_SOCKET_NAME' environment variable.
The behavior is identical to 'EMACS_SERVER_FILE', in that the
command-line value specified via '--socket-name' will override the
environment, and the natural default to TMPDIR, then "/tmp", continues
environment, and the natural default to 'TMPDIR', then "/tmp", continues
to apply.
+++
*** Emacs and emacsclient now default to $XDG_RUNTIME_DIR/emacs
*** Emacs and emacsclient now default to "$XDG_RUNTIME_DIR/emacs"
as the directory for client/server sockets, if Emacs is running
under an X Window System desktop that sets the XDG_RUNTIME_DIR
under an X Window System desktop that sets the 'XDG_RUNTIME_DIR'
environment variable to indicate where session sockets should go.
To get the old, less-secure behavior, you can set the
EMACS_SOCKET_NAME environment variable to an appropriate value.
'EMACS_SOCKET_NAME' environment variable to an appropriate value.
---
*** When run by root, emacsclient no longer connects to non-root sockets.
@ -182,11 +197,11 @@ be controlled via the new variable 'face-near-same-color-threshold'.
The default value is 30000, as the previously hard-coded threshold.
+++
** The function 'read-passwd' uses '*' as default character to hide passwords.
** The function 'read-passwd' uses "*" as default character to hide passwords.
** Lexical binding is now used when evaluating interactive Elisp forms
More specifically, lexical-binding is now used for M-:, --eval, as well
as in the *scratch* and *ielm* buffers.
** Lexical binding is now used when evaluating interactive Elisp forms.
More specifically, lexical-binding is now used for 'M-:', '--eval', as
well as in the "*scratch*" and "*ielm*" buffers.
---
** The new option 'tooltip-resize-echo-area' avoids truncating tooltip text
@ -221,7 +236,7 @@ indirectly, e.g., by checking that functions like
'libxml-parse-html-region' return nil.
+++
** 'libxml-parse-xml-region' and 'libxml-parse-html' region take
** 'libxml-parse-xml-region' and 'libxml-parse-html-region' take
a parameter that's called DISCARD-COMMENTS, but it really only
discards the top-level comment. Therefore this parameter is now
obsolete, and the new utility function 'xml-remove-comments' can be
@ -247,7 +262,7 @@ security level (assuming you use the 'medium' level).
+++
** Native GnuTLS connections can now use client certificates.
Previously, this support was only available when using the external
gnutls-cli command. Call 'open-network-stream' with
'gnutls-cli' command. Call 'open-network-stream' with
':client-certificate t' to trigger looking up of per-server
certificates via 'auth-source'.
@ -327,25 +342,40 @@ and directory-local variables.
+++
*** The macro 'with-connection-local-variables' has been renamed from
'with-connection-local-profiles'. No argument 'profiles' needed any
longer.
'with-connection-local-profiles'. No argument PROFILES needed any longer.
---
** New variable next-error-verbose controls when `next-error' outputs
a message about the error locus.
** New variable 'next-error-verbose' controls when 'next-error' outputs
a message about the error locus.
---
** New variable grep-search-path defines the directories searched for
grep hits (this used to be controlled by compilation-search-path).
** New variable 'grep-search-path' defines the directories searched for
grep hits (this used to be controlled by 'compilation-search-path').
---
** New variable emacs-lisp-compilation-search-path defines the
directories searched for byte-compiler error messages (this used to
be controlled by compilation-search-path).
** New variable 'emacs-lisp-compilation-search-path' defines the
directories searched for byte-compiler error messages (this used to
be controlled by 'compilation-search-path').
** Multicolor fonts such as "Noto Color Emoji" can be displayed on
Emacs configured with Cairo drawing and linked with cairo >= 1.16.0.
+++
** Emacs now optionally displays a fill column indicator.
This is similar to what 'fill-column-indicator' package provides, but
much faster and compatible with 'show-trailing-whitespace'.
Customize the buffer-local variables 'display-fill-column-indicator'
and 'display-fill-column-indicator-character' to activate the
indicator.
The indicator is not displayed at all in minibuffer windows and
in tooltips, as it is not useful there.
There are 2 new buffer local variables and 1 face to customize this
mode they are described in the manual "(emacs) Display".
* Editing Changes in Emacs 27.1
@ -405,39 +435,41 @@ syntax that you can see in the example of a ".dir-locals.el" file in
the node "(emacs) Directory Variables" of the user manual.
+++
** Network connections using 'local can now use IPv6.
** Network connections using 'local' can now use IPv6.
'make-network-process' now uses the correct loopback address when
asked to use :host 'local and :family 'ipv6.
asked to use ':host 'local' and ':family 'ipv6'.
+++
** The new function `replace-region-contents' replaces the current
** The new function 'replace-region-contents' replaces the current
region using a given replacement-function in a non-destructive manner
(in terms of `replace-buffer-contents').
(in terms of 'replace-buffer-contents').
+++
** The command `replace-buffer-contents' now has two optional
** The command 'replace-buffer-contents' now has two optional
arguments mitigating performance issues when operating on huge
buffers.
+++
** The command 'delete-indentation' now operates on the active region.
If the region is active, the command joins all the lines in the
region. When there's no active region, the command works on the
current and the previous or the next line, as before.
+++
* Changes in Specialized Modes and Packages in Emacs 27.1
** compile.el
---
*** In compilation-error-regexp-alist, 'line' (and 'end-line') can be functions
*** In 'compilation-error-regexp-alist', 'line' (and 'end-line') can
be functions.
** cl-lib
** cl-lib.el
+++
*** cl-defstruct has a new :noinline argument to prevent inlining its functions
*** 'cl-defstruct' has a new ':noinline' argument to prevent inlining
its functions.
** doc-view-mode
*** New commands doc-view-presentation and doc-view-fit-window-to-page
** doc-view.el
*** New commands 'doc-view-presentation' and 'doc-view-fit-window-to-page'.
*** Added support for password-protected PDF files
** Ido
@ -479,10 +511,10 @@ that display the next buffer in the window at the specified direction.
This is like 'windmove-default-keybindings' that binds keys to commands
that select the window in the specified direction, but additionally it
displays the buffer from the next command in that window. For example,
'S-M-right C-h i' displays the *Info* buffer in the right window,
'S-M-right C-h i' displays the "*Info*" buffer in the right window,
creating the window if necessary. A special key can be customized to
display the buffer in the same window, for example, 'S-M-0 C-h e'
displays the *Messages* buffer in the same window.
displays the "*Messages*" buffer in the same window.
*** Windmove also supports directional window deletion.
The new command 'windmove-delete-default-keybindings' binds default
@ -502,8 +534,11 @@ The mode is automatically enabled in files that start with the
'function' keyword.
** project.el
*** New commands 'project-search' and 'project-query-replace-regexp'.
*** New customizable variable 'project-read-file-name-function'.
** Etags
+++
@ -547,7 +582,7 @@ With non-nil, 'vc-find-revision' doesn't write the created buffer to file.
This new variable allows customizing the default arguments passed to
'git-grep' when 'vc-git-grep' is used.
*** Command 'vc-git-stash' now respects marks in the '*vc-dir*' buffer.
*** Command 'vc-git-stash' now respects marks in the "*vc-dir*" buffer.
When some files are marked, only those are stashed.
When no files are marked, all modified files are stashed, as before.
@ -565,7 +600,7 @@ values.
and compares their entire trees.
*** New user option 'vc-hg-revert-switches' specifies switches to pass
to hg revert.
to Hg revert.
*** 'C-x v M D' ('vc-diff-mergebase') and 'C-x v M L' ('vc-log-mergebase')
print diffs and logs between the merge base (common ancestor) of two
@ -574,9 +609,10 @@ given revisions.
** Diff mode
+++
*** Hunks are now automatically refined by font-lock.
To disable refinement, set the new defcustom 'diff-refine' to nil.
To disable refinement, set the new user option 'diff-refine' to nil.
To get back the old behavior where hunks are refined as you navigate
through a diff, set 'diff-refine' to the symbol 'navigate'.
+++
*** 'diff-auto-refine-mode' is deprecated in favor of 'diff-refine'.
It is no longer enabled by default and binding it no longer has any
@ -589,7 +625,7 @@ according to the appropriate major mode. Customize the new option
'diff-font-lock-syntax' to nil to disable this.
*** File headers can be shortened, mimicking Magit's diff format.
To enable it, set the new defcustom 'diff-font-lock-prettify' to t.
To enable it, set the new user option 'diff-font-lock-prettify' to t.
+++
*** Prefix arg of 'diff-goto-source' means jump to the old revision
@ -599,11 +635,11 @@ or to the new revision of the file otherwise.
** Texinfo
+++
*** New function for inserting @pxref, @xref, or @ref commands.
*** New function for inserting '@pxref', '@xref', or '@ref' commands.
The function 'texinfo-insert-dwim-@ref', bound to 'C-c C-c r' by
default, inserts one of three types of references based on the text
surrounding point, namely @pxref near a parenthesis, @xref at the
start of a sentence or at (point-min), else @ref.
surrounding point, namely '@pxref' near a parenthesis, '@xref' at the
start of a sentence or at '(point-min)', else '@ref'.
** Browse-url
@ -637,7 +673,6 @@ end.
** SQL
*** SQL Indent Minor Mode
SQL Mode now supports the ELPA 'sql-indent' package for assisting
sophisticated SQL indenting rules. Note, however, that SQL is not
like other programming languages like C, Java, or Python where code is
@ -659,7 +694,6 @@ default values. If you have existing customizations to these variables,
you should make sure that the new default entry is included.
*** Connection Wallet
Database passwords can now by stored in NETRC or JSON data files that
may optionally be encrypted. When establishing an interactive session
with the database via 'sql-connect' or a product specific function,
@ -669,9 +703,9 @@ searched for the password. The 'sql-product', 'sql-server',
appropriate authorization. This eliminates the discouraged practice of
embedding database passwords in your Emacs initialization.
See the `auth-source' module for complete documentation on the file
See the 'auth-source' module for complete documentation on the file
formats. By default, the wallet file is expected to be in the
`user-emacs-directory', named 'sql-wallet' or '.sql-wallet', with
'user-emacs-directory', named 'sql-wallet' or '.sql-wallet', with
'.json' (JSON) or no (NETRC) suffix. Both file formats can optionally
be encrypted with GPG by adding an additional '.gpg' suffix.
@ -694,6 +728,10 @@ Control whether Flymake starts checking the buffer on save.
This enables more efficient backends. See the docstring of
'flymake-diagnostic-functions' or the Flymake manual for details.
+++
*** 'flymake-start-syntax-check-on-newline' is now obsolete,
use 'post-self-insert-hook' to check on newline.
** Ruby
*** The Rubocop Flymake diagnostic function will only run Lint cops if
@ -703,16 +741,23 @@ it can't find the config file.
** Package
*** Change of 'package-check-signature' for packages with multiple sigs
In previous Emacsen, 't' checked that all signatures are valid.
Now 't' only checks that at least one signature is valid and the new 'all'
value needs to be used if you want to enforce that all signatures
are valid. This only affects packages with multiple signatures.
*** New function 'package-get-version' lets packages query their own version.
Example use in auctex.el: '(defconst auctex-version (package-get-version))'
*** New 'package-quickstart' feature.
When 'package-quickstart' is non-nil, package.el precomputes a big autoloads
file so that activation of packages can be done much faster, which can speed up
your startup significantly.
It also causes variables like 'package-user-dir' and 'package-load-list' to be
consulted when 'package-quickstart-refresh' is run rather than at startup so
you don't need to set them in your early init file.
When 'package-quickstart' is non-nil, package.el precomputes a big
autoloads file so that activation of packages can be done much faster,
which can speed up your startup significantly.
It also causes variables like 'package-user-dir' and
'package-load-list' to be consulted when 'package-quickstart-refresh'
is run rather than at startup so you don't need to set them in your
early init file.
*** New function 'package-activate-all'.
@ -738,19 +783,19 @@ Previously, setting 'xref-marker-ring-length' would only take effect
if set before 'xref.el' was loaded.
---
*** xref-find-definitions now sets the mark at the buffer position
where it was invoked
*** 'xref-find-definitions' now sets the mark at the buffer position
where it was invoked.
---
*** New xref faces 'xref-file-header', 'xref-line-number', 'xref-match'
*** New xref faces 'xref-file-header', 'xref-line-number', 'xref-match'.
** Ecomplete
*** The ecomplete sorting has changed to a decay-based algorithm.
This can be controlled by the new 'ecomplete-sort-predicate' variable.
*** The 'ecompleterc' file is now placed in ~/.emacs.d/ecompleterc by default.
Of course it will still find it if you have it in ~/.ecompleterc
*** The 'ecompleterc' file is now placed in '~/.emacs.d/ecompleterc' by default.
Of course it will still find it if you have it in '~/.ecompleterc'.
** Gnus
@ -797,7 +842,7 @@ This option controls whether and how to use Gnus search groups as
** erc
---
*** 'erc-button-google-url' has been renamed 'erc-button-search-url'
*** 'erc-button-google-url' has been renamed to 'erc-button-search-url'
and its value has been changed to Duck Duck Go.
** EUDC
@ -889,7 +934,7 @@ directories in the destination.
** Help
---
*** Description of variables and functions give an estimated first release
*** Description of variables and functions give an estimated first release.
---
*** Output format of 'C-h l' ('view-lossage') has changed.
@ -968,7 +1013,7 @@ and case-sensitivity together with search strings in the search ring.
*** Isearch now has its own tool-bar and menu-bar menu.
+++
*** flush-lines prints and returns the number of deleted matching lines.
*** 'flush-lines' prints and returns the number of deleted matching lines.
** Debugger
@ -1011,7 +1056,7 @@ by default.
** Grep
+++
*** rgrep, lgrep and zrgrep now hide part of the command line
*** 'rgrep', 'lgrep' and 'zrgrep' now hide part of the command line
that contains a list of ignored directories and files.
Clicking on the button with ellipsis unhides it.
The abbreviation can be disabled by the new option
@ -1070,10 +1115,10 @@ default, and not just the opening element.
** Eshell
*** TAB completion uses the standard completion-at-point rather than pcomplete
Its UI is slightly different but can be customized to behave similarly,
e.g. Pcomplete's default cycling can be obtained with
(setq completion-cycle-threshold 5).
*** TAB completion uses the standard 'completion-at-point' rather than
'pcomplete'. Its UI is slightly different but can be customized to
behave similarly, e.g. Pcomplete's default cycling can be obtained
with '(setq completion-cycle-threshold 5)'.
---
*** Expansion of history event designators is disabled by default.
@ -1108,9 +1153,9 @@ variable for remote shells. It still defaults to "/bin/sh".
** Single shell commands
---
*** 'shell-command-width' defines the number of display columns
available for output of asynchronous or remote shell commands.
+++
*** 'async-shell-command-width' defines the number of display columns
available for output of asynchronous shell commands.
** Pcomplete
@ -1172,6 +1217,7 @@ Setting this option to an integer causes URLs displayed in Rcirc
buffers to be truncated to that many characters.
** Register
---
*** The return value of method 'register-val-describe' includes the
names of buffers shown by the windows of a window configuration.
@ -1253,11 +1299,18 @@ automatically updates. In the buffer, you can use 's q' or 's e' to
signal a thread with quit or error respectively, or get a snapshot
backtrace with 'b'.
** thingatpt.el
---
** thingatpt.el supports a new "thing" called 'uuid'.
*** 'thing-at-point' supports a new "thing" called 'uuid'.
A symbol 'uuid' can be passed to 'thing-at-point' and it returns the
UUID at point.
---
*** 'word-at-point' and 'sentence-at-point' accept NO-PROPERTIES.
Just like 'thing-at-point' itself.
** Interactive automatic highlighting
+++
@ -1280,6 +1333,12 @@ when given in a string. Previously, '(any "\x80-\xff")' would match
characters U+0080...U+00FF. Now the expression matches raw bytes in
the 128...255 range, as expected.
*** The rx 'or' and 'seq' forms no longer require any arguments.
(or) produces a regexp that never matches anything, while (seq)
matches the empty string, each being an identity for the operation.
This also works for their aliases: '|' for 'or'; ':', 'and' and
'sequence' for 'seq'.
** Frames
+++
@ -1294,7 +1353,7 @@ frame when making a frame.
*** New predicates 'display-blink-cursor-p' and 'display-symbol-keys-p'.
These predicates are to be preferred over 'display-graphic-p' when
testing for blinking cursor capability and the capability to have
symbols (e.g., [return], [tab], [backspace]) as keys respectively.
symbols (e.g., '[return]', '[tab]', '[backspace]') as keys respectively.
** Tabulated List mode
@ -1315,8 +1374,8 @@ near the current column in Tabulated Lists (see variables
** CUA mode
---
*** New defcustom 'cua-rectangle-terminal-modifier-key'.
This defcustom allows for the customization of the modifier key used
*** New user option 'cua-rectangle-terminal-modifier-key'.
This user option allows for the customization of the modifier key used
in a terminal frame.
** JS mode
@ -1329,11 +1388,11 @@ will be supported in 'js-mode' and derivative modes. ('js-jsx-mode'
no longer needs to be enabled.)
---
*** New defcustom 'js-jsx-detect-syntax' disables automatic detection.
*** New user option 'js-jsx-detect-syntax' disables automatic detection.
This is turned on by default.
---
*** New defcustom 'js-jsx-syntax' enables JSX syntax unconditionally.
*** New user option 'js-jsx-syntax' enables JSX syntax unconditionally.
This is off by default.
---
@ -1353,7 +1412,7 @@ of the React developer community (see 'js-jsx-align->-with-<'),
otherwise still adhering to SGML conventions.
---
*** New defcustom 'js-jsx-align->-with-<' controls '>' indents.
*** New user option 'js-jsx-align->-with-<' controls '>' indents.
Commonly in JSX code, a '>' on its own line is indented at the same
level as its opening '<'. This is the new default for JSX. This
behavior is slightly different than that used by SGML in Emacs, where
@ -1376,12 +1435,12 @@ The old behavior can be emulated by controlling JSX indentation
independently of JS, by setting 'js-jsx-indent-level'.
---
*** New defcustom 'js-jsx-indent-level' for different JSX indentation.
*** New user option 'js-jsx-indent-level' for different JSX indentation.
If you wish to indent JSX by a different number of spaces than JS, set
this variable to the desired number.
this user option to the desired number.
---
*** New defcustom 'js-jsx-attribute-offset' for JSX attribute indents.
*** New user option 'js-jsx-attribute-offset' for JSX attribute indents.
---
*** New variable 'js-syntactic-mode-name' controls mode name display.
@ -1395,6 +1454,22 @@ Packages deriving from 'js-mode' with 'define-derived-mode' should
call this function to add enabled syntax extensions to their mode
name, too.
** Autorevert
*** New variable 'auto-revert-avoid-polling' for saving power.
When set to a non-nil value, buffers in Auto Revert mode are no longer
polled for changes periodically. This reduces the power consumption
of an idle Emacs, but may fail on some network file systems; set
'auto-revert-notify-exclude-dir-regexp' to match files where
notification is not supported. The default value is nil.
*** New variable 'buffer-auto-revert-by-notification'
A major mode can declare that notification on the buffer's default
directory is sufficient to know when updates are required, by setting
the new variable 'buffer-auto-revert-by-notification' to a non-nil
value. Auto Revert mode can use this information to avoid polling the
buffer periodically when 'auto-revert-avoid-polling' is non-nil.
* New Modes and Packages in Emacs 27.1
@ -1425,8 +1500,8 @@ documentation of the new mode and its commands.
* Incompatible Lisp Changes in Emacs 27.1
** In compilation-error-regexp-alist the old undocumented feature where 'line'
could be a function of 2 arguments has been dropped.
** In 'compilation-error-regexp-alist' the old undocumented feature
where 'line' could be a function of 2 arguments has been dropped.
** 'define-fringe-bitmap' is always defined, even when Emacs is built
without any GUI support.
@ -1449,11 +1524,11 @@ its default value changed in Emacs 27.1.
** The REPETITIONS argument of 'benchmark-run' can now also be a variable.
** Interpretation of relative HOME directory has changed.
If $HOME is set to a relative file name, 'expand-file-name' now
** Interpretation of relative 'HOME' directory has changed.
If "$HOME" is set to a relative file name, 'expand-file-name' now
interprets it relative to the directory where Emacs was started, not
relative to the 'default-directory' of the current buffer. We recommend
always setting $HOME to an absolute file name, so that its meaning is
always setting "$HOME" to an absolute file name, so that its meaning is
independent of where Emacs was started.
** The FILENAME argument to 'file-name-base' is now mandatory and no
@ -1479,7 +1554,7 @@ old-style backquotes as new-style, bind the new variable
integer, Emacs now signals an error if the number is too large for the
implementation to format.
** logb now returns infinity when given an infinite or zero argument,
** 'logb' now returns infinity when given an infinite or zero argument,
and returns a NaN when given a NaN. Formerly, it returned an extreme
fixnum for such arguments.
@ -1530,11 +1605,11 @@ they are now allocated like any other pseudovector. As a result, the
removed.
+++
** Reversed character ranges are no longer permitted in rx.
** Reversed character ranges are no longer permitted in 'rx'.
Previously, ranges where the starting character is greater than the
ending character were silently omitted.
For example, '(rx (any "@z-a" (?9 . ?0)))' would match '@' only.
Now, such rx expressions generate an error.
Now, such 'rx' expressions generate an error.
+++
** 'text-mode' no longer sets the value of 'indent-line-function'.
@ -1543,16 +1618,21 @@ The global value of 'indent-line-function', which defaults to
'text-mode'.
To get back the old behavior, add a function to 'text-mode-hook' which
performs (setq-local indent-line-function #'indent-relative).
performs '(setq-local indent-line-function #'indent-relative)'.
** 'make-process' no longer accepts a non-nil ':stop' key. This has
never worked reliably, and now causes an error.
+++
** 'eventp' no longer returns non-nil for lists whose car is nil.
This is consistent with the fact that nil, though a symbol, is not a
valid event type.
* Lisp Changes in Emacs 27.1
** New 'help-fns-describe-variable-functions' hook.
Makes it possible to add metadata information to describe-variable.
Makes it possible to add metadata information to 'describe-variable'.
** i18n (internationalization)
@ -1560,7 +1640,7 @@ Makes it possible to add metadata information to describe-variable.
according to the given numeric value.
+++
** inhibit-null-byte-detection is renamed to inhibit-nul-byte-detection
** 'inhibit-null-byte-detection' is renamed to 'inhibit-nul-byte-detection'.
+++
** 'self-insert-command' takes the char to insert as (optional) argument.
@ -1604,8 +1684,10 @@ like 'file-attributes' that compute file sizes and other attributes,
functions like 'process-id' that compute process IDs, and functions like
'user-uid' and 'group-gid' that compute user and group IDs.
** Time values
+++
** Although the default timestamp format is still (HI LO US PS),
*** Although the default timestamp format is still '(HI LO US PS)',
it is planned to change in a future Emacs version, to exploit bignums.
The documentation has been updated to mention that the timestamp
format may change and that programs should use functions like
@ -1614,22 +1696,22 @@ probing the innards of a timestamp directly, or creating a timestamp
by hand.
+++
** 'encode-time' supports a new API '(encode-time TIME &optional FORM)'.
*** 'encode-time' supports a new API '(encode-time TIME &optional FORM)'.
This can convert decoded times and Lisp time values to Lisp timestamps
of various forms, including a new timestamp form '(TICKS . HZ)', where
TICKS is an integer and HZ is a positive integer denoting a clock
frequency. The old 'encode-time' API is still supported.
+++
** 'time-add', 'time-subtract', and 'time-less-p' now accept
*** 'time-add', 'time-subtract', and 'time-less-p' now accept
infinities and NaNs too, and propagate them or return nil like
floating-point operators do.
+++
** New function 'time-equal-p' compares time values for equality.
*** New function 'time-equal-p' compares time values for equality.
+++
** 'format-time-string' supports a new conversion specifier flag '+'
*** 'format-time-string' supports a new conversion specifier flag '+'
that acts like the '0' flag but also puts a '+' before nonnegative
years containing more than four digits. This is for compatibility
with POSIX.1-2017.
@ -1682,7 +1764,6 @@ of the Emacs Lisp Reference manual for more detail.
+++
** Window change functions have been redesigned.
Hooks reacting to window changes run now only when redisplay detects
that a change has actually occurred. Six hooks are now provided:
'window-buffer-change-functions' (run after window buffers have
@ -1710,10 +1791,15 @@ See the section "(elisp) Window Hooks" in the Elisp manual for a
detailed explanation of the new behavior.
+++
*** New option 'resize-mini-frames'.
** New option 'resize-mini-frames'.
This option allows to automatically resize minibuffer-only frames
similarly to how minibuffer windows are resized on "normal" frames.
+++
** New buffer display action function 'display-buffer-in-direction'.
This function allows to specify the location of the window chosen by
'display-buffer' in various ways.
+++
** New buffer display action alist entry 'dedicated'.
Such an entry allows to specify the dedicated status of a window
@ -1725,6 +1811,16 @@ Such an entry allows to specify a minimum height of the window used
for displaying a buffer. 'display-buffer-below-selected' is the only
action function to respect it at the moment.
+++
** New buffer display action alist entry 'direction'.
This entry is used to specify the location of the window chosen by
'display-buffer-in-direction'.
+++
** Additional meaning of display action alist entry 'window'.
A 'window' entry can now also specify a reference window for
'display-buffer-in-direction'.
+++
** The function 'assoc-delete-all' now takes an optional predicate argument.
@ -1741,7 +1837,7 @@ This avoids problems in calls like '(read (format "#x%x" -1))', and is
more compatible with bignums. To get the traditional machine-dependent
behavior, set the experimental variable 'binary-as-unsigned' to t,
and if the new behavior breaks your code please email
32252@debbugs.gnu.org. Because '%o' and '%x' can now format signed
<32252@debbugs.gnu.org>. Because '%o' and '%x' can now format signed
integers, they now support the '+' and space flags.
** To avoid confusion caused by "smart quotes", the reader signals an
@ -1870,16 +1966,31 @@ some years back. It now respects 'imagemagick-types-inhibit' as a way
to disable that.
---
*** Some image-mode variables are now buffer-local.
*** Some 'image-mode' variables are now buffer-local.
The image parameters 'image-transform-rotation',
'image-transform-scale' and 'image-transform-resize' are now declared
buffer-local, so each buffer could have its own values for these
parameters.
** The function 'load' now behaves correctly when loading modules.
** Modules
*** The function 'load' now behaves correctly when loading modules.
Specifically, it puts the module name into 'load-history', prints
loading messages if requested, and protects against recursive loads.
*** New module environment function 'process_input' to process user
input while module code is running.
*** New module environment functions 'make_time' and 'extract_time' to
convert between timespec structures and Emacs Lisp time values.
*** New module environment functions 'make_big_integer' and
'extract_big_integer' to create and extract arbitrary-size integer
values.
*** emacs-module.h now defines a macro 'EMACS_MAJOR_VERSION' that expands
to the major version of the latest Emacs supported by the header.
+++
** The function 'read-variable' now uses its own history list.
The history of variable names read by 'read-variable' is recorded in
@ -1912,13 +2023,10 @@ The new function 'image-scaling-p' can be used to test whether any
given frame supports resizing.
+++
** (locale-info 'paper) now returns the paper size on systems that support it.
** '(locale-info 'paper)' now returns the paper size on systems that support it.
This is currently supported on GNUish hosts and on modern versions of
MS-Windows.
** New module environment function 'process_input' to process user
input while module code is running.
+++
** The function 'regexp-opt' accepts an additional optional argument.
By default, the regexp returned by 'regexp-opt' may match the strings
@ -1932,12 +2040,9 @@ returns a regexp that never matches anything, which is an identity for
this operation. Previously, the empty string was returned in this
case.
** New module environment functions 'make_time' and 'extract_time' to
convert between timespec structures and Emacs Lisp time values.
** New module environment functions 'make_big_integer' and
'extract_big_integer' to create and extract arbitrary-size integer
values.
** New constant 'regexp-unmatchable' contains a never-matching regexp.
It is a convenient and readable way to specify a regexp that should
not match anything, and is as fast as any such regexp can be.
* Changes in Emacs 27.1 on Non-Free Operating Systems

View file

@ -1117,6 +1117,8 @@ a non-nil `interactive-only' property.
The value, if non-nil, is a regexp that specifies what to trim from
the start and end of each substring.
** New function `delete-consecutive-dups'.
** Completion
*** The separator used by `completing-read-multiple' is now a regexp.

View file

@ -143,15 +143,6 @@ See the 'test' directory for examples.
* Small but important fixes needed in existing features:
** Flymake's customization mechanism needs to be both simpler (fewer
levels of indirection) and better documented, so it is easier to
understand. I find it quite hard to figure out what compilation
command it will use.
I suggest totally rewriting that part of Flymake, using the simplest
mechanism that suffices for the specific needs. That will be easy
for users to customize.
** Distribute a bar cursor of width > 1 evenly between the two glyphs
on each side of the bar (what to do at the edges?).

View file

@ -41,8 +41,8 @@ Maintainer: Alfredo Finelli <alfredofnl@tiscali.it>
Italian GNU Translation Group <tp@lists.linux.it>
* TUTORIAL.ja:
Author: Kenichi Handa <handa@m17n.org>
Maintainer: Kenichi Handa <handa@m17n.org>
Author: Kenichi Handa <handa@gnu.org>
Maintainer: Kenichi Handa <handa@gnu.org>
* TUTORIAL.ko:
Author: Koaunghi Un <koaunghi@ling.cnu.ac.kr>
@ -94,4 +94,3 @@ Maintainer: Chao-Hong Liu <chliu@gnu.org>
;;; Local Variables:
;;; coding: utf-8
;;; End:

View file

@ -1,6 +1,12 @@
This directory contains a copy of the following file:
This directory contains an uncompressed copy of the following file:
http://openlab.ring.gr.jp/skk/skk/dic/SKK-JISYO.L
https://skk-dev.github.io/dict/SKK-JISYO.L.gz
This file is free software distributed under the terms
of the GNU General Public License.
For more information about this file, please see:
http://openlab.ring.gr.jp/skk/dic.html
https://skk-dev.github.io/dict/
https://github.com/skk-dev/dict

Binary file not shown.

View file

@ -84,10 +84,7 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
# undef DEBUG
# define DEBUG true
#else
# define DEBUG false
# ifndef NDEBUG
# define NDEBUG /* disable assert */
# endif
# define DEBUG false
#endif
#include <config.h>
@ -131,11 +128,6 @@ char pot_etags_version[] = "@(#) pot revision number is 17.38.1.4";
#include <c-strcase.h>
#include <assert.h>
#ifdef NDEBUG
# undef assert /* some systems have a buggy assert.h */
# define assert(x) ((void) 0)
#endif
#include <getopt.h>
#include <regex.h>

View file

@ -140,31 +140,27 @@ main (int argc, char **argv)
}
else
{
char *finger = memmem (buf, chunksz, fingerprint, sizeof fingerprint);
if (!finger)
bool fingered = false;
for (char *finger = buf;
(finger = memmem (finger, buf + chunksz - finger,
fingerprint, sizeof fingerprint));
finger++)
{
if (! (fseeko (f, finger - buf, SEEK_SET) == 0
&& fwrite (digest, 1, sizeof digest, f) == sizeof digest))
{
perror (file);
return EXIT_FAILURE;
}
fingered = true;
}
if (!fingered)
{
fprintf (stderr, "%s: %s: missing fingerprint\n", prog, file);
return EXIT_FAILURE;
}
else if (memmem (finger + 1, buf + chunksz - (finger + 1),
fingerprint, sizeof fingerprint))
{
fprintf (stderr, "%s: %s: two occurrences of fingerprint\n",
prog, file);
return EXIT_FAILURE;
}
if (fseeko (f, finger - buf, SEEK_SET) != 0)
{
perror (file);
return EXIT_FAILURE;
}
if (fwrite (digest, 1, sizeof digest, f) != sizeof digest)
{
perror (file);
return EXIT_FAILURE;
}
}
if (fclose (f) != 0)

View file

@ -1046,6 +1046,7 @@ datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
emacs_major_version = @emacs_major_version@
etcdir = @etcdir@
etcdocdir = @etcdocdir@
exec_prefix = @exec_prefix@

View file

@ -1,40 +1,56 @@
/* mktime variant that also uses an offset guess
/* Internals of mktime and related functions
Copyright 2016-2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Paul Eggert <eggert@cs.ucla.edu>.
This program is free software; you can redistribute it and/or
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public
License along with this program; if not, see
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
#include <time.h>
#ifndef _LIBC
# include <time.h>
#endif
/* mktime_offset_t is a signed type wide enough to hold a UTC offset
in seconds, and used as part of the type of the offset-guess
argument to mktime_internal. Use time_t on platforms where time_t
argument to mktime_internal. In Glibc, it is always long int.
When in Gnulib, use time_t on platforms where time_t
is signed, to be compatible with platforms like BeOS that export
this implementation detail of mktime. On platforms where time_t is
unsigned, GNU and POSIX code can assume 'int' is at least 32 bits
which is wide enough for a UTC offset. */
#if TIME_T_IS_SIGNED
#ifdef _LIBC
typedef long int mktime_offset_t;
#elif defined TIME_T_IS_SIGNED
typedef time_t mktime_offset_t;
#else
typedef int mktime_offset_t;
#endif
time_t mktime_internal (struct tm *,
struct tm * (*) (time_t const *, struct tm *),
mktime_offset_t *);
/* The source code uses identifiers like __time64_t for glibc
timestamps that can contain 64-bit values even when time_t is only
32 bits. These are just macros for the ordinary identifiers unless
compiling within glibc when time_t is 32 bits. */
#if ! (defined _LIBC && __TIMESIZE != 64)
# undef __time64_t
# define __time64_t time_t
# define __gmtime64_r __gmtime_r
# define __localtime64_r __localtime_r
# define __mktime64 mktime
# define __timegm64 timegm
#endif
#ifndef _LIBC
/* Although glibc source code uses leading underscores, Gnulib wants
ordinary names.
@ -45,9 +61,19 @@ time_t mktime_internal (struct tm *,
Similarly for gmtime_r. See the gnulib time_r module for one way
to implement this. */
#undef __gmtime_r
#undef __localtime_r
#define __gmtime_r gmtime_r
#define __localtime_r localtime_r
# undef __gmtime_r
# undef __localtime_r
# define __gmtime_r gmtime_r
# define __localtime_r localtime_r
#define __mktime_internal mktime_internal
# define __mktime_internal mktime_internal
#endif
/* Subroutine of mktime. Return the time_t representation of TP and
normalize TP, given that a struct tm * maps to a time_t as performed
by FUNC. Record next guess for localtime-gmtime offset in *OFFSET. */
extern __time64_t __mktime_internal (struct tm *tp,
struct tm *(*func) (__time64_t const *,
struct tm *),
mktime_offset_t *offset) attribute_hidden;

View file

@ -112,11 +112,11 @@ my_tzset (void)
added to them, and then with another timestamp added, without
worrying about overflow.
Much of the code uses long_int to represent time_t values, to
lessen the hassle of dealing with platforms where time_t is
Much of the code uses long_int to represent __time64_t values, to
lessen the hassle of dealing with platforms where __time64_t is
unsigned, and because long_int should suffice to represent all
time_t values that mktime can generate even on platforms where
time_t is excessively wide. */
__time64_t values that mktime can generate even on platforms where
__time64_t is wider than the int components of struct tm. */
#if INT_MAX <= LONG_MAX / 4 / 366 / 24 / 60 / 60
typedef long int long_int;
@ -144,16 +144,15 @@ shr (long_int a, int b)
: a / (one << b) - (a % (one << b) < 0));
}
/* Bounds for the intersection of time_t and long_int. */
/* Bounds for the intersection of __time64_t and long_int. */
static long_int const mktime_min
= ((TYPE_SIGNED (time_t) && TYPE_MINIMUM (time_t) < TYPE_MINIMUM (long_int))
? TYPE_MINIMUM (long_int) : TYPE_MINIMUM (time_t));
= ((TYPE_SIGNED (__time64_t)
&& TYPE_MINIMUM (__time64_t) < TYPE_MINIMUM (long_int))
? TYPE_MINIMUM (long_int) : TYPE_MINIMUM (__time64_t));
static long_int const mktime_max
= (TYPE_MAXIMUM (long_int) < TYPE_MAXIMUM (time_t)
? TYPE_MAXIMUM (long_int) : TYPE_MAXIMUM (time_t));
verify (TYPE_IS_INTEGER (time_t));
= (TYPE_MAXIMUM (long_int) < TYPE_MAXIMUM (__time64_t)
? TYPE_MAXIMUM (long_int) : TYPE_MAXIMUM (__time64_t));
#define EPOCH_YEAR 1970
#define TM_YEAR_BASE 1900
@ -252,23 +251,23 @@ tm_diff (long_int year, long_int yday, int hour, int min, int sec,
}
/* Use CONVERT to convert T to a struct tm value in *TM. T must be in
range for time_t. Return TM if successful, NULL (setting errno) on
range for __time64_t. Return TM if successful, NULL (setting errno) on
failure. */
static struct tm *
convert_time (struct tm *(*convert) (const time_t *, struct tm *),
convert_time (struct tm *(*convert) (const __time64_t *, struct tm *),
long_int t, struct tm *tm)
{
time_t x = t;
__time64_t x = t;
return convert (&x, tm);
}
/* Use CONVERT to convert *T to a broken down time in *TP.
If *T is out of range for conversion, adjust it so that
it is the nearest in-range value and then convert that.
A value is in range if it fits in both time_t and long_int.
A value is in range if it fits in both __time64_t and long_int.
Return TP on success, NULL (setting errno) on failure. */
static struct tm *
ranged_convert (struct tm *(*convert) (const time_t *, struct tm *),
ranged_convert (struct tm *(*convert) (const __time64_t *, struct tm *),
long_int *t, struct tm *tp)
{
long_int t1 = (*t < mktime_min ? mktime_min
@ -310,7 +309,7 @@ ranged_convert (struct tm *(*convert) (const time_t *, struct tm *),
}
/* Convert *TP to a time_t value, inverting
/* Convert *TP to a __time64_t value, inverting
the monotonic and mostly-unit-linear conversion function CONVERT.
Use *OFFSET to keep track of a guess at the offset of the result,
compared to what the result would be for UTC without leap seconds.
@ -318,9 +317,9 @@ ranged_convert (struct tm *(*convert) (const time_t *, struct tm *),
If successful, set *TP to the canonicalized struct tm;
otherwise leave *TP alone, return ((time_t) -1) and set errno.
This function is external because it is used also by timegm.c. */
time_t
__time64_t
__mktime_internal (struct tm *tp,
struct tm *(*convert) (const time_t *, struct tm *),
struct tm *(*convert) (const __time64_t *, struct tm *),
mktime_offset_t *offset)
{
struct tm tm;
@ -520,9 +519,9 @@ __mktime_internal (struct tm *tp,
#if defined _LIBC || NEED_MKTIME_WORKING || NEED_MKTIME_WINDOWS
/* Convert *TP to a time_t value. */
time_t
mktime (struct tm *tp)
/* Convert *TP to a __time64_t value. */
__time64_t
__mktime64 (struct tm *tp)
{
/* POSIX.1 8.1.1 requires that whenever mktime() is called, the
time zone names contained in the external variable 'tzname' shall
@ -531,7 +530,7 @@ mktime (struct tm *tp)
# if defined _LIBC || NEED_MKTIME_WORKING
static mktime_offset_t localtime_offset;
return __mktime_internal (tp, __localtime_r, &localtime_offset);
return __mktime_internal (tp, __localtime64_r, &localtime_offset);
# else
# undef mktime
return mktime (tp);
@ -539,11 +538,29 @@ mktime (struct tm *tp)
}
#endif /* _LIBC || NEED_MKTIME_WORKING || NEED_MKTIME_WINDOWS */
#ifdef weak_alias
weak_alias (mktime, timelocal)
#if defined _LIBC && __TIMESIZE != 64
libc_hidden_def (__mktime64)
time_t
mktime (struct tm *tp)
{
struct tm tm = *tp;
__time64_t t = __mktime64 (&tm);
if (in_time_t_range (t))
{
*tp = tm;
return t;
}
else
{
__set_errno (EOVERFLOW);
return -1;
}
}
#endif
#ifdef _LIBC
weak_alias (mktime, timelocal)
libc_hidden_def (mktime)
libc_hidden_weak (timelocal)
#endif

View file

@ -18,17 +18,41 @@
<http://www.gnu.org/licenses/>. */
#ifndef _LIBC
# include <config.h>
# include <libc-config.h>
#endif
#include <time.h>
#include <errno.h>
#include "mktime-internal.h"
__time64_t
__timegm64 (struct tm *tmp)
{
static mktime_offset_t gmtime_offset;
tmp->tm_isdst = 0;
return __mktime_internal (tmp, __gmtime64_r, &gmtime_offset);
}
#if defined _LIBC && __TIMESIZE != 64
libc_hidden_def (__timegm64)
time_t
timegm (struct tm *tmp)
{
static mktime_offset_t gmtime_offset;
tmp->tm_isdst = 0;
return __mktime_internal (tmp, __gmtime_r, &gmtime_offset);
struct tm tm = *tmp;
__time64_t t = __timegm64 (&tm);
if (in_time_t_range (t))
{
*tmp = tm;
return t;
}
else
{
__set_errno (EOVERFLOW);
return -1;
}
}
#endif

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1985-1987, 1992, 2001-2019 Free Software Foundation,
;; Inc.
;; Maintainer: emacs-devel@gnu.org
;; Keywords: abbrev convenience
;; Package: emacs

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1999-2019 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@gnu.org>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: convenience languages lisp
;; This file is part of GNU Emacs.

View file

@ -415,7 +415,11 @@ this."
;; if the rest of the region should have a face, put it there
(funcall ansi-color-apply-face-function
start-marker end-marker (ansi-color--find-face codes))
(setq ansi-color-context-region (if codes (list codes)))))))
(setq ansi-color-context-region (if codes (list codes)))))
;; Clean up our temporary markers.
(unless (eq start-marker (cadr ansi-color-context-region))
(set-marker start-marker nil))
(set-marker end-marker nil)))
(defun ansi-color-apply-overlay-face (beg end face)
"Make an overlay from BEG to END, and apply face FACE.
@ -425,6 +429,12 @@ If FACE is nil, do nothing."
(ansi-color-make-extent beg end)
face)))
(defun ansi-color-apply-text-property-face (beg end face)
"Set the `font-lock-face' property to FACE in region BEG..END.
If FACE is nil, do nothing."
(when face
(put-text-property beg end 'font-lock-face face)))
;; This function helps you look for overlapping overlays. This is
;; useful in comint-buffers. Overlapping overlays should not happen!
;; A possible cause for bugs are the markers. If you create an overlay

View file

@ -417,70 +417,66 @@ file. Archive and member name will be added."
(substitute-key-definition 'advertised-undo 'archive-undo map global-map)
(substitute-key-definition 'undo 'archive-undo map global-map))
(define-key map
(if (featurep 'xemacs) 'button2 [mouse-2]) 'archive-extract)
(define-key map [mouse-2] 'archive-extract)
(if (featurep 'xemacs)
() ; out of luck
(define-key map [menu-bar immediate]
(cons "Immediate" (make-sparse-keymap "Immediate")))
(define-key map [menu-bar immediate alternate]
'(menu-item "Alternate Display" archive-alternate-display
:enable (boundp (archive-name "alternate-display"))
:help "Toggle alternate file info display"))
(define-key map [menu-bar immediate view]
'(menu-item "View This File" archive-view
:help "Display file at cursor in View Mode"))
(define-key map [menu-bar immediate display]
'(menu-item "Display in Other Window" archive-display-other-window
:help "Display file at cursor in another window"))
(define-key map [menu-bar immediate find-file-other-window]
'(menu-item "Find in Other Window" archive-extract-other-window
:help "Edit file at cursor in another window"))
(define-key map [menu-bar immediate find-file]
'(menu-item "Find This File" archive-extract
:help "Extract file at cursor and edit it"))
(define-key map [menu-bar immediate]
(cons "Immediate" (make-sparse-keymap "Immediate")))
(define-key map [menu-bar immediate alternate]
'(menu-item "Alternate Display" archive-alternate-display
:enable (boundp (archive-name "alternate-display"))
:help "Toggle alternate file info display"))
(define-key map [menu-bar immediate view]
'(menu-item "View This File" archive-view
:help "Display file at cursor in View Mode"))
(define-key map [menu-bar immediate display]
'(menu-item "Display in Other Window" archive-display-other-window
:help "Display file at cursor in another window"))
(define-key map [menu-bar immediate find-file-other-window]
'(menu-item "Find in Other Window" archive-extract-other-window
:help "Edit file at cursor in another window"))
(define-key map [menu-bar immediate find-file]
'(menu-item "Find This File" archive-extract
:help "Extract file at cursor and edit it"))
(define-key map [menu-bar mark]
(cons "Mark" (make-sparse-keymap "Mark")))
(define-key map [menu-bar mark unmark-all]
'(menu-item "Unmark All" archive-unmark-all-files
:help "Unmark all marked files"))
(define-key map [menu-bar mark deletion]
'(menu-item "Flag" archive-flag-deleted
:help "Flag file at cursor for deletion"))
(define-key map [menu-bar mark unmark]
'(menu-item "Unflag" archive-unflag
:help "Unmark file at cursor"))
(define-key map [menu-bar mark mark]
'(menu-item "Mark" archive-mark
:help "Mark file at cursor"))
(define-key map [menu-bar mark]
(cons "Mark" (make-sparse-keymap "Mark")))
(define-key map [menu-bar mark unmark-all]
'(menu-item "Unmark All" archive-unmark-all-files
:help "Unmark all marked files"))
(define-key map [menu-bar mark deletion]
'(menu-item "Flag" archive-flag-deleted
:help "Flag file at cursor for deletion"))
(define-key map [menu-bar mark unmark]
'(menu-item "Unflag" archive-unflag
:help "Unmark file at cursor"))
(define-key map [menu-bar mark mark]
'(menu-item "Mark" archive-mark
:help "Mark file at cursor"))
(define-key map [menu-bar operate]
(cons "Operate" (make-sparse-keymap "Operate")))
(define-key map [menu-bar operate chown]
'(menu-item "Change Owner..." archive-chown-entry
:enable (fboundp (archive-name "chown-entry"))
:help "Change owner of marked files"))
(define-key map [menu-bar operate chgrp]
'(menu-item "Change Group..." archive-chgrp-entry
:enable (fboundp (archive-name "chgrp-entry"))
:help "Change group ownership of marked files"))
(define-key map [menu-bar operate chmod]
'(menu-item "Change Mode..." archive-chmod-entry
:enable (fboundp (archive-name "chmod-entry"))
:help "Change mode (permissions) of marked files"))
(define-key map [menu-bar operate rename]
'(menu-item "Rename to..." archive-rename-entry
:enable (fboundp (archive-name "rename-entry"))
:help "Rename marked files"))
;;(define-key map [menu-bar operate copy]
;; '(menu-item "Copy to..." archive-copy))
(define-key map [menu-bar operate expunge]
'(menu-item "Expunge Marked Files" archive-expunge
:help "Delete all flagged files from archive"))
map))
(define-key map [menu-bar operate]
(cons "Operate" (make-sparse-keymap "Operate")))
(define-key map [menu-bar operate chown]
'(menu-item "Change Owner..." archive-chown-entry
:enable (fboundp (archive-name "chown-entry"))
:help "Change owner of marked files"))
(define-key map [menu-bar operate chgrp]
'(menu-item "Change Group..." archive-chgrp-entry
:enable (fboundp (archive-name "chgrp-entry"))
:help "Change group ownership of marked files"))
(define-key map [menu-bar operate chmod]
'(menu-item "Change Mode..." archive-chmod-entry
:enable (fboundp (archive-name "chmod-entry"))
:help "Change mode (permissions) of marked files"))
(define-key map [menu-bar operate rename]
'(menu-item "Rename to..." archive-rename-entry
:enable (fboundp (archive-name "rename-entry"))
:help "Rename marked files"))
;;(define-key map [menu-bar operate copy]
;; '(menu-item "Copy to..." archive-copy))
(define-key map [menu-bar operate expunge]
'(menu-item "Expunge Marked Files" archive-expunge
:help "Delete all flagged files from archive"))
map)
"Local keymap for archive mode listings.")
(defvar archive-file-name-indent nil "Column where file names start.")
@ -516,17 +512,12 @@ Each descriptor is a vector of the form
;; -------------------------------------------------------------------------
;;; Section: Support functions.
(eval-when-compile
(defsubst byte-after (pos)
"Like char-after but an eight-bit char is converted to unibyte."
(multibyte-char-to-unibyte (char-after pos)))
(defsubst insert-unibyte (&rest args)
"Like insert but don't make unibyte string and eight-bit char multibyte."
(dolist (elt args)
(if (integerp elt)
(insert (if (< elt 128) elt (decode-char 'eight-bit elt)))
(insert (string-to-multibyte elt)))))
)
(defun arc-insert-unibyte (&rest args)
"Like insert but don't make unibyte string and eight-bit char multibyte."
(dolist (elt args)
(if (integerp elt)
(insert (if (< elt 128) elt (decode-char 'eight-bit elt)))
(insert elt))))
(defsubst archive-name (suffix)
(intern (concat "archive-" (symbol-name archive-subtype) "-" suffix)))
@ -538,7 +529,8 @@ in which case a second argument, length LEN, should be supplied."
(if (stringp str)
(setq len (length str))
(setq str (buffer-substring str (+ str len))))
(setq str (string-as-unibyte str))
(if (multibyte-string-p str)
(setq str (encode-coding-string str 'utf-8-emacs-unix)))
(let ((result 0)
(i 0))
(while (< i len)
@ -842,13 +834,11 @@ when parsing the archive."
;; Using `concat' here copies the text also, so we can add
;; properties without problems.
(let ((text (concat (aref fil 0) "\n")))
(if (featurep 'xemacs)
() ; out of luck
(add-text-properties
(aref fil 1) (aref fil 2)
'(mouse-face highlight
help-echo "mouse-2: extract this file into a buffer")
text))
(add-text-properties
(aref fil 1) (aref fil 2)
'(mouse-face highlight
help-echo "mouse-2: extract this file into a buffer")
text)
text))
files)))
(setq archive-file-list-end (point-marker)))
@ -1492,8 +1482,8 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
files
visual)
(while (and (< (+ p 29) (point-max))
(= (byte-after p) ?\C-z)
(> (byte-after (1+ p)) 0))
(= (get-byte p) ?\C-z)
(> (get-byte (1+ p)) 0))
(let* ((namefld (buffer-substring (+ p 2) (+ p 2 13)))
(fnlen (or (string-match "\0" namefld) 13))
(efnname (decode-coding-string (substring namefld 0 fnlen)
@ -1546,7 +1536,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(widen)
(goto-char (+ archive-proper-file-start (aref descr 4) 2))
(delete-char 13)
(insert-unibyte name)))))
(arc-insert-unibyte name)))))
;; -------------------------------------------------------------------------
;;; Section: Lzh Archives
@ -1558,13 +1548,13 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
visual)
(while (progn (goto-char p) ;beginning of a base header.
(looking-at "\\(.\\|\n\\)\\(.\\|\n\\)-l[hz][0-9ds]-"))
(let* ((hsize (byte-after p)) ;size of the base header (level 0 and 1)
(let* ((hsize (get-byte p)) ;size of the base header (level 0 and 1)
(csize (archive-l-e (+ p 7) 4)) ;size of a compressed file to follow (level 0 and 2),
;size of extended headers + the compressed file to follow (level 1).
(ucsize (archive-l-e (+ p 11) 4)) ;size of an uncompressed file.
(time1 (archive-l-e (+ p 15) 2)) ;date/time (MSDOS format in level 0, 1 headers
(time2 (archive-l-e (+ p 17) 2)) ;and UNIX format in level 2 header.)
(hdrlvl (byte-after (+ p 20))) ;header level
(hdrlvl (get-byte (+ p 20))) ;header level
thsize ;total header size (base + extensions)
fnlen efnname osid fiddle ifnname width p2
neh ;beginning of next extension header (level 1 and 2)
@ -1572,7 +1562,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
gname uname modtime moddate)
(if (= hdrlvl 3) (error "can't handle lzh level 3 header type"))
(when (or (= hdrlvl 0) (= hdrlvl 1))
(setq fnlen (byte-after (+ p 21))) ;filename length
(setq fnlen (get-byte (+ p 21))) ;filename length
(setq efnname (let ((str (buffer-substring (+ p 22) (+ p 22 fnlen)))) ;filename from offset 22
(decode-coding-string
str archive-file-name-coding-system)))
@ -1583,19 +1573,19 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(setq neh (+ p 24)))) ;specific to level 2 header
(if neh ;if level 1 or 2 we expect extension headers to follow
(let* ((ehsize (archive-l-e neh 2)) ;size of the extension header
(etype (byte-after (+ neh 2)))) ;extension type
(etype (get-byte (+ neh 2)))) ;extension type
(while (not (= ehsize 0))
(cond
((= etype 1) ;file name
(let ((i (+ neh 3)))
(while (< i (+ neh ehsize))
(setq efnname (concat efnname (char-to-string (byte-after i))))
(setq efnname (concat efnname (char-to-string (get-byte i))))
(setq i (1+ i)))))
((= etype 2) ;directory name
(let ((i (+ neh 3)))
(while (< i (+ neh ehsize))
(setq dir (concat dir
(if (= (byte-after i)
(if (= (get-byte i)
255)
"/"
(char-to-string
@ -1619,7 +1609,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
)
(setq neh (+ neh ehsize))
(setq ehsize (archive-l-e neh 2))
(setq etype (byte-after (+ neh 2))))
(setq etype (get-byte (+ neh 2))))
;;get total header size for level 1 and 2 headers
(setq thsize (- neh p))))
(if (= hdrlvl 0) ;total header size
@ -1706,7 +1696,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(let ((sum 0))
(while (> count 0)
(setq count (1- count)
sum (+ sum (byte-after p))
sum (+ sum (get-byte p))
p (1+ p)))
(logand sum 255)))
@ -1715,8 +1705,8 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(save-excursion
(widen)
(let* ((p (+ archive-proper-file-start (aref descr 4)))
(oldhsize (byte-after p))
(oldfnlen (byte-after (+ p 21)))
(oldhsize (get-byte p))
(oldfnlen (get-byte (+ p 21)))
(newfnlen (length newname))
(newhsize (+ oldhsize newfnlen (- oldfnlen)))
(inhibit-read-only t))
@ -1724,10 +1714,10 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(error "The file name is too long"))
(goto-char (+ p 21))
(delete-char (1+ oldfnlen))
(insert-unibyte newfnlen newname)
(arc-insert-unibyte newfnlen newname)
(goto-char p)
(delete-char 2)
(insert-unibyte newhsize (archive-lzh-resum p newhsize))))))
(arc-insert-unibyte newhsize (archive-lzh-resum p newhsize))))))
(defun archive-lzh-ogm (newval files errtxt ofs)
(save-excursion
@ -1735,10 +1725,10 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(widen)
(dolist (fil files)
(let* ((p (+ archive-proper-file-start (aref fil 4)))
(hsize (byte-after p))
(fnlen (byte-after (+ p 21)))
(hsize (get-byte p))
(fnlen (get-byte (+ p 21)))
(p2 (+ p 22 fnlen))
(creator (if (>= (- hsize fnlen) 24) (byte-after (+ p2 2)) 0))
(creator (if (>= (- hsize fnlen) 24) (get-byte (+ p2 2)) 0))
(inhibit-read-only t))
(if (= creator ?U)
(progn
@ -1746,10 +1736,10 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(setq newval (funcall newval (archive-l-e (+ p2 ofs) 2))))
(goto-char (+ p2 ofs))
(delete-char 2)
(insert-unibyte (logand newval 255) (ash newval -8))
(arc-insert-unibyte (logand newval 255) (ash newval -8))
(goto-char (1+ p))
(delete-char 1)
(insert-unibyte (archive-lzh-resum (1+ p) hsize)))
(arc-insert-unibyte (archive-lzh-resum (1+ p) hsize)))
(message "Member %s does not have %s field"
(aref fil 1) errtxt)))))))
@ -1821,7 +1811,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(setq p (archive-l-e (+ p 48) 8)))
(setq p (+ p (point-min)))
(while (string= "PK\001\002" (buffer-substring p (+ p 4)))
(let* ((creator (byte-after (+ p 5)))
(let* ((creator (get-byte (+ p 5)))
;; (method (archive-l-e (+ p 10) 2))
(modtime (archive-l-e (+ p 12) 2))
(moddate (archive-l-e (+ p 14) 2))
@ -1841,7 +1831,7 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(logior ?\444
(if isdir (logior 16384 ?\111) 0)
(if (zerop
(logand 1 (byte-after (+ p 38))))
(logand 1 (get-byte (+ p 38))))
?\222 0)))
(t nil)))
(modestr (if mode (archive-int-to-mode mode) "??????????"))
@ -1918,18 +1908,19 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(widen)
(dolist (fil files)
(let* ((p (+ archive-proper-file-start (car (aref fil 4))))
(creator (byte-after (+ p 5)))
(creator (get-byte (+ p 5)))
(oldmode (aref fil 3))
(newval (archive-calc-mode oldmode newmode t))
(inhibit-read-only t))
(cond ((memq creator '(2 3)) ; Unix
(goto-char (+ p 40))
(delete-char 2)
(insert-unibyte (logand newval 255) (ash newval -8)))
(arc-insert-unibyte (logand newval 255) (ash newval -8)))
((memq creator '(0 5 6 7 10 11 15)) ; Dos etc.
(goto-char (+ p 38))
(insert-unibyte (logior (logand (byte-after (point)) 254)
(logand (logxor 1 (ash newval -7)) 1)))
(arc-insert-unibyte
(logior (logand (get-byte (point)) 254)
(logand (logxor 1 (ash newval -7)) 1)))
(delete-char 1))
(t (message "Don't know how to change mode for this member"))))
))))
@ -1949,9 +1940,9 @@ This doesn't recover lost files, it just undoes changes in the buffer itself."
(modtime (archive-l-e (+ p 16) 2))
(ucsize (archive-l-e (+ p 20) 4))
(namefld (buffer-substring (+ p 38) (+ p 38 13)))
(dirtype (byte-after (+ p 4)))
(lfnlen (if (= dirtype 2) (byte-after (+ p 56)) 0))
(ldirlen (if (= dirtype 2) (byte-after (+ p 57)) 0))
(dirtype (get-byte (+ p 4)))
(lfnlen (if (= dirtype 2) (get-byte (+ p 56)) 0))
(ldirlen (if (= dirtype 2) (get-byte (+ p 57)) 0))
(fnlen (or (string-match "\0" namefld) 13))
(efnname (let ((str
(concat

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1987, 2000-2019 Free Software Foundation, Inc.
;; Author: David M. Brown
;; Maintainer: emacs-devel@gnu.org
;; Keywords: extensions
;; This file is part of GNU Emacs.

View file

@ -6,7 +6,6 @@
;; Author: Charlie Martin <crm@cs.duke.edu>
;; Adapted-By: Daniel Pfeiffer <occitan@esperanto.org>
;; Keywords: convenience
;; Maintainer: emacs-devel@gnu.org
;; This file is part of GNU Emacs.

View file

@ -107,7 +107,7 @@
;; Dependencies:
(eval-when-compile (require 'cl-lib))
(require 'cl-lib)
(require 'timer)
(require 'filenotify)
@ -126,8 +126,6 @@ Global Auto-Revert Mode does so in all buffers."
;; Variables:
;;; What's this?: ;; Autoload for the benefit of `make-mode-line-mouse-sensitive'.
;;; What's this?: ;;;###autoload
(defvar auto-revert-mode nil
"Non-nil when Auto-Revert Mode is active.
Never set this variable directly, use the command `auto-revert-mode' instead.")
@ -302,6 +300,27 @@ You should set this variable through Custom."
:type 'regexp
:version "24.4")
(defcustom auto-revert-avoid-polling nil
"Non-nil to avoid polling files when notification is available.
Set this variable to a non-nil value to save power by avoiding
polling when possible. Files on file-systems that do not support
change notifications must match `auto-revert-notify-exclude-dir-regexp'
for Auto-Revert to work properly in this case. This typically
includes files on network file systems on Unix-like machines,
when those files are modified from another computer.
When nil, buffers in Auto-Revert Mode will always be polled for
changes to their files on disk every `auto-revert-interval'
seconds, in addition to using notification for those files."
:group 'auto-revert
:type 'boolean
:set (lambda (variable value)
(set-default variable value)
(when (fboundp 'auto-revert-set-timer)
(auto-revert-set-timer)))
:version "27.1")
;; Internal variables:
(defvar auto-revert-buffer-list ()
@ -313,6 +332,9 @@ buffers to this list.
The timer function `auto-revert-buffers' is responsible for purging
the list of old buffers.")
(defvar-local auto-revert--global-mode nil
"Non-nil if buffer is handled by Global Auto-Revert mode.")
(defvar auto-revert-remaining-buffers ()
"Buffers not checked when user input stopped execution.")
@ -341,6 +363,9 @@ buffer.")
"Non-nil when file has been modified on the file system.
This has been reported by a file notification event.")
(defvar auto-revert-debug nil
"Use for debug messages.")
;; Functions:
(defun auto-revert-remove-current-buffer (&optional buffer)
@ -476,11 +501,107 @@ specifies in the mode line."
:global t :group 'auto-revert :lighter global-auto-revert-mode-text
(auto-revert-set-timer)
(if global-auto-revert-mode
(auto-revert-buffers)
;; Turn global-auto-revert-mode ON.
(progn
(dolist (buf (buffer-list))
(with-current-buffer buf
(auto-revert--global-add-current-buffer)))
;; Make sure future buffers are added as well.
(add-hook 'find-file-hook #'auto-revert--global-adopt-current-buffer)
(add-hook 'after-set-visited-file-name-hook
#'auto-revert--global-set-visited-file-name)
;; To track non-file buffers, we need to listen in to buffer
;; creation in general. Listening to major-mode changes is
;; suitable, since we then know whether it's a mode that is tracked.
(when global-auto-revert-non-file-buffers
(add-hook 'after-change-major-mode-hook
#'auto-revert--global-adopt-current-buffer))
(auto-revert-buffers))
;; Turn global-auto-revert-mode OFF.
(remove-hook 'after-change-major-mode-hook
#'auto-revert--global-adopt-current-buffer)
(remove-hook 'after-set-visited-file-name-hook
#'auto-revert--global-set-visited-file-name)
(remove-hook 'find-file-hook #'auto-revert--global-adopt-current-buffer)
(dolist (buf (buffer-list))
(with-current-buffer buf
(when auto-revert-notify-watch-descriptor
(auto-revert-notify-rm-watch))))))
(when auto-revert--global-mode
(setq auto-revert--global-mode nil)
(when (and auto-revert-notify-watch-descriptor
(not (or auto-revert-mode auto-revert-tail-mode)))
(auto-revert-notify-rm-watch)))))))
(defun auto-revert--global-add-current-buffer ()
"Set current buffer to be tracked by Global Auto-Revert if appropriate."
(when (and (not auto-revert--global-mode)
(or buffer-file-name
(and global-auto-revert-non-file-buffers
(not (string-prefix-p " " (buffer-name)))
;; Any non-file buffer must have a custom
;; `buffer-stale-function' to be tracked, since
;; we wouldn't know when to revert it otherwise.
(not (eq buffer-stale-function
#'buffer-stale--default-function))))
(not (memq 'major-mode global-auto-revert-ignore-modes))
(not global-auto-revert-ignore-buffer))
(setq auto-revert--global-mode t)))
(defun auto-revert--global-adopt-current-buffer ()
"Consider tracking current buffer in a running Global Auto-Revert mode."
(auto-revert--global-add-current-buffer)
(auto-revert-set-timer))
(defun auto-revert--global-set-visited-file-name ()
"Update Global Auto-Revert management of the current buffer.
Called after `set-visited-file-name'."
;; Remove any existing notifier first so that we don't track the
;; wrong file in case the file name was changed.
(when auto-revert-notify-watch-descriptor
(auto-revert-notify-rm-watch))
(auto-revert--global-adopt-current-buffer))
(defun auto-revert--polled-buffers ()
"List of buffers that need to be polled."
(cond (global-auto-revert-mode
(mapcan (lambda (buffer)
(and (not (and auto-revert-avoid-polling
(buffer-local-value
'auto-revert-notify-watch-descriptor
buffer)))
(or (buffer-local-value
'auto-revert--global-mode buffer)
(buffer-local-value 'auto-revert-mode buffer)
(buffer-local-value 'auto-revert-tail-mode buffer))
(list buffer)))
(buffer-list)))
(auto-revert-avoid-polling
(mapcan (lambda (buffer)
(and (not (buffer-local-value
'auto-revert-notify-watch-descriptor buffer))
(list buffer)))
auto-revert-buffer-list))
(t auto-revert-buffer-list)))
;; Same as above in a boolean context, but cheaper.
(defun auto-revert--need-polling-p ()
"Whether periodic polling is required."
(cond (global-auto-revert-mode
(or (not auto-revert-avoid-polling)
(cl-some
(lambda (buffer)
(and (not (buffer-local-value
'auto-revert-notify-watch-descriptor buffer))
(or (buffer-local-value 'auto-revert--global-mode buffer)
(buffer-local-value 'auto-revert-mode buffer)
(buffer-local-value 'auto-revert-tail-mode buffer))))
(buffer-list))))
(auto-revert-avoid-polling
(not (cl-every
(lambda (buffer)
(buffer-local-value
'auto-revert-notify-watch-descriptor buffer))
auto-revert-buffer-list)))
(t auto-revert-buffer-list)))
(defun auto-revert-set-timer ()
"Restart or cancel the timer used by Auto-Revert Mode.
@ -492,10 +613,10 @@ will use an up-to-date value of `auto-revert-interval'"
(if (timerp auto-revert-timer)
(cancel-timer auto-revert-timer))
(setq auto-revert-timer
(if (or global-auto-revert-mode auto-revert-buffer-list)
(run-with-timer auto-revert-interval
auto-revert-interval
'auto-revert-buffers))))
(and (auto-revert--need-polling-p)
(run-with-timer auto-revert-interval
auto-revert-interval
'auto-revert-buffers))))
(defun auto-revert-notify-rm-watch ()
"Disable file notification for current buffer's associated file."
@ -558,24 +679,20 @@ will use an up-to-date value of `auto-revert-interval'"
;; often, we want to skip some revert operations so that we don't spend all our
;; time reverting the buffer.
;;
;; We do this by reverting immediately in response to the first in a flurry of
;; notifications. We suppress subsequent notifications until the next time
;; `auto-revert-buffers' is called (this happens on a timer with a period set by
;; `auto-revert-interval').
(defvar auto-revert-buffers-counter 1
"Incremented each time `auto-revert-buffers' is called")
(defvar-local auto-revert-buffers-counter-lockedout 0
"Buffer-local value to indicate whether we should immediately
update the buffer on a notification event or not. If
;; We do this by reverting immediately in response to the first in a
;; flurry of notifications. Any notifications during the following
;; `auto-revert-lockout-interval' seconds are noted but not acted upon
;; until the end of that interval.
(= auto-revert-buffers-counter-lockedout
auto-revert-buffers-counter)
(defconst auto-revert--lockout-interval 2.5
"Duration, in seconds, of the Auto-Revert Mode notification lockout.
This is the quiescence after each notification of a file being
changed during which no automatic reverting takes place, to
prevent many updates in rapid succession from overwhelming the
system.")
then the updates are locked out, and we wait until the next call
of `auto-revert-buffers' to revert the buffer. If no lockout is
present, then we revert immediately and set the lockout, so that
no more reverts are possible until the next call of
`auto-revert-buffers'")
(defvar-local auto-revert--lockout-timer nil
"Timer awaiting the end of the notification lockout interval, or nil.")
(defun auto-revert-notify-handler (event)
"Handle an EVENT returned from file notification."
@ -591,6 +708,8 @@ no more reverts are possible until the next call of
;; Since we watch a directory, a file name must be returned.
(cl-assert (stringp file))
(when (eq action 'renamed) (cl-assert (stringp file1)))
(when auto-revert-debug
(message "auto-revert-notify-handler %S" event))
(if (eq action 'stopped)
;; File notification has stopped. Continue with polling.
@ -604,7 +723,10 @@ no more reverts are possible until the next call of
(file-name-nondirectory buffer-file-name)))
;; A buffer w/o a file, like dired.
(null buffer-file-name))
(auto-revert-notify-rm-watch))))
(auto-revert-notify-rm-watch)
;; Restart the timer if it wasn't running.
(unless auto-revert-timer)
(auto-revert-set-timer))))
;; Loop over all buffers, in order to find the intended one.
(cl-dolist (buffer buffers)
@ -630,19 +752,27 @@ no more reverts are possible until the next call of
(setq auto-revert-notify-modified-p t)
;; Revert the buffer now if we're not locked out.
(when (/= auto-revert-buffers-counter-lockedout
auto-revert-buffers-counter)
(unless auto-revert--lockout-timer
(auto-revert-handler)
(setq auto-revert-buffers-counter-lockedout
auto-revert-buffers-counter))))))))))
(setq auto-revert--lockout-timer
(run-with-timer
auto-revert--lockout-interval nil
#'auto-revert--end-lockout buffer)))))))))))
(defun auto-revert--end-lockout (buffer)
"End the lockout period after a notification.
If the buffer needs to be reverted, do it now."
(when (buffer-live-p buffer)
(with-current-buffer buffer
(setq auto-revert--lockout-timer nil)
(when auto-revert-notify-modified-p
(auto-revert-handler)))))
(defun auto-revert-active-p ()
"Check if auto-revert is active (in current buffer or globally)."
"Check if auto-revert is active in current buffer."
(or auto-revert-mode
auto-revert-tail-mode
(and global-auto-revert-mode
(not global-auto-revert-ignore-buffer)
(not (memq major-mode global-auto-revert-ignore-modes)))))
auto-revert--global-mode))
(defun auto-revert-handler ()
"Revert current buffer, if appropriate.
@ -755,13 +885,8 @@ This function is also responsible for removing buffers no longer in
Auto-Revert Mode from `auto-revert-buffer-list', and for canceling
the timer when no buffers need to be checked."
(setq auto-revert-buffers-counter
(1+ auto-revert-buffers-counter))
(save-match-data
(let ((bufs (if global-auto-revert-mode
(buffer-list)
auto-revert-buffer-list))
(let ((bufs (auto-revert--polled-buffers))
remaining new)
;; Buffers with remote contents shall be reverted only if the
;; connection is established already.
@ -803,15 +928,18 @@ the timer when no buffers need to be checked."
(auto-revert-remove-current-buffer))
(when (auto-revert-active-p)
;; Enable file notification.
;; Don't bother creating a notifier for non-file buffers
;; unless it explicitly indicates that this works.
(when (and auto-revert-use-notify
(not auto-revert-notify-watch-descriptor))
(not auto-revert-notify-watch-descriptor)
(or buffer-file-name
buffer-auto-revert-by-notification))
(auto-revert-notify-add-watch))
(auto-revert-handler)))))
(setq bufs (cdr bufs)))
(setq auto-revert-remaining-buffers bufs)
;; Check if we should cancel the timer.
(when (and (not global-auto-revert-mode)
(null auto-revert-buffer-list))
(unless (auto-revert--need-polling-p)
(if (timerp auto-revert-timer)
(cancel-timer auto-revert-timer))
(setq auto-revert-timer nil)))))

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1985-1987, 1992-1996, 1999-2019 Free Software
;; Foundation, Inc.
;; Maintainer: emacs-devel@gnu.org
;; Keywords: internal
;; Package: emacs

View file

@ -2,7 +2,6 @@
;; Copyright (C) 1998-2019 Free Software Foundation, Inc.
;; Author: Olaf Sylvester <Olaf.Sylvester@netsurf.de>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: convenience
;; This file is part of GNU Emacs.
@ -181,12 +180,7 @@ return a string representing the column's value."
(list (bs--make-header-match-string)
'(1 font-lock-type-face append) '(1 'bold append))
;; Buffername embedded by *
(list "^\\(.*\\*.*\\*.*\\)$"
1
;; problem in XEmacs with font-lock-constant-face
(if (facep 'font-lock-constant-face)
'font-lock-constant-face
'font-lock-comment-face))
(list "^\\(.*\\*.*\\*.*\\)$" 1 'font-lock-constant-face)
;; Dired-Buffers
'("^..\\(.*Dired .*\\)$" 1 font-lock-function-name-face)
;; the star for modified buffers
@ -343,11 +337,6 @@ configuration.
A value of `never' means to never show the buffer.
A value of `always' means to show buffer regardless of the configuration.")
;; Make face named region (for XEmacs)
(unless (facep 'region)
(make-face 'region)
(set-face-background 'region "gray75"))
(defun bs--sort-by-name (b1 b2)
"Compare buffers B1 and B2 by buffer name."
(string< (buffer-name b1)
@ -448,8 +437,7 @@ Used internally, only.")
(define-key map "f" 'bs-select)
(define-key map "v" 'bs-view)
(define-key map "!" 'bs-select-in-one-window)
(define-key map [mouse-2] 'bs-mouse-select) ;; for GNU EMACS
(define-key map [button2] 'bs-mouse-select) ;; for XEmacs
(define-key map [mouse-2] 'bs-mouse-select)
(define-key map "F" 'bs-select-other-frame)
(let ((key ?1))
(while (<= key ?9)
@ -459,10 +447,7 @@ Used internally, only.")
(define-key map "\e-" 'negative-argument)
(define-key map "o" 'bs-select-other-window)
(define-key map "\C-o" 'bs-tmp-select-other-window)
;; for GNU EMACS
(define-key map [mouse-3] 'bs-mouse-select-other-frame)
;; for XEmacs
(define-key map [button3] 'bs-mouse-select-other-frame)
(define-key map [up] 'bs-up)
(define-key map "n" 'bs-down)
(define-key map "p" 'bs-up)

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1985-1987, 1993-1995, 2000-2019 Free Software
;; Foundation, Inc.
;; Maintainer: emacs-devel@gnu.org
;; Keywords: convenience
;; Package: emacs

View file

@ -156,7 +156,7 @@ If DATE lacks timezone information, GMT is assumed."
(let ((overflow-error '(error "Specified time is not representable")))
(if (equal err overflow-error)
(signal (car err) (cdr err))
(condition-case-unless-debug err
(condition-case err
(encode-time (parse-time-string
(timezone-make-date-arpa-standard date)))
(error

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1988, 1994, 2001-2019 Free Software Foundation, Inc.
;; Author: Howard Gayle
;; Maintainer: emacs-devel@gnu.org
;; Keywords: i18n
;; Package: emacs

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1993, 2001-2019 Free Software Foundation, Inc.
;; Author: Ata Etemadi <ATAE@spva.physics.imperial.ac.uk>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: data
;; This file is part of GNU Emacs.

View file

@ -3,7 +3,7 @@
;; Copyright (C) 2002-2019 Free Software Foundation, Inc.
;; Author: David Ponce <david@dponce.com>
;; Maintainer: Eric M. Ludlam <zappo@gnu.org>
;; Maintainer: Eric M. Ludlam <zappo@gnu.org>
;; Version: 2.0
;; Keywords: OO, lisp

View file

@ -4,7 +4,7 @@
;; Foundation, Inc.
;; Author: Eric M. Ludlam <zappo@gnu.org>
;; Maintainer: Eric Ludlam
;; Maintainer: Eric M. Ludlam <zappo@gnu.org>
;; This file is part of GNU Emacs.

View file

@ -3,7 +3,6 @@
;; Copyright (C) 2000-2019 Free Software Foundation, Inc.
;; Author: David Ponce <david@dponce.com>
;; Maintainer: emacs-devel@gnu.org
;; Created: 10 Nov 2000
;; Keywords: syntax

View file

@ -2,8 +2,8 @@
;; Copyright (C) 2002, 2004, 2006-2019 Free Software Foundation, Inc.
;; Author: Richard Kim <emacs18@gmail.com>
;; Maintainer: Richard Kim <emacs18@gmail.com>
;; Author: Richard Kim <emacs18@gmail.com>
;; Maintainer: Richard Kim <emacs18@gmail.com>
;; Created: June 2002
;; Keywords: syntax

View file

@ -2,7 +2,6 @@
;; Copyright (C) 2015-2019 Free Software Foundation, Inc.
;; Maintainer: emacs-devel@gnu.org
;; Keywords: matching
;; This file is part of GNU Emacs.

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1985, 2001-2019 Free Software Foundation, Inc.
;; Author: K. Shane Hartman
;; Maintainer: emacs-devel@gnu.org
;; Keywords: convenience
;; This file is part of GNU Emacs.

View file

@ -4,7 +4,6 @@
;; Inc.
;; Author: Olin Shivers <olin.shivers@cs.cmu.edu>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: processes, lisp
;; This file is part of GNU Emacs.

View file

@ -4,7 +4,6 @@
;; Author: Olin Shivers <shivers@cs.cmu.edu>
;; Simon Marshall <simon@gnu.org>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: processes
;; Package: emacs

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1990, 1993, 1995, 1997, 2001-2019 Free Software
;; Foundation, Inc.
;; Maintainer: emacs-devel@gnu.org
;; Keywords: abbrev convenience
;; Author: Jim Salem <alem@bbnplanet.com> of Thinking Machines Inc.
;; (ideas suggested by Brewster Kahle)

View file

@ -7,7 +7,7 @@
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H14PRO021
;; Author: Kenichi HANDA <handa@etl.go.jp>
;; Author: Kenichi Handa <handa@gnu.org>
;; (according to ack.texi)
;; Keywords: mule, multilingual, character composition
;; Package: emacs

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1996-1997, 1999-2019 Free Software Foundation, Inc.
;;
;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: help, faces
;; Package: emacs
@ -1827,20 +1826,9 @@ item in another window.\n\n"))
(" `-" "bottom")))
(defun custom-browse-insert-prefix (prefix)
"Insert PREFIX. On XEmacs convert it to line graphics."
;; Fixme: do graphics.
(if nil ; (featurep 'xemacs)
(progn
(insert "*")
(while (not (string-equal prefix ""))
(let ((entry (substring prefix 0 3)))
(setq prefix (substring prefix 3))
(let ((overlay (make-overlay (1- (point)) (point) nil t nil))
(name (nth 1 (assoc entry custom-browse-alist))))
(overlay-put overlay 'end-glyph (widget-glyph-find name entry))
(overlay-put overlay 'start-open t)
(overlay-put overlay 'end-open t)))))
(insert prefix)))
"Insert PREFIX."
(declare (obsolete insert "27.1"))
(insert prefix))
;;; Modification of Basic Widgets.
;;
@ -4043,7 +4031,7 @@ If GROUPS-ONLY is non-nil, return only those members that are groups."
(cond ((and (eq custom-buffer-style 'tree)
(eq state 'hidden)
(or members (custom-unloaded-widget-p widget)))
(custom-browse-insert-prefix prefix)
(insert prefix)
(push (widget-create-child-and-convert
widget 'custom-browse-visibility
:tag "+")
@ -4056,19 +4044,17 @@ If GROUPS-ONLY is non-nil, return only those members that are groups."
(widget-put widget :buttons buttons))
((and (eq custom-buffer-style 'tree)
(zerop (length members)))
(custom-browse-insert-prefix prefix)
(insert "[ ]-- ")
(insert prefix "[ ]-- ")
(push (widget-create-child-and-convert
widget 'custom-browse-group-tag)
buttons)
(insert " " tag "\n")
(widget-put widget :buttons buttons))
((eq custom-buffer-style 'tree)
(custom-browse-insert-prefix prefix)
(insert prefix)
(if (zerop (length members))
(progn
(custom-browse-insert-prefix prefix)
(insert "[ ]-- ")
(insert prefix "[ ]-- ")
;; (widget-glyph-insert nil "[ ]" "empty")
;; (widget-glyph-insert nil "-- " "horizontal")
(push (widget-create-child-and-convert

View file

@ -648,6 +648,19 @@ since it could result in memory overflow and make Emacs crash."
(const :tag "Count lines from beginning of narrowed region"
:value nil))
"26.1")
(display-fill-column-indicator display-fill-column-indicator
boolean "27.1")
(display-fill-column-indicator-column display-fill-column-indicator
(choice
(const :tag "Use fill-column variable"
:value t)
(const :tag "Fixed column number"
:value 70
:format "%v"))
integer "27.1")
(display-fill-column-indicator-character display-fill-column-indicator
character "27.1")
;; xfaces.c
(scalable-fonts-allowed display boolean "22.1")
;; xfns.c

View file

@ -3,7 +3,6 @@
;; Copyright (C) 2001-2019 Free Software Foundation, Inc.
;;
;; Author: Alex Schroeder <alex@gnu.org>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: help, faces
;; Package: emacs

View file

@ -4,7 +4,6 @@
;; Inc.
;;
;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: help, faces
;; Package: emacs
@ -56,8 +55,14 @@ Otherwise, if symbol has a `saved-value' property, it will evaluate
the car of that and use it as the default binding for symbol.
Otherwise, EXP will be evaluated and used as the default binding for
symbol."
(eval `(defvar ,symbol ,(let ((sv (get symbol 'saved-value)))
(if sv (car sv) exp)))))
(condition-case nil
(default-toplevel-value symbol) ;Test presence of default value.
(void-variable
;; The var is not initialized yet.
(set-default-toplevel-value
symbol (eval (let ((sv (get symbol 'saved-value)))
(if sv (car sv) exp))
t)))))
(defun custom-initialize-set (symbol exp)
"Initialize SYMBOL based on EXP.
@ -188,18 +193,13 @@ set to nil, as the value is no longer rogue."
(t
(custom-handle-keyword symbol keyword value
'custom-variable))))))
;; Set the docstring, record the var on load-history, as well
;; as set the special-variable-p flag.
(internal--define-uninitialized-variable symbol doc)
(put symbol 'custom-requests requests)
;; Do the actual initialization.
(unless custom-dont-initialize
(funcall initialize symbol default)))
;; Use defvar to set the docstring as well as the special-variable-p flag.
;; FIXME: We should reproduce more of `defvar's behavior, such as the warning
;; when the var is currently let-bound.
(if (not (default-boundp symbol))
;; Don't use defvar to avoid setting a default-value when undesired.
(when doc (put symbol 'variable-documentation doc))
(eval `(defvar ,symbol nil ,@(when doc (list doc)))))
(push symbol current-load-list)
(run-hooks 'custom-define-hook)
symbol)

View file

@ -6,7 +6,6 @@
;; Author: Don Morrison
;; Lars Lindberg
;; (according to ack.texi)
;; Maintainer: emacs-devel@gnu.org
;; Created: 16 Mars 1992
;; Lindberg's last update version: 5.7
;; Keywords: abbrev expand completion convenience

View file

@ -1,12 +1,12 @@
;;; delim-col.el --- prettify all columns in a region or rectangle
;;; delim-col.el --- prettify all columns in a region or rectangle -*- lexical-binding: t; -*-
;; Copyright (C) 1999-2019 Free Software Foundation, Inc.
;; Author: Vinicius Jose Latorre <viniciusjl.gnu@gmail.com>
;; Maintainer: Vinicius Jose Latorre <viniciusjl.gnu@gmail.com>
;; Version: 2.1
;; Keywords: internal
;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
;; Keywords: convenience text
;; X-URL: https://www.emacswiki.org/emacs/ViniciusJoseLatorre
;; This file is part of GNU Emacs.
@ -27,11 +27,6 @@
;; delim-col helps to prettify columns in a text region or rectangle.
;;
;; To use it, make sure that this file is in load-path and insert in your
;; .emacs:
;;
;; (require 'delim-col)
;;
;; If you have, for example, the following columns:
;;
;; a b c d
@ -91,9 +86,9 @@
;; aaa [ <bbb>, <cccc> ] dddd
;; aa [ <bb> , <ccccccc> ] ddd
;;
;; Note that `delimit-columns-region' operates over all text region
;; selected, extending the region start to the beginning of line and the
;; region end to the end of line. While `delimit-columns-rectangle'
;; Note that `delimit-columns-region' operates over the entire selected
;; text region, extending the region start to the beginning of line and
;; the region end to the end of line. While `delimit-columns-rectangle'
;; operates over the text rectangle selected which rectangle diagonal is
;; given by the region start and end.
;;
@ -117,6 +112,7 @@
;;; Code:
(require 'rect)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; User Options:
@ -125,6 +121,7 @@
"Prettify columns."
:link '(emacs-library-link :tag "Source Lisp File" "delim-col.el")
:prefix "delimit-columns-"
:group 'convenience
:group 'text)
(defcustom delimit-columns-str-before ""
@ -213,10 +210,11 @@ See also `delimit-columns-end' for documentation.
The following relation must hold:
0 <= delimit-columns-start <= delimit-columns-end
The column number start from 0 and it's relative to the beginning of selected
region. So if you selected a text region, the first column (column 0) is
located at beginning of line. If you selected a text rectangle, the first
column (column 0) is located at left corner."
The column number starts at 0 and is relative to the beginning of
the selected region. So if you select a text region, the first
column (column 0) is located at the beginning of line. If you
select a text rectangle, the first column (column 0) is located
at the left corner."
:type '(integer :tag "Column Start")
:group 'columns)
@ -228,10 +226,11 @@ See also `delimit-columns-start' for documentation.
The following relation must hold:
0 <= delimit-columns-start <= delimit-columns-end
The column number start from 0 and it's relative to the beginning of selected
region. So if you selected a text region, the first column (column 0) is
located at beginning of line. If you selected a text rectangle, the first
column (column 0) is located at left corner."
The column number starts at 0 and is relative to the beginning of
the selected region. So if you select a text region, the first
column (column 0) is located at the beginning of line. If you
select a text rectangle, the first column (column 0) is located
at the left corner."
:type '(integer :tag "Column End")
:group 'columns)
@ -247,20 +246,20 @@ column (column 0) is located at left corner."
;;;###autoload
(defun delimit-columns-customize ()
"Customization of `columns' group."
"Customize the `columns' group."
(interactive)
(customize-group 'columns))
(defmacro delimit-columns-str (str)
`(if (stringp ,str) ,str ""))
(defun delimit-columns-str (str)
(if (stringp str) str ""))
;;;###autoload
(defun delimit-columns-region (start end)
"Prettify all columns in a text region.
START and END delimits the text region."
START and END delimit the text region."
(interactive "*r")
(let ((delimit-columns-str-before
(delimit-columns-str delimit-columns-str-before))
@ -273,8 +272,7 @@ START and END delimits the text region."
(delimit-columns-after
(delimit-columns-str delimit-columns-after))
(delimit-columns-start
(if (and (integerp delimit-columns-start)
(>= delimit-columns-start 0))
(if (natnump delimit-columns-start)
delimit-columns-start
0))
(delimit-columns-end
@ -309,14 +307,11 @@ START and END delimits the text region."
(set-marker the-end nil)))))
(require 'rect)
;;;###autoload
(defun delimit-columns-rectangle (start end)
"Prettify all columns in a text rectangle.
START and END delimits the corners of text rectangle."
START and END delimit the corners of the text rectangle."
(interactive "*r")
(let ((delimit-columns-str-before
(delimit-columns-str delimit-columns-str-before))
@ -329,8 +324,7 @@ START and END delimits the corners of text rectangle."
(delimit-columns-after
(delimit-columns-str delimit-columns-after))
(delimit-columns-start
(if (and (integerp delimit-columns-start)
(>= delimit-columns-start 0))
(if (natnump delimit-columns-start)
delimit-columns-start
0))
(delimit-columns-end
@ -344,11 +338,11 @@ START and END delimits the corners of text rectangle."
;; get maximum length for each column
(and delimit-columns-format
(save-excursion
(operate-on-rectangle 'delimit-columns-rectangle-max
(operate-on-rectangle #'delimit-columns-rectangle-max
start the-end nil)))
;; prettify columns
(save-excursion
(operate-on-rectangle 'delimit-columns-rectangle-line
(operate-on-rectangle #'delimit-columns-rectangle-line
start the-end nil))
;; nullify markers
(set-marker delimit-columns-limit nil)
@ -359,7 +353,7 @@ START and END delimits the corners of text rectangle."
;; Internal Variables and Functions:
(defun delimit-columns-rectangle-max (startpos &optional _ignore1 _ignore2)
(defun delimit-columns-rectangle-max (startpos &optional _begextra _endextra)
(set-marker delimit-columns-limit (point))
(goto-char startpos)
(let ((ncol 1)
@ -392,7 +386,7 @@ START and END delimits the corners of text rectangle."
(setq values (cdr values)))))
(defun delimit-columns-rectangle-line (startpos &optional _ignore1 _ignore2)
(defun delimit-columns-rectangle-line (startpos &optional _begextra _endextra)
(let ((len (length delimit-columns-max))
(ncol 0)
origin)
@ -442,8 +436,7 @@ START and END delimits the corners of text rectangle."
((eq delimit-columns-format 'padding)
(insert spaces delimit-columns-after delimit-columns-str-after))
(t
(insert delimit-columns-after spaces delimit-columns-str-after))
))
(insert delimit-columns-after spaces delimit-columns-str-after))))
(goto-char (max (point) delimit-columns-limit))))
@ -466,8 +459,7 @@ START and END delimits the corners of text rectangle."
(insert delimit-columns-after
delimit-columns-str-separator
spaces
delimit-columns-before))
))
delimit-columns-before))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

View file

@ -4,7 +4,6 @@
;; Inc.
;; Author: Matthieu Devin <devin@lucid.com>
;; Maintainer: emacs-devel@gnu.org
;; Created: 14 Jul 92
;; Keywords: convenience emulations

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1994-1996, 2001-2019 Free Software Foundation, Inc.
;; Author: Boris Goldowsky <boris@gnu.org>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: faces, i18n, Unicode, multilingual
;; This file is part of GNU Emacs.

View file

@ -4,7 +4,6 @@
;; Foundation, Inc.
;; Author: Sebastian Kremer <sk@thp.uni-koeln.de>.
;; Maintainer: emacs-devel@gnu.org
;; Keywords: files
;; Package: emacs
@ -246,9 +245,11 @@ Examples of PREDICATE:
(lambda ()
(dired-mark-if
(member (dired-get-filename nil t) file-list2) nil)))
(message "Marked in dir1: %s files, in dir2: %s files"
(length file-list1)
(length file-list2))))
(message "Marked in dir1: %s, in dir2: %s"
(format-message (ngettext "%d file" "%d files" (length file-list1))
(length file-list1))
(format-message (ngettext "%d file" "%d files" (length file-list2))
(length file-list2)))))
(defun dired-file-set-difference (list1 list2 predicate)
"Combine LIST1 and LIST2 using a set-difference operation.
@ -1065,7 +1066,9 @@ and `dired-compress-files-alist'."
(shell-quote-argument (file-name-nondirectory
file-desc)))
in-files " "))))))
(message "Compressed %d file(s) to %s"
(message (ngettext "Compressed %d file to %s"
"Compressed %d files to %s"
(length in-files))
(length in-files)
(file-name-nondirectory out-file)))))))
@ -1193,12 +1196,14 @@ Return nil if no change in files."
(string (if (eq op-symbol 'compress) "Compress or uncompress"
(capitalize (symbol-name op-symbol)))))
(if (not failures)
(message "%s: %d file%s."
string total (dired-plural-s total))
(message (ngettext "%s: %d file." "%s: %d files." total)
string total)
;; end this bunch of errors:
(dired-log-summary
(format "Failed to %s %d of %d file%s"
(downcase string) count total (dired-plural-s total))
(format (ngettext "Failed to %s %d of %d file"
"Failed to %s %d of %d files"
total)
(downcase string) count total)
failures)))))
;;;###autoload
@ -1798,32 +1803,36 @@ ESC or `q' to not overwrite any of the remaining files,
(progn
(push (dired-make-relative from)
failures)
(dired-log "%s `%s' to `%s' failed:\n%s\n"
(dired-log "%s: `%s' to `%s' failed:\n%s\n"
operation from to err))))))))
(cond
(dired-create-files-failures
(setq failures (nconc failures dired-create-files-failures))
(dired-log-summary
(format "%s failed for %d file%s in %d requests"
operation (length failures)
(dired-plural-s (length failures))
total)
(format (ngettext "%s failed for %d file in %d requests"
"%s failed for %d files in %d requests"
(length failures))
operation (length failures) total)
failures))
(failures
(dired-log-summary
(format "%s failed for %d of %d file%s"
operation (length failures)
total (dired-plural-s total))
(format (ngettext "%s: %d of %d file failed"
"%s: %d of %d files failed"
total)
operation (length failures) total)
failures))
(skipped
(dired-log-summary
(format "%s: %d of %d file%s skipped"
operation (length skipped) total
(dired-plural-s total))
(format (ngettext "%s: %d of %d file skipped"
"%s: %d of %d files skipped"
total)
operation (length skipped) total)
skipped))
(t
(message "%s: %s file%s"
operation success-count (dired-plural-s success-count)))))
(message (ngettext "%s: %d file done"
"%s: %d files done"
success-count)
operation success-count))))
(dired-move-to-filename))
(defun dired-do-create-files (op-symbol file-creator operation arg
@ -2839,6 +2848,8 @@ is part of a file name (i.e., has the text property `dired-filename')."
(multi-isearch-files-regexp
(dired-get-marked-files nil nil 'dired-nondirectory-p nil t)))
(declare-function fileloop-continue "fileloop" ())
;;;###autoload
(defun dired-do-search (regexp)
"Search through all marked files for a match for REGEXP.

View file

@ -159,7 +159,7 @@ See Info node `(dired-x) Omitting Variables' for more information."
(put 'dired-omit-mode 'safe-local-variable 'booleanp)
(defcustom dired-omit-files "^\\.?#\\|^\\.$\\|^\\.\\.$"
(defcustom dired-omit-files "\\`[.]?#\\|\\`[.][.]?\\'"
"Filenames matching this regexp will not be displayed.
This only has effect when `dired-omit-mode' is t. See interactive function
`dired-omit-mode' (\\[dired-omit-mode]) and variable

View file

@ -4,7 +4,6 @@
;; Foundation, Inc.
;; Author: Sebastian Kremer <sk@thp.uni-koeln.de>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: files
;; Package: emacs
@ -2148,6 +2147,7 @@ Keybindings:
(setq buffer-invisibility-spec (list t)))
(setq-local revert-buffer-function #'dired-revert)
(setq-local buffer-stale-function #'dired-buffer-stale-p)
(setq-local buffer-auto-revert-by-notification t)
(setq-local page-delimiter "\n\n")
(setq-local dired-directory (or dirname default-directory))
;; list-buffers uses this to display the dir being edited in this buffer.
@ -3212,9 +3212,10 @@ non-empty directories is allowed."
(if (not failures)
(progress-reporter-done progress-reporter)
(dired-log-summary
(format "%d of %d deletion%s failed"
(length failures) count
(dired-plural-s count))
(format (ngettext "%d of %d deletion failed"
"%d of %d deletions failed"
count)
(length failures) count)
failures)))))
(message "(No deletions performed)")))
(dired-move-to-filename))
@ -3267,8 +3268,9 @@ confirmation. To disable the confirmation, see
(let ((buf-list (dired-buffers-for-dir (expand-file-name fn))))
(and buf-list
(and dired-clean-confirm-killing-deleted-buffers
(y-or-n-p (format "Kill Dired buffer%s of %s, too? "
(dired-plural-s (length buf-list))
(y-or-n-p (format (ngettext "Kill Dired buffer of %s, too? "
"Kill Dired buffers of %s, too? "
(length buf-list))
(file-name-nondirectory fn))))
(dolist (buf buf-list)
(kill-buffer buf))))))

View file

@ -179,8 +179,6 @@ and ends with a forward slash."
dir))
(define-obsolete-function-alias 'dirtrack-toggle 'dirtrack-mode "23.1")
(define-obsolete-variable-alias 'dirtrackp 'dirtrack-mode "23.1")
;;;###autoload
(define-minor-mode dirtrack-mode
"Toggle directory tracking in shell buffers (Dirtrack mode).

View file

@ -5,7 +5,6 @@
;; Author: Erik Naggum <erik@naggum.no>
;; Based on a previous version by Howard Gayle
;; Maintainer: emacs-devel@gnu.org
;; Keywords: i18n
;; Package: emacs

View file

@ -0,0 +1,77 @@
;;; display-fill-column-indicator.el --- interface for display-fill-column-indicator -*- lexical-binding: t -*-
;; Copyright (C) 2019 Free Software Foundation, Inc.
;; Keywords: convenience
;; This file is part of GNU Emacs.
;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
;;; Commentary:
;; Provides a minor mode interface for `display-fill-column-indicator'.
;;
;; Toggle display of the column indicator with M-x
;; display-fill-column-indicator-mode. To enable the indicator in
;; all buffers, use M-x global-display-fill-column-indicator-mode.
;; NOTE: Customization variables for
;; `display-fill-column-indicator-column' and
;; `display-fill-column-indicator-char' itself are defined in
;; cus-start.el.
;;; Code:
(defgroup display-fill-column-indicator nil
"Display a fill column indicator in the buffer."
:group 'convenience
:group 'display)
;;;###autoload
(define-minor-mode display-fill-column-indicator-mode
"Toggle display of fill-column indicator.
This uses `display-fill-column-indicator' internally.
To change the position of the column displayed by default
customize `display-fill-column-indicator-column'. You can change the
character for the indicator setting `display-fill-column-indicator-character'."
:lighter nil
(if display-fill-column-indicator-mode
(progn
(setq display-fill-column-indicator t)
(unless display-fill-column-indicator-character
(if (and (char-displayable-p ?\u2502)
(or (not (display-graphic-p))
(eq (aref (query-font (car (internal-char-font nil ?\u2502))) 0)
(face-font 'default))))
(setq display-fill-column-indicator-character ?\u2502)
(setq display-fill-column-indicator-character ?|))))
(setq display-fill-column-indicator nil)))
(defun display-fill-column-indicator--turn-on ()
"Turn on `display-fill-column-indicator-mode'."
(unless (or (minibufferp)
(and (daemonp) (null (frame-parameter nil 'client))))
(display-fill-column-indicator-mode)))
;;;###autoload
(define-globalized-minor-mode global-display-fill-column-indicator-mode
display-fill-column-indicator-mode display-fill-column-indicator--turn-on)
(provide 'display-fill-column-indicator)
;;; display-fill-column-indicator.el ends here

View file

@ -2,7 +2,6 @@
;; Copyright (C) 2017-2019 Free Software Foundation, Inc.
;; Maintainer: emacs-devel@gnu.org
;; Keywords: convenience
;; This file is part of GNU Emacs.

View file

@ -3,7 +3,6 @@
;; Copyright (C) 2005-2019 Free Software Foundation, Inc.
;; Author: Jan Djärv <jan.h.d@swipnet.se>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: window, drag, drop
;; Package: emacs

View file

@ -3,7 +3,6 @@
;; Copyright (C) 1991, 1993, 1995-1996, 2001-2019 Free Software
;; Foundation, Inc.
;; Maintainer: emacs-devel@gnu.org
;; Keywords: internal
;; Package: emacs

View file

@ -2,7 +2,6 @@
;; Copyright (C) 1998, 2001-2019 Free Software Foundation, Inc.
;; Maintainer: emacs-devel@gnu.org
;; Keywords: internal
;; Package: emacs

View file

@ -3,7 +3,6 @@
;; Copyright (C) 2009-2019 Free Software Foundation, Inc.
;; Author: Jan Djärv <jan.h.d@swipnet.se>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: font, system-font, tool-bar-style
;; Package: emacs

View file

@ -4,7 +4,6 @@
;; Inc.
;; Author: Richard Mlynarik <mly@ai.mit.edu>
;; Maintainer: emacs-devel@gnu.org
;; Keywords: convenience
;; This file is part of GNU Emacs.

Some files were not shown because too many files have changed in this diff Show more