aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2016-01-30 11:43:26 -0800
committerPaul Eggert2016-01-30 11:43:26 -0800
commitcb4e054e41cdb7e398351a5ae8224759e721349e (patch)
treeae2bec4f10425bd61e2a90563edc178d382bb4b8
parente6d575316a42946aac6d83c9587f09afd1a59d98 (diff)
parent60902756b0d794b16b9c1c67c4c40a3ac04d1c1b (diff)
downloademacs-cb4e054e41cdb7e398351a5ae8224759e721349e.tar.gz
emacs-cb4e054e41cdb7e398351a5ae8224759e721349e.zip
-
-rwxr-xr-xadmin/check-doc-strings3
-rwxr-xr-xbuild-aux/gitlog-to-changelog4
-rwxr-xr-xbuild-aux/update-copyright4
-rw-r--r--configure.ac16
-rw-r--r--doc/emacs/anti.texi2
-rw-r--r--doc/emacs/custom.texi4
-rw-r--r--doc/emacs/mule.texi2
-rw-r--r--doc/lispref/control.texi10
-rw-r--r--doc/lispref/display.texi2
-rw-r--r--doc/lispref/frames.texi6
-rw-r--r--doc/lispref/functions.texi6
-rw-r--r--doc/lispref/nonascii.texi6
-rw-r--r--doc/lispref/streams.texi6
-rw-r--r--doc/lispref/variables.texi39
-rw-r--r--doc/lispref/windows.texi18
-rw-r--r--doc/misc/dbus.texi4
-rw-r--r--doc/misc/eww.texi4
-rw-r--r--doc/misc/flymake.texi2
-rw-r--r--doc/misc/octave-mode.texi2
-rw-r--r--doc/misc/org.texi6
-rw-r--r--doc/misc/reftex.texi10
-rw-r--r--doc/misc/texinfo.tex25
-rw-r--r--doc/misc/tramp.texi23
-rw-r--r--doc/misc/url.texi2
-rw-r--r--doc/misc/wisent.texi4
-rw-r--r--etc/NEWS32
-rwxr-xr-xlib-src/rcs2log4
-rw-r--r--lib/acl-internal.c2
-rw-r--r--lib/acl-internal.h2
-rw-r--r--lib/binary-io.h2
-rw-r--r--lib/dirent.in.h7
-rw-r--r--lib/dirfd.c66
-rw-r--r--lib/dup2.c51
-rw-r--r--lib/fcntl.c87
-rw-r--r--lib/fdopendir.c36
-rw-r--r--lib/get-permissions.c2
-rw-r--r--lib/mktime.c12
-rw-r--r--lib/openat-proc.c144
-rw-r--r--lib/sig2str.h2
-rw-r--r--lib/stdint.in.h5
-rw-r--r--lib/strftime.c2
-rw-r--r--lisp/ChangeLog.174
-rw-r--r--lisp/autorevert.el4
-rw-r--r--lisp/cedet/mode-local.el4
-rw-r--r--lisp/cedet/semantic/senator.el2
-rw-r--r--lisp/cedet/semantic/wisent.el2
-rw-r--r--lisp/dos-fns.el2
-rw-r--r--lisp/emacs-lisp/ert.el6
-rw-r--r--lisp/emacs-lisp/pcase.el2
-rw-r--r--lisp/emacs-lisp/tabulated-list.el1
-rw-r--r--lisp/files-x.el29
-rw-r--r--lisp/files.el123
-rw-r--r--lisp/font-lock.el8
-rw-r--r--lisp/frameset.el14
-rw-r--r--lisp/gnus/gnus-agent.el2
-rw-r--r--lisp/gnus/gnus-art.el4
-rw-r--r--lisp/gnus/mm-util.el6
-rw-r--r--lisp/international/characters.el2
-rw-r--r--lisp/ldefs-boot.el6
-rw-r--r--lisp/mail/mailclient.el2
-rw-r--r--lisp/man.el2
-rw-r--r--lisp/mh-e/mh-search.el2
-rw-r--r--lisp/net/browse-url.el8
-rw-r--r--lisp/net/nsm.el2
-rw-r--r--lisp/net/tramp-cmds.el2
-rw-r--r--lisp/net/tramp-gvfs.el2
-rw-r--r--lisp/org/ChangeLog.12
-rw-r--r--lisp/org/org-crypt.el2
-rw-r--r--lisp/org/org-element.el10
-rw-r--r--lisp/org/org-feed.el2
-rw-r--r--lisp/org/org-mobile.el2
-rw-r--r--lisp/org/org.el2
-rw-r--r--lisp/org/ox-ascii.el6
-rw-r--r--lisp/org/ox-icalendar.el2
-rw-r--r--lisp/org/ox-publish.el2
-rw-r--r--lisp/org/ox.el18
-rw-r--r--lisp/play/gamegrid.el2
-rw-r--r--lisp/play/gomoku.el2
-rw-r--r--lisp/progmodes/antlr-mode.el4
-rw-r--r--lisp/progmodes/cc-engine.el6
-rw-r--r--lisp/progmodes/etags.el2
-rw-r--r--lisp/progmodes/python.el4
-rw-r--r--lisp/progmodes/vhdl-mode.el4
-rw-r--r--lisp/simple.el2
-rw-r--r--lisp/strokes.el2
-rw-r--r--lisp/textmodes/flyspell.el3
-rw-r--r--lisp/textmodes/ispell.el2
-rw-r--r--lisp/textmodes/reftex-vars.el2
-rw-r--r--lisp/tree-widget.el2
-rw-r--r--lisp/vc/pcvs.el4
-rw-r--r--lisp/window.el2
-rw-r--r--lisp/xwidget.el113
-rw-r--r--m4/dirfd.m416
-rw-r--r--m4/dup2.m414
-rw-r--r--m4/fcntl.m413
-rw-r--r--m4/gnulib-comp.m43
-rw-r--r--m4/utimes.m422
-rw-r--r--src/bidi.c2
-rw-r--r--src/emacs.c2
-rw-r--r--src/lisp.h2
-rw-r--r--src/nsterm.m45
-rw-r--r--src/w32.c2
-rw-r--r--src/w32heap.c4
-rw-r--r--src/w32term.c4
-rw-r--r--src/window.c2
-rw-r--r--src/xdisp.c4
-rw-r--r--src/xfaces.c2
-rw-r--r--src/xwidget.c12
-rw-r--r--test/ChangeLog.14
-rw-r--r--test/manual/etags/c-src/emacs/src/lisp.h2
-rw-r--r--test/manual/etags/el-src/emacs/lisp/progmodes/etags.el2
111 files changed, 807 insertions, 461 deletions
diff --git a/admin/check-doc-strings b/admin/check-doc-strings
index 13e8b0cd8e7..63856d32871 100755
--- a/admin/check-doc-strings
+++ b/admin/check-doc-strings
@@ -1,5 +1,5 @@
1: #-*- Perl -*- 1: #-*- Perl -*-
2eval 'exec perl -S $0 ${1+"$@"}' # Portability kludge 2eval 'exec perl -S $0 "$@"' # Portability kludge
3 if 0; 3 if 0;
4 4
5# Author: Martin Buchholz 5# Author: Martin Buchholz
@@ -299,4 +299,3 @@ foreach my $fun (sort keys %texi_funtype) {
299 print "nuke-this-doc: $fun $texi_funtype{$fun}\n"; 299 print "nuke-this-doc: $fun $texi_funtype{$fun}\n";
300 } 300 }
301} 301}
302
diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog
index a42650478a2..a2513d0efc7 100755
--- a/build-aux/gitlog-to-changelog
+++ b/build-aux/gitlog-to-changelog
@@ -1,9 +1,9 @@
1eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}' 1eval '(exit $?0)' && eval 'exec perl -wS "$0" "$@"'
2 & eval 'exec perl -wS "$0" $argv:q' 2 & eval 'exec perl -wS "$0" $argv:q'
3 if 0; 3 if 0;
4# Convert git log output to ChangeLog format. 4# Convert git log output to ChangeLog format.
5 5
6my $VERSION = '2016-01-11 22:04'; # UTC 6my $VERSION = '2016-01-12 23:09'; # UTC
7# The definition above must lie within the first 8 lines in order 7# The definition above must lie within the first 8 lines in order
8# for the Emacs time-stamp write hook (at end) to update it. 8# for the Emacs time-stamp write hook (at end) to update it.
9# If you change this file with Emacs, please let the write hook 9# If you change this file with Emacs, please let the write hook
diff --git a/build-aux/update-copyright b/build-aux/update-copyright
index 8c6ee1fdd3c..17ee6b14d11 100755
--- a/build-aux/update-copyright
+++ b/build-aux/update-copyright
@@ -1,9 +1,9 @@
1eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}' 1eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" "$@"'
2 & eval 'exec perl -wS -0777 -pi "$0" $argv:q' 2 & eval 'exec perl -wS -0777 -pi "$0" $argv:q'
3 if 0; 3 if 0;
4# Update an FSF copyright year list to include the current year. 4# Update an FSF copyright year list to include the current year.
5 5
6my $VERSION = '2016-01-11.22:04'; # UTC 6my $VERSION = '2016-01-12.23:13'; # UTC
7 7
8# Copyright (C) 2009-2016 Free Software Foundation, Inc. 8# Copyright (C) 2009-2016 Free Software Foundation, Inc.
9# 9#
diff --git a/configure.ac b/configure.ac
index 50bc04b4c87..4a0dc568742 100644
--- a/configure.ac
+++ b/configure.ac
@@ -33,7 +33,7 @@ emacs_config_options=
33optsep= 33optsep=
34dnl This is the documented way to record the args passed to configure, 34dnl This is the documented way to record the args passed to configure,
35dnl rather than $ac_configure_args. 35dnl rather than $ac_configure_args.
36for opt in ${1+"$@"} CFLAGS CPPFLAGS LDFLAGS; do 36for opt in "$@" CFLAGS CPPFLAGS LDFLAGS; do
37 case $opt in 37 case $opt in
38 -n | --no-create | --no-recursion) 38 -n | --no-create | --no-recursion)
39 continue ;; 39 continue ;;
@@ -330,7 +330,7 @@ OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support])
330OPTION_DEFAULT_ON([gif],[don't compile with GIF image support]) 330OPTION_DEFAULT_ON([gif],[don't compile with GIF image support])
331OPTION_DEFAULT_ON([png],[don't compile with PNG image support]) 331OPTION_DEFAULT_ON([png],[don't compile with PNG image support])
332OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support]) 332OPTION_DEFAULT_ON([rsvg],[don't compile with SVG image support])
333OPTION_DEFAULT_OFF([cairo],[compile with Cairo drawing]) 333OPTION_DEFAULT_OFF([cairo],[compile with Cairo drawing (experimental)])
334OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support]) 334OPTION_DEFAULT_ON([xml2],[don't compile with XML parsing support])
335OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support]) 335OPTION_DEFAULT_ON([imagemagick],[don't compile with ImageMagick image support])
336 336
@@ -3141,13 +3141,13 @@ AC_SUBST(LIBOTF_LIBS)
3141AC_SUBST(M17N_FLT_CFLAGS) 3141AC_SUBST(M17N_FLT_CFLAGS)
3142AC_SUBST(M17N_FLT_LIBS) 3142AC_SUBST(M17N_FLT_LIBS)
3143 3143
3144USE_CAIRO=no 3144HAVE_CAIRO=no
3145if test "${HAVE_X11}" = "yes"; then 3145if test "${HAVE_X11}" = "yes"; then
3146 if test "${with_cairo}" != "no"; then 3146 if test "${with_cairo}" != "no"; then
3147 CAIRO_REQUIRED=1.12.0 3147 CAIRO_REQUIRED=1.12.0
3148 CAIRO_MODULE="cairo >= $CAIRO_REQUIRED" 3148 CAIRO_MODULE="cairo >= $CAIRO_REQUIRED"
3149 EMACS_CHECK_MODULES(CAIRO, $CAIRO_MODULE, USE_CAIRO=yes, :) 3149 EMACS_CHECK_MODULES(CAIRO, $CAIRO_MODULE)
3150 if test $USE_CAIRO = yes; then 3150 if test $HAVE_CAIRO = yes; then
3151 AC_DEFINE(USE_CAIRO, 1, [Define to 1 if using cairo.]) 3151 AC_DEFINE(USE_CAIRO, 1, [Define to 1 if using cairo.])
3152 else 3152 else
3153 AC_MSG_ERROR([cairo requested but not found.]) 3153 AC_MSG_ERROR([cairo requested but not found.])
@@ -4920,7 +4920,7 @@ if test "${HAVE_X_WINDOWS}" = "yes" ; then
4920 XMENU_OBJ=xmenu.o 4920 XMENU_OBJ=xmenu.o
4921 XOBJ="xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o" 4921 XOBJ="xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o"
4922 FONT_OBJ=xfont.o 4922 FONT_OBJ=xfont.o
4923 if test "$USE_CAIRO" = "yes"; then 4923 if test "$HAVE_CAIRO" = "yes"; then
4924 FONT_OBJ="ftfont.o ftcrfont.o" 4924 FONT_OBJ="ftfont.o ftcrfont.o"
4925 elif test "$HAVE_XFT" = "yes"; then 4925 elif test "$HAVE_XFT" = "yes"; then
4926 FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o" 4926 FONT_OBJ="$FONT_OBJ ftfont.o xftfont.o ftxfont.o"
@@ -5268,7 +5268,7 @@ for opt in XAW3D XPM JPEG TIFF GIF PNG RSVG CAIRO IMAGEMAGICK SOUND GPM DBUS \
5268 5268
5269 case $opt in 5269 case $opt in
5270 NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;; 5270 NOTIFY|ACL) eval val=\${${opt}_SUMMARY} ;;
5271 CAIRO|TOOLKIT_SCROLL_BARS|X_TOOLKIT) eval val=\${USE_$opt} ;; 5271 TOOLKIT_SCROLL_BARS|X_TOOLKIT) eval val=\${USE_$opt} ;;
5272 *) eval val=\${HAVE_$opt} ;; 5272 *) eval val=\${HAVE_$opt} ;;
5273 esac 5273 esac
5274 case x$val in 5274 case x$val in
@@ -5295,7 +5295,7 @@ AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D
5295 Does Emacs use a gif library? ${HAVE_GIF} $LIBGIF 5295 Does Emacs use a gif library? ${HAVE_GIF} $LIBGIF
5296 Does Emacs use a png library? ${HAVE_PNG} $LIBPNG 5296 Does Emacs use a png library? ${HAVE_PNG} $LIBPNG
5297 Does Emacs use -lrsvg-2? ${HAVE_RSVG} 5297 Does Emacs use -lrsvg-2? ${HAVE_RSVG}
5298 Does Emacs use cairo? ${USE_CAIRO} 5298 Does Emacs use cairo? ${HAVE_CAIRO}
5299 Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK} 5299 Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}
5300 Does Emacs support sound? ${HAVE_SOUND} 5300 Does Emacs support sound? ${HAVE_SOUND}
5301 Does Emacs use -lgpm? ${HAVE_GPM} 5301 Does Emacs use -lgpm? ${HAVE_GPM}
diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi
index ae13ae09a04..ece4d9456f1 100644
--- a/doc/emacs/anti.texi
+++ b/doc/emacs/anti.texi
@@ -197,7 +197,7 @@ for removing the whole bidi support when downgrading to Emacs 23.
197@item 197@item
198Horizontal scroll bars are no longer supported. Enlarge your windows 198Horizontal scroll bars are no longer supported. Enlarge your windows
199and frames instead, or use @code{truncate-lines} and the automatic 199and frames instead, or use @code{truncate-lines} and the automatic
200horizontal scrolling of text that Emacs had since time immemoriam. 200horizontal scrolling of text that Emacs had since time immemorial.
201 201
202@item 202@item
203Emacs is again counting the height of a frame's menu and its tool bar 203Emacs is again counting the height of a frame's menu and its tool bar
diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi
index 670848c65a1..7be660c85d1 100644
--- a/doc/emacs/custom.texi
+++ b/doc/emacs/custom.texi
@@ -1299,8 +1299,8 @@ named @file{.dir-locals.el}@footnote{ On MS-DOS, the name of this file
1299should be @file{_dir-locals.el}, due to limitations of the DOS 1299should be @file{_dir-locals.el}, due to limitations of the DOS
1300filesystems. If the filesystem is limited to 8+3 file names, the name 1300filesystems. If the filesystem is limited to 8+3 file names, the name
1301of the file will be truncated by the OS to @file{_dir-loc.el}. 1301of the file will be truncated by the OS to @file{_dir-loc.el}.
1302}@footnote{ You can also use files like @file{.dir-locals2.el}, which 1302}@footnote{ You can also use @file{.dir-locals-2.el}, which
1303are loaded in addition. This is useful when @file{.dir-locals.el} is 1303is loaded in addition. This is useful when @file{.dir-locals.el} is
1304under version control in a shared repository and can't be used for 1304under version control in a shared repository and can't be used for
1305personal customizations. } in a 1305personal customizations. } in a
1306directory. Whenever Emacs visits any file in that directory or any of 1306directory. Whenever Emacs visits any file in that directory or any of
diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi
index bcde81b182e..40206d902b9 100644
--- a/doc/emacs/mule.texi
+++ b/doc/emacs/mule.texi
@@ -1216,7 +1216,7 @@ using the internal Emacs representation.
1216 When Emacs runs on MS-Windows versions that are descendants of the 1216 When Emacs runs on MS-Windows versions that are descendants of the
1217NT family (Windows 2000, XP, Vista, Windows 7, and Windows 8), the 1217NT family (Windows 2000, XP, Vista, Windows 7, and Windows 8), the
1218value of @code{file-name-coding-system} is largely ignored, as Emacs 1218value of @code{file-name-coding-system} is largely ignored, as Emacs
1219by default uses APIs that allow to pass Unicode file names directly. 1219by default uses APIs that allow passing Unicode file names directly.
1220By contrast, on Windows 9X, file names are encoded using 1220By contrast, on Windows 9X, file names are encoded using
1221@code{file-name-coding-system}, which should be set to the codepage 1221@code{file-name-coding-system}, which should be set to the codepage
1222(@pxref{Coding Systems, codepage}) pertinent for the current system 1222(@pxref{Coding Systems, codepage}) pertinent for the current system
diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi
index df60347f839..6fa802d9fdd 100644
--- a/doc/lispref/control.texi
+++ b/doc/lispref/control.texi
@@ -302,8 +302,8 @@ predicate conditions that compare values of expressions against
302specific values known and written in advance. However, sometimes it 302specific values known and written in advance. However, sometimes it
303is useful to select alternatives based on more general conditions that 303is useful to select alternatives based on more general conditions that
304distinguish between broad classes of values. The @code{pcase} macro 304distinguish between broad classes of values. The @code{pcase} macro
305allows to choose between alternatives based on matching the value of 305allows you to choose between alternatives based on matching the value
306an expression against a series of patterns. A pattern can be a 306of an expression against a series of patterns. A pattern can be a
307literal value (comparison to literal values is what @code{cond} does), 307literal value (comparison to literal values is what @code{cond} does),
308or it can be a more general description of the expected structure of 308or it can be a more general description of the expected structure of
309the expression's value. 309the expression's value.
@@ -350,7 +350,7 @@ when called with the value being matched as its argument.
350@var{predfun} can be one of the possible forms described below. 350@var{predfun} can be one of the possible forms described below.
351@item (guard @var{boolean-expression}) 351@item (guard @var{boolean-expression})
352Matches if @var{boolean-expression} evaluates to non-@code{nil}. This 352Matches if @var{boolean-expression} evaluates to non-@code{nil}. This
353allows to include in a UPattern boolean conditions that refer to 353allows you to include in a UPattern boolean conditions that refer to
354symbols bound to values (including the value being matched) by 354symbols bound to values (including the value being matched) by
355previous UPatterns. Typically used inside an @code{and} UPattern, see 355previous UPatterns. Typically used inside an @code{and} UPattern, see
356below. For example, @w{@code{(and x (guard (< x 10)))}} is a pattern 356below. For example, @w{@code{(and x (guard (< x 10)))}} is a pattern
@@ -358,7 +358,7 @@ which matches any number smaller than 10 and let-binds the variable
358@code{x} to that number. 358@code{x} to that number.
359@item (let @var{upattern} @var{expression}) 359@item (let @var{upattern} @var{expression})
360Matches if the specified @var{expression} matches the specified 360Matches if the specified @var{expression} matches the specified
361@var{upattern}. This allows to match a pattern against the value of 361@var{upattern}. This allows matching a pattern against the value of
362an @emph{arbitrary} expression, not just the expression that is the 362an @emph{arbitrary} expression, not just the expression that is the
363first argument to @code{pcase}. (It is called @code{let} because 363first argument to @code{pcase}. (It is called @code{let} because
364@var{upattern} can bind symbols to values using the @var{symbol} 364@var{upattern} can bind symbols to values using the @var{symbol}
@@ -407,7 +407,7 @@ Here's an illustrative example of using UPatterns:
407 (code (message "Unknown return code %S" code))) 407 (code (message "Unknown return code %S" code)))
408@end example 408@end example
409 409
410The QPatterns are more powerful. They allow to match the value of the 410The QPatterns are more powerful. They allow matching the value of the
411@var{expression} that is the first argument of @code{pcase} against 411@var{expression} that is the first argument of @code{pcase} against
412specifications of its @emph{structure}. For example, you can specify 412specifications of its @emph{structure}. For example, you can specify
413that the value must be a list of 2 elements whose first element is a 413that the value must be a list of 2 elements whose first element is a
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index d77059916fc..eaba03d5739 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -4303,7 +4303,7 @@ divider ends above the bottom divider.
4303 Dividers can be dragged with the mouse and are therefore useful for 4303 Dividers can be dragged with the mouse and are therefore useful for
4304adjusting the sizes of adjacent windows with the mouse. They also serve 4304adjusting the sizes of adjacent windows with the mouse. They also serve
4305to visually set apart adjacent windows when no scroll bars or mode lines 4305to visually set apart adjacent windows when no scroll bars or mode lines
4306are present. The following three faces allow to customize the 4306are present. The following three faces allow the customization of the
4307appearance of dividers: 4307appearance of dividers:
4308 4308
4309@table @code 4309@table @code
diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi
index 614b7db0cac..55d72427548 100644
--- a/doc/lispref/frames.texi
+++ b/doc/lispref/frames.texi
@@ -2403,8 +2403,8 @@ The resulting mouse position is not constrained to the native frame of
2403The return value is not significant. 2403The return value is not significant.
2404@end defun 2404@end defun
2405 2405
2406On a graphical terminal the following two functions allow to retrieve 2406On a graphical terminal the following two functions allow the absolute
2407and set the absolute position of the mouse cursor. 2407position of the mouse cursor to be retrieved and set.
2408 2408
2409@defun mouse-absolute-pixel-position 2409@defun mouse-absolute-pixel-position
2410This function returns a cons cell (@var{x} . @var{y}) of the coordinates 2410This function returns a cons cell (@var{x} . @var{y}) of the coordinates
@@ -2426,7 +2426,7 @@ This predicate function returns non-@code{nil} if the mouse pointer
2426displayed on @var{frame} is visible; otherwise it returns @code{nil}. 2426displayed on @var{frame} is visible; otherwise it returns @code{nil}.
2427@var{frame} omitted or @code{nil} means the selected frame. This is 2427@var{frame} omitted or @code{nil} means the selected frame. This is
2428useful when @code{make-pointer-invisible} is set to @code{t}: it 2428useful when @code{make-pointer-invisible} is set to @code{t}: it
2429allows to know if the pointer has been hidden. 2429allows you to know if the pointer has been hidden.
2430@xref{Mouse Avoidance,,,emacs, The Emacs Manual}. 2430@xref{Mouse Avoidance,,,emacs, The Emacs Manual}.
2431@end defun 2431@end defun
2432 2432
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index c5f5b4c22c4..a2e94c34b62 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -1248,7 +1248,7 @@ Parent type: @code{array}.
1248@item font-object 1248@item font-object
1249@end table 1249@end table
1250 1250
1251The optional @var{qualifier} allows to combine several applicable 1251The optional @var{qualifier} allows combining several applicable
1252methods. If it is not present, the defined method is a @dfn{primary} 1252methods. If it is not present, the defined method is a @dfn{primary}
1253method, responsible for providing the primary implementation of the 1253method, responsible for providing the primary implementation of the
1254generic function for the specialized arguments. You can also define 1254generic function for the specialized arguments. You can also define
@@ -1270,8 +1270,8 @@ The most specific of such methods will be run before any other method.
1270Such methods normally use @code{cl-call-next-method}, described below, 1270Such methods normally use @code{cl-call-next-method}, described below,
1271to invoke the other auxiliary or primary methods. 1271to invoke the other auxiliary or primary methods.
1272@item :extra @var{string} 1272@item :extra @var{string}
1273This allows to add more methods, distinguished by @var{string}, for 1273This allows you to add more methods, distinguished by @var{string},
1274the same specializers and qualifiers. 1274for the same specializers and qualifiers.
1275@end table 1275@end table
1276@end defmac 1276@end defmac
1277 1277
diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi
index fca40238805..9cf3b5750f2 100644
--- a/doc/lispref/nonascii.texi
+++ b/doc/lispref/nonascii.texi
@@ -1338,9 +1338,9 @@ operates on the contents of @var{string} instead of bytes in the buffer.
1338@cindex null bytes, and decoding text 1338@cindex null bytes, and decoding text
1339@defvar inhibit-null-byte-detection 1339@defvar inhibit-null-byte-detection
1340If this variable has a non-@code{nil} value, null bytes are ignored 1340If this variable has a non-@code{nil} value, null bytes are ignored
1341when detecting the encoding of a region or a string. This allows to 1341when detecting the encoding of a region or a string. This allows the
1342correctly detect the encoding of text that contains null bytes, such 1342encoding of text that contains null bytes to be correctly detected,
1343as Info files with Index nodes. 1343such as Info files with Index nodes.
1344@end defvar 1344@end defvar
1345 1345
1346@defvar inhibit-iso-escape-detection 1346@defvar inhibit-iso-escape-detection
diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi
index 80c194b1bdd..41bc71e6aea 100644
--- a/doc/lispref/streams.texi
+++ b/doc/lispref/streams.texi
@@ -343,10 +343,10 @@ shared structures. @xref{Circular Objects}. Its default value is
343When reading or writing from the standard input/output streams of the 343When reading or writing from the standard input/output streams of the
344Emacs process in batch mode, it is sometimes required to make sure any 344Emacs process in batch mode, it is sometimes required to make sure any
345arbitrary binary data will be read/written verbatim, and/or that no 345arbitrary binary data will be read/written verbatim, and/or that no
346translation of newlines to or from CR-LF pairs are performed. This 346translation of newlines to or from CR-LF pairs is performed. This
347issue does not exist on Posix hosts, only on MS-Windows and MS-DOS@. 347issue does not exist on Posix hosts, only on MS-Windows and MS-DOS@.
348The following function allows to control the I/O mode of any standard 348The following function allows you to control the I/O mode of any
349stream of the Emacs process. 349standard stream of the Emacs process.
350 350
351@defun set-binary-mode stream mode 351@defun set-binary-mode stream mode
352Switch @var{stream} into binary or text I/O mode. If @var{mode} is 352Switch @var{stream} into binary or text I/O mode. If @var{mode} is
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 42701614365..6c53e9b6cca 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -1765,33 +1765,20 @@ variables: by putting them in a special file, or by defining a
1765@dfn{project class} for that directory. 1765@dfn{project class} for that directory.
1766 1766
1767@defvr Constant dir-locals-file 1767@defvr Constant dir-locals-file
1768This constant is a wildcard pattern matching the name of files where 1768This constant is the name of the file where Emacs expects to find the
1769Emacs expects to find directory-local variables. Its value is 1769directory-local variables. The name of the file is
1770@file{.dir-locals*.el}@footnote{ 1770@file{.dir-locals.el}@footnote{
1771The MS-DOS version of Emacs uses @file{_dir-locals*.el} instead, due to 1771The MS-DOS version of Emacs uses @file{_dir-locals.el} instead, due to
1772limitations of the DOS filesystems. 1772limitations of the DOS filesystems.
1773}, and the most common file name to use is @file{.dir-locals.el}. 1773}. A file by that name in a directory causes Emacs to apply its
1774 1774settings to any file in that directory or any of its subdirectories
1775Any file matching this name pattern in a directory causes Emacs to 1775(optionally, you can exclude subdirectories; see below).
1776apply its settings when visiting files in that directory or any of its 1776If some of the subdirectories have their own @file{.dir-locals.el}
1777subdirectories (optionally, you can exclude subdirectories; see 1777files, Emacs uses the settings from the deepest file it finds starting
1778below). 1778from the file's directory and moving up the directory tree. The file
1779If some of the subdirectories have their own file matching 1779specifies local variables as a specially formatted list; see
1780@file{.dir-locals*.el}, Emacs uses the settings from the deepest file 1780@ref{Directory Variables, , Per-directory Local Variables, emacs, The
1781it finds starting from the file's directory and moving up the 1781GNU Emacs Manual}, for more details.
1782directory tree. The file specifies local variables as a specially
1783formatted list; see @ref{Directory Variables, , Per-directory Local
1784Variables, emacs, The GNU Emacs Manual}, for more details.
1785
1786If the same directory contains multiple such files (for instance,
1787@file{.dir-locals.el} and @file{.dir-locals2.el}), then all of them
1788are used in @code{string<} order. This means that, if two files
1789specify different values for the same variable, the file sorted after
1790will override the value of the previous file (for instance, values in
1791@file{.dir-locals2.el} override those in @file{.dir-locals.el}). Note
1792that, because of how lexicographic order works, values in
1793@file{.dir-locals10.el} are overridden by values in @file{.dir-locals2.el}.
1794This can be avoided by using @file{.dir-locals02.el} instead.
1795@end defvr 1782@end defvr
1796 1783
1797@defun hack-dir-local-variables 1784@defun hack-dir-local-variables
diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi
index 7186791f94a..ca756e3ff7f 100644
--- a/doc/lispref/windows.texi
+++ b/doc/lispref/windows.texi
@@ -383,8 +383,8 @@ as if @var{mini} were @code{nil}.
383If it doesn't find a suitable window, this function returns @code{nil}. 383If it doesn't find a suitable window, this function returns @code{nil}.
384@end defun 384@end defun
385 385
386The following function allows to retrieve the entire window tree of a 386The following function allows the entire window tree of a frame to be
387frame: 387retrieved:
388 388
389@defun window-tree &optional frame 389@defun window-tree &optional frame
390This function returns a list representing the window tree for frame 390This function returns a list representing the window tree for frame
@@ -1476,7 +1476,7 @@ displaying a buffer only temporarily (@pxref{Temporary Displays}), and
1476you want to continue working with the initial layout. 1476you want to continue working with the initial layout.
1477 1477
1478The behavior can be fixed by making a new parent window when splitting 1478The behavior can be fixed by making a new parent window when splitting
1479@var{W2}. The variable described next allows to do that. 1479@var{W2}. The variable described next allows that to be done.
1480 1480
1481@defopt window-combination-limit 1481@defopt window-combination-limit
1482This variable controls whether splitting a window shall make a new 1482This variable controls whether splitting a window shall make a new
@@ -1579,7 +1579,7 @@ combination limit of @var{W4} (the parent window of @var{W6} and
1579 1579
1580Alternatively, the problems sketched above can be avoided by always 1580Alternatively, the problems sketched above can be avoided by always
1581resizing all windows in the same combination whenever one of its windows 1581resizing all windows in the same combination whenever one of its windows
1582is split or deleted. This also permits to split windows that would be 1582is split or deleted. This also permits splitting windows that would be
1583otherwise too small for such an operation. 1583otherwise too small for such an operation.
1584 1584
1585@defopt window-combination-resize 1585@defopt window-combination-resize
@@ -2522,11 +2522,11 @@ windows are dedicated to another buffer (@pxref{Dedicated Windows}).
2522 2522
2523@defun display-buffer-no-window buffer alist 2523@defun display-buffer-no-window buffer alist
2524If @var{alist} has a non-@code{nil} @code{allow-no-window} entry, then 2524If @var{alist} has a non-@code{nil} @code{allow-no-window} entry, then
2525this function does not display @code{buffer}. This allows to override 2525this function does not display @code{buffer}. This allows you to
2526the default action and avoid displaying the buffer. It is assumed that 2526override the default action and avoid displaying the buffer. It is
2527when the caller specifies a non-@code{nil} @code{allow-no-window} value 2527assumed that when the caller specifies a non-@code{nil}
2528it can handle a @code{nil} value returned from @code{display-buffer} in 2528@code{allow-no-window} value it can handle a @code{nil} value returned
2529this case. 2529from @code{display-buffer} in this case.
2530@end defun 2530@end defun
2531 2531
2532To illustrate the use of action functions, consider the following 2532To illustrate the use of action functions, consider the following
diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi
index c5901aff104..f4ebfebcbe3 100644
--- a/doc/misc/dbus.texi
+++ b/doc/misc/dbus.texi
@@ -138,8 +138,8 @@ name could be @samp{org.gnu.Emacs.TextEditor} or
138@section D-Bus version. 138@section D-Bus version.
139 139
140D-Bus has evolved over the years. New features have been added with 140D-Bus has evolved over the years. New features have been added with
141new D-Bus versions. There are two variables, which allow to determine 141new D-Bus versions. There are two variables, which allow the determination
142the used D-Bus version. 142of the D-Bus version used.
143 143
144@defvar dbus-compiled-version 144@defvar dbus-compiled-version
145This variable, a string, determines the version of D-Bus Emacs is 145This variable, a string, determines the version of D-Bus Emacs is
diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi
index 14f0a8d0ea2..0e9bedbe1d0 100644
--- a/doc/misc/eww.texi
+++ b/doc/misc/eww.texi
@@ -168,8 +168,8 @@ You can view stored bookmarks with @kbd{B}
168@kindex S 168@kindex S
169@cindex Multiple Buffers 169@cindex Multiple Buffers
170 To get summary of currently opened EWW buffers, press @kbd{S} 170 To get summary of currently opened EWW buffers, press @kbd{S}
171(@code{eww-list-buffers}). The @file{*eww buffers*} buffer allows to 171(@code{eww-list-buffers}). The @file{*eww buffers*} buffer allows you
172quickly kill, flip through and switch to specific EWW buffer. 172to quickly kill, flip through and switch to specific EWW buffer.
173 173
174@findex eww-browse-with-external-browser 174@findex eww-browse-with-external-browser
175@vindex shr-external-browser 175@vindex shr-external-browser
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 99633b60c70..1c4644bba14 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -717,7 +717,7 @@ sort error menu items, which shows error messages first.
717Flymake is also able to interpret error message patterns missing err-text-idx 717Flymake is also able to interpret error message patterns missing err-text-idx
718information. This is done by merely taking the rest of the matched line 718information. This is done by merely taking the rest of the matched line
719(@code{(substring line (match-end 0))}) as error text. This trick allows 719(@code{(substring line (match-end 0))}) as error text. This trick allows
720to make use of a huge collection of error message line patterns from 720making use of a huge collection of error message line patterns from
721@code{compile.el}. All these error patterns are appended to 721@code{compile.el}. All these error patterns are appended to
722the end of @code{flymake-err-line-patterns}. 722the end of @code{flymake-err-line-patterns}.
723 723
diff --git a/doc/misc/octave-mode.texi b/doc/misc/octave-mode.texi
index 65cc6a431eb..0307873df03 100644
--- a/doc/misc/octave-mode.texi
+++ b/doc/misc/octave-mode.texi
@@ -436,7 +436,7 @@ when Octave is waiting for input, or done sending output.
436@c You can use either 'plain' Emacs Info or the function @code{octave-help} 436@c You can use either 'plain' Emacs Info or the function @code{octave-help}
437@c as your Octave info reader (for @samp{help -i}). In the former case, 437@c as your Octave info reader (for @samp{help -i}). In the former case,
438@c use @code{info_program ("info-emacs-info")}. 438@c use @code{info_program ("info-emacs-info")}.
439@c The latter is perhaps more attractive because it allows to look up keys 439@c The latter is perhaps more attractive because it allows you to look up keys
440@c in the indices of @emph{several} info files related to Octave (provided 440@c in the indices of @emph{several} info files related to Octave (provided
441@c that the Emacs variable @code{octave-help-files} is set correctly). In 441@c that the Emacs variable @code{octave-help-files} is set correctly). In
442@c this case, use @code{info_program ("info-emacs-octave-help")}. 442@c this case, use @code{info_program ("info-emacs-octave-help")}.
diff --git a/doc/misc/org.texi b/doc/misc/org.texi
index ec676fca1d4..a5239acb59f 100644
--- a/doc/misc/org.texi
+++ b/doc/misc/org.texi
@@ -12890,9 +12890,9 @@ including DocBook.}.
12890When processing a document, @samp{texinfo} back-end generates a minimal file 12890When processing a document, @samp{texinfo} back-end generates a minimal file
12891header along with a title page, a copyright page, and a menu. You control 12891header along with a title page, a copyright page, and a menu. You control
12892the latter through the structure of the document (@pxref{Headings and 12892the latter through the structure of the document (@pxref{Headings and
12893sectioning structure}). Various keywords allow to tweak the other parts. It 12893sectioning structure}). Various keywords allow you to tweak the other parts.
12894is also possible to give directions to install the document in the @samp{Top} 12894It is also possible to give directions to install the document in the
12895node. 12895@samp{Top} node.
12896 12896
12897@subsubheading File header 12897@subsubheading File header
12898 12898
diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi
index 3dc3ed47b24..ff7011c5a76 100644
--- a/doc/misc/reftex.texi
+++ b/doc/misc/reftex.texi
@@ -5213,7 +5213,7 @@ mouse @r{Highlighting is mouse driven.}
5213both @r{Both cursor and mouse trigger highlighting.} 5213both @r{Both cursor and mouse trigger highlighting.}
5214@end example 5214@end example
5215 5215
5216Changing this variable requires to rebuild the selection and *toc* 5216Changing this variable requires rebuilding the selection and *toc*
5217buffers to become effective (keys @kbd{g} or @kbd{r}). 5217buffers to become effective (keys @kbd{g} or @kbd{r}).
5218@end defopt 5218@end defopt
5219 5219
@@ -5421,8 +5421,8 @@ after words. Disabled indexing in comment lines.
5421New command @code{reftex-create-bibtex-file} to create a new database 5421New command @code{reftex-create-bibtex-file} to create a new database
5422with all entries referenced in the current document. 5422with all entries referenced in the current document.
5423@item 5423@item
5424New keys @kbd{e} and @kbd{E} allow to produce a BibTeX database file 5424New keys @kbd{e} and @kbd{E} allow you to produce a BibTeX database
5425from entries marked in a citation selection buffer. 5425file from entries marked in a citation selection buffer.
5426@end itemize 5426@end itemize
5427 5427
5428@noindent @b{Version 4.21} 5428@noindent @b{Version 4.21}
@@ -5610,8 +5610,8 @@ demand.
5610@item 5610@item
5611Index support, along with many new options. 5611Index support, along with many new options.
5612@item 5612@item
5613The selection of keys for @code{\ref} and @code{\cite} now allows to 5613The selection of keys for @code{\ref} and @code{\cite} now allows you
5614select multiple items by marking entries with the @kbd{m} key. 5614to select multiple items by marking entries with the @kbd{m} key.
5615@item 5615@item
5616Fancyref support. 5616Fancyref support.
5617@end itemize 5617@end itemize
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 936c32dc5f4..8b3c9490f09 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,7 +3,7 @@
3% Load plain if necessary, i.e., if running under initex. 3% Load plain if necessary, i.e., if running under initex.
4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi 4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5% 5%
6\def\texinfoversion{2016-01-11.19} 6\def\texinfoversion{2016-01-20.20}
7% 7%
8% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 8% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
9% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 9% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -4737,11 +4737,10 @@ end
4737 \def\_{\normalunderscore}% 4737 \def\_{\normalunderscore}%
4738 \def\-{}% @- shouldn't affect sorting 4738 \def\-{}% @- shouldn't affect sorting
4739 % 4739 %
4740 \def\lbracechar{{\indexlbrace}}% 4740 \uccode`\1=`\{ \uppercase{\def\{{1}}%
4741 \def\rbracechar{{\indexrbrace}}% 4741 \uccode`\1=`\} \uppercase{\def\}{1}}%
4742 \let\{=\lbracechar 4742 \let\lbracechar\{
4743 \let\}=\rbracechar 4743 \let\rbracechar\}
4744 %
4745 % 4744 %
4746 % Non-English letters. 4745 % Non-English letters.
4747 \def\AA{AA}% 4746 \def\AA{AA}%
@@ -4901,9 +4900,15 @@ end
4901 \indexdummies % Must do this here, since \bf, etc expand at this stage 4900 \indexdummies % Must do this here, since \bf, etc expand at this stage
4902 \useindexbackslash % \indexbackslash isn't defined now so it will be output 4901 \useindexbackslash % \indexbackslash isn't defined now so it will be output
4903 % as is; and it will print as backslash. 4902 % as is; and it will print as backslash.
4903 % The braces around \indexbrace are recognized by texindex.
4904 %
4904 % Get the string to sort by, by processing the index entry with all 4905 % Get the string to sort by, by processing the index entry with all
4905 % font commands turned off. 4906 % font commands turned off.
4906 {\indexnofonts 4907 {\indexnofonts
4908 \def\lbracechar{{\indexlbrace}}%
4909 \def\rbracechar{{\indexrbrace}}%
4910 \let\{=\lbracechar
4911 \let\}=\rbracechar
4907 \indexnonalnumdisappear 4912 \indexnonalnumdisappear
4908 \xdef\indexsortkey{}% 4913 \xdef\indexsortkey{}%
4909 \let\sortas=\indexwritesortas 4914 \let\sortas=\indexwritesortas
@@ -8526,10 +8531,6 @@ end
8526 }% 8531 }%
8527 \setcolor{\linkcolor}% 8532 \setcolor{\linkcolor}%
8528 \fi 8533 \fi
8529 %
8530 % Float references are printed completely differently: "Figure 1.2"
8531 % instead of "[somenode], p.3". We distinguish them by the
8532 % LABEL-title being set to a magic string.
8533 {% 8534 {%
8534 % Have to otherify everything special to allow the \csname to 8535 % Have to otherify everything special to allow the \csname to
8535 % include an _ in the xref name, etc. 8536 % include an _ in the xref name, etc.
@@ -8538,6 +8539,10 @@ end
8538 \expandafter\global\expandafter\let\expandafter\Xthisreftitle 8539 \expandafter\global\expandafter\let\expandafter\Xthisreftitle
8539 \csname XR#1-title\endcsname 8540 \csname XR#1-title\endcsname
8540 }% 8541 }%
8542 %
8543 % Float references are printed completely differently: "Figure 1.2"
8544 % instead of "[somenode], p.3". \iffloat distinguishes them by
8545 % \Xthisreftitle being set to a magic string.
8541 \iffloat\Xthisreftitle 8546 \iffloat\Xthisreftitle
8542 % If the user specified the print name (third arg) to the ref, 8547 % If the user specified the print name (third arg) to the ref,
8543 % print it instead of our usual "Figure 1.2". 8548 % print it instead of our usual "Figure 1.2".
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index 37bf7ea8bc4..d01f9be9fbf 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -815,11 +815,9 @@ capable of servicing requests from @value{tramp}.
815@cindex method smb 815@cindex method smb
816@cindex smb method 816@cindex smb method
817 817
818This is another non-native @value{tramp} method. @command{smbclient} 818This non-native @value{tramp} method connects via the Server Message
819connects to any host with SMB/CIFS protocol, such as MS Windows and 819Block (SMB) networking protocol to hosts running file servers that are
820Samba Servers running on Unixes. Tests show this @value{tramp} method 820typically based on @url{https://www.samba.org/,,Samba} or MS Windows.
821works with MS Windows NT, MS Windows 2000, MS Windows XP, MS Windows
822Vista, and MS Windows 7.
823 821
824Using @command{smbclient} requires a few tweaks when working with 822Using @command{smbclient} requires a few tweaks when working with
825@value{tramp}: 823@value{tramp}:
@@ -827,7 +825,7 @@ Using @command{smbclient} requires a few tweaks when working with
827The first directory in the localname must be a share name on the 825The first directory in the localname must be a share name on the
828remote host. 826remote host.
829 827
830Since smb shares end in the @code{$} character, @value{tramp} must use 828Since SMB shares end in the @code{$} character, @value{tramp} must use
831@code{$$} when specifying those shares to avoid environment variable 829@code{$$} when specifying those shares to avoid environment variable
832substitutions. 830substitutions.
833 831
@@ -871,16 +869,17 @@ uses the anonymous user (without prompting for password). This
871behavior is unlike other @value{tramp} methods, where local user name 869behavior is unlike other @value{tramp} methods, where local user name
872is substituted. 870is substituted.
873 871
874@option{smb} method is unavailable if Emacs is run under a local user 872The @option{smb} method is unavailable if Emacs is run under a
875authentication context in MS Windows. However such users can still 873local user authentication context in MS Windows. However such users
876access remote files using UNC file names instead of @value{tramp}: 874can still access remote files using UNC file names instead of @value{tramp}:
877 875
878@example 876@example
879//melancholia/daniel$$/.emacs 877//melancholia/daniel$$/.emacs
880@end example 878@end example
881 879
882UNC file name specification does not allow to specify a different user 880UNC file name specification does not allow the specification of a
883name for authentication like the @command{smbclient} can. 881different user name for authentication like the @command{smbclient}
882can.
884 883
885@item @option{adb} 884@item @option{adb}
886@cindex method adb 885@cindex method adb
@@ -2830,7 +2829,7 @@ open. That is why @value{tramp} prompts for the password again even
2830if there is an @command{ssh} already open. 2829if there is an @command{ssh} already open.
2831 2830
2832Some @command{ssh} versions support a @code{ControlPersist} option, 2831Some @command{ssh} versions support a @code{ControlPersist} option,
2833which allows to set the @code{ControlPath} provided the variable 2832which allows you to set the @code{ControlPath} provided the variable
2834@code{tramp-ssh-controlmaster-options} is customized as follows: 2833@code{tramp-ssh-controlmaster-options} is customized as follows:
2835 2834
2836@lisp 2835@lisp
diff --git a/doc/misc/url.texi b/doc/misc/url.texi
index acdad6b0d10..c46859968a2 100644
--- a/doc/misc/url.texi
+++ b/doc/misc/url.texi
@@ -423,7 +423,7 @@ the directory specified by @code{url-configuration-directory}.
423@end defopt 423@end defopt
424 424
425@defopt url-cookie-confirmation 425@defopt url-cookie-confirmation
426Specifies whether confirmation is require to accept cookies. 426Specifies whether confirmation is required to accept cookies.
427@end defopt 427@end defopt
428 428
429@defopt url-cookie-multiple-line 429@defopt url-cookie-multiple-line
diff --git a/doc/misc/wisent.texi b/doc/misc/wisent.texi
index a4462937f1c..b4efbdad1b8 100644
--- a/doc/misc/wisent.texi
+++ b/doc/misc/wisent.texi
@@ -1155,8 +1155,8 @@ It defaults to the start symbol defined in the grammar
1155@end table 1155@end table
1156@end defun 1156@end defun
1157 1157
1158The following two normal hooks permit to do some useful processing 1158The following two normal hooks permit doing some useful processing
1159respectively before to start parsing, and after the parser terminated. 1159respectively before starting parsing, and after the parser terminated.
1160 1160
1161@vindex wisent-pre-parse-hook 1161@vindex wisent-pre-parse-hook
1162@defvar wisent-pre-parse-hook 1162@defvar wisent-pre-parse-hook
diff --git a/etc/NEWS b/etc/NEWS
index d6044ce2c2b..a1292db61de 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -142,7 +142,7 @@ and silent rules are now quieter. To get the old behavior where
142build with 'make V=1'. 142build with 'make V=1'.
143 143
144--- 144---
145** The configure option '--with-gameuser' now allows to specify a 145** The configure option '--with-gameuser' now allows you to specify a
146group instead of a user if its argument is prefixed by ':' (a colon). 146group instead of a user if its argument is prefixed by ':' (a colon).
147This will cause the game score files in ${localstatedir}/games/emacs 147This will cause the game score files in ${localstatedir}/games/emacs
148to be owned by that group, and the helper program for updating them to 148to be owned by that group, and the helper program for updating them to
@@ -234,9 +234,8 @@ by default, and must be enabled by using the `--with-modules' option
234at configure time. 234at configure time.
235 235
236+++ 236+++
237** Any file of the form .dir-locals*.el is now considered a dir-local 237** A second dir-local file (.dir-locals-2.el) is now accepted.
238file, and multiple such files can be used in the same directory. See 238See the variable `dir-locals-file-2' for more information.
239the variable `dir-locals-file' for more information.
240 239
241+++ 240+++
242** Network security (TLS/SSL certificate validity and the like) is 241** Network security (TLS/SSL certificate validity and the like) is
@@ -263,9 +262,9 @@ select-enable-primary is ineffective since the system doesn't
263have the equivalent of a primary selection. 262have the equivalent of a primary selection.
264 263
265+++ 264+++
266** New option `switch-to-buffer-in-dedicated-window' allows to customize 265** New option `switch-to-buffer-in-dedicated-window' allows you to
267how `switch-to-buffer' proceeds interactively when the selected window 266customize how `switch-to-buffer' proceeds interactively when the
268is strongly dedicated to its buffer. 267selected window is strongly dedicated to its buffer.
269 268
270+++ 269+++
271** The option `even-window-heights' has been renamed to 270** The option `even-window-heights' has been renamed to
@@ -920,11 +919,12 @@ plist will contain a :peer element that has the output of
920** Tramp 919** Tramp
921 920
922+++ 921+++
923*** New connection method "afp", which allows to access Mac OS X 922*** New connection method "afp", which allows you to access Mac OS X
924volumes via the Apple Filing Protocol. 923volumes via the Apple Filing Protocol.
925 924
926+++ 925+++
927*** New connection method "nc", which allows to access dumb busyboxes. 926*** New connection method "nc", which allows you to access dumb
927busyboxes.
928 928
929+++ 929+++
930*** Method-specific parameters can be overwritten now with variable 930*** Method-specific parameters can be overwritten now with variable
@@ -1288,7 +1288,7 @@ node "Generic Functions" in the Emacs Lisp manual for more details.
1288let-bind the values stored in an alist. 1288let-bind the values stored in an alist.
1289 1289
1290--- 1290---
1291** `tildify-mode' allows to automatically insert hard spaces as one 1291** `tildify-mode' allows automatic insertion of hard spaces as one
1292types the text. Breaking line after a single-character words is 1292types the text. Breaking line after a single-character words is
1293forbidden by Czech and Polish typography (and may be discouraged in 1293forbidden by Czech and Polish typography (and may be discouraged in
1294other languages), so `auto-tildify-mode' makes it easier to create 1294other languages), so `auto-tildify-mode' makes it easier to create
@@ -1492,7 +1492,7 @@ commands other than the predefined `C-u'.
1492 1492
1493+++ 1493+++
1494** New functions `filepos-to-bufferpos' and `bufferpos-to-filepos'. 1494** New functions `filepos-to-bufferpos' and `bufferpos-to-filepos'.
1495These allow to convert between buffer positions and the corresponding 1495These allow conversion between buffer positions and the corresponding
1496file byte offsets, given the file's encoding. 1496file byte offsets, given the file's encoding.
1497 1497
1498+++ 1498+++
@@ -1615,14 +1615,14 @@ called interactively.
1615** New function `function-put' to use instead of `put' for function properties. 1615** New function `function-put' to use instead of `put' for function properties.
1616 1616
1617+++ 1617+++
1618** The new function `bidi-find-overridden-directionality' allows to 1618** The new function `bidi-find-overridden-directionality' allows you to
1619find characters whose directionality was, perhaps maliciously, 1619find characters whose directionality was, perhaps maliciously,
1620overridden by directional override control characters. Lisp programs 1620overridden by directional override control characters. Lisp programs
1621can use this to detect potential phishing of URLs and other links that 1621can use this to detect potential phishing of URLs and other links that
1622exploits bidirectional display reordering. 1622exploits bidirectional display reordering.
1623 1623
1624+++ 1624+++
1625** The new function `buffer-substring-with-bidi-context' allows to 1625** The new function `buffer-substring-with-bidi-context' allows you to
1626copy a portion of a buffer into a different location while preserving 1626copy a portion of a buffer into a different location while preserving
1627the visual appearance both of the copied text and the text at 1627the visual appearance both of the copied text and the text at
1628destination, even when the copied text includes mixed bidirectional 1628destination, even when the copied text includes mixed bidirectional
@@ -1745,7 +1745,7 @@ undocumented integer-pair format. Instead, they return a list of two
1745integers. 1745integers.
1746 1746
1747+++ 1747+++
1748** New function `set-binary-mode' allows to switch a standard stream 1748** New function `set-binary-mode' allows switching a standard stream
1749of the Emacs process to binary I/O mode. 1749of the Emacs process to binary I/O mode.
1750 1750
1751+++ 1751+++
@@ -1856,8 +1856,8 @@ fullwidth frames, the behavior may depend on the toolkit used.
1856 number of columns or lines it displays. 1856 number of columns or lines it displays.
1857 1857
1858+++ 1858+++
1859*** New function `window-preserve-size' allows to preserve the size of 1859*** New function `window-preserve-size' allows you to preserve the size of
1860windows without "fixing" it. It's supported by `fit-window-to-buffer', 1860a window without "fixing" it. It's supported by `fit-window-to-buffer',
1861`temp-buffer-resize-mode' and `display-buffer'. 1861`temp-buffer-resize-mode' and `display-buffer'.
1862 1862
1863+++ 1863+++
diff --git a/lib-src/rcs2log b/lib-src/rcs2log
index 73213c5a37b..ff4d470a21a 100755
--- a/lib-src/rcs2log
+++ b/lib-src/rcs2log
@@ -403,8 +403,8 @@ case $rlogfile in
403 esac 403 esac
404 404
405 case $datearg in 405 case $datearg in
406 ?*) $rlog $rlog_options "$datearg" ${1+"$@"} >$rlogfile;; 406 ?*) $rlog $rlog_options "$datearg" "$@" >$rlogfile;;
407 '') $rlog $rlog_options ${1+"$@"} >$rlogfile;; 407 '') $rlog $rlog_options "$@" >$rlogfile;;
408 esac || exit;; 408 esac || exit;;
409esac 409esac
410 410
diff --git a/lib/acl-internal.c b/lib/acl-internal.c
index 569e2f9c9e2..4de60c30ec1 100644
--- a/lib/acl-internal.c
+++ b/lib/acl-internal.c
@@ -478,7 +478,7 @@ acl_nontrivial (int count, struct acl *entries)
478void 478void
479free_permission_context (struct permission_context *ctx) 479free_permission_context (struct permission_context *ctx)
480{ 480{
481#ifdef USE_ACL 481#if USE_ACL
482# if HAVE_ACL_GET_FILE /* Linux, FreeBSD, Mac OS X, IRIX, Tru64 */ 482# if HAVE_ACL_GET_FILE /* Linux, FreeBSD, Mac OS X, IRIX, Tru64 */
483 if (ctx->acl) 483 if (ctx->acl)
484 acl_free (ctx->acl); 484 acl_free (ctx->acl);
diff --git a/lib/acl-internal.h b/lib/acl-internal.h
index 526e9f07788..636273e0fb4 100644
--- a/lib/acl-internal.h
+++ b/lib/acl-internal.h
@@ -255,7 +255,7 @@ extern int acl_nontrivial (int count, struct acl *entries);
255 255
256struct permission_context { 256struct permission_context {
257 mode_t mode; 257 mode_t mode;
258#ifdef USE_ACL 258#if USE_ACL
259# if HAVE_ACL_GET_FILE /* Linux, FreeBSD, Mac OS X, IRIX, Tru64 */ 259# if HAVE_ACL_GET_FILE /* Linux, FreeBSD, Mac OS X, IRIX, Tru64 */
260 acl_t acl; 260 acl_t acl;
261# if !HAVE_ACL_TYPE_EXTENDED 261# if !HAVE_ACL_TYPE_EXTENDED
diff --git a/lib/binary-io.h b/lib/binary-io.h
index d5c82335707..9f17c0d3987 100644
--- a/lib/binary-io.h
+++ b/lib/binary-io.h
@@ -60,7 +60,7 @@ set_binary_mode (int fd, int mode)
60 60
61/* SET_BINARY (fd); 61/* SET_BINARY (fd);
62 changes the file descriptor fd to perform binary I/O. */ 62 changes the file descriptor fd to perform binary I/O. */
63#ifdef __DJGPP__ 63#if defined __DJGPP__ || defined __EMX__
64# include <unistd.h> /* declares isatty() */ 64# include <unistd.h> /* declares isatty() */
65 /* Avoid putting stdin/stdout in binary mode if it is connected to 65 /* Avoid putting stdin/stdout in binary mode if it is connected to
66 the console, because that would make it impossible for the user 66 the console, because that would make it impossible for the user
diff --git a/lib/dirent.in.h b/lib/dirent.in.h
index 4c62737bdc6..65482d7b7ac 100644
--- a/lib/dirent.in.h
+++ b/lib/dirent.in.h
@@ -158,6 +158,13 @@ _GL_WARN_ON_USE (closedir, "closedir is not portable - "
158# endif 158# endif
159_GL_FUNCDECL_RPL (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1))); 159_GL_FUNCDECL_RPL (dirfd, int, (DIR *) _GL_ARG_NONNULL ((1)));
160_GL_CXXALIAS_RPL (dirfd, int, (DIR *)); 160_GL_CXXALIAS_RPL (dirfd, int, (DIR *));
161
162# ifdef __KLIBC__
163/* Gnulib internal hooks needed to maintain the dirfd metadata. */
164_GL_EXTERN_C int _gl_register_dirp_fd (int fd, DIR *dirp)
165 _GL_ARG_NONNULL ((2));
166_GL_EXTERN_C void _gl_unregister_dirp_fd (int fd);
167# endif
161# else 168# else
162# if defined __cplusplus && defined GNULIB_NAMESPACE && defined dirfd 169# if defined __cplusplus && defined GNULIB_NAMESPACE && defined dirfd
163 /* dirfd is defined as a macro and not as a function. 170 /* dirfd is defined as a macro and not as a function.
diff --git a/lib/dirfd.c b/lib/dirfd.c
index 1ea2a6373db..a32584856a2 100644
--- a/lib/dirfd.c
+++ b/lib/dirfd.c
@@ -22,11 +22,77 @@
22#include <dirent.h> 22#include <dirent.h>
23#include <errno.h> 23#include <errno.h>
24 24
25#ifdef __KLIBC__
26# include <stdlib.h>
27# include <io.h>
28
29static struct dirp_fd_list
30{
31 DIR *dirp;
32 int fd;
33 struct dirp_fd_list *next;
34} *dirp_fd_start = NULL;
35
36/* Register fd associated with dirp to dirp_fd_list. */
37int
38_gl_register_dirp_fd (int fd, DIR *dirp)
39{
40 struct dirp_fd_list *new_dirp_fd = malloc (sizeof *new_dirp_fd);
41 if (!new_dirp_fd)
42 return -1;
43
44 new_dirp_fd->dirp = dirp;
45 new_dirp_fd->fd = fd;
46 new_dirp_fd->next = dirp_fd_start;
47
48 dirp_fd_start = new_dirp_fd;
49
50 return 0;
51}
52
53/* Unregister fd from dirp_fd_list with closing it */
54void
55_gl_unregister_dirp_fd (int fd)
56{
57 struct dirp_fd_list *dirp_fd;
58 struct dirp_fd_list *dirp_fd_prev;
59
60 for (dirp_fd_prev = NULL, dirp_fd = dirp_fd_start; dirp_fd;
61 dirp_fd_prev = dirp_fd, dirp_fd = dirp_fd->next)
62 {
63 if (dirp_fd->fd == fd)
64 {
65 if (dirp_fd_prev)
66 dirp_fd_prev->next = dirp_fd->next;
67 else /* dirp_fd == dirp_fd_start */
68 dirp_fd_start = dirp_fd_start->next;
69
70 close (fd);
71 free (dirp_fd);
72 break;
73 }
74 }
75}
76#endif
77
25int 78int
26dirfd (DIR *dir_p) 79dirfd (DIR *dir_p)
27{ 80{
28 int fd = DIR_TO_FD (dir_p); 81 int fd = DIR_TO_FD (dir_p);
29 if (fd == -1) 82 if (fd == -1)
83#ifndef __KLIBC__
30 errno = ENOTSUP; 84 errno = ENOTSUP;
85#else
86 {
87 struct dirp_fd_list *dirp_fd;
88
89 for (dirp_fd = dirp_fd_start; dirp_fd; dirp_fd = dirp_fd->next)
90 if (dirp_fd->dirp == dir_p)
91 return dirp_fd->fd;
92
93 errno = EINVAL;
94 }
95#endif
96
31 return fd; 97 return fd;
32} 98}
diff --git a/lib/dup2.c b/lib/dup2.c
index c913f473adc..5d026f21fa7 100644
--- a/lib/dup2.c
+++ b/lib/dup2.c
@@ -85,6 +85,57 @@ ms_windows_dup2 (int fd, int desired_fd)
85 85
86# define dup2 ms_windows_dup2 86# define dup2 ms_windows_dup2
87 87
88# elif defined __KLIBC__
89
90# include <InnoTekLIBC/backend.h>
91
92static int
93klibc_dup2dirfd (int fd, int desired_fd)
94{
95 int tempfd;
96 int dupfd;
97
98 tempfd = open ("NUL", O_RDONLY);
99 if (tempfd == -1)
100 return -1;
101
102 if (tempfd == desired_fd)
103 {
104 close (tempfd);
105
106 char path[_MAX_PATH];
107 if (__libc_Back_ioFHToPath (fd, path, sizeof (path)))
108 return -1;
109
110 return open(path, O_RDONLY);
111 }
112
113 dupfd = klibc_dup2dirfd (fd, desired_fd);
114
115 close (tempfd);
116
117 return dupfd;
118}
119
120static int
121klibc_dup2 (int fd, int desired_fd)
122{
123 int dupfd;
124 struct stat sbuf;
125
126 dupfd = dup2 (fd, desired_fd);
127 if (dupfd == -1 && errno == ENOTSUP \
128 && !fstat (fd, &sbuf) && S_ISDIR (sbuf.st_mode))
129 {
130 close (desired_fd);
131
132 return klibc_dup2dirfd (fd, desired_fd);
133 }
134
135 return dupfd;
136}
137
138# define dup2 klibc_dup2
88# endif 139# endif
89 140
90int 141int
diff --git a/lib/fcntl.c b/lib/fcntl.c
index 1ccc5acea8e..fd17e962f8b 100644
--- a/lib/fcntl.c
+++ b/lib/fcntl.c
@@ -162,6 +162,93 @@ dupfd (int oldfd, int newfd, int flags)
162} 162}
163#endif /* W32 */ 163#endif /* W32 */
164 164
165#ifdef __KLIBC__
166
167# define INCL_DOS
168# include <os2.h>
169
170static int
171klibc_fcntl (int fd, int action, /* arg */...)
172{
173 va_list arg_ptr;
174 int arg;
175 struct stat sbuf;
176 int result = -1;
177
178 va_start (arg_ptr, action);
179 arg = va_arg (arg_ptr, int);
180 result = fcntl (fd, action, arg);
181 /* EPERM for F_DUPFD, ENOTSUP for others */
182 if (result == -1 && (errno == EPERM || errno == ENOTSUP)
183 && !fstat (fd, &sbuf) && S_ISDIR (sbuf.st_mode))
184 {
185 ULONG ulMode;
186
187 switch (action)
188 {
189 case F_DUPFD:
190 /* Find available fd */
191 while (fcntl (arg, F_GETFL) != -1 || errno != EBADF)
192 arg++;
193
194 result = dup2 (fd, arg);
195 break;
196
197 /* Using underlying APIs is right ? */
198 case F_GETFD:
199 if (DosQueryFHState (fd, &ulMode))
200 break;
201
202 result = (ulMode & OPEN_FLAGS_NOINHERIT) ? FD_CLOEXEC : 0;
203 break;
204
205 case F_SETFD:
206 if (arg & ~FD_CLOEXEC)
207 break;
208
209 if (DosQueryFHState (fd, &ulMode))
210 break;
211
212 if (arg & FD_CLOEXEC)
213 ulMode |= OPEN_FLAGS_NOINHERIT;
214 else
215 ulMode &= ~OPEN_FLAGS_NOINHERIT;
216
217 /* Filter supported flags. */
218 ulMode &= (OPEN_FLAGS_WRITE_THROUGH | OPEN_FLAGS_FAIL_ON_ERROR
219 | OPEN_FLAGS_NO_CACHE | OPEN_FLAGS_NOINHERIT);
220
221 if (DosSetFHState (fd, ulMode))
222 break;
223
224 result = 0;
225 break;
226
227 case F_GETFL:
228 result = 0;
229 break;
230
231 case F_SETFL:
232 if (arg != 0)
233 break;
234
235 result = 0;
236 break;
237
238 default :
239 errno = EINVAL;
240 break;
241 }
242 }
243
244 va_end (arg_ptr);
245
246 return result;
247}
248
249# define fcntl klibc_fcntl
250#endif
251
165/* Perform the specified ACTION on the file descriptor FD, possibly 252/* Perform the specified ACTION on the file descriptor FD, possibly
166 using the argument ARG further described below. This replacement 253 using the argument ARG further described below. This replacement
167 handles the following actions, and forwards all others on to the 254 handles the following actions, and forwards all others on to the
diff --git a/lib/fdopendir.c b/lib/fdopendir.c
index f30ab2431b5..c1f4dcbaca0 100644
--- a/lib/fdopendir.c
+++ b/lib/fdopendir.c
@@ -62,6 +62,41 @@ static DIR *fd_clone_opendir (int, struct saved_cwd const *);
62 If this function returns successfully, FD is under control of the 62 If this function returns successfully, FD is under control of the
63 dirent.h system, and the caller should not close or modify the state of 63 dirent.h system, and the caller should not close or modify the state of
64 FD other than by the dirent.h functions. */ 64 FD other than by the dirent.h functions. */
65# ifdef __KLIBC__
66# include <InnoTekLIBC/backend.h>
67
68DIR *
69fdopendir (int fd)
70{
71 char path[_MAX_PATH];
72 DIR *dirp;
73
74 /* Get a path from fd */
75 if (__libc_Back_ioFHToPath (fd, path, sizeof (path)))
76 return NULL;
77
78 dirp = opendir (path);
79 if (!dirp)
80 return NULL;
81
82 /* Unregister fd registered by opendir() */
83 _gl_unregister_dirp_fd (dirfd (dirp));
84
85 /* Register our fd */
86 if (_gl_register_dirp_fd (fd, dirp))
87 {
88 int saved_errno = errno;
89
90 closedir (dirp);
91
92 errno = saved_errno;
93
94 dirp = NULL;
95 }
96
97 return dirp;
98}
99# else
65DIR * 100DIR *
66fdopendir (int fd) 101fdopendir (int fd)
67{ 102{
@@ -84,6 +119,7 @@ fdopendir (int fd)
84 119
85 return dir; 120 return dir;
86} 121}
122# endif
87 123
88/* Like fdopendir, except that if OLDER_DUPFD is not -1, it is known 124/* Like fdopendir, except that if OLDER_DUPFD is not -1, it is known
89 to be a dup of FD which is less than FD - 1 and which will be 125 to be a dup of FD which is less than FD - 1 and which will be
diff --git a/lib/get-permissions.c b/lib/get-permissions.c
index 8c70df1984c..bf40dad7801 100644
--- a/lib/get-permissions.c
+++ b/lib/get-permissions.c
@@ -102,7 +102,7 @@ get_permissions (const char *name, int desc, mode_t mode,
102 There is an API 102 There is an API
103 pathconf (name, _PC_ACL_ENABLED) 103 pathconf (name, _PC_ACL_ENABLED)
104 fpathconf (desc, _PC_ACL_ENABLED) 104 fpathconf (desc, _PC_ACL_ENABLED)
105 that allows to determine which of the two kinds of ACLs is supported 105 that allows us to determine which of the two kinds of ACLs is supported
106 for the given file. But some file systems may implement this call 106 for the given file. But some file systems may implement this call
107 incorrectly, so better not use it. 107 incorrectly, so better not use it.
108 When fetching the source ACL, we simply fetch both ACL types. 108 When fetching the source ACL, we simply fetch both ACL types.
diff --git a/lib/mktime.c b/lib/mktime.c
index adbf8d482ae..c9738d0daf9 100644
--- a/lib/mktime.c
+++ b/lib/mktime.c
@@ -19,7 +19,7 @@
19 19
20/* Define this to have a standalone program to test this implementation of 20/* Define this to have a standalone program to test this implementation of
21 mktime. */ 21 mktime. */
22/* #define DEBUG 1 */ 22/* #define DEBUG_MKTIME 1 */
23 23
24#ifndef _LIBC 24#ifndef _LIBC
25# include <config.h> 25# include <config.h>
@@ -38,13 +38,13 @@
38 38
39#include <string.h> /* For the real memcpy prototype. */ 39#include <string.h> /* For the real memcpy prototype. */
40 40
41#if defined DEBUG && DEBUG 41#if defined DEBUG_MKTIME && DEBUG_MKTIME
42# include <stdio.h> 42# include <stdio.h>
43# include <stdlib.h> 43# include <stdlib.h>
44/* Make it work even if the system's libc has its own mktime routine. */ 44/* Make it work even if the system's libc has its own mktime routine. */
45# undef mktime 45# undef mktime
46# define mktime my_mktime 46# define mktime my_mktime
47#endif /* DEBUG */ 47#endif /* DEBUG_MKTIME */
48 48
49/* Some of the code in this file assumes that signed integer overflow 49/* Some of the code in this file assumes that signed integer overflow
50 silently wraps around. This assumption can't easily be programmed 50 silently wraps around. This assumption can't easily be programmed
@@ -600,7 +600,7 @@ libc_hidden_def (mktime)
600libc_hidden_weak (timelocal) 600libc_hidden_weak (timelocal)
601#endif 601#endif
602 602
603#if defined DEBUG && DEBUG 603#if defined DEBUG_MKTIME && DEBUG_MKTIME
604 604
605static int 605static int
606not_equal_tm (const struct tm *a, const struct tm *b) 606not_equal_tm (const struct tm *a, const struct tm *b)
@@ -732,10 +732,10 @@ main (int argc, char **argv)
732 return status; 732 return status;
733} 733}
734 734
735#endif /* DEBUG */ 735#endif /* DEBUG_MKTIME */
736 736
737/* 737/*
738Local Variables: 738Local Variables:
739compile-command: "gcc -DDEBUG -I. -Wall -W -O2 -g mktime.c -o mktime" 739compile-command: "gcc -DDEBUG_MKTIME -I. -Wall -W -O2 -g mktime.c -o mktime"
740End: 740End:
741*/ 741*/
diff --git a/lib/openat-proc.c b/lib/openat-proc.c
index 15a8c799c80..1712340a002 100644
--- a/lib/openat-proc.c
+++ b/lib/openat-proc.c
@@ -30,24 +30,21 @@
30#include <string.h> 30#include <string.h>
31#include <unistd.h> 31#include <unistd.h>
32 32
33#include "intprops.h" 33#ifdef __KLIBC__
34 34# include <InnoTekLIBC/backend.h>
35#define PROC_SELF_FD_FORMAT "/proc/self/fd/%d/%s" 35#endif
36
37#define PROC_SELF_FD_NAME_SIZE_BOUND(len) \
38 (sizeof PROC_SELF_FD_FORMAT - sizeof "%d%s" \
39 + INT_STRLEN_BOUND (int) + (len) + 1)
40 36
37#include "intprops.h"
41 38
42/* Set BUF to the expansion of PROC_SELF_FD_FORMAT, using FD and FILE 39/* Set BUF to the name of the subfile of the directory identified by
43 respectively for %d and %s. If successful, return BUF if the 40 FD, where the subfile is named FILE. If successful, return BUF if
44 result fits in BUF, dynamically allocated memory otherwise. But 41 the result fits in BUF, dynamically allocated memory otherwise.
45 return NULL if /proc is not reliable, either because the operating 42 Return NULL (setting errno) on error. */
46 system support is lacking or because memory is low. */
47char * 43char *
48openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file) 44openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file)
49{ 45{
50 static int proc_status = 0; 46 char *result = buf;
47 int dirlen;
51 48
52 /* Make sure the caller gets ENOENT when appropriate. */ 49 /* Make sure the caller gets ENOENT when appropriate. */
53 if (!*file) 50 if (!*file)
@@ -56,47 +53,82 @@ openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file)
56 return buf; 53 return buf;
57 } 54 }
58 55
59 if (! proc_status) 56#ifndef __KLIBC__
60 { 57# define PROC_SELF_FD_FORMAT "/proc/self/fd/%d/"
61 /* Set PROC_STATUS to a positive value if /proc/self/fd is 58 {
62 reliable, and a negative value otherwise. Solaris 10 59 enum {
63 /proc/self/fd mishandles "..", and any file name might expand 60 PROC_SELF_FD_DIR_SIZE_BOUND
64 to ".." after symbolic link expansion, so avoid /proc/self/fd 61 = (sizeof PROC_SELF_FD_FORMAT - (sizeof "%d" - 1)
65 if it mishandles "..". Solaris 10 has openat, but this 62 + INT_STRLEN_BOUND (int))
66 problem is exhibited on code that built on Solaris 8 and 63 };
67 running on Solaris 10. */ 64
68 65 static int proc_status = 0;
69 int proc_self_fd = open ("/proc/self/fd", 66 if (! proc_status)
70 O_SEARCH | O_DIRECTORY | O_NOCTTY | O_NONBLOCK); 67 {
71 if (proc_self_fd < 0) 68 /* Set PROC_STATUS to a positive value if /proc/self/fd is
72 proc_status = -1; 69 reliable, and a negative value otherwise. Solaris 10
73 else 70 /proc/self/fd mishandles "..", and any file name might expand
74 { 71 to ".." after symbolic link expansion, so avoid /proc/self/fd
75 /* Detect whether /proc/self/fd/%i/../fd exists, where %i is the 72 if it mishandles "..". Solaris 10 has openat, but this
76 number of a file descriptor open on /proc/self/fd. On Linux, 73 problem is exhibited on code that built on Solaris 8 and
77 that name resolves to /proc/self/fd, which was opened above. 74 running on Solaris 10. */
78 However, on Solaris, it may resolve to /proc/self/fd/fd, which 75
79 cannot exist, since all names in /proc/self/fd are numeric. */ 76 int proc_self_fd = open ("/proc/self/fd",
80 char dotdot_buf[PROC_SELF_FD_NAME_SIZE_BOUND (sizeof "../fd" - 1)]; 77 O_SEARCH | O_DIRECTORY | O_NOCTTY | O_NONBLOCK);
81 sprintf (dotdot_buf, PROC_SELF_FD_FORMAT, proc_self_fd, "../fd"); 78 if (proc_self_fd < 0)
82 proc_status = access (dotdot_buf, F_OK) ? -1 : 1; 79 proc_status = -1;
83 close (proc_self_fd); 80 else
84 } 81 {
85 } 82 /* Detect whether /proc/self/fd/%i/../fd exists, where %i is the
86 83 number of a file descriptor open on /proc/self/fd. On Linux,
87 if (proc_status < 0) 84 that name resolves to /proc/self/fd, which was opened above.
88 return NULL; 85 However, on Solaris, it may resolve to /proc/self/fd/fd, which
89 else 86 cannot exist, since all names in /proc/self/fd are numeric. */
90 { 87 char dotdot_buf[PROC_SELF_FD_DIR_SIZE_BOUND + sizeof "../fd" - 1];
91 size_t bufsize = PROC_SELF_FD_NAME_SIZE_BOUND (strlen (file)); 88 sprintf (dotdot_buf, PROC_SELF_FD_FORMAT "../fd", proc_self_fd);
92 char *result = buf; 89 proc_status = access (dotdot_buf, F_OK) ? -1 : 1;
93 if (OPENAT_BUFFER_SIZE < bufsize) 90 close (proc_self_fd);
94 { 91 }
95 result = malloc (bufsize); 92 }
96 if (! result) 93
97 return NULL; 94 if (proc_status < 0)
98 } 95 return NULL;
99 sprintf (result, PROC_SELF_FD_FORMAT, fd, file); 96 else
100 return result; 97 {
101 } 98 size_t bufsize = PROC_SELF_FD_DIR_SIZE_BOUND + strlen (file);
99 if (OPENAT_BUFFER_SIZE < bufsize)
100 {
101 result = malloc (bufsize);
102 if (! result)
103 return NULL;
104 }
105
106 dirlen = sprintf (result, PROC_SELF_FD_FORMAT, fd);
107 }
108 }
109#else
110 /* OS/2 kLIBC provides a function to retrieve a path from a fd. */
111 {
112 char dir[_MAX_PATH];
113 size_t bufsize;
114
115 if (__libc_Back_ioFHToPath (fd, dir, sizeof dir))
116 return NULL;
117
118 dirlen = strlen (dir);
119 bufsize = dirlen + 1 + strlen (file) + 1; /* 1 for '/', 1 for null */
120 if (OPENAT_BUFFER_SIZE < bufsize)
121 {
122 result = malloc (bufsize);
123 if (! result)
124 return NULL;
125 }
126
127 strcpy (result, dir);
128 result[dirlen++] = '/';
129 }
130#endif
131
132 strcpy (result + dirlen, file);
133 return result;
102} 134}
diff --git a/lib/sig2str.h b/lib/sig2str.h
index f3471702bac..2730774d165 100644
--- a/lib/sig2str.h
+++ b/lib/sig2str.h
@@ -44,6 +44,8 @@ int str2sig (char const *, int *);
44 44
45#if defined _sys_nsig 45#if defined _sys_nsig
46# define SIGNUM_BOUND (_sys_nsig - 1) 46# define SIGNUM_BOUND (_sys_nsig - 1)
47#elif defined _SIG_MAXSIG
48# define SIGNUM_BOUND (_SIG_MAXSIG - 2) /* FreeBSD >= 7. */
47#elif defined NSIG 49#elif defined NSIG
48# define SIGNUM_BOUND (NSIG - 1) 50# define SIGNUM_BOUND (NSIG - 1)
49#else 51#else
diff --git a/lib/stdint.in.h b/lib/stdint.in.h
index d2413917950..0bb9ad41b29 100644
--- a/lib/stdint.in.h
+++ b/lib/stdint.in.h
@@ -288,12 +288,17 @@ typedef gl_uint_fast32_t gl_uint_fast16_t;
288 288
289/* 7.18.1.4. Integer types capable of holding object pointers */ 289/* 7.18.1.4. Integer types capable of holding object pointers */
290 290
291/* kLIBC's stdint.h defines _INTPTR_T_DECLARED and needs its own
292 definitions of intptr_t and uintptr_t (which use int and unsigned)
293 to avoid clashes with declarations of system functions like sbrk. */
294#ifndef _INTPTR_T_DECLARED
291#undef intptr_t 295#undef intptr_t
292#undef uintptr_t 296#undef uintptr_t
293typedef long int gl_intptr_t; 297typedef long int gl_intptr_t;
294typedef unsigned long int gl_uintptr_t; 298typedef unsigned long int gl_uintptr_t;
295#define intptr_t gl_intptr_t 299#define intptr_t gl_intptr_t
296#define uintptr_t gl_uintptr_t 300#define uintptr_t gl_uintptr_t
301#endif
297 302
298/* 7.18.1.5. Greatest-width integer types */ 303/* 7.18.1.5. Greatest-width integer types */
299 304
diff --git a/lib/strftime.c b/lib/strftime.c
index 10d3eb4ef31..4e65190386d 100644
--- a/lib/strftime.c
+++ b/lib/strftime.c
@@ -641,7 +641,7 @@ strftime_case_ (bool upcase, STREAM_OR_CHAR_T *s,
641 break; 641 break;
642 } 642 }
643 643
644 /* As a GNU extension we allow to specify the field width. */ 644 /* As a GNU extension we allow the field width to be specified. */
645 if (ISDIGIT (*f)) 645 if (ISDIGIT (*f))
646 { 646 {
647 width = 0; 647 width = 0;
diff --git a/lisp/ChangeLog.17 b/lisp/ChangeLog.17
index ee812bde82d..1785a336732 100644
--- a/lisp/ChangeLog.17
+++ b/lisp/ChangeLog.17
@@ -4437,7 +4437,7 @@
4437 4437
44382014-12-07 Lars Magne Ingebrigtsen <larsi@gnus.org> 44382014-12-07 Lars Magne Ingebrigtsen <larsi@gnus.org>
4439 4439
4440 * net/eww.el (eww-follow-link): Revert prefix behaviour to 4440 * net/eww.el (eww-follow-link): Revert prefix behavior to
4441 previous behavior. 4441 previous behavior.
4442 (eww-copy-page-url): Add doc string. 4442 (eww-copy-page-url): Add doc string.
4443 4443
@@ -9140,7 +9140,7 @@
91402014-06-30 Grégoire Jadi <daimrod@gmail.com> 91402014-06-30 Grégoire Jadi <daimrod@gmail.com>
9141 9141
9142 * net/rcirc.el (rcirc-buffer-process): Restore previous 9142 * net/rcirc.el (rcirc-buffer-process): Restore previous
9143 behaviour. (Bug#17772) 9143 behavior. (Bug#17772)
9144 9144
91452014-06-29 Alan Mackenzie <acm@muc.de> 91452014-06-29 Alan Mackenzie <acm@muc.de>
9146 9146
diff --git a/lisp/autorevert.el b/lisp/autorevert.el
index 5851a89ec97..14e39bddd2e 100644
--- a/lisp/autorevert.el
+++ b/lisp/autorevert.el
@@ -664,8 +664,8 @@ This is an internal function used by Auto-Revert Mode."
664 (not (eq revert 'fast))) 664 (not (eq revert 'fast)))
665 (message "Reverting buffer `%s'." (buffer-name))) 665 (message "Reverting buffer `%s'." (buffer-name)))
666 ;; If point (or a window point) is at the end of the buffer, we 666 ;; If point (or a window point) is at the end of the buffer, we
667 ;; want to keep it at the end after reverting. This allows to 667 ;; want to keep it at the end after reverting. This allows one
668 ;; tail a file. 668 ;; to tail a file.
669 (when buffer-file-name 669 (when buffer-file-name
670 (setq eob (eobp)) 670 (setq eob (eobp))
671 (walk-windows 671 (walk-windows
diff --git a/lisp/cedet/mode-local.el b/lisp/cedet/mode-local.el
index ce367485c16..c7e6615e0df 100644
--- a/lisp/cedet/mode-local.el
+++ b/lisp/cedet/mode-local.el
@@ -189,7 +189,7 @@ BINDINGS is a list of (VARIABLE . VALUE).
189Optional argument PLIST is a property list each VARIABLE symbol will 189Optional argument PLIST is a property list each VARIABLE symbol will
190be set to. The following properties have special meaning: 190be set to. The following properties have special meaning:
191 191
192- `constant-flag' if non-nil, prevent to rebind variables. 192- `constant-flag' if non-nil, prevent rebinding variables.
193- `mode-variable-flag' if non-nil, define mode variables. 193- `mode-variable-flag' if non-nil, define mode variables.
194- `override-flag' if non-nil, define override functions. 194- `override-flag' if non-nil, define override functions.
195 195
@@ -544,7 +544,7 @@ default is to call the function `NAME-default' with the appropriate
544arguments. 544arguments.
545 545
546BODY can also include an override form that specifies which part of 546BODY can also include an override form that specifies which part of
547BODY is specifically overridden. This permits to specify common code 547BODY is specifically overridden. This permits specifying common code
548run for both default and overridden implementations. 548run for both default and overridden implementations.
549An override form is one of: 549An override form is one of:
550 550
diff --git a/lisp/cedet/semantic/senator.el b/lisp/cedet/semantic/senator.el
index a45077e50e4..38abc9ebbd9 100644
--- a/lisp/cedet/semantic/senator.el
+++ b/lisp/cedet/semantic/senator.el
@@ -803,7 +803,7 @@ if available."
803 (setq isearch-adjusted t) 803 (setq isearch-adjusted t)
804 (isearch-update)) 804 (isearch-update))
805 805
806;; Recent versions of GNU Emacs allow to override the isearch search 806;; Recent versions of GNU Emacs allow overriding the isearch search
807;; function for special needs, and avoid to advice the built-in search 807;; function for special needs, and avoid to advice the built-in search
808;; function :-) 808;; function :-)
809(defun senator-isearch-search-fun () 809(defun senator-isearch-search-fun ()
diff --git a/lisp/cedet/semantic/wisent.el b/lisp/cedet/semantic/wisent.el
index 2df4b2a2e15..d0632f1640c 100644
--- a/lisp/cedet/semantic/wisent.el
+++ b/lisp/cedet/semantic/wisent.el
@@ -149,7 +149,7 @@ and will be collected in `semantic-lex' form: (SYMBOL START . END)."
149 149
150;; Parser plug-ins 150;; Parser plug-ins
151;; 151;;
152;; The following functions permit to plug the Wisent LALR parser in 152;; The following functions permit plugging the Wisent LALR parser in
153;; Semantic toolkit. They use the standard API provided by Semantic 153;; Semantic toolkit. They use the standard API provided by Semantic
154;; to plug parsers in. 154;; to plug parsers in.
155;; 155;;
diff --git a/lisp/dos-fns.el b/lisp/dos-fns.el
index 0ce2b23527d..7188ae0bce7 100644
--- a/lisp/dos-fns.el
+++ b/lisp/dos-fns.el
@@ -98,7 +98,7 @@ sure to obey the 8.3 limitations."
98 string)) 98 string))
99 (aset string i ?_)) 99 (aset string i ?_))
100 ;; If we don't have a period in the first 8 chars, insert one. 100 ;; If we don't have a period in the first 8 chars, insert one.
101 ;; This enables to have 3 more characters from the original 101 ;; This enables having 3 more characters from the original
102 ;; name in the extension. 102 ;; name in the extension.
103 (if (> (or (string-match "\\." string) (length string)) 103 (if (> (or (string-match "\\." string) (length string))
104 8) 104 8)
diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el
index f4be9473394..7a914da3977 100644
--- a/lisp/emacs-lisp/ert.el
+++ b/lisp/emacs-lisp/ert.el
@@ -2128,12 +2128,12 @@ To be used in the ERT results buffer."
2128 "Move point from NODE to the previous or next node. 2128 "Move point from NODE to the previous or next node.
2129 2129
2130EWOC-FN specifies the direction and should be either `ewoc-prev' 2130EWOC-FN specifies the direction and should be either `ewoc-prev'
2131or `ewoc-next'. If there are no more nodes in that direction, an 2131or `ewoc-next'. If there are no more nodes in that direction, a
2132error is signaled with the message ERROR-MESSAGE." 2132user-error is signaled with the message ERROR-MESSAGE."
2133 (cl-loop 2133 (cl-loop
2134 (setq node (funcall ewoc-fn ert--results-ewoc node)) 2134 (setq node (funcall ewoc-fn ert--results-ewoc node))
2135 (when (null node) 2135 (when (null node)
2136 (error "%s" error-message)) 2136 (user-error "%s" error-message))
2137 (unless (ert--ewoc-entry-hidden-p (ewoc-data node)) 2137 (unless (ert--ewoc-entry-hidden-p (ewoc-data node))
2138 (goto-char (ewoc-location node)) 2138 (goto-char (ewoc-location node))
2139 (cl-return)))) 2139 (cl-return))))
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 549ee96dd5f..7be997e6469 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -117,7 +117,7 @@ two element list, binding its elements to symbols named `foo' and
117 117
118A significant difference from `cl-destructuring-bind' is that, if 118A significant difference from `cl-destructuring-bind' is that, if
119a pattern match fails, the next case is tried until either a 119a pattern match fails, the next case is tried until either a
120succesful match is found or there are no more cases. 120successful match is found or there are no more cases.
121 121
122Another difference is that pattern elements may be backquoted, 122Another difference is that pattern elements may be backquoted,
123meaning they must match exactly: The pattern \\='(foo bar) 123meaning they must match exactly: The pattern \\='(foo bar)
diff --git a/lisp/emacs-lisp/tabulated-list.el b/lisp/emacs-lisp/tabulated-list.el
index 68658d20b37..00b029d8f3e 100644
--- a/lisp/emacs-lisp/tabulated-list.el
+++ b/lisp/emacs-lisp/tabulated-list.el
@@ -571,7 +571,6 @@ data in an ewoc may instead specify a printer function (e.g., one
571that calls `ewoc-enter-last'), with `tabulated-list-print-entry' 571that calls `ewoc-enter-last'), with `tabulated-list-print-entry'
572as the ewoc pretty-printer." 572as the ewoc pretty-printer."
573 (setq-local truncate-lines t) 573 (setq-local truncate-lines t)
574 (setq-local buffer-read-only t)
575 (setq-local buffer-undo-list t) 574 (setq-local buffer-undo-list t)
576 (setq-local revert-buffer-function #'tabulated-list-revert) 575 (setq-local revert-buffer-function #'tabulated-list-revert)
577 (setq-local glyphless-char-display tabulated-list-glyphless-char-display) 576 (setq-local glyphless-char-display tabulated-list-glyphless-char-display)
diff --git a/lisp/files-x.el b/lisp/files-x.el
index 2e1a728356e..05ad7f57c57 100644
--- a/lisp/files-x.el
+++ b/lisp/files-x.el
@@ -429,23 +429,24 @@ from the MODE alist ignoring the input argument VALUE."
429 (catch 'exit 429 (catch 'exit
430 (unless enable-local-variables 430 (unless enable-local-variables
431 (throw 'exit (message "Directory-local variables are disabled"))) 431 (throw 'exit (message "Directory-local variables are disabled")))
432 (let ((variables-file (and (buffer-file-name) 432 (let* ((dir-or-cache (and (buffer-file-name)
433 (not (file-remote-p (buffer-file-name))) 433 (not (file-remote-p (buffer-file-name)))
434 (dir-locals-find-file (buffer-file-name)))) 434 (dir-locals-find-file (buffer-file-name))))
435 variables) 435 (variables-file
436 (setq variables-file
437 ;; If there are several .dir-locals, the user probably 436 ;; If there are several .dir-locals, the user probably
438 ;; wants to edit the last one (the highest priority). 437 ;; wants to edit the last one (the highest priority).
439 (cond ((stringp variables-file) 438 (cond ((stringp dir-or-cache)
440 (car (last (dir-locals--all-files variables-file)))) 439 (car (last (dir-locals--all-files dir-or-cache))))
441 ((consp variables-file) ; result from cache 440 ((consp dir-or-cache) ; result from cache
442 ;; If cache element has an mtime, assume it came from a file. 441 ;; If cache element has an mtime, assume it came
443 ;; Otherwise, assume it was set directly. 442 ;; from a file. Otherwise, assume it was set
444 (if (nth 2 variables-file) 443 ;; directly.
445 (car (last (dir-locals--all-files (car variables-file)))) 444 (if (nth 2 dir-or-cache)
446 (cadr variables-file))) 445 (car (last (dir-locals--all-files (car dir-or-cache))))
446 (cadr dir-or-cache)))
447 ;; Try to make a proper file-name. 447 ;; Try to make a proper file-name.
448 (t (concat dir-locals-file ".el")))) 448 (t (expand-file-name dir-locals-file))))
449 variables)
449 ;; I can't be bothered to handle this case right now. 450 ;; I can't be bothered to handle this case right now.
450 ;; Dir locals were set directly from a class. You need to 451 ;; Dir locals were set directly from a class. You need to
451 ;; directly modify the class in dir-locals-class-alist. 452 ;; directly modify the class in dir-locals-class-alist.
diff --git a/lisp/files.el b/lisp/files.el
index 5a15c71aab6..92ae4344e1c 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3713,37 +3713,43 @@ VARIABLES list of the class. The list is processed in order.
3713 applied by recursively following these rules." 3713 applied by recursively following these rules."
3714 (setf (alist-get class dir-locals-class-alist) variables)) 3714 (setf (alist-get class dir-locals-class-alist) variables))
3715 3715
3716(defconst dir-locals-file ".dir-locals" 3716(defconst dir-locals-file ".dir-locals.el"
3717 "Pattern for files that contain directory-local variables. 3717 "File that contains directory-local variables.
3718It has to be constant to enforce uniform values across different 3718It has to be constant to enforce uniform values across different
3719environments and users. 3719environments and users.
3720See also `dir-locals-file-2', whose values override this one's.
3721See Info node `(elisp)Directory Local Variables' for details.")
3720 3722
3721Multiple dir-locals files in the same directory are loaded in 3723(defconst dir-locals-file-2 ".dir-locals-2.el"
3722`string<' order. 3724 "File that contains directory-local variables.
3725This essentially a second file that can be used like
3726`dir-locals-file', so that users can have specify their personal
3727dir-local variables even if the current directory already has a
3728`dir-locals-file' that is shared with other users (such as in a
3729git repository).
3723See Info node `(elisp)Directory Local Variables' for details.") 3730See Info node `(elisp)Directory Local Variables' for details.")
3724 3731
3725(defun dir-locals--all-files (file-or-dir) 3732(defun dir-locals--all-files (directory)
3726 "Return a list of all readable dir-locals files matching FILE-OR-DIR. 3733 "Return a list of all readable dir-locals files in DIRECTORY.
3727If FILE-OR-DIR is a file pattern, expand wildcards in it and 3734The returned list is sorted by increasing priority. That is,
3728return a sorted list of the results. If it is a directory name, 3735values specified in the last file should take precedence over
3729return a sorted list of all files matching `dir-locals-file' in 3736those in the first."
3730this directory. 3737 (when (file-readable-p directory)
3731The returned list is sorted by `string<' order." 3738 (let* ((file-1 (expand-file-name (if (eq system-type 'ms-dos)
3732 (require 'seq) 3739 (dosified-file-name dir-locals-file)
3733 (let ((dir (if (file-directory-p file-or-dir) 3740 dir-locals-file)
3734 file-or-dir 3741 directory))
3735 (or (file-name-directory file-or-dir) 3742 (file-2 (when (string-match "\\.el\\'" file-1)
3736 default-directory))) 3743 (replace-match "-2.el" t nil file-1)))
3737 (file (cond ((not (file-directory-p file-or-dir)) (file-name-nondirectory file-or-dir)) 3744 (out nil))
3738 ((eq system-type 'ms-dos) (dosified-file-name dir-locals-file)) 3745 ;; The order here is important.
3739 (t dir-locals-file)))) 3746 (dolist (f (list file-2 file-1))
3740 (seq-filter (lambda (f) (and (file-readable-p f) 3747 (when (and f
3741 (file-regular-p f) 3748 (file-readable-p f)
3742 (not (file-directory-p f)))) 3749 (file-regular-p f)
3743 (mapcar (lambda (f) (expand-file-name f dir)) 3750 (not (file-directory-p f)))
3744 (nreverse 3751 (push f out)))
3745 (let ((completion-regexp-list '("\\.el\\'"))) 3752 out)))
3746 (file-name-all-completions file dir)))))))
3747 3753
3748(defun dir-locals-find-file (file) 3754(defun dir-locals-find-file (file)
3749 "Find the directory-local variables for FILE. 3755 "Find the directory-local variables for FILE.
@@ -3758,24 +3764,19 @@ A cache entry based on a `dir-locals-file' is valid if the modification
3758time stored in the cache matches the current file modification time. 3764time stored in the cache matches the current file modification time.
3759If not, the cache entry is cleared so that the file will be re-read. 3765If not, the cache entry is cleared so that the file will be re-read.
3760 3766
3761This function returns either nil (no directory local variables found), 3767This function returns either:
3762or the matching entry from `dir-locals-directory-cache' (a list), 3768 - nil (no directory local variables found),
3763or the full path to the `dir-locals-file' (a string) in the case 3769 - the matching entry from `dir-locals-directory-cache' (a list),
3764of no valid cache entry. If `dir-locals-file' contains 3770 - or the full path to the directory (a string) containing at
3765wildcards, then the return value is not a proper filename, it is 3771 least one `dir-locals-file' in the case of no valid cache
3766an absolute version of `dir-locals-file' which is guaranteed to 3772 entry."
3767expand to at least one file."
3768 (setq file (expand-file-name file)) 3773 (setq file (expand-file-name file))
3769 (let* ((locals-dir (locate-dominating-file (file-name-directory file) 3774 (let* ((locals-dir (locate-dominating-file (file-name-directory file)
3770 #'dir-locals--all-files)) 3775 #'dir-locals--all-files))
3771 locals-file dir-elt) 3776 dir-elt)
3772 ;; `locate-dominating-file' may have abbreviated the name. 3777 ;; `locate-dominating-file' may have abbreviated the name.
3773 (when locals-dir 3778 (when locals-dir
3774 (setq locals-dir (expand-file-name locals-dir)) 3779 (setq locals-dir (expand-file-name locals-dir)))
3775 (setq locals-file (expand-file-name (if (eq system-type 'ms-dos)
3776 (dosified-file-name dir-locals-file)
3777 dir-locals-file)
3778 locals-dir)))
3779 ;; Find the best cached value in `dir-locals-directory-cache'. 3780 ;; Find the best cached value in `dir-locals-directory-cache'.
3780 (dolist (elt dir-locals-directory-cache) 3781 (dolist (elt dir-locals-directory-cache)
3781 (when (and (string-prefix-p (car elt) file 3782 (when (and (string-prefix-p (car elt) file
@@ -3808,20 +3809,19 @@ expand to at least one file."
3808 (delq dir-elt dir-locals-directory-cache)) 3809 (delq dir-elt dir-locals-directory-cache))
3809 ;; Return the first existing dir-locals file. Might be the same 3810 ;; Return the first existing dir-locals file. Might be the same
3810 ;; as dir-elt's, might not (eg latter might have been deleted). 3811 ;; as dir-elt's, might not (eg latter might have been deleted).
3811 locals-file) 3812 locals-dir)
3812 ;; No cache entry. 3813 ;; No cache entry.
3813 locals-file))) 3814 locals-dir)))
3814 3815
3815(defun dir-locals-read-from-file (file) 3816(defun dir-locals-read-from-dir (dir)
3816 "Load a variables FILE and register a new class and instance. 3817 "Load all variables files in DIR and register a new class and instance.
3817FILE is the absolute name of the file holding the variables to 3818DIR is the absolute name of a directory which must contain at
3818apply. It may contain wildcards. 3819least one dir-local file (which is a file holding variables to
3819The new class name is the same as the directory in which FILE 3820apply).
3820is found. Returns the new class name." 3821Return the new class name, which is a symbol named DIR."
3821 (require 'map) 3822 (require 'map)
3822 (let* ((dir-name (file-name-directory file)) 3823 (let* ((class-name (intern dir))
3823 (class-name (intern dir-name)) 3824 (files (dir-locals--all-files dir))
3824 (files (dir-locals--all-files file))
3825 (read-circle nil) 3825 (read-circle nil)
3826 (success nil) 3826 (success nil)
3827 (variables)) 3827 (variables))
@@ -3838,7 +3838,7 @@ is found. Returns the new class name."
3838 (setq success t)) 3838 (setq success t))
3839 (dir-locals-set-class-variables class-name variables) 3839 (dir-locals-set-class-variables class-name variables)
3840 (dir-locals-set-directory-class 3840 (dir-locals-set-directory-class
3841 dir-name class-name 3841 dir class-name
3842 (seconds-to-time 3842 (seconds-to-time
3843 (if success 3843 (if success
3844 (apply #'max (mapcar (lambda (file) 3844 (apply #'max (mapcar (lambda (file)
@@ -3849,6 +3849,9 @@ is found. Returns the new class name."
3849 0))) 3849 0)))
3850 class-name)) 3850 class-name))
3851 3851
3852(define-obsolete-function-alias 'dir-locals-read-from-file
3853 'dir-locals-read-from-dir "25.1")
3854
3852(defcustom enable-remote-dir-locals nil 3855(defcustom enable-remote-dir-locals nil
3853 "Non-nil means dir-local variables will be applied to remote files." 3856 "Non-nil means dir-local variables will be applied to remote files."
3854 :version "24.3" 3857 :version "24.3"
@@ -3870,17 +3873,17 @@ This does nothing if either `enable-local-variables' or
3870 (not (file-remote-p (or (buffer-file-name) 3873 (not (file-remote-p (or (buffer-file-name)
3871 default-directory))))) 3874 default-directory)))))
3872 ;; Find the variables file. 3875 ;; Find the variables file.
3873 (let ((file-pattern-or-cache (dir-locals-find-file 3876 (let ((dir-or-cache (dir-locals-find-file
3874 (or (buffer-file-name) default-directory))) 3877 (or (buffer-file-name) default-directory)))
3875 (class nil) 3878 (class nil)
3876 (dir-name nil)) 3879 (dir-name nil))
3877 (cond 3880 (cond
3878 ((stringp file-pattern-or-cache) 3881 ((stringp dir-or-cache)
3879 (setq dir-name (file-name-directory file-pattern-or-cache) 3882 (setq dir-name dir-or-cache
3880 class (dir-locals-read-from-file file-pattern-or-cache))) 3883 class (dir-locals-read-from-dir dir-or-cache)))
3881 ((consp file-pattern-or-cache) 3884 ((consp dir-or-cache)
3882 (setq dir-name (nth 0 file-pattern-or-cache)) 3885 (setq dir-name (nth 0 dir-or-cache))
3883 (setq class (nth 1 file-pattern-or-cache)))) 3886 (setq class (nth 1 dir-or-cache))))
3884 (when class 3887 (when class
3885 (let ((variables 3888 (let ((variables
3886 (dir-locals-collect-variables 3889 (dir-locals-collect-variables
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index 988bf7bd216..471db6b148f 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1074,7 +1074,13 @@ accessible portion of the current buffer."
1074 1074
1075(defvar font-lock-ensure-function 1075(defvar font-lock-ensure-function
1076 (lambda (_beg _end) 1076 (lambda (_beg _end)
1077 (unless font-lock-fontified (font-lock-default-fontify-buffer))) 1077 (unless font-lock-fontified
1078 (font-lock-default-fontify-buffer)
1079 (unless font-lock-mode
1080 ;; If font-lock is not enabled, we don't have the hooks in place to
1081 ;; track modifications, so a subsequent call to font-lock-ensure can't
1082 ;; assume that the fontification is still valid.
1083 (setq font-lock-fontified nil))))
1078 "Function to make sure a region has been fontified. 1084 "Function to make sure a region has been fontified.
1079Called with two arguments BEG and END.") 1085Called with two arguments BEG and END.")
1080 1086
diff --git a/lisp/frameset.el b/lisp/frameset.el
index b8d86c649ec..2453f57e228 100644
--- a/lisp/frameset.el
+++ b/lisp/frameset.el
@@ -354,12 +354,12 @@ Properties can be set with
354;; Now, what about the filter alist variables? There are three of them, 354;; Now, what about the filter alist variables? There are three of them,
355;; though only two sets of parameters: 355;; though only two sets of parameters:
356;; 356;;
357;; - `frameset-session-filter-alist' contains these filters that allow to 357;; - `frameset-session-filter-alist' contains these filters that allow
358;; save and restore framesets in-session, without the need to serialize 358;; saving and restoring framesets in-session, without the need to
359;; the frameset or save it to disk (for example, to save a frameset in a 359;; serialize the frameset or save it to disk (for example, to save a
360;; register and restore it later). Filters in this list do not remove 360;; frameset in a register and restore it later). Filters in this
361;; live objects, except in `minibuffer', which is dealt especially by 361;; list do not remove live objects, except in `minibuffer', which is
362;; `frameset-save' / `frameset-restore'. 362;; dealt especially by `frameset-save' / `frameset-restore'.
363;; 363;;
364;; - `frameset-persistent-filter-alist' is the whole deal. It does all 364;; - `frameset-persistent-filter-alist' is the whole deal. It does all
365;; the filtering described above, and the result is ready to be saved on 365;; the filtering described above, and the result is ready to be saved on
@@ -1072,7 +1072,7 @@ FORCE-ONSCREEN can be:
1072 - a list (LEFT TOP WIDTH HEIGHT), describing the workarea. 1072 - a list (LEFT TOP WIDTH HEIGHT), describing the workarea.
1073 It must return non-nil to force the frame onscreen, nil otherwise. 1073 It must return non-nil to force the frame onscreen, nil otherwise.
1074 1074
1075CLEANUP-FRAMES allows to \"clean up\" the frame list after restoring a frameset: 1075CLEANUP-FRAMES allows \"cleaning up\" the frame list after restoring a frameset:
1076 t Delete all frames that were not created or restored upon. 1076 t Delete all frames that were not created or restored upon.
1077 nil Keep all frames. 1077 nil Keep all frames.
1078 FUNC A function called with two arguments: 1078 FUNC A function called with two arguments:
diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el
index 9219ce04c1f..80753c11813 100644
--- a/lisp/gnus/gnus-agent.el
+++ b/lisp/gnus/gnus-agent.el
@@ -680,7 +680,7 @@ minor mode in all Gnus buffers."
680 680
681(defun gnus-agent-queue-setup (&optional group-name) 681(defun gnus-agent-queue-setup (&optional group-name)
682 "Make sure the queue group exists. 682 "Make sure the queue group exists.
683Optional arg GROUP-NAME allows to specify another group." 683Optional arg GROUP-NAME allows another group to be specified."
684 (unless (gnus-gethash (format "nndraft:%s" (or group-name "queue")) 684 (unless (gnus-gethash (format "nndraft:%s" (or group-name "queue"))
685 gnus-newsrc-hashtb) 685 gnus-newsrc-hashtb)
686 (gnus-request-create-group (or group-name "queue") '(nndraft "")) 686 (gnus-request-create-group (or group-name "queue") '(nndraft ""))
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index 11ce04f799a..54bbfd857f1 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -1659,7 +1659,9 @@ called with the group name as the parameter, and should return a
1659regexp." 1659regexp."
1660 :version "24.1" 1660 :version "24.1"
1661 :group 'gnus-art 1661 :group 'gnus-art
1662 :type '(choice regexp function)) 1662 :type '(choice (const :tag "Allow all" nil)
1663 (regexp :tag "Regular expression")
1664 (function :tag "Use a function")))
1663 1665
1664;;; Internal variables 1666;;; Internal variables
1665 1667
diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el
index fb97479302b..106d010a3dc 100644
--- a/lisp/gnus/mm-util.el
+++ b/lisp/gnus/mm-util.el
@@ -496,9 +496,9 @@ Unless LIST is given, `mm-codepage-ibm-list' is used."
496 (windows-1257 . (mm-codepage-setup 1257 t)))) 496 (windows-1257 . (mm-codepage-setup 1257 t))))
497 "An alist of (CHARSET . FORM) pairs. 497 "An alist of (CHARSET . FORM) pairs.
498If an article is encoded in an unknown CHARSET, FORM is 498If an article is encoded in an unknown CHARSET, FORM is
499evaluated. This allows to load additional libraries providing 499evaluated. This allows the loading of additional libraries
500charsets on demand. If supported by your Emacs version, you 500providing charsets on demand. If supported by your Emacs
501could use `autoload-coding-system' here." 501version, you could use `autoload-coding-system' here."
502 :version "22.1" ;; Gnus 5.10.9 502 :version "22.1" ;; Gnus 5.10.9
503 :type '(list (set :inline t 503 :type '(list (set :inline t
504 (const (windows-1250 . (mm-codepage-setup 1250 t))) 504 (const (windows-1250 . (mm-codepage-setup 1250 t)))
diff --git a/lisp/international/characters.el b/lisp/international/characters.el
index 2e947331abe..a43c0f68070 100644
--- a/lisp/international/characters.el
+++ b/lisp/international/characters.el
@@ -496,7 +496,7 @@ with L, LRE, or LRO Unicode bidi character type.")
496 table))) 496 table)))
497 497
498;; Load uni-mirrored.el and uni-brackets.el if available, so that they 498;; Load uni-mirrored.el and uni-brackets.el if available, so that they
499;; get dumped into Emacs. This allows to start Emacs with 499;; get dumped into Emacs. This allows starting Emacs with
500;; force-load-messages in ~/.emacs, and avoid infinite recursion in 500;; force-load-messages in ~/.emacs, and avoid infinite recursion in
501;; bidi_initialize, which needs to load uni-mirrored.el and 501;; bidi_initialize, which needs to load uni-mirrored.el and
502;; uni-brackets.el in order to display the "Loading" messages. 502;; uni-brackets.el in order to display the "Loading" messages.
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index f0c65fa032b..7b46822aad7 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -11624,7 +11624,7 @@ FORCE-ONSCREEN can be:
11624 - a list (LEFT TOP WIDTH HEIGHT), describing the workarea. 11624 - a list (LEFT TOP WIDTH HEIGHT), describing the workarea.
11625 It must return non-nil to force the frame onscreen, nil otherwise. 11625 It must return non-nil to force the frame onscreen, nil otherwise.
11626 11626
11627CLEANUP-FRAMES allows to \"clean up\" the frame list after restoring a frameset: 11627CLEANUP-FRAMES allows \"cleaning up\" the frame list after restoring a frameset:
11628 t Delete all frames that were not created or restored upon. 11628 t Delete all frames that were not created or restored upon.
11629 nil Keep all frames. 11629 nil Keep all frames.
11630 FUNC A function called with two arguments: 11630 FUNC A function called with two arguments:
@@ -30597,8 +30597,8 @@ Usage:
30597 according to option `vhdl-argument-list-indent'. 30597 according to option `vhdl-argument-list-indent'.
30598 30598
30599 If option `vhdl-indent-tabs-mode' is nil, spaces are used instead of 30599 If option `vhdl-indent-tabs-mode' is nil, spaces are used instead of
30600 tabs. `\\[tabify]' and `\\[untabify]' allow to convert spaces to tabs 30600 tabs. `\\[tabify]' and `\\[untabify]' allow the conversion of spaces to
30601 and vice versa. 30601 tabs and vice versa.
30602 30602
30603 Syntax-based indentation can be very slow in large files. Option 30603 Syntax-based indentation can be very slow in large files. Option
30604 `vhdl-indent-syntax-based' allows you to use faster but simpler indentation. 30604 `vhdl-indent-syntax-based' allows you to use faster but simpler indentation.
diff --git a/lisp/mail/mailclient.el b/lisp/mail/mailclient.el
index bfd6e7d1424..eb1305a5e39 100644
--- a/lisp/mail/mailclient.el
+++ b/lisp/mail/mailclient.el
@@ -22,7 +22,7 @@
22 22
23;;; Commentary: 23;;; Commentary:
24 24
25;; This package allows to hand over a buffer to be sent off 25;; This package allows handing over a buffer to be sent off
26;; via the system's designated e-mail client. 26;; via the system's designated e-mail client.
27;; Note that the e-mail client will display the contents of the buffer 27;; Note that the e-mail client will display the contents of the buffer
28;; again for editing. 28;; again for editing.
diff --git a/lisp/man.el b/lisp/man.el
index 40b77e6eeed..04a7fc3fe7a 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -75,7 +75,7 @@
75;; ============= TODO =========== 75;; ============= TODO ===========
76;; - Add a command for printing. 76;; - Add a command for printing.
77;; - The awk script deletes multiple blank lines. This behavior does 77;; - The awk script deletes multiple blank lines. This behavior does
78;; not allow to understand if there was indeed a blank line at the 78;; not allow one to understand if there was indeed a blank line at the
79;; end or beginning of a page (after the header, or before the 79;; end or beginning of a page (after the header, or before the
80;; footer). A different algorithm should be used. It is easy to 80;; footer). A different algorithm should be used. It is easy to
81;; compute how many blank lines there are before and after the page 81;; compute how many blank lines there are before and after the page
diff --git a/lisp/mh-e/mh-search.el b/lisp/mh-e/mh-search.el
index 30b38919944..6e607444ad8 100644
--- a/lisp/mh-e/mh-search.el
+++ b/lisp/mh-e/mh-search.el
@@ -1262,7 +1262,7 @@ is used to search."
1262 (forward-line))) 1262 (forward-line)))
1263 1263
1264;; All implementations of pick have special options -cc, -date, -from and 1264;; All implementations of pick have special options -cc, -date, -from and
1265;; -subject that allow to search for corresponding components. Any other 1265;; -subject that allow searching for corresponding components. Any other
1266;; component is searched using option --COMPNAME, for example: `pick 1266;; component is searched using option --COMPNAME, for example: `pick
1267;; --x-mailer mh-e'. Mailutils "pick" supports this option using a certain 1267;; --x-mailer mh-e'. Mailutils "pick" supports this option using a certain
1268;; kludge, but it prefers the following syntax for this purpose: 1268;; kludge, but it prefers the following syntax for this purpose:
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el
index edf91ab6000..1a666e0d9e9 100644
--- a/lisp/net/browse-url.el
+++ b/lisp/net/browse-url.el
@@ -148,7 +148,7 @@ regexp should probably be \".\" to specify a default browser."
148 (function-item :tag "eww" :value eww-browse-url) 148 (function-item :tag "eww" :value eww-browse-url)
149 (function-item :tag "Mozilla" :value browse-url-mozilla) 149 (function-item :tag "Mozilla" :value browse-url-mozilla)
150 (function-item :tag "Firefox" :value browse-url-firefox) 150 (function-item :tag "Firefox" :value browse-url-firefox)
151 (function-item :tag "Google Chrome" :value browse-url-chrome) 151 (function-item :tag "Google Chrome" :value browse-url-chrome)
152 (function-item :tag "Chromium" :value browse-url-chromium) 152 (function-item :tag "Chromium" :value browse-url-chromium)
153 (function-item :tag "Epiphany" :value browse-url-epiphany) 153 (function-item :tag "Epiphany" :value browse-url-epiphany)
154 (function-item :tag "Conkeror" :value browse-url-conkeror) 154 (function-item :tag "Conkeror" :value browse-url-conkeror)
@@ -266,15 +266,15 @@ Defaults to the value of `browse-url-firefox-arguments' at the time
266 (while (and candidates (not (executable-find (car candidates)))) 266 (while (and candidates (not (executable-find (car candidates))))
267 (setq candidates (cdr candidates))) 267 (setq candidates (cdr candidates)))
268 (or (car candidates) "chromium")) 268 (or (car candidates) "chromium"))
269 "The name by which to invoke Chromium." 269 "The name by which to invoke the Chrome browser."
270 :type 'string 270 :type 'string
271 :version "24.1" 271 :version "25.1"
272 :group 'browse-url) 272 :group 'browse-url)
273 273
274(defcustom browse-url-chrome-arguments nil 274(defcustom browse-url-chrome-arguments nil
275 "A list of strings to pass to Google Chrome as arguments." 275 "A list of strings to pass to Google Chrome as arguments."
276 :type '(repeat (string :tag "Argument")) 276 :type '(repeat (string :tag "Argument"))
277 :version "24.1" 277 :version "25.1"
278 :group 'browse-url) 278 :group 'browse-url)
279 279
280(defcustom browse-url-chromium-program 280(defcustom browse-url-chromium-program
diff --git a/lisp/net/nsm.el b/lisp/net/nsm.el
index ebdeeccc2c8..ee8b55bf192 100644
--- a/lisp/net/nsm.el
+++ b/lisp/net/nsm.el
@@ -87,7 +87,7 @@ against previous connections. If the function determines that
87there is something odd about the connection, the user will be 87there is something odd about the connection, the user will be
88queried about what to do about it. 88queried about what to do about it.
89 89
90The process it returned if everything is OK, and otherwise, the 90The process is returned if everything is OK, and otherwise, the
91process will be deleted and nil is returned. 91process will be deleted and nil is returned.
92 92
93If SAVE-FINGERPRINT, always save the fingerprint of the 93If SAVE-FINGERPRINT, always save the fingerprint of the
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index 5e9af0b18eb..856011fc0ee 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -209,7 +209,7 @@ Before reproducing the bug, you might apply
209 209
210 M-x tramp-cleanup-all-connections 210 M-x tramp-cleanup-all-connections
211 211
212This allows to investigate from a clean environment. Another 212This allows us to investigate from a clean environment. Another
213useful thing to do is to put 213useful thing to do is to put
214 214
215 (setq tramp-verbose 9) 215 (setq tramp-verbose 9)
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 46bf3de098d..796a5d3d0dd 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -86,7 +86,7 @@
86 86
87;; Restrictions: 87;; Restrictions:
88 88
89;; * The current GVFS implementation does not allow to write on the 89;; * The current GVFS implementation does not allow writing on the
90;; remote bluetooth device via OBEX. 90;; remote bluetooth device via OBEX.
91;; 91;;
92;; * Two shares of the same SMB server cannot be mounted in parallel. 92;; * Two shares of the same SMB server cannot be mounted in parallel.
diff --git a/lisp/org/ChangeLog.1 b/lisp/org/ChangeLog.1
index 57a427c30d4..ccc849d226a 100644
--- a/lisp/org/ChangeLog.1
+++ b/lisp/org/ChangeLog.1
@@ -32528,7 +32528,7 @@
32528 (org-export-normalize-links) 32528 (org-export-normalize-links)
32529 (org-export-concatenate-multiline-links) 32529 (org-export-concatenate-multiline-links)
32530 (org-export-concatenate-multiline-emphasis): New functions, 32530 (org-export-concatenate-multiline-emphasis): New functions,
32531 obtained from spliting the export preprocessor. 32531 obtained from splitting the export preprocessor.
32532 32532
32533 * org-table.el (org-table-recalculate): Improve error message if 32533 * org-table.el (org-table-recalculate): Improve error message if
32534 the row number is invalid. 32534 the row number is invalid.
diff --git a/lisp/org/org-crypt.el b/lisp/org/org-crypt.el
index 22b02c84889..8abe32befe0 100644
--- a/lisp/org/org-crypt.el
+++ b/lisp/org/org-crypt.el
@@ -225,7 +225,7 @@ See `org-crypt-disable-auto-save'."
225 ;; outline property starts at the \n of the heading. 225 ;; outline property starts at the \n of the heading.
226 (delete-region (1- (point)) end) 226 (delete-region (1- (point)) end)
227 ;; Store a checksum of the decrypted and the encrypted 227 ;; Store a checksum of the decrypted and the encrypted
228 ;; text value. This allow to reuse the same encrypted text 228 ;; text value. This allow reusing the same encrypted text
229 ;; if the text does not change, and therefore avoid a 229 ;; if the text does not change, and therefore avoid a
230 ;; re-encryption process. 230 ;; re-encryption process.
231 (insert "\n" (propertize decrypted-text 231 (insert "\n" (propertize decrypted-text
diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el
index e47d65f1037..a19f52c7923 100644
--- a/lisp/org/org-element.el
+++ b/lisp/org/org-element.el
@@ -367,8 +367,8 @@ still has an entry since one of its properties (`:title') does.")
367;; Provide four accessors: `org-element-type', `org-element-property' 367;; Provide four accessors: `org-element-type', `org-element-property'
368;; `org-element-contents' and `org-element-restriction'. 368;; `org-element-contents' and `org-element-restriction'.
369;; 369;;
370;; Setter functions allow to modify elements by side effect. There is 370;; Setter functions allow modification of elements by side effect.
371;; `org-element-put-property', `org-element-set-contents', 371;; There is `org-element-put-property', `org-element-set-contents',
372;; `org-element-set-element' and `org-element-adopt-element'. Note 372;; `org-element-set-element' and `org-element-adopt-element'. Note
373;; that `org-element-set-element' and `org-element-adopt-elements' are 373;; that `org-element-set-element' and `org-element-adopt-elements' are
374;; higher level functions since also update `:parent' property. 374;; higher level functions since also update `:parent' property.
@@ -487,7 +487,7 @@ Return parent element."
487;; cannot contain other greater elements of their own type. 487;; cannot contain other greater elements of their own type.
488;; 488;;
489;; Beside implementing a parser and an interpreter, adding a new 489;; Beside implementing a parser and an interpreter, adding a new
490;; greater element requires to tweak `org-element--current-element'. 490;; greater element requires tweaking `org-element--current-element'.
491;; Moreover, the newly defined type must be added to both 491;; Moreover, the newly defined type must be added to both
492;; `org-element-all-elements' and `org-element-greater-elements'. 492;; `org-element-all-elements' and `org-element-greater-elements'.
493 493
@@ -4023,8 +4023,8 @@ position of point and CDR is nil."
4023;; `org-element-parse-secondary-string', which parses objects within 4023;; `org-element-parse-secondary-string', which parses objects within
4024;; a given string. 4024;; a given string.
4025;; 4025;;
4026;; The (almost) almighty `org-element-map' allows to apply a function 4026;; The (almost) almighty `org-element-map' allows applying a function
4027;; on elements or objects matching some type, and accumulate the 4027;; on elements or objects matching some type, and accumulating the
4028;; resulting values. In an export situation, it also skips unneeded 4028;; resulting values. In an export situation, it also skips unneeded
4029;; parts of the parse tree. 4029;; parts of the parse tree.
4030 4030
diff --git a/lisp/org/org-feed.el b/lisp/org/org-feed.el
index 2d71c8b6fcc..6d6f996954a 100644
--- a/lisp/org/org-feed.el
+++ b/lisp/org/org-feed.el
@@ -24,7 +24,7 @@
24;; 24;;
25;;; Commentary: 25;;; Commentary:
26;; 26;;
27;; This module allows to create and change entries in an Org-mode 27;; This module allows entries to be created and changed in an Org-mode
28;; file triggered by items in an RSS feed. The basic functionality is 28;; file triggered by items in an RSS feed. The basic functionality is
29;; geared toward simply adding new items found in a feed as outline nodes 29;; geared toward simply adding new items found in a feed as outline nodes
30;; to an Org file. Using hooks, arbitrary actions can be triggered for 30;; to an Org file. Using hooks, arbitrary actions can be triggered for
diff --git a/lisp/org/org-mobile.el b/lisp/org/org-mobile.el
index b11f4448a8d..f535390790f 100644
--- a/lisp/org/org-mobile.el
+++ b/lisp/org/org-mobile.el
@@ -88,7 +88,7 @@ org-agenda-text-search-extra-files
88Encryption uses AES-256, with a password given in 88Encryption uses AES-256, with a password given in
89`org-mobile-encryption-password'. 89`org-mobile-encryption-password'.
90When nil, plain files are kept on the server. 90When nil, plain files are kept on the server.
91Turning on encryption requires to set the same password in the MobileOrg 91Turning on encryption requires setting the same password in the MobileOrg
92application. Before turning this on, check of MobileOrg does already 92application. Before turning this on, check of MobileOrg does already
93support it - at the time of this writing it did not yet." 93support it - at the time of this writing it did not yet."
94 :group 'org-mobile 94 :group 'org-mobile
diff --git a/lisp/org/org.el b/lisp/org/org.el
index 960b874bc7e..6e7d54d39c0 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -2254,7 +2254,7 @@ fast, while still showing the whole path to the entry."
2254 :type 'boolean) 2254 :type 'boolean)
2255 2255
2256(defcustom org-refile-allow-creating-parent-nodes nil 2256(defcustom org-refile-allow-creating-parent-nodes nil
2257 "Non-nil means allow to create new nodes as refile targets. 2257 "Non-nil means allow the creation of new nodes as refile targets.
2258New nodes are then created by adding \"/new node name\" to the completion 2258New nodes are then created by adding \"/new node name\" to the completion
2259of an existing node. When the value of this variable is `confirm', 2259of an existing node. When the value of this variable is `confirm',
2260new node creation must be confirmed by the user (recommended). 2260new node creation must be confirmed by the user (recommended).
diff --git a/lisp/org/ox-ascii.el b/lisp/org/ox-ascii.el
index 1907dc0c748..dcca608b306 100644
--- a/lisp/org/ox-ascii.el
+++ b/lisp/org/ox-ascii.el
@@ -35,10 +35,10 @@
35 35
36;;; Define Back-End 36;;; Define Back-End
37;; 37;;
38;; The following setting won't allow to modify preferred charset 38;; The following setting won't allow modifying preferred charset
39;; through a buffer keyword or an option item, but, since the property 39;; through a buffer keyword or an option item, but, since the property
40;; will appear in communication channel nonetheless, it allows to 40;; will appear in communication channel nonetheless, it allows
41;; override `org-ascii-charset' variable on the fly by the ext-plist 41;; overriding `org-ascii-charset' variable on the fly by the ext-plist
42;; mechanism. 42;; mechanism.
43;; 43;;
44;; We also install a filter for headlines and sections, in order to 44;; We also install a filter for headlines and sections, in order to
diff --git a/lisp/org/ox-icalendar.el b/lisp/org/ox-icalendar.el
index 44480673db8..0d34ba19f45 100644
--- a/lisp/org/ox-icalendar.el
+++ b/lisp/org/ox-icalendar.el
@@ -76,7 +76,7 @@ for timed events. If non-zero, alarms are created.
76 76
77(defcustom org-icalendar-exclude-tags nil 77(defcustom org-icalendar-exclude-tags nil
78 "Tags that exclude a tree from export. 78 "Tags that exclude a tree from export.
79This variable allows to specify different exclude tags from other 79This variable allows specifying different exclude tags from other
80back-ends. It can also be set with the ICAL_EXCLUDE_TAGS 80back-ends. It can also be set with the ICAL_EXCLUDE_TAGS
81keyword." 81keyword."
82 :group 'org-export-icalendar 82 :group 'org-export-icalendar
diff --git a/lisp/org/ox-publish.el b/lisp/org/ox-publish.el
index ec33bbda52d..38fdce1d0bf 100644
--- a/lisp/org/ox-publish.el
+++ b/lisp/org/ox-publish.el
@@ -1078,7 +1078,7 @@ publishing directory."
1078 "Return numbering for headline matching FUZZY search in FILE. 1078 "Return numbering for headline matching FUZZY search in FILE.
1079 1079
1080Return value is a list of numbers, or nil. This function allows 1080Return value is a list of numbers, or nil. This function allows
1081to resolve external fuzzy links like: 1081the resolution of external fuzzy links like:
1082 1082
1083 [[file.org::*fuzzy][description]]" 1083 [[file.org::*fuzzy][description]]"
1084 (when org-publish-cache 1084 (when org-publish-cache
diff --git a/lisp/org/ox.el b/lisp/org/ox.el
index cc5a2d2bcf2..89d79738a63 100644
--- a/lisp/org/ox.el
+++ b/lisp/org/ox.el
@@ -775,7 +775,7 @@ is nil. You can also allow them through local buffer variables."
775(defcustom org-export-snippet-translation-alist nil 775(defcustom org-export-snippet-translation-alist nil
776 "Alist between export snippets back-ends and exporter back-ends. 776 "Alist between export snippets back-ends and exporter back-ends.
777 777
778This variable allows to provide shortcuts for export snippets. 778This variable allows providing shortcuts for export snippets.
779 779
780For example, with a value of \((\"h\" . \"html\")), the 780For example, with a value of \((\"h\" . \"html\")), the
781HTML back-end will recognize the contents of \"@@h:<b>@@\" as 781HTML back-end will recognize the contents of \"@@h:<b>@@\" as
@@ -849,7 +849,7 @@ output is restricted to body only, \"s\" when it is restricted to
849the current subtree, \"v\" when only visible elements are 849the current subtree, \"v\" when only visible elements are
850considered for export, \"f\" when publishing functions should be 850considered for export, \"f\" when publishing functions should be
851passed the FORCE argument and \"a\" when the export should be 851passed the FORCE argument and \"a\" when the export should be
852asynchronous). Also, [?] allows to switch back to standard 852asynchronous). Also, [?] allows switching back to standard
853mode." 853mode."
854 :group 'org-export-general 854 :group 'org-export-general
855 :version "24.4" 855 :version "24.4"
@@ -3657,9 +3657,9 @@ INFO is the plist used as a communication channel."
3657;; `org-export-get-relative-level' is a shortcut to get headline 3657;; `org-export-get-relative-level' is a shortcut to get headline
3658;; level, relatively to the lower headline level in the parsed tree. 3658;; level, relatively to the lower headline level in the parsed tree.
3659;; 3659;;
3660;; `org-export-get-headline-number' returns the section number of an 3660;; `org-export-get-headline-number' returns the section number of a
3661;; headline, while `org-export-number-to-roman' allows to convert it 3661;; headline, while `org-export-number-to-roman' allows it to be
3662;; to roman numbers. 3662;; converted to roman numbers.
3663;; 3663;;
3664;; `org-export-low-level-p', `org-export-first-sibling-p' and 3664;; `org-export-low-level-p', `org-export-first-sibling-p' and
3665;; `org-export-last-sibling-p' are three useful predicates when it 3665;; `org-export-last-sibling-p' are three useful predicates when it
@@ -4093,8 +4093,8 @@ Otherwise, only provided element's type is considered.
4093Optional argument PREDICATE is a function returning a non-nil 4093Optional argument PREDICATE is a function returning a non-nil
4094value if the current element or object should be counted in. It 4094value if the current element or object should be counted in. It
4095accepts two arguments: the element or object being considered and 4095accepts two arguments: the element or object being considered and
4096the plist used as a communication channel. This allows to count 4096the plist used as a communication channel. This allows counting
4097only a certain type of objects (i.e. inline images). 4097only a certain type of object (i.e. inline images).
4098 4098
4099Return value is a list of numbers if ELEMENT is a headline or an 4099Return value is a list of numbers if ELEMENT is a headline or an
4100item. It is nil for keywords. It represents the footnote number 4100item. It is nil for keywords. It represents the footnote number
@@ -5458,7 +5458,7 @@ to `:default' encoding. If it fails, return S."
5458;; returned results in the current process. 5458;; returned results in the current process.
5459;; 5459;;
5460;; At a higher level, `org-export-to-buffer' and `org-export-to-file' 5460;; At a higher level, `org-export-to-buffer' and `org-export-to-file'
5461;; allow to export to a buffer or a file, asynchronously or not. 5461;; allow exporting to a buffer or a file, asynchronously or not.
5462;; 5462;;
5463;; `org-export-output-file-name' is an auxiliary function meant to be 5463;; `org-export-output-file-name' is an auxiliary function meant to be
5464;; used with `org-export-to-file'. With a given extension, it tries 5464;; used with `org-export-to-file'. With a given extension, it tries
@@ -5985,7 +5985,7 @@ is nil when this menu hasn't been selected yet.
5985 5985
5986EXPERTP, when non-nil, triggers expert UI. In that case, no help 5986EXPERTP, when non-nil, triggers expert UI. In that case, no help
5987buffer is provided, but indications about currently active 5987buffer is provided, but indications about currently active
5988options are given in the prompt. Moreover, [?] allows to switch 5988options are given in the prompt. Moreover, [?] allows switching
5989back to standard interface." 5989back to standard interface."
5990 (let* ((fontify-key 5990 (let* ((fontify-key
5991 (lambda (key &optional access-key) 5991 (lambda (key &optional access-key)
diff --git a/lisp/play/gamegrid.el b/lisp/play/gamegrid.el
index 0a63644ab7f..2c557ba7547 100644
--- a/lisp/play/gamegrid.el
+++ b/lisp/play/gamegrid.el
@@ -379,7 +379,7 @@ static unsigned char gamegrid_bits[] = {
379 (dotimes (i height) 379 (dotimes (i height)
380 (insert line)) 380 (insert line))
381 ;; Adjust the height of the default face to the height of the 381 ;; Adjust the height of the default face to the height of the
382 ;; images. Unlike XEmacs, Emacs doesn't allow to make the default 382 ;; images. Unlike XEmacs, Emacs doesn't allow making the default
383 ;; face buffer-local; so we do this with an overlay. 383 ;; face buffer-local; so we do this with an overlay.
384 (when (eq gamegrid-display-mode 'glyph) 384 (when (eq gamegrid-display-mode 'glyph)
385 (overlay-put (make-overlay (point-min) (point-max)) 385 (overlay-put (make-overlay (point-min) (point-max))
diff --git a/lisp/play/gomoku.el b/lisp/play/gomoku.el
index c1372fa36d6..02ac240ad6e 100644
--- a/lisp/play/gomoku.el
+++ b/lisp/play/gomoku.el
@@ -551,7 +551,7 @@ that DVAL has been added on SQUARE."
551;;; 551;;;
552 552
553;; Several variables are used to monitor a game, including a GAME-HISTORY (the 553;; Several variables are used to monitor a game, including a GAME-HISTORY (the
554;; list of all (SQUARE . PREVSCORE) played) that allows to take moves back 554;; list of all (SQUARE . PREVSCORE) played) that allows you to take moves back
555;; (anti-updating the score table) and to compute the table from scratch in 555;; (anti-updating the score table) and to compute the table from scratch in
556;; case of an interruption. 556;; case of an interruption.
557 557
diff --git a/lisp/progmodes/antlr-mode.el b/lisp/progmodes/antlr-mode.el
index 20880a806fd..ee81add340c 100644
--- a/lisp/progmodes/antlr-mode.el
+++ b/lisp/progmodes/antlr-mode.el
@@ -537,8 +537,8 @@ corresponding kind, i.e., looks like \(OPTION-DEF...).
537Each OPTION-DEF looks like \(OPTION-NAME EXTRA-FN VALUE-SPEC...) which 537Each OPTION-DEF looks like \(OPTION-NAME EXTRA-FN VALUE-SPEC...) which
538defines a file/grammar/rule/subrule option with name OPTION-NAME. The 538defines a file/grammar/rule/subrule option with name OPTION-NAME. The
539OPTION-NAMEs are used for the creation of the \"Insert XXX Option\" 539OPTION-NAMEs are used for the creation of the \"Insert XXX Option\"
540submenus, see `antlr-options-use-submenus', and to allow to insert the 540submenus, see `antlr-options-use-submenus', and to allow the insertion
541option name with completion when using \\[antlr-insert-option]. 541of the option name with completion when using \\[antlr-insert-option].
542 542
543If EXTRA-FN is a function, it is called at different phases of the 543If EXTRA-FN is a function, it is called at different phases of the
544insertion with arguments \(PHASE OPTION-NAME). PHASE can have the 544insertion with arguments \(PHASE OPTION-NAME). PHASE can have the
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 018805d679f..dc2480961d1 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -8278,8 +8278,8 @@ comment at the start of cc-engine.el for more info."
8278 before-lparen after-rparen 8278 before-lparen after-rparen
8279 (here (point)) 8279 (here (point))
8280 (pp-count-out 20) ; Max number of paren/brace constructs before 8280 (pp-count-out 20) ; Max number of paren/brace constructs before
8281 ; we give up 8281 ; we give up.
8282 ids ; List of identifiers in the parenthesised list. 8282 ids ; List of identifiers in the parenthesized list.
8283 id-start after-prec-token decl-or-cast decl-res 8283 id-start after-prec-token decl-or-cast decl-res
8284 c-last-identifier-range identifier-ok) 8284 c-last-identifier-range identifier-ok)
8285 (narrow-to-region low-lim (or macro-end (point-max))) 8285 (narrow-to-region low-lim (or macro-end (point-max)))
@@ -8304,7 +8304,7 @@ comment at the start of cc-engine.el for more info."
8304 ;; { 8304 ;; {
8305 ;; 8305 ;;
8306 ;; Additionally, for a knr list to be recognized: 8306 ;; Additionally, for a knr list to be recognized:
8307 ;; o - The identifier of each deeclarator up to and including the 8307 ;; o - The identifier of each declarator up to and including the
8308 ;; one "near" point must be contained in the arg list. 8308 ;; one "near" point must be contained in the arg list.
8309 8309
8310 (catch 'knr 8310 (catch 'knr
diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el
index 271033b15f8..a2a0df2d6e1 100644
--- a/lisp/progmodes/etags.el
+++ b/lisp/progmodes/etags.el
@@ -2100,7 +2100,7 @@ for \\[find-tag] (which see)."
2100 (etags--xref-find-definitions symbol t)) 2100 (etags--xref-find-definitions symbol t))
2101 2101
2102(defun etags--xref-find-definitions (pattern &optional regexp?) 2102(defun etags--xref-find-definitions (pattern &optional regexp?)
2103 ;; This emulates the behaviour of `find-tag-in-order' but instead of 2103 ;; This emulates the behavior of `find-tag-in-order' but instead of
2104 ;; returning one match at a time all matches are returned as list. 2104 ;; returning one match at a time all matches are returned as list.
2105 ;; NOTE: find-tag-tag-order is typically a buffer-local variable. 2105 ;; NOTE: find-tag-tag-order is typically a buffer-local variable.
2106 (let* ((xrefs '()) 2106 (let* ((xrefs '())
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index a8c65fa23a9..01f7f251edd 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -2737,7 +2737,7 @@ killed."
2737 (process (get-buffer-process buffer)) 2737 (process (get-buffer-process buffer))
2738 ;; Users can override the interpreter and args 2738 ;; Users can override the interpreter and args
2739 ;; interactively when calling `run-python', let-binding 2739 ;; interactively when calling `run-python', let-binding
2740 ;; these allows to have the new right values in all 2740 ;; these allows having the new right values in all
2741 ;; setup code that is done in `inferior-python-mode', 2741 ;; setup code that is done in `inferior-python-mode',
2742 ;; which is important, especially for prompt detection. 2742 ;; which is important, especially for prompt detection.
2743 (python-shell--interpreter interpreter) 2743 (python-shell--interpreter interpreter)
@@ -3351,7 +3351,7 @@ def __PYTHON_EL_native_completion_setup():
3351 if not completion: 3351 if not completion:
3352 if self.last_completion != '1__dummy_completion__': 3352 if self.last_completion != '1__dummy_completion__':
3353 # When no more completions are available, returning a 3353 # When no more completions are available, returning a
3354 # dummy with non-sharing prefix allow to ensure output 3354 # dummy with non-sharing prefix allow ensuring output
3355 # while preventing changes to current input. 3355 # while preventing changes to current input.
3356 # Coincidentally it's also the end of output. 3356 # Coincidentally it's also the end of output.
3357 completion = '1__dummy_completion__' 3357 completion = '1__dummy_completion__'
diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index d20a6b2f682..b176e64652e 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -4422,8 +4422,8 @@ Usage:
4422 according to option `vhdl-argument-list-indent'. 4422 according to option `vhdl-argument-list-indent'.
4423 4423
4424 If option `vhdl-indent-tabs-mode' is nil, spaces are used instead of 4424 If option `vhdl-indent-tabs-mode' is nil, spaces are used instead of
4425 tabs. `\\[tabify]' and `\\[untabify]' allow to convert spaces to tabs 4425 tabs. `\\[tabify]' and `\\[untabify]' allow the conversion of spaces to
4426 and vice versa. 4426 tabs and vice versa.
4427 4427
4428 Syntax-based indentation can be very slow in large files. Option 4428 Syntax-based indentation can be very slow in large files. Option
4429 `vhdl-indent-syntax-based' allows you to use faster but simpler indentation. 4429 `vhdl-indent-syntax-based' allows you to use faster but simpler indentation.
diff --git a/lisp/simple.el b/lisp/simple.el
index ed4ca91b2e5..72e87a410fc 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -2894,7 +2894,7 @@ removes the previous `undo-boundary' if a series of such calls
2894have been made. By default `self-insert-command' and 2894have been made. By default `self-insert-command' and
2895`delete-char' are the only amalgamating commands, although this 2895`delete-char' are the only amalgamating commands, although this
2896function could be called by any command wishing to have this 2896function could be called by any command wishing to have this
2897behaviour." 2897behavior."
2898 (let ((last-amalgamating-count 2898 (let ((last-amalgamating-count
2899 (undo-auto--last-boundary-amalgamating-number))) 2899 (undo-auto--last-boundary-amalgamating-number)))
2900 (setq undo-auto--this-command-amalgamating t) 2900 (setq undo-auto--this-command-amalgamating t)
diff --git a/lisp/strokes.el b/lisp/strokes.el
index 8bdabc9e590..5a2020d3ca0 100644
--- a/lisp/strokes.el
+++ b/lisp/strokes.el
@@ -858,7 +858,7 @@ The command will be executed provided one exists for that stroke,
858based on the variable `strokes-minimum-match-score'. 858based on the variable `strokes-minimum-match-score'.
859If no stroke matches, nothing is done and return value is nil." 859If no stroke matches, nothing is done and return value is nil."
860 ;; FIXME: Undocument return value. It is not documented for all cases, 860 ;; FIXME: Undocument return value. It is not documented for all cases,
861 ;; and doesn't allow to difference between no stroke matches and 861 ;; and doesn't allow differentiating between no stroke matches and
862 ;; command-execute returning nil, anyway. 862 ;; command-execute returning nil, anyway.
863 (let* ((match (strokes-match-stroke stroke strokes-global-map)) 863 (let* ((match (strokes-match-stroke stroke strokes-global-map))
864 (command (car match)) 864 (command (car match))
diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index 20316794c5d..3b1a805f51b 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -393,6 +393,9 @@ like <img alt=\"Some thing.\">."
393 (let ((f (get-text-property (- (point) 1) 'face))) 393 (let ((f (get-text-property (- (point) 1) 'face)))
394 (memq f flyspell-prog-text-faces))) 394 (memq f flyspell-prog-text-faces)))
395 395
396;; Records the binding of M-TAB in effect before flyspell was activated.
397(defvar flyspell--prev-meta-tab-binding)
398
396;;;###autoload 399;;;###autoload
397(defun flyspell-prog-mode () 400(defun flyspell-prog-mode ()
398 "Turn on `flyspell-mode' for comments and strings." 401 "Turn on `flyspell-mode' for comments and strings."
diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el
index 97e64c906c8..db03a3244a4 100644
--- a/lisp/textmodes/ispell.el
+++ b/lisp/textmodes/ispell.el
@@ -1979,7 +1979,7 @@ and pass it the output of the last Ispell invocation."
1979 1979
1980(defun ispell-send-replacement (misspelled replacement) 1980(defun ispell-send-replacement (misspelled replacement)
1981 "Notify Aspell that MISSPELLED should be spelled REPLACEMENT. 1981 "Notify Aspell that MISSPELLED should be spelled REPLACEMENT.
1982This allows to improve the suggestion list based on actual misspellings." 1982This allows improving the suggestion list based on actual misspellings."
1983 (and ispell-really-aspell 1983 (and ispell-really-aspell
1984 (ispell-send-string (concat "$$ra " misspelled "," replacement "\n")))) 1984 (ispell-send-string (concat "$$ra " misspelled "," replacement "\n"))))
1985 1985
diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el
index c725d9f450e..d1a6b87da2e 100644
--- a/lisp/textmodes/reftex-vars.el
+++ b/lisp/textmodes/reftex-vars.el
@@ -1905,7 +1905,7 @@ instead or as well. The variable may have one of these values:
1905 mouse Highlighting is mouse driven. 1905 mouse Highlighting is mouse driven.
1906 both Both cursor and mouse trigger highlighting. 1906 both Both cursor and mouse trigger highlighting.
1907 1907
1908Changing this variable requires to rebuild the selection and *toc* buffers 1908Changing this variable requires rebuilding the selection and *toc* buffers
1909to become effective (keys `g' or `r')." 1909to become effective (keys `g' or `r')."
1910 :group 'reftex-fontification-configurations 1910 :group 'reftex-fontification-configurations
1911 :type '(choice 1911 :type '(choice
diff --git a/lisp/tree-widget.el b/lisp/tree-widget.el
index c1bb2a7adcc..fd502dd1847 100644
--- a/lisp/tree-widget.el
+++ b/lisp/tree-widget.el
@@ -664,7 +664,7 @@ This hook should be local in the buffer setup to display widgets.")
664 (flags (widget-get tree :tree-widget--guide-flags)) 664 (flags (widget-get tree :tree-widget--guide-flags))
665 (indent (widget-get tree :indent)) 665 (indent (widget-get tree :indent))
666 ;; Setup widget's image support. Looking up for images, and 666 ;; Setup widget's image support. Looking up for images, and
667 ;; setting widgets' :tag-glyph is done here, to allow to 667 ;; setting widgets' :tag-glyph is done here, to allow us to
668 ;; dynamically change the image theme. 668 ;; dynamically change the image theme.
669 (widget-image-enable (tree-widget-use-image-p)) ; Emacs 669 (widget-image-enable (tree-widget-use-image-p)) ; Emacs
670 (widget-glyph-enable widget-image-enable) ; XEmacs 670 (widget-glyph-enable widget-image-enable) ; XEmacs
diff --git a/lisp/vc/pcvs.el b/lisp/vc/pcvs.el
index 36a1d91d90e..573feedd047 100644
--- a/lisp/vc/pcvs.el
+++ b/lisp/vc/pcvs.el
@@ -58,8 +58,8 @@
58;; ******** FIX THE DOCUMENTATION ********* 58;; ******** FIX THE DOCUMENTATION *********
59;; 59;;
60;; - rework the displaying of error messages. 60;; - rework the displaying of error messages.
61;; - allow to flush messages only 61;; - allow the flushing of messages only
62;; - allow to protect files like ChangeLog from flushing 62;; - allow the protection of files like ChangeLog from flushing
63;; - query the user for cvs-get-marked (for some cmds or if nothing's selected) 63;; - query the user for cvs-get-marked (for some cmds or if nothing's selected)
64;; - don't return the first (resp last) FI if the cursor is before 64;; - don't return the first (resp last) FI if the cursor is before
65;; (resp after) it. 65;; (resp after) it.
diff --git a/lisp/window.el b/lisp/window.el
index 620f4ed26a9..948e2dae2fe 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -2005,7 +2005,7 @@ SIDE can be any of the symbols `left', `top', `right' or
2005 2005
2006;; Predecessors to the below have been devised by Julian Assange in 2006;; Predecessors to the below have been devised by Julian Assange in
2007;; change-windows-intuitively.el and Hovav Shacham in windmove.el. 2007;; change-windows-intuitively.el and Hovav Shacham in windmove.el.
2008;; Neither of these allow to selectively ignore specific windows 2008;; Neither of these allow one to selectively ignore specific windows
2009;; (windows whose `no-other-window' parameter is non-nil) as targets of 2009;; (windows whose `no-other-window' parameter is non-nil) as targets of
2010;; the movement. 2010;; the movement.
2011(defun window-in-direction (direction &optional window ignore sign wrap mini) 2011(defun window-in-direction (direction &optional window ignore sign wrap mini)
diff --git a/lisp/xwidget.el b/lisp/xwidget.el
index f184eb31dbb..9f257ba463a 100644
--- a/lisp/xwidget.el
+++ b/lisp/xwidget.el
@@ -25,7 +25,8 @@
25;; 25;;
26;; See xwidget.c for more api functions. 26;; See xwidget.c for more api functions.
27 27
28;; TODO this breaks compilation when we don't have xwidgets. 28;; This breaks compilation when we don't have xwidgets.
29;; And is pointless when we do, since it's in C and so preloaded.
29;;(require 'xwidget-internal) 30;;(require 'xwidget-internal)
30 31
31;;; Code: 32;;; Code:
@@ -33,9 +34,9 @@
33(require 'cl-lib) 34(require 'cl-lib)
34(require 'bookmark) 35(require 'bookmark)
35 36
36(defcustom xwidget-webkit-scroll-behaviour 'native 37(defcustom xwidget-webkit-scroll-behavior 'native
37 "Scroll behaviour of the webkit instance. 38 "Scrolling behavior of the webkit instance.
38'native or 'image." 39The possible values are: `native' or `image'."
39 :version "25.1" 40 :version "25.1"
40 :group 'frames ; TODO add xwidgets group if more options are added 41 :group 'frames ; TODO add xwidgets group if more options are added
41 :type '(choice (const native) (const image))) 42 :type '(choice (const native) (const image)))
@@ -58,14 +59,11 @@
58(declare-function get-buffer-xwidgets "xwidget.c" (buffer)) 59(declare-function get-buffer-xwidgets "xwidget.c" (buffer))
59 60
60(defun xwidget-insert (pos type title width height &optional args) 61(defun xwidget-insert (pos type title width height &optional args)
61 "Insert an xwidget at POS. 62 "Insert an xwidget at position POS.
62given ID, TYPE, TITLE WIDTH and 63Supply the xwidget's TYPE, TITLE, WIDTH, and HEIGHT.
63HEIGHT in the current buffer. 64See `make-xwidget' for the possible TYPE values.
64 65The usage of optional argument ARGS depends on the xwidget.
65Return ID 66This returns the result of `make-xwidget'."
66
67see `make-xwidget' for types suitable for TYPE.
68Optional argument ARGS usage depends on the xwidget."
69 (goto-char pos) 67 (goto-char pos)
70 (let ((id (make-xwidget (point) (point) 68 (let ((id (make-xwidget (point) (point)
71 type title width height args))) 69 type title width height args)))
@@ -92,8 +90,8 @@ Optional argument ARGS usage depends on the xwidget."
92;;;###autoload 90;;;###autoload
93(defun xwidget-webkit-browse-url (url &optional new-session) 91(defun xwidget-webkit-browse-url (url &optional new-session)
94 "Ask xwidget-webkit to browse URL. 92 "Ask xwidget-webkit to browse URL.
95NEW-SESSION specifies whether to create a new xwidget-webkit session. URL 93NEW-SESSION specifies whether to create a new xwidget-webkit session.
96defaults to the string looking like a url around the cursor position." 94Interactively, URL defaults to the string looking like a url around point."
97 (interactive (progn 95 (interactive (progn
98 (require 'browse-url) 96 (require 'browse-url)
99 (browse-url-interactive-arg "xwidget-webkit URL: " 97 (browse-url-interactive-arg "xwidget-webkit URL: "
@@ -141,32 +139,40 @@ defaults to the string looking like a url around the cursor position."
141 "Keymap for `xwidget-webkit-mode'.") 139 "Keymap for `xwidget-webkit-mode'.")
142 140
143(defun xwidget-webkit-scroll-up () 141(defun xwidget-webkit-scroll-up ()
144 "Scroll webkit up,either native or like image mode." 142 "Scroll webkit up.
143Depending on the value of `xwidget-webkit-scroll-behavior',
144this scrolls in 'native' fashion, or like `image-mode' would."
145 (interactive) 145 (interactive)
146 (if (eq xwidget-webkit-scroll-behaviour 'native) 146 (if (eq xwidget-webkit-scroll-behavior 'native)
147 (xwidget-set-adjustment (xwidget-webkit-last-session) 'vertical t 50) 147 (xwidget-set-adjustment (xwidget-webkit-last-session) 'vertical t 50)
148 (image-scroll-up))) 148 (image-scroll-up)))
149 149
150(defun xwidget-webkit-scroll-down () 150(defun xwidget-webkit-scroll-down ()
151 "Scroll webkit down,either native or like image mode." 151 "Scroll webkit down.
152Depending on the value of `xwidget-webkit-scroll-behavior',
153this scrolls in 'native' fashion, or like `image-mode' would."
152 (interactive) 154 (interactive)
153 (if (eq xwidget-webkit-scroll-behaviour 'native) 155 (if (eq xwidget-webkit-scroll-behavior 'native)
154 (xwidget-set-adjustment (xwidget-webkit-last-session) 'vertical t -50) 156 (xwidget-set-adjustment (xwidget-webkit-last-session) 'vertical t -50)
155 (image-scroll-down))) 157 (image-scroll-down)))
156 158
157(defun xwidget-webkit-scroll-forward () 159(defun xwidget-webkit-scroll-forward ()
158 "Scroll webkit forward,either native or like image mode." 160 "Scroll webkit forwards.
161Depending on the value of `xwidget-webkit-scroll-behavior',
162this scrolls in 'native' fashion, or like `image-mode' would."
159 (interactive) 163 (interactive)
160 (if (eq xwidget-webkit-scroll-behaviour 'native) 164 (if (eq xwidget-webkit-scroll-behavior 'native)
161 (xwidget-set-adjustment (xwidget-webkit-last-session) 'horizontal t 50) 165 (xwidget-set-adjustment (xwidget-webkit-last-session) 'horizontal t 50)
162 (xwidget-webkit-scroll-forward))) 166 (xwidget-webkit-scroll-forward))) ; FIXME infloop!
163 167
164(defun xwidget-webkit-scroll-backward () 168(defun xwidget-webkit-scroll-backward ()
165 "Scroll webkit backward,either native or like image mode." 169 "Scroll webkit backwards.
170Depending on the value of `xwidget-webkit-scroll-behavior',
171this scrolls in 'native' fashion, or like `image-mode' would."
166 (interactive) 172 (interactive)
167 (if (eq xwidget-webkit-scroll-behaviour 'native) 173 (if (eq xwidget-webkit-scroll-behavior 'native)
168 (xwidget-set-adjustment (xwidget-webkit-last-session) 'horizontal t -50) 174 (xwidget-set-adjustment (xwidget-webkit-last-session) 'horizontal t -50)
169 (xwidget-webkit-scroll-backward))) 175 (xwidget-webkit-scroll-backward))) ; FIXME infloop!
170 176
171 177
172;; The xwidget event needs to go into a higher level handler 178;; The xwidget event needs to go into a higher level handler
@@ -292,9 +298,7 @@ function findactiveelement(doc){
292 ) 298 )
293 299
294(defun xwidget-webkit-insert-string (xw str) 300(defun xwidget-webkit-insert-string (xw str)
295 "Insert string in the active field in the webkit. 301 "Insert string STR in the active field in the webkit XW."
296Argument XW webkit.
297Argument STR string."
298 ;; Read out the string in the field first and provide for edit. 302 ;; Read out the string in the field first and provide for edit.
299 (interactive 303 (interactive
300 (let* ((xww (xwidget-webkit-current-session)) 304 (let* ((xww (xwidget-webkit-current-session))
@@ -310,9 +314,9 @@ Argument STR string."
310 "findactiveelement(document).type;"))) 314 "findactiveelement(document).type;")))
311 (list xww 315 (list xww
312 (cond ((equal "text" field-type) 316 (cond ((equal "text" field-type)
313 (read-string "text:" field-value)) 317 (read-string "Text: " field-value))
314 ((equal "password" field-type) 318 ((equal "password" field-type)
315 (read-passwd "password:" nil field-value)) 319 (read-passwd "Password: " nil field-value))
316 ((equal "textarea" field-type) 320 ((equal "textarea" field-type)
317 (xwidget-webkit-begin-edit-textarea xww field-value)))))) 321 (xwidget-webkit-begin-edit-textarea xww field-value))))))
318 (xwidget-webkit-execute-script 322 (xwidget-webkit-execute-script
@@ -325,7 +329,6 @@ Argument STR string."
325XW is the xwidget identifier, TEXT is retrieved from the webkit." 329XW is the xwidget identifier, TEXT is retrieved from the webkit."
326 (switch-to-buffer 330 (switch-to-buffer
327 (generate-new-buffer "textarea")) 331 (generate-new-buffer "textarea"))
328
329 (set (make-local-variable 'xwidget-xwbl) xw) 332 (set (make-local-variable 'xwidget-xwbl) xw)
330 (insert text)) 333 (insert text))
331 334
@@ -343,11 +346,10 @@ XW is the xwidget identifier, TEXT is retrieved from the webkit."
343 ) 346 )
344 347
345(defun xwidget-webkit-show-named-element (xw element-name) 348(defun xwidget-webkit-show-named-element (xw element-name)
346 "Make named-element show. for instance an anchor. 349 "Make webkit xwidget XW show a named element ELEMENT-NAME.
347Argument XW is the xwidget. 350For example, use this to display an anchor."
348Argument ELEMENT-NAME is the element name to display in the webkit xwidget."
349 (interactive (list (xwidget-webkit-current-session) 351 (interactive (list (xwidget-webkit-current-session)
350 (read-string "element name:"))) 352 (read-string "Element name: ")))
351 ;;TODO since an xwidget is an Emacs object, it is not trivial to do 353 ;;TODO since an xwidget is an Emacs object, it is not trivial to do
352 ;; some things that are taken for granted in a normal browser. 354 ;; some things that are taken for granted in a normal browser.
353 ;; scrolling an anchor/named-element into view is one such thing. 355 ;; scrolling an anchor/named-element into view is one such thing.
@@ -371,11 +373,10 @@ Argument ELEMENT-NAME is the element name to display in the webkit xwidget."
371 (set-window-vscroll (selected-window) y t))) 373 (set-window-vscroll (selected-window) y t)))
372 374
373(defun xwidget-webkit-show-id-element (xw element-id) 375(defun xwidget-webkit-show-id-element (xw element-id)
374 "Make id-element show. for instance an anchor. 376 "Make webkit xwidget XW show an id-element ELEMENT-ID.
375Argument XW is the webkit xwidget. 377For example, use this to display an anchor."
376Argument ELEMENT-ID is the id of the element to show."
377 (interactive (list (xwidget-webkit-current-session) 378 (interactive (list (xwidget-webkit-current-session)
378 (read-string "element id:"))) 379 (read-string "Element id: ")))
379 (let ((y (string-to-number 380 (let ((y (string-to-number
380 (xwidget-webkit-execute-script-rv 381 (xwidget-webkit-execute-script-rv
381 xw 382 xw
@@ -387,11 +388,10 @@ Argument ELEMENT-ID is the id of the element to show."
387 (set-window-vscroll (selected-window) y t))) 388 (set-window-vscroll (selected-window) y t)))
388 389
389(defun xwidget-webkit-show-id-or-named-element (xw element-id) 390(defun xwidget-webkit-show-id-or-named-element (xw element-id)
390 "Make id-element show. for instance an anchor. 391 "Make webkit xwidget XW show a name or element id ELEMENT-ID.
391Argument XW is the webkit xwidget. 392For example, use this to display an anchor."
392Argument ELEMENT-ID is either a name or an element id."
393 (interactive (list (xwidget-webkit-current-session) 393 (interactive (list (xwidget-webkit-current-session)
394 (read-string "element id:"))) 394 (read-string "Name or element id: ")))
395 (let* ((y1 (string-to-number 395 (let* ((y1 (string-to-number
396 (xwidget-webkit-execute-script-rv 396 (xwidget-webkit-execute-script-rv
397 xw 397 xw
@@ -415,15 +415,14 @@ Argument ELEMENT-ID is either a name or an element id."
415(defun xwidget-webkit-adjust-size-dispatch () 415(defun xwidget-webkit-adjust-size-dispatch ()
416 "Adjust size according to mode." 416 "Adjust size according to mode."
417 (interactive) 417 (interactive)
418 (if (eq xwidget-webkit-scroll-behaviour 'native) 418 (if (eq xwidget-webkit-scroll-behavior 'native)
419 (xwidget-webkit-adjust-size-to-window) 419 (xwidget-webkit-adjust-size-to-window)
420 (xwidget-webkit-adjust-size-to-content)) 420 (xwidget-webkit-adjust-size-to-content))
421 ;; The recenter is intended to correct a visual glitch. 421 ;; The recenter is intended to correct a visual glitch.
422 ;; It errors out if the buffer isn't visible, but then we don't get 422 ;; It errors out if the buffer isn't visible, but then we don't get
423 ;; the glitch, so silence errors. 423 ;; the glitch, so silence errors.
424 (ignore-errors 424 (ignore-errors
425 (recenter-top-bottom)) 425 (recenter-top-bottom)))
426 )
427 426
428(defun xwidget-webkit-adjust-size-to-window () 427(defun xwidget-webkit-adjust-size-to-window ()
429 "Adjust webkit to window." 428 "Adjust webkit to window."
@@ -432,9 +431,7 @@ Argument ELEMENT-ID is either a name or an element id."
432 (window-pixel-height))) 431 (window-pixel-height)))
433 432
434(defun xwidget-webkit-adjust-size (w h) 433(defun xwidget-webkit-adjust-size (w h)
435 "Manually set webkit size. 434 "Manually set webkit size to width W, height H."
436Argument W width.
437Argument H height."
438 ;; TODO shouldn't be tied to the webkit xwidget 435 ;; TODO shouldn't be tied to the webkit xwidget
439 (interactive "nWidth:\nnHeight:\n") 436 (interactive "nWidth:\nnHeight:\n")
440 (xwidget-resize (xwidget-webkit-current-session) w h)) 437 (xwidget-resize (xwidget-webkit-current-session) w h))
@@ -468,7 +465,7 @@ Argument H height."
468 (xwidget-webkit-new-session url))) 465 (xwidget-webkit-new-session url)))
469 466
470(defun xwidget-webkit-back () 467(defun xwidget-webkit-back ()
471 "Back in history." 468 "Go back in history."
472 (interactive) 469 (interactive)
473 (xwidget-webkit-execute-script (xwidget-webkit-current-session) 470 (xwidget-webkit-execute-script (xwidget-webkit-current-session)
474 "history.go(-1);")) 471 "history.go(-1);"))
@@ -480,7 +477,7 @@ Argument H height."
480 "history.go(0);")) 477 "history.go(0);"))
481 478
482(defun xwidget-webkit-current-url () 479(defun xwidget-webkit-current-url ()
483 "Get the webkit url. place it on kill ring." 480 "Get the webkit url and place it on the kill-ring."
484 (interactive) 481 (interactive)
485 (let* ((rv (xwidget-webkit-execute-script-rv (xwidget-webkit-current-session) 482 (let* ((rv (xwidget-webkit-execute-script-rv (xwidget-webkit-current-session)
486 "document.URL")) 483 "document.URL"))
@@ -489,9 +486,9 @@ Argument H height."
489 url)) 486 url))
490 487
491(defun xwidget-webkit-execute-script-rv (xw script &optional default) 488(defun xwidget-webkit-execute-script-rv (xw script &optional default)
492 "Same as 'xwidget-webkit-execute-script' but but with return value. 489 "Same as `xwidget-webkit-execute-script' but with return value.
493XW is the webkit instance. SCRIPT is the script to execute. 490XW is the webkit instance. SCRIPT is the script to execute.
494DEFAULT is the defaultreturn value." 491DEFAULT is the default return value."
495 ;; Notice the ugly "title" hack. It is needed because the Webkit 492 ;; Notice the ugly "title" hack. It is needed because the Webkit
496 ;; API at the time of writing didn't support returning values. This 493 ;; API at the time of writing didn't support returning values. This
497 ;; is a wrapper for the title hack so it's easy to remove should 494 ;; is a wrapper for the title hack so it's easy to remove should
@@ -518,7 +515,7 @@ DEFAULT is the defaultreturn value."
518 "window.getSelection().toString();")) 515 "window.getSelection().toString();"))
519 516
520(defun xwidget-webkit-copy-selection-as-kill () 517(defun xwidget-webkit-copy-selection-as-kill ()
521 "Get the webkit selection and put it on the kill ring." 518 "Get the webkit selection and put it on the kill-ring."
522 (interactive) 519 (interactive)
523 (kill-new (xwidget-webkit-get-selection))) 520 (kill-new (xwidget-webkit-get-selection)))
524 521
@@ -527,13 +524,15 @@ DEFAULT is the defaultreturn value."
527;; Xwidget plist management (similar to the process plist functions) 524;; Xwidget plist management (similar to the process plist functions)
528 525
529(defun xwidget-get (xwidget propname) 526(defun xwidget-get (xwidget propname)
530 "Return the value of XWIDGET' PROPNAME property. 527 "Get an xwidget's property value.
531This is the last value stored with `(xwidget-put XWIDGET PROPNAME VALUE)'." 528XWIDGET is an xwidget, PROPNAME a property.
529Returns the last value stored with `xwidget-put'."
532 (plist-get (xwidget-plist xwidget) propname)) 530 (plist-get (xwidget-plist xwidget) propname))
533 531
534(defun xwidget-put (xwidget propname value) 532(defun xwidget-put (xwidget propname value)
535 "Change XWIDGET' PROPNAME property to VALUE. 533 "Set an xwidget's property value.
536It can be retrieved with `(xwidget-get XWIDGET PROPNAME)'." 534XWIDGET is an xwidget, PROPNAME a property to be set to specified VALUE.
535You can retrieve the value with `xwidget-get'."
537 (set-xwidget-plist xwidget 536 (set-xwidget-plist xwidget
538 (plist-put (xwidget-plist xwidget) propname value))) 537 (plist-put (xwidget-plist xwidget) propname value)))
539 538
diff --git a/m4/dirfd.m4 b/m4/dirfd.m4
index e9532e60a99..1d7cb080d8e 100644
--- a/m4/dirfd.m4
+++ b/m4/dirfd.m4
@@ -1,4 +1,4 @@
1# serial 22 -*- Autoconf -*- 1# serial 24 -*- Autoconf -*-
2 2
3dnl Find out how to get the file descriptor associated with an open DIR*. 3dnl Find out how to get the file descriptor associated with an open DIR*.
4 4
@@ -35,13 +35,15 @@ AC_DEFUN([gl_FUNC_DIRFD],
35 gl_cv_func_dirfd_macro=yes, 35 gl_cv_func_dirfd_macro=yes,
36 gl_cv_func_dirfd_macro=no)]) 36 gl_cv_func_dirfd_macro=no)])
37 37
38 # Use the replacement only if we have no function or macro with that name. 38 # Use the replacement if we have no function or macro with that name,
39 if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then 39 # or if OS/2 kLIBC whose dirfd() does not work.
40 if test $ac_cv_have_decl_dirfd = yes; then 40 # Replace only if the system declares dirfd already.
41 # If the system declares dirfd already, let's declare rpl_dirfd instead. 41 case $ac_cv_func_dirfd,$gl_cv_func_dirfd_macro,$host_os,$ac_cv_have_decl_dirfd in
42 no,no,*,yes | *,*,os2*,yes)
42 REPLACE_DIRFD=1 43 REPLACE_DIRFD=1
43 fi 44 AC_DEFINE([REPLACE_DIRFD], [1],
44 fi 45 [Define to 1 if gnulib's dirfd() replacement is used.]);;
46 esac
45]) 47])
46 48
47dnl Prerequisites of lib/dirfd.c. 49dnl Prerequisites of lib/dirfd.c.
diff --git a/m4/dup2.m4 b/m4/dup2.m4
index 63d6d8eb6e2..5b68312b1e7 100644
--- a/m4/dup2.m4
+++ b/m4/dup2.m4
@@ -1,4 +1,4 @@
1#serial 24 1#serial 25
2dnl Copyright (C) 2002, 2005, 2007, 2009-2016 Free Software Foundation, Inc. 2dnl Copyright (C) 2002, 2005, 2007, 2009-2016 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation 3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it, 4dnl gives unlimited permission to copy and/or distribute it,
@@ -62,6 +62,16 @@ AC_DEFUN([gl_FUNC_DUP2],
62 result |= 32; 62 result |= 32;
63 dup2 (2, 255); 63 dup2 (2, 255);
64 dup2 (2, 256); 64 dup2 (2, 256);
65 /* On OS/2 kLIBC, dup2() does not work on a directory fd. */
66 {
67 int fd = open (".", O_RDONLY);
68 if (fd == -1)
69 result |= 64;
70 else if (dup2 (fd, fd + 1) == -1)
71 result |= 128;
72
73 close (fd);
74 }
65 return result;]]) 75 return result;]])
66 ], 76 ],
67 [gl_cv_func_dup2_works=yes], [gl_cv_func_dup2_works=no], 77 [gl_cv_func_dup2_works=yes], [gl_cv_func_dup2_works=no],
@@ -78,6 +88,8 @@ AC_DEFUN([gl_FUNC_DUP2],
78 gl_cv_func_dup2_works="guessing no" ;; 88 gl_cv_func_dup2_works="guessing no" ;;
79 *-android*) # implemented using dup3(), which fails if oldfd == newfd 89 *-android*) # implemented using dup3(), which fails if oldfd == newfd
80 gl_cv_func_dup2_works="guessing no" ;; 90 gl_cv_func_dup2_works="guessing no" ;;
91 os2*) # on OS/2 kLIBC, dup2() does not work on a directory fd.
92 gl_cv_func_dup2_works="guessing no" ;;
81 *) gl_cv_func_dup2_works="guessing yes" ;; 93 *) gl_cv_func_dup2_works="guessing yes" ;;
82 esac]) 94 esac])
83 ]) 95 ])
diff --git a/m4/fcntl.m4 b/m4/fcntl.m4
index 0037e5fb650..bb61470b2e1 100644
--- a/m4/fcntl.m4
+++ b/m4/fcntl.m4
@@ -1,4 +1,4 @@
1# fcntl.m4 serial 8 1# fcntl.m4 serial 9
2dnl Copyright (C) 2009-2016 Free Software Foundation, Inc. 2dnl Copyright (C) 2009-2016 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation 3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it, 4dnl gives unlimited permission to copy and/or distribute it,
@@ -54,6 +54,17 @@ AC_DEFUN([gl_FUNC_FCNTL],
54 if (errno != EINVAL) result |= 2; 54 if (errno != EINVAL) result |= 2;
55 if (fcntl (0, F_DUPFD, bad_fd) != -1) result |= 4; 55 if (fcntl (0, F_DUPFD, bad_fd) != -1) result |= 4;
56 if (errno != EINVAL) result |= 8; 56 if (errno != EINVAL) result |= 8;
57 /* On OS/2 kLIBC, F_DUPFD does not work on a directory fd */
58 {
59 int fd;
60 fd = open (".", O_RDONLY);
61 if (fd == -1)
62 result |= 16;
63 else if (fcntl (fd, F_DUPFD, STDERR_FILENO + 1) == -1)
64 result |= 32;
65
66 close (fd);
67 }
57 return result;]])], 68 return result;]])],
58 [gl_cv_func_fcntl_f_dupfd_works=yes], 69 [gl_cv_func_fcntl_f_dupfd_works=yes],
59 [gl_cv_func_fcntl_f_dupfd_works=no], 70 [gl_cv_func_fcntl_f_dupfd_works=no],
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index 27ca70a0d09..547af6641a1 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -436,7 +436,8 @@ AC_DEFUN([gl_INIT],
436 { 436 {
437 if ! $gl_gnulib_enabled_dirfd; then 437 if ! $gl_gnulib_enabled_dirfd; then
438 gl_FUNC_DIRFD 438 gl_FUNC_DIRFD
439 if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then 439 if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no \
440 || test $REPLACE_DIRFD = 1; then
440 AC_LIBOBJ([dirfd]) 441 AC_LIBOBJ([dirfd])
441 gl_PREREQ_DIRFD 442 gl_PREREQ_DIRFD
442 fi 443 fi
diff --git a/m4/utimes.m4 b/m4/utimes.m4
index a016723e24a..1876bec7996 100644
--- a/m4/utimes.m4
+++ b/m4/utimes.m4
@@ -1,5 +1,5 @@
1# Detect some bugs in glibc's implementation of utimes. 1# Detect some bugs in glibc's implementation of utimes.
2# serial 3 2# serial 4
3 3
4dnl Copyright (C) 2003-2005, 2009-2016 Free Software Foundation, Inc. 4dnl Copyright (C) 2003-2005, 2009-2016 Free Software Foundation, Inc.
5dnl This file is free software; the Free Software Foundation 5dnl This file is free software; the Free Software Foundation
@@ -33,6 +33,7 @@ AC_DEFUN([gl_FUNC_UTIMES],
33#include <stdlib.h> 33#include <stdlib.h>
34#include <stdio.h> 34#include <stdio.h>
35#include <utime.h> 35#include <utime.h>
36#include <errno.h>
36 37
37static int 38static int
38inorder (time_t a, time_t b, time_t c) 39inorder (time_t a, time_t b, time_t c)
@@ -45,7 +46,10 @@ main ()
45{ 46{
46 int result = 0; 47 int result = 0;
47 char const *file = "conftest.utimes"; 48 char const *file = "conftest.utimes";
48 static struct timeval timeval[2] = {{9, 10}, {999999, 999999}}; 49 /* On OS/2, file timestamps must be on or after 1980 in local time,
50 with an even number of seconds. */
51 static struct timeval timeval[2] = {{315620000 + 10, 10},
52 {315620000 + 1000000, 999998}};
49 53
50 /* Test whether utimes() essentially works. */ 54 /* Test whether utimes() essentially works. */
51 { 55 {
@@ -82,9 +86,19 @@ main ()
82 result |= 1; 86 result |= 1;
83 else if (fstat (fd, &st0) != 0) 87 else if (fstat (fd, &st0) != 0)
84 result |= 1; 88 result |= 1;
85 else if (utimes (file, timeval) != 0) 89 else if (utimes (file, timeval) != 0
90 && (errno != EACCES
91 /* OS/2 kLIBC utimes fails on opened files. */
92 || close (fd) != 0
93 || utimes (file, timeval) != 0
94 || (fd = open (file, O_WRONLY)) < 0))
86 result |= 2; 95 result |= 2;
87 else if (utimes (file, NULL) != 0) 96 else if (utimes (file, NULL) != 0
97 && (errno != EACCES
98 /* OS/2 kLIBC utimes fails on opened files. */
99 || close (fd) != 0
100 || utimes (file, NULL) != 0
101 || (fd = open (file, O_WRONLY)) < 0))
88 result |= 8; 102 result |= 8;
89 else if (fstat (fd, &st1) != 0) 103 else if (fstat (fd, &st1) != 0)
90 result |= 1; 104 result |= 1;
diff --git a/src/bidi.c b/src/bidi.c
index 7f5d16b39ed..9b714543dd2 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -3001,7 +3001,7 @@ bidi_resolve_neutral (struct bidi_it *bidi_it)
3001 { 3001 {
3002 /* Arrrgh!! The UAX#9 algorithm is too deeply entrenched in 3002 /* Arrrgh!! The UAX#9 algorithm is too deeply entrenched in
3003 the assumption of batch-style processing; see clauses W4, 3003 the assumption of batch-style processing; see clauses W4,
3004 W5, and especially N1, which require to look far forward 3004 W5, and especially N1, which require looking far forward
3005 (as well as back) in the buffer/string. May the fleas of 3005 (as well as back) in the buffer/string. May the fleas of
3006 a thousand camels infest the armpits of those who design 3006 a thousand camels infest the armpits of those who design
3007 supposedly general-purpose algorithms by looking at their 3007 supposedly general-purpose algorithms by looking at their
diff --git a/src/emacs.c b/src/emacs.c
index f661196313f..7c818f59c5c 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -2191,7 +2191,7 @@ synchronize_locale (int category, Lisp_Object *plocale, Lisp_Object desired_loca
2191 { 2191 {
2192 *plocale = desired_locale; 2192 *plocale = desired_locale;
2193#ifdef WINDOWSNT 2193#ifdef WINDOWSNT
2194 /* Changing categories like LC_TIME usually requires to specify 2194 /* Changing categories like LC_TIME usually requires specifying
2195 an encoding suitable for the new locale, but MS-Windows's 2195 an encoding suitable for the new locale, but MS-Windows's
2196 'setlocale' will only switch the encoding when LC_ALL is 2196 'setlocale' will only switch the encoding when LC_ALL is
2197 specified. So we ignore CATEGORY, use LC_ALL instead, and 2197 specified. So we ignore CATEGORY, use LC_ALL instead, and
diff --git a/src/lisp.h b/src/lisp.h
index ee055e90699..6be2104ef9e 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2090,7 +2090,7 @@ struct Lisp_Marker
2090 /* For markers that point somewhere, 2090 /* For markers that point somewhere,
2091 this is used to chain of all the markers in a given buffer. */ 2091 this is used to chain of all the markers in a given buffer. */
2092 /* We could remove it and use an array in buffer_text instead. 2092 /* We could remove it and use an array in buffer_text instead.
2093 That would also allow to preserve it ordered. */ 2093 That would also allow us to preserve it ordered. */
2094 struct Lisp_Marker *next; 2094 struct Lisp_Marker *next;
2095 /* This is the char position where the marker points. */ 2095 /* This is the char position where the marker points. */
2096 ptrdiff_t charpos; 2096 ptrdiff_t charpos;
diff --git a/src/nsterm.m b/src/nsterm.m
index 860c55de70f..f77aadba67c 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -637,10 +637,11 @@ ns_menu_bar_should_be_hidden (void)
637 637
638static CGFloat 638static CGFloat
639ns_menu_bar_height (NSScreen *screen) 639ns_menu_bar_height (NSScreen *screen)
640/* The height of the menu bar, if visible. */ 640/* The height of the menu bar, if visible.
641{
642 // NSTRACE ("ns_menu_bar_height");
643 641
642 Note: Don't use this when fullscreen is enabled -- the screen
643 sometimes includes, sometimes excludes the menu bar area. */
644{
644 CGFloat res; 645 CGFloat res;
645 646
646 if (ns_menu_bar_should_be_hidden()) 647 if (ns_menu_bar_should_be_hidden())
@@ -660,7 +661,7 @@ ns_menu_bar_height (NSScreen *screen)
660 661
661 } 662 }
662 663
663 // NSTRACE_MSG (NSTRACE_FMT_RETURN "%.0f", res); 664 NSTRACE ("ns_menu_bar_height " NSTRACE_FMT_RETURN " %.0f", res);
664 665
665 return res; 666 return res;
666} 667}
@@ -714,7 +715,7 @@ ns_menu_bar_height (NSScreen *screen)
714// Result: Menu bar visible, frame placed immediately below the menu. 715// Result: Menu bar visible, frame placed immediately below the menu.
715// 716//
716 717
717static NSRect constrain_frame_rect(NSRect frameRect) 718static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen)
718{ 719{
719 NSTRACE ("constrain_frame_rect(" NSTRACE_FMT_RECT ")", 720 NSTRACE ("constrain_frame_rect(" NSTRACE_FMT_RECT ")",
720 NSTRACE_ARG_RECT (frameRect)); 721 NSTRACE_ARG_RECT (frameRect));
@@ -746,7 +747,11 @@ static NSRect constrain_frame_rect(NSRect frameRect)
746 { 747 {
747 multiscreenRect = NSUnionRect (multiscreenRect, scrRect); 748 multiscreenRect = NSUnionRect (multiscreenRect, scrRect);
748 749
749 menu_bar_height = max(menu_bar_height, ns_menu_bar_height (s)); 750 if (!isFullscreen)
751 {
752 CGFloat screen_menu_bar_height = ns_menu_bar_height (s);
753 menu_bar_height = max(menu_bar_height, screen_menu_bar_height);
754 }
750 } 755 }
751 } 756 }
752 757
@@ -840,7 +845,7 @@ ns_constrain_all_frames (void)
840 if (![view isFullscreen]) 845 if (![view isFullscreen])
841 { 846 {
842 [[view window] 847 [[view window]
843 setFrame:constrain_frame_rect([[view window] frame]) 848 setFrame:constrain_frame_rect([[view window] frame], false)
844 display:NO]; 849 display:NO];
845 } 850 }
846 } 851 }
@@ -1170,7 +1175,7 @@ ns_clip_to_row (struct window *w, struct glyph_row *row,
1170 // GNUstep doesn't provide named images. This was reported in 1175 // GNUstep doesn't provide named images. This was reported in
1171 // 2011, see https://savannah.gnu.org/bugs/?33396 1176 // 2011, see https://savannah.gnu.org/bugs/?33396
1172 // 1177 //
1173 // As a drop in replacment, a semi tranparent gray square is used. 1178 // As a drop in replacement, a semitransparent gray square is used.
1174 self.image = [[NSImage alloc] initWithSize:NSMakeSize(32, 32)]; 1179 self.image = [[NSImage alloc] initWithSize:NSMakeSize(32, 32)];
1175 [self.image lockFocus]; 1180 [self.image lockFocus];
1176 [[NSColor colorForEmacsRed:0.5 green:0.5 blue:0.5 alpha:0.5] set]; 1181 [[NSColor colorForEmacsRed:0.5 green:0.5 blue:0.5 alpha:0.5] set];
@@ -6650,7 +6655,7 @@ not_in_argv (NSString *arg)
6650 NSString *name; 6655 NSString *name;
6651 6656
6652 NSTRACE ("[EmacsView initFrameFromEmacs:]"); 6657 NSTRACE ("[EmacsView initFrameFromEmacs:]");
6653 NSTRACE_MSG ("cols:%d lines:%d\n", f->text_cols, f->text_lines); 6658 NSTRACE_MSG ("cols:%d lines:%d", f->text_cols, f->text_lines);
6654 6659
6655 windowClosing = NO; 6660 windowClosing = NO;
6656 processingCompose = NO; 6661 processingCompose = NO;
@@ -7099,14 +7104,25 @@ not_in_argv (NSString *arg)
7099 7104
7100- (BOOL)isFullscreen 7105- (BOOL)isFullscreen
7101{ 7106{
7102 NSTRACE ("[EmacsView isFullscreen]"); 7107 BOOL res;
7103 7108
7104 if (! fs_is_native) return nonfs_window != nil; 7109 if (! fs_is_native)
7110 {
7111 res = (nonfs_window != nil);
7112 }
7113 else
7114 {
7105#ifdef HAVE_NATIVE_FS 7115#ifdef HAVE_NATIVE_FS
7106 return ([[self window] styleMask] & NSFullScreenWindowMask) != 0; 7116 res = (([[self window] styleMask] & NSFullScreenWindowMask) != 0);
7107#else 7117#else
7108 return NO; 7118 res = NO;
7109#endif 7119#endif
7120 }
7121
7122 NSTRACE ("[EmacsView isFullscreen] " NSTRACE_FMT_RETURN " %d",
7123 (int) res);
7124
7125 return res;
7110} 7126}
7111 7127
7112#ifdef HAVE_NATIVE_FS 7128#ifdef HAVE_NATIVE_FS
@@ -7772,7 +7788,8 @@ not_in_argv (NSString *arg)
7772#endif 7788#endif
7773#endif 7789#endif
7774 7790
7775 return constrain_frame_rect(frameRect); 7791 return constrain_frame_rect(frameRect,
7792 [(EmacsView *)[self delegate] isFullscreen]);
7776} 7793}
7777 7794
7778 7795
diff --git a/src/w32.c b/src/w32.c
index 6f1d5fd1698..067bb3d7cad 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -95,7 +95,7 @@ typedef struct _MEMORY_STATUS_EX {
95} MEMORY_STATUS_EX,*LPMEMORY_STATUS_EX; 95} MEMORY_STATUS_EX,*LPMEMORY_STATUS_EX;
96 96
97/* These are here so that GDB would know about these data types. This 97/* These are here so that GDB would know about these data types. This
98 allows to attach GDB to Emacs when a fatal exception is triggered 98 allows attaching GDB to Emacs when a fatal exception is triggered
99 and Windows pops up the "application needs to be closed" dialog. 99 and Windows pops up the "application needs to be closed" dialog.
100 At that point, _gnu_exception_handler, the top-level exception 100 At that point, _gnu_exception_handler, the top-level exception
101 handler installed by the MinGW startup code, is somewhere on the 101 handler installed by the MinGW startup code, is somewhere on the
diff --git a/src/w32heap.c b/src/w32heap.c
index 3d1c5ff50a2..00da86a9598 100644
--- a/src/w32heap.c
+++ b/src/w32heap.c
@@ -100,8 +100,8 @@ typedef struct _RTL_HEAP_PARAMETERS {
100 special segment to the executable. In order to be able to do this 100 special segment to the executable. In order to be able to do this
101 without losing too much space, we need to create a Windows heap at 101 without losing too much space, we need to create a Windows heap at
102 the specific address of the static array. The RtlCreateHeap 102 the specific address of the static array. The RtlCreateHeap
103 available inside the NT kernel since XP will do this. It allows to 103 available inside the NT kernel since XP will do this. It allows the
104 create a non-growable heap at a specific address. So before 104 creation of a non-growable heap at a specific address. So before
105 dumping, we create a non-growable heap at the address of the 105 dumping, we create a non-growable heap at the address of the
106 dumped_data[] array. After dumping, we reuse memory allocated 106 dumped_data[] array. After dumping, we reuse memory allocated
107 there without being able to free it (but most of it is not meant to 107 there without being able to free it (but most of it is not meant to
diff --git a/src/w32term.c b/src/w32term.c
index 54fd2953d76..36a50212372 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -3616,8 +3616,8 @@ w32_set_horizontal_scroll_bar_thumb (struct scroll_bar *bar,
3616 si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE; 3616 si.fMask = SIF_PAGE | SIF_POS | SIF_RANGE;
3617 si.nMin = 0; 3617 si.nMin = 0;
3618 si.nMax = whole; 3618 si.nMax = whole;
3619 /* Allow nPage to be one larger than nPos so we don't allow to scroll 3619 /* Allow nPage to be one larger than nPos so we don't allow the scrolling
3620 an already fully visible buffer. */ 3620 of an already fully visible buffer. */
3621 si.nPage = min (portion, si.nMax) + 1; 3621 si.nPage = min (portion, si.nMax) + 1;
3622 si.nPos = min (position, si.nMax); 3622 si.nPos = min (position, si.nMax);
3623 SetScrollInfo (w, SB_CTL, &si, TRUE); 3623 SetScrollInfo (w, SB_CTL, &si, TRUE);
diff --git a/src/window.c b/src/window.c
index 70b7e58feb5..e1a30ee5714 100644
--- a/src/window.c
+++ b/src/window.c
@@ -7261,7 +7261,7 @@ resizing a window preferably resizes one adjacent window only.
7261 7261
7262If this variable is t, splitting a window tries to get the space 7262If this variable is t, splitting a window tries to get the space
7263proportionally from all windows in the same combination. This also 7263proportionally from all windows in the same combination. This also
7264allows to split a window that is otherwise too small or of fixed size. 7264allows splitting a window that is otherwise too small or of fixed size.
7265Resizing and deleting a window proportionally resize all windows in the 7265Resizing and deleting a window proportionally resize all windows in the
7266same combination. 7266same combination.
7267 7267
diff --git a/src/xdisp.c b/src/xdisp.c
index 5185e777324..78fddd60fc0 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -13139,7 +13139,7 @@ text_outside_line_unchanged_p (struct window *w,
13139 beginning of a paragraph, before the first strong directional 13139 beginning of a paragraph, before the first strong directional
13140 character, can change the base direction of the paragraph (unless 13140 character, can change the base direction of the paragraph (unless
13141 the buffer specifies a fixed paragraph direction), which will 13141 the buffer specifies a fixed paragraph direction), which will
13142 require to redisplay the whole paragraph. It might be worthwhile 13142 require redisplaying the whole paragraph. It might be worthwhile
13143 to find the paragraph limits and widen the range of redisplayed 13143 to find the paragraph limits and widen the range of redisplayed
13144 lines to that, but for now just give up this optimization. */ 13144 lines to that, but for now just give up this optimization. */
13145 if (!NILP (BVAR (XBUFFER (w->contents), bidi_display_reordering)) 13145 if (!NILP (BVAR (XBUFFER (w->contents), bidi_display_reordering))
@@ -18067,7 +18067,7 @@ try_window_id (struct window *w)
18067 beginning of a paragraph, before the first strong directional 18067 beginning of a paragraph, before the first strong directional
18068 character, can change the base direction of the paragraph (unless 18068 character, can change the base direction of the paragraph (unless
18069 the buffer specifies a fixed paragraph direction), which will 18069 the buffer specifies a fixed paragraph direction), which will
18070 require to redisplay the whole paragraph. It might be worthwhile 18070 require redisplaying the whole paragraph. It might be worthwhile
18071 to find the paragraph limits and widen the range of redisplayed 18071 to find the paragraph limits and widen the range of redisplayed
18072 lines to that, but for now just give up this optimization and 18072 lines to that, but for now just give up this optimization and
18073 redisplay from scratch. */ 18073 redisplay from scratch. */
diff --git a/src/xfaces.c b/src/xfaces.c
index 0bf4f0cefd6..2880eedc1e5 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -80,7 +80,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
80 specs overwrite the font-spec in the 14th attribute. 80 specs overwrite the font-spec in the 14th attribute.
81 81
82 82
83 Faces are frame-local by nature because Emacs allows to define the 83 Faces are frame-local by nature because Emacs allows you to define the
84 same named face (face names are symbols) differently for different 84 same named face (face names are symbols) differently for different
85 frames. Each frame has an alist of face definitions for all named 85 frames. Each frame has an alist of face definitions for all named
86 faces. The value of a named face in such an alist is a Lisp vector 86 faces. The value of a named face in such an alist is a Lisp vector
diff --git a/src/xwidget.c b/src/xwidget.c
index be3e4ca5732..8745416f3db 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -393,7 +393,7 @@ webkit_mime_type_policy_typedecision_requested_cb
393{ 393{
394 /* This function makes webkit send a download signal for all unknown 394 /* This function makes webkit send a download signal for all unknown
395 mime types. TODO: Defer the decision to Lisp, so that it's 395 mime types. TODO: Defer the decision to Lisp, so that it's
396 possible to make Emacs handle teext mime for instance.xs. */ 396 possible to make Emacs handle mime text for instance. */
397 if (!webkit_web_view_can_show_mime_type (webView, mimetype)) 397 if (!webkit_web_view_can_show_mime_type (webView, mimetype))
398 { 398 {
399 webkit_web_policy_decision_download (policy_decision); 399 webkit_web_policy_decision_download (policy_decision);
@@ -530,7 +530,7 @@ xwidget_init_view (struct xwidget *xww,
530 container later. Drawing should crop container window if necessary 530 container later. Drawing should crop container window if necessary
531 to handle case where xwidget is partially obscured by other Emacs 531 to handle case where xwidget is partially obscured by other Emacs
532 windows. Other containers than gtk_fixed where explored, but 532 windows. Other containers than gtk_fixed where explored, but
533 gtk_fixed had the most predictable behaviour so far. */ 533 gtk_fixed had the most predictable behavior so far. */
534 534
535 xv->emacswindow = FRAME_GTK_WIDGET (s->f); 535 xv->emacswindow = FRAME_GTK_WIDGET (s->f);
536 xv->widgetwindow = gtk_fixed_new (); 536 xv->widgetwindow = gtk_fixed_new ();
@@ -594,7 +594,7 @@ x_draw_xwidget_glyph_string (struct glyph_string *s)
594 WINDOW_BOTTOM_EDGE_Y (s->w) - WINDOW_MODE_LINE_HEIGHT (s->w) - y); 594 WINDOW_BOTTOM_EDGE_Y (s->w) - WINDOW_MODE_LINE_HEIGHT (s->w) - y);
595 clip_top = max (0, WINDOW_TOP_EDGE_Y (s->w) - y); 595 clip_top = max (0, WINDOW_TOP_EDGE_Y (s->w) - y);
596 596
597 /* We are conserned with movement of the onscreen area. The area 597 /* We are concerned with movement of the onscreen area. The area
598 might sit still when the widget actually moves. This happens 598 might sit still when the widget actually moves. This happens
599 when an Emacs window border moves across a widget window. So, if 599 when an Emacs window border moves across a widget window. So, if
600 any corner of the outer widget clipping window moves, that counts 600 any corner of the outer widget clipping window moves, that counts
@@ -615,7 +615,7 @@ x_draw_xwidget_glyph_string (struct glyph_string *s)
615 /* Clip the widget window if some parts happen to be outside 615 /* Clip the widget window if some parts happen to be outside
616 drawable area. An Emacs window is not a gtk window. A gtk window 616 drawable area. An Emacs window is not a gtk window. A gtk window
617 covers the entire frame. Clipping might have changed even if we 617 covers the entire frame. Clipping might have changed even if we
618 havent actualy moved, we try figure out when we need to reclip 618 haven't actually moved; try to figure out when we need to reclip
619 for real. */ 619 for real. */
620 if (xv->clip_right != clip_right 620 if (xv->clip_right != clip_right
621 || xv->clip_bottom != clip_bottom 621 || xv->clip_bottom != clip_bottom
@@ -753,7 +753,7 @@ DEFUN ("xwidget-resize", Fxwidget_resize, Sxwidget_resize, 3, 3, 0,
753DEFUN ("xwidget-set-adjustment", 753DEFUN ("xwidget-set-adjustment",
754 Fxwidget_set_adjustment, Sxwidget_set_adjustment, 4, 4, 0, 754 Fxwidget_set_adjustment, Sxwidget_set_adjustment, 4, 4, 0,
755 doc: /* Set native scrolling for XWIDGET. 755 doc: /* Set native scrolling for XWIDGET.
756AXIS can be 'vertical or 'horizontal. 756AXIS can be `vertical' or `horizontal'.
757If RELATIVE is t, scroll relative, otherwise absolutely. 757If RELATIVE is t, scroll relative, otherwise absolutely.
758VALUE is the amount to scroll, either relatively or absolutely. */) 758VALUE is the amount to scroll, either relatively or absolutely. */)
759 (Lisp_Object xwidget, Lisp_Object axis, Lisp_Object relative, 759 (Lisp_Object xwidget, Lisp_Object axis, Lisp_Object relative,
@@ -1132,7 +1132,7 @@ xwidget_end_redisplay (struct window *w, struct glyph_matrix *matrix)
1132 not in the desired matrix. 1132 not in the desired matrix.
1133 1133
1134 This only takes care of xwidgets in active windows. If a window 1134 This only takes care of xwidgets in active windows. If a window
1135 goes away from screen xwidget views wust be deleted. 1135 goes away from the screen, xwidget views must be deleted.
1136 1136
1137 dump_glyph_matrix (matrix, 2); */ 1137 dump_glyph_matrix (matrix, 2); */
1138 for (i = 0; i < matrix->nrows; ++i) 1138 for (i = 0; i < matrix->nrows; ++i)
diff --git a/test/ChangeLog.1 b/test/ChangeLog.1
index 01cb97e0da3..3520f13df60 100644
--- a/test/ChangeLog.1
+++ b/test/ChangeLog.1
@@ -343,10 +343,10 @@
343 343
344 * automated/tildify-tests.el (tildify-space-undo-test--test): 344 * automated/tildify-tests.el (tildify-space-undo-test--test):
345 A new helper function for testing `tildify-double-space-undos' 345 A new helper function for testing `tildify-double-space-undos'
346 behaviour in the `tildify-space' function. 346 behavior in the `tildify-space' function.
347 (tildify-space-undo-test-html, tildify-space-undo-test-html-nbsp) 347 (tildify-space-undo-test-html, tildify-space-undo-test-html-nbsp)
348 (tildify-space-undo-test-xml, tildify-space-undo-test-tex): 348 (tildify-space-undo-test-xml, tildify-space-undo-test-tex):
349 New tests for `tildify-doule-space-undos' behaviour. 349 New tests for `tildify-doule-space-undos' behavior.
350 350
351 * automated/tildify-tests.el (tildify-space-test--test): 351 * automated/tildify-tests.el (tildify-space-test--test):
352 A new helper function for testing `tildify-space' function. 352 A new helper function for testing `tildify-space' function.
diff --git a/test/manual/etags/c-src/emacs/src/lisp.h b/test/manual/etags/c-src/emacs/src/lisp.h
index 0fb068d1a2c..96c52c04691 100644
--- a/test/manual/etags/c-src/emacs/src/lisp.h
+++ b/test/manual/etags/c-src/emacs/src/lisp.h
@@ -2005,7 +2005,7 @@ struct Lisp_Marker
2005 /* For markers that point somewhere, 2005 /* For markers that point somewhere,
2006 this is used to chain of all the markers in a given buffer. */ 2006 this is used to chain of all the markers in a given buffer. */
2007 /* We could remove it and use an array in buffer_text instead. 2007 /* We could remove it and use an array in buffer_text instead.
2008 That would also allow to preserve it ordered. */ 2008 That would also allow us to preserve it ordered. */
2009 struct Lisp_Marker *next; 2009 struct Lisp_Marker *next;
2010 /* This is the char position where the marker points. */ 2010 /* This is the char position where the marker points. */
2011 ptrdiff_t charpos; 2011 ptrdiff_t charpos;
diff --git a/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el b/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el
index 6c28ba35a4c..5d28657e28b 100644
--- a/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el
+++ b/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el
@@ -2094,7 +2094,7 @@ for \\[find-tag] (which see)."
2094 (`apropos (etags--xref-find-definitions id t)))) 2094 (`apropos (etags--xref-find-definitions id t))))
2095 2095
2096(defun etags--xref-find-definitions (pattern &optional regexp?) 2096(defun etags--xref-find-definitions (pattern &optional regexp?)
2097 ;; This emulates the behaviour of `find-tag-in-order' but instead of 2097 ;; This emulates the behavior of `find-tag-in-order' but instead of
2098 ;; returning one match at a time all matches are returned as list. 2098 ;; returning one match at a time all matches are returned as list.
2099 ;; NOTE: find-tag-tag-order is typically a buffer-local variable. 2099 ;; NOTE: find-tag-tag-order is typically a buffer-local variable.
2100 (let* ((xrefs '()) 2100 (let* ((xrefs '())