[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 1b11fca: Merge from origin/emacs-28
From: |
Glenn Morris |
Subject: |
master 1b11fca: Merge from origin/emacs-28 |
Date: |
Wed, 6 Oct 2021 10:57:26 -0400 (EDT) |
branch: master
commit 1b11fcae92e583621e6ef90fe777b15a34ac2623
Merge: 444dfc0 1ccd3eb
Author: Glenn Morris <rgm@gnu.org>
Commit: Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
1ccd3eb721 (origin/emacs-28) ; Fix typo in etc/NEWS
0f28ee94ac * NEWS: Mention rcirc connects to #emacs by default
aacafbe267 Refactor mh-utils-tests macro 'with-mh-test-env'
ead5c5cc51 Avoid using variable before it has been initialized
b2c50d7cf3 Clarify docstring of blink-matching-paren
d2a34cabcf ; Very minor touch-up to a recent change
36a7ce4393 ; * doc/emacs/trouble.texi (After a Crash): Fix typo.
1cd1b2835b * doc/misc/gnus.texi (Loose Threads): Use regexp-opt in ex...
9f041cdfac Bump project.el version
ad2287e659 Retain compatibility with older project.el projects
d86b2e59c7 native-comp-available-p is the definitive test
1b383ac424 Minor fix of a recently installed documentation change
4d76765b6c Fix md5 issue in recent Gnulib merge
18308b739a Tweak recent 'configure' fix
# Conflicts:
# etc/NEWS
---
admin/merge-gnulib | 5 +-
configure.ac | 3 -
doc/emacs/search.texi | 4 +-
doc/emacs/trouble.texi | 2 +-
doc/lispintro/emacs-lisp-intro.texi | 2 +-
doc/lispref/compile.texi | 3 +-
doc/misc/gnus.texi | 21 ++----
etc/NEWS.28 | 5 +-
lib/gnulib.mk.in | 12 ++-
lib/md5-stream.c | 141 ++++++++++++++++++++++++++++++++++++
lisp/emacs-lisp/package.el | 3 +-
lisp/ibuffer.el | 3 +-
lisp/progmodes/project.el | 2 +-
lisp/progmodes/xref.el | 2 +-
lisp/simple.el | 15 ++--
m4/gnulib-comp.m4 | 2 +
test/lisp/mh-e/mh-utils-tests.el | 38 +++++-----
17 files changed, 209 insertions(+), 54 deletions(-)
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index 10cc73a..886f37e 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -30,7 +30,8 @@ GNULIB_MODULES='
canonicalize-lgpl
careadlinkat close-stream copy-file-range
count-leading-zeros count-one-bits count-trailing-zeros
- crypto/md5-buffer crypto/sha1-buffer crypto/sha256-buffer
crypto/sha512-buffer
+ crypto/md5 crypto/md5-buffer
+ crypto/sha1-buffer crypto/sha256-buffer crypto/sha512-buffer
d-type diffseq double-slash-root dtoastr dtotimespec dup2
environ execinfo explicit_bzero faccessat
fchmodat fcntl fcntl-h fdopendir file-has-acl
@@ -49,7 +50,7 @@ GNULIB_MODULES='
'
AVOIDED_MODULES='
- btowc close dup fchdir fstat langinfo lock
+ btowc close crypto/af_alg dup fchdir fstat langinfo lock
mbrtowc mbsinit memchr mkdir msvc-inval msvc-nothrow nl_langinfo
openat-die opendir pthread-h raise
save-cwd select setenv sigprocmask stat stdarg stdbool
diff --git a/configure.ac b/configure.ac
index 0797492..bd7ff2e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -875,9 +875,6 @@ done
ac_func_list=$funcs
# Emacs does not use the wchar or wctype-h modules.
AC_DEFUN([gt_TYPE_WINT_T],
- [GNULIB_OVERRIDES_WINT_T=0
- AC_SUBST([GNULIB_OVERRIDES_WINT_T])])
-AC_DEFUN([gt_TYPE_WINT_T],
[GNULIBHEADERS_OVERRIDE_WINT_T=0
AC_SUBST([GNULIBHEADERS_OVERRIDE_WINT_T])])
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi
index 761161b..f6d9cb3 100644
--- a/doc/emacs/search.texi
+++ b/doc/emacs/search.texi
@@ -1331,8 +1331,8 @@ matches @w{@samp{foo bar}}, @w{@samp{foo@ @ bar}},
precisely, Emacs matches each sequence of space characters in the
search string to a regular expression specified by the variable
@code{search-whitespace-regexp}. For example, to make spaces match
-sequences of newlines as well as spaces, set it to
-@samp{"[[:space:]\n]+"}. The default value of this variable considers
+sequences of newlines as well as spaces, set it to the regular expression
+@samp{[[:space:]\n]+}. The default value of this variable considers
any sequence of spaces and tab characters as whitespace.
If you want whitespace characters to match exactly, you can turn lax
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi
index 60b5cc7..027086c 100644
--- a/doc/emacs/trouble.texi
+++ b/doc/emacs/trouble.texi
@@ -393,7 +393,7 @@ this---saving them---updates the files themselves.
associated with any files, or if the autosave was not recent enough to
have recorded important changes, you can use the
@file{etc/emacs-buffer.gdb} script with GDB (the GNU Debugger) to
-retrieve them from a core dump--provided that a core dump was saved,
+retrieve them from a core dump---provided that a core dump was saved,
and that the Emacs executable was not stripped of its debugging
symbols.
diff --git a/doc/lispintro/emacs-lisp-intro.texi
b/doc/lispintro/emacs-lisp-intro.texi
index 9dbf854..32c39c7 100644
--- a/doc/lispintro/emacs-lisp-intro.texi
+++ b/doc/lispintro/emacs-lisp-intro.texi
@@ -13475,7 +13475,7 @@ What we need to do is fill in the slots.
The name of the function should be self-explanatory and easy
to remember. @code{count-words-region} is the obvious choice. Since
-that name is now used for the standard Emacs command to count words, we
+that name is used for the standard Emacs command to count words, we
will name our implementation @code{@value{COUNT-WORDS}}.
The function counts words within a region. This means that the
diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi
index 15d1f4c..523758c 100644
--- a/doc/lispref/compile.texi
+++ b/doc/lispref/compile.texi
@@ -811,8 +811,7 @@ for you to be able to native-compile Lisp code.
@vindex native-compile@r{, a Lisp feature}
To determine whether the current Emacs process can produce and load
-natively-compiled Lisp code, test whether the @code{native-compile}
-feature is available (@pxref{Named Features}). Alternatively, call
+natively-compiled Lisp code, call
@code{native-comp-available-p} (@pxref{Native-Compilation Functions}).
Unlike byte-compiled code, natively-compiled Lisp code is executed
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index 0c06558..6c892bc 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -7130,20 +7130,15 @@ as 10, you might consider setting this variable to
something sensible:
(setq gnus-simplify-ignored-prefixes
(concat
"\\`\\[?\\("
- (mapconcat
- 'identity
- '("looking"
- "wanted" "followup" "summary\\( of\\)?"
- "help" "query" "problem" "question"
- "answer" "reference" "announce"
- "How can I" "How to" "Comparison of"
- ;; ...
- )
- "\\|")
+ (regexp-opt '("looking"
+ "wanted" "followup" "summary" "summary of"
+ "help" "query" "problem" "question"
+ "answer" "reference" "announce"
+ "How can I" "How to" "Comparison of"
+ ;; ...
+ ))
"\\)\\s *\\("
- (mapconcat 'identity
- '("for" "for reference" "with" "about")
- "\\|")
+ (regexp-opt '("for" "for reference" "with" "about"))
"\\)?\\]?:?[ \t]*"))
@end lisp
diff --git a/etc/NEWS.28 b/etc/NEWS.28
index 2274588..8808413 100644
--- a/etc/NEWS.28
+++ b/etc/NEWS.28
@@ -1168,7 +1168,7 @@ search string is at least this long.
'lazy-highlight-initial-delay'
still applies for shorter search strings, which avoids flicker in the
search buffer due to too many matches being highlighted.
----
++++
*** The default 'search-whitespace-regexp' value has changed.
This used to be "\\s-+", which meant that it was mode-dependent whether
newlines were included in the whitespace set. This has now been
@@ -3032,6 +3032,9 @@ Face 'mh-folder-whitelisted' is renamed
'mh-folder-allowlisted'.
*** rcirc now supports SASL authentication.
---
+*** #emacs on Libera.chat has been added to 'rcirc-server-alist'.
+
+---
*** rcirc connects asynchronously.
---
diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in
index bac27f3..e9a1a5d 100644
--- a/lib/gnulib.mk.in
+++ b/lib/gnulib.mk.in
@@ -36,6 +36,7 @@
# --no-vc-files \
# --avoid=btowc \
# --avoid=close \
+# --avoid=crypto/af_alg \
# --avoid=dup \
# --avoid=fchdir \
# --avoid=fstat \
@@ -79,6 +80,7 @@
# count-leading-zeros \
# count-one-bits \
# count-trailing-zeros \
+# crypto/md5 \
# crypto/md5-buffer \
# crypto/sha1-buffer \
# crypto/sha256-buffer \
@@ -544,8 +546,8 @@ GL_GNULIB_WRITE = @GL_GNULIB_WRITE@
GL_GNULIB__EXIT = @GL_GNULIB__EXIT@
GMALLOC_OBJ = @GMALLOC_OBJ@
GMP_H = @GMP_H@
-GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
GNULIBHEADERS_OVERRIDE_WINT_T = @GNULIBHEADERS_OVERRIDE_WINT_T@
+GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@
GNULIB_WARN_CFLAGS = @GNULIB_WARN_CFLAGS@
GNUSTEP_CFLAGS = @GNUSTEP_CFLAGS@
GNU_OBJC_CFLAGS = @GNU_OBJC_CFLAGS@
@@ -1473,6 +1475,14 @@ EXTRA_DIST += count-trailing-zeros.h
endif
## end gnulib module count-trailing-zeros
+## begin gnulib module crypto/md5
+ifeq (,$(OMIT_GNULIB_MODULE_crypto/md5))
+
+libgnu_a_SOURCES += md5-stream.c
+
+endif
+## end gnulib module crypto/md5
+
## begin gnulib module crypto/md5-buffer
ifeq (,$(OMIT_GNULIB_MODULE_crypto/md5-buffer))
diff --git a/lib/md5-stream.c b/lib/md5-stream.c
new file mode 100644
index 0000000..fb483b7
--- /dev/null
+++ b/lib/md5-stream.c
@@ -0,0 +1,141 @@
+/* Functions to compute MD5 message digest of files or memory blocks.
+ according to the definition of MD5 in RFC 1321 from April 1992.
+ Copyright (C) 1995-1997, 1999-2001, 2005-2006, 2008-2021 Free Software
+ Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. */
+
+#include <config.h>
+
+/* Specification. */
+#if HAVE_OPENSSL_MD5
+# define GL_OPENSSL_INLINE _GL_EXTERN_INLINE
+#endif
+#include "md5.h"
+
+#include <stdlib.h>
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+#endif
+
+#include "af_alg.h"
+
+#ifdef _LIBC
+# include <endian.h>
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define WORDS_BIGENDIAN 1
+# endif
+/* We need to keep the namespace clean so define the MD5 function
+ protected using leading __ . */
+# define md5_init_ctx __md5_init_ctx
+# define md5_process_block __md5_process_block
+# define md5_process_bytes __md5_process_bytes
+# define md5_finish_ctx __md5_finish_ctx
+# define md5_stream __md5_stream
+#endif
+
+#define BLOCKSIZE 32768
+#if BLOCKSIZE % 64 != 0
+# error "invalid BLOCKSIZE"
+#endif
+
+/* Compute MD5 message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 16 bytes
+ beginning at RESBLOCK. */
+int
+md5_stream (FILE *stream, void *resblock)
+{
+ switch (afalg_stream (stream, "md5", resblock, MD5_DIGEST_SIZE))
+ {
+ case 0: return 0;
+ case -EIO: return 1;
+ }
+
+ char *buffer = malloc (BLOCKSIZE + 72);
+ if (!buffer)
+ return 1;
+
+ struct md5_ctx ctx;
+ md5_init_ctx (&ctx);
+ size_t sum;
+
+ /* Iterate over full file contents. */
+ while (1)
+ {
+ /* We read the file in blocks of BLOCKSIZE bytes. One call of the
+ computation function processes the whole buffer so that with the
+ next round of the loop another block can be read. */
+ size_t n;
+ sum = 0;
+
+ /* Read block. Take care for partial reads. */
+ while (1)
+ {
+ /* Either process a partial fread() from this loop,
+ or the fread() in afalg_stream may have gotten EOF.
+ We need to avoid a subsequent fread() as EOF may
+ not be sticky. For details of such systems, see:
+ https://sourceware.org/bugzilla/show_bug.cgi?id=1190 */
+ if (feof (stream))
+ goto process_partial_block;
+
+ n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
+
+ sum += n;
+
+ if (sum == BLOCKSIZE)
+ break;
+
+ if (n == 0)
+ {
+ /* Check for the error flag IFF N == 0, so that we don't
+ exit the loop after a partial read due to e.g., EAGAIN
+ or EWOULDBLOCK. */
+ if (ferror (stream))
+ {
+ free (buffer);
+ return 1;
+ }
+ goto process_partial_block;
+ }
+ }
+
+ /* Process buffer with BLOCKSIZE bytes. Note that
+ BLOCKSIZE % 64 == 0
+ */
+ md5_process_block (buffer, BLOCKSIZE, &ctx);
+ }
+
+process_partial_block:
+
+ /* Process any remaining bytes. */
+ if (sum > 0)
+ md5_process_bytes (buffer, sum, &ctx);
+
+ /* Construct result in desired memory. */
+ md5_finish_ctx (&ctx, resblock);
+ free (buffer);
+ return 0;
+}
+
+/*
+ * Hey Emacs!
+ * Local Variables:
+ * coding: utf-8
+ * End:
+ */
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 62f5fc7..5445fa9 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1081,8 +1081,7 @@ This assumes that `pkg-desc' has already been activated
with
"Native compile installed package PKG-DESC asynchronously.
This assumes that `pkg-desc' has already been activated with
`package-activate-1'."
- (when (and (featurep 'native-compile)
- (native-comp-available-p))
+ (when (native-comp-available-p)
(let ((warning-minimum-level :error))
(native-compile-async (package-desc-dir pkg-desc) t))))
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index 6c01805..046595a 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -1079,7 +1079,8 @@ a new window in the current frame, splitting vertically."
;; Make sure that redisplay is performed, otherwise there can be a
;; bad interaction with code in the window-scroll-functions hook
(redisplay t)
- (when (buffer-local-value 'ibuffer-auto-mode (window-buffer))
+ (when (and (boundp 'ibuffer-auto-mode) ; ibuf-ext.el might not be loaded yet
+ (buffer-local-value 'ibuffer-auto-mode (window-buffer)))
(fit-window-to-buffer
nil (and owin
(/ (frame-height)
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index 57a961c..3eaa789 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -1,7 +1,7 @@
;;; project.el --- Operations on the current project -*- lexical-binding: t;
-*-
;; Copyright (C) 2015-2021 Free Software Foundation, Inc.
-;; Version: 0.7.1
+;; Version: 0.8.0
;; Package-Requires: ((emacs "26.1") (xref "1.0.2"))
;; This is a GNU ELPA :core package. Avoid using functionality that
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 210fc2b..f4716fe 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -1025,7 +1025,7 @@ Return an alist of the form ((GROUP . (XREF ...)) ...)."
(eq xref-file-name-display 'project-relative)
(project-current)))
(project-root (and project
- (expand-file-name (project-root project)))))
+ (expand-file-name (xref--project-root project)))))
(mapcar
(lambda (pair)
(cons (xref--group-name-for-display (car pair) project-root)
diff --git a/lisp/simple.el b/lisp/simple.el
index 0427154..d7030c0 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -8429,11 +8429,16 @@ presented."
(defcustom blink-matching-paren t
"Non-nil means show matching open-paren when close-paren is inserted.
-If t, highlight the paren. If `jump', briefly move cursor to its
-position. If `jump-offscreen', move cursor there even if the
-position is off screen. With any other non-nil value, the
-off-screen position of the opening paren will be shown in the
-echo area."
+In addition, if the opening paren is not visible on screen, show
+its position in the echo area.
+
+The valid values are:
+
+ nil Disable.
+ non-nil Highlight the opening paren.
+ `jump' Briefly move cursor to its position.
+ `jump-offscreen' Briefly move cursor to its position,
+ even if the opening paren is not on screen."
:type '(choice
(const :tag "Disable" nil)
(const :tag "Highlight" t)
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index dd5bde8..a795fe7 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -63,6 +63,7 @@ AC_DEFUN([gl_EARLY],
# Code from module count-leading-zeros:
# Code from module count-one-bits:
# Code from module count-trailing-zeros:
+ # Code from module crypto/md5:
# Code from module crypto/md5-buffer:
# Code from module crypto/sha1-buffer:
# Code from module crypto/sha256-buffer:
@@ -1207,6 +1208,7 @@ AC_DEFUN([gl_FILE_LIST], [
lib/malloc/scratch_buffer_grow.c
lib/malloc/scratch_buffer_grow_preserve.c
lib/malloc/scratch_buffer_set_array_size.c
+ lib/md5-stream.c
lib/md5.c
lib/md5.h
lib/memmem.c
diff --git a/test/lisp/mh-e/mh-utils-tests.el b/test/lisp/mh-e/mh-utils-tests.el
index 82afbab..bf684db 100644
--- a/test/lisp/mh-e/mh-utils-tests.el
+++ b/test/lisp/mh-e/mh-utils-tests.el
@@ -95,26 +95,28 @@ install an MH variant and test it interactively."
(mh-sub-folders-cache (make-hash-table :test #'equal))
;; remember the original value
(original-mh-envvar (getenv "MH")))
- (unless mh-test-variant-logged-already
- (mh-variant-set mh-variant)
- (setq mh-test-variant-logged-already t))
(unwind-protect
(progn
- (if mh-variant-in-use
- (setq temp-home-dir (mh-test-utils-setup-with-variant))
- (mh-test-utils-setup-with-mocks))
+ (setq temp-home-dir (mh-test-utils-setup))
,@body)
(if temp-home-dir (delete-directory temp-home-dir t))
(setenv "MH" original-mh-envvar))))
-(defun mh-ensure-native-trampolines ()
- "Build head of time the trampolines we'll need.
-As `call-process'' and `file-directory-p' will be redefined, the
-native compiler will invoke `call-process' to compile the
-respective trampolines. To avoid interferences with the
-`call-process' mocking we build these AOT."
- (when (featurep 'native-compile)
- (mapc #'comp-subr-trampoline-install '(call-process file-directory-p))))
+(defun mh-test-utils-setup ()
+ "Set dynamically bound variables needed by mock and/or variants.
+Return the name of the root of the created directory tree, if any."
+ (unless mh-test-variant-logged-already
+ (mh-variant-set mh-variant)
+ (setq mh-test-variant-logged-already t))
+ ;; As `call-process'' and `file-directory-p' will be redefined, the
+ ;; native compiler will invoke `call-process' to compile the
+ ;; respective trampolines. To avoid interference with the
+ ;; `call-process' mocking, we build these ahead of time.
+ (when (native-comp-available-p)
+ (mapc #'comp-subr-trampoline-install '(call-process file-directory-p)))
+ (if mh-variant-in-use
+ (mh-test-utils-setup-with-variant)
+ (mh-test-utils-setup-with-mocks)))
(defun mh-test-utils-setup-with-mocks ()
"Set dynamically bound variables so that MH programs are mocked out.
@@ -125,9 +127,10 @@ The tests use this method if no configured MH variant is
found."
(mh-populate-sub-folders-cache "+rela-folder/bar")
(mh-populate-sub-folders-cache "+rela-folder/foo")
(mh-populate-sub-folders-cache "+rela-folder/food")
- (mh-ensure-native-trampolines)
(fset 'call-process #'mh-test-utils-mock-call-process)
- (fset 'file-directory-p #'mh-test-utils-mock-file-directory-p))
+ (fset 'file-directory-p #'mh-test-utils-mock-file-directory-p)
+ ;; no temp directory created
+ nil)
(defun mh-test-utils-mock-call-process (program
&optional _infile _destination _display
@@ -196,7 +199,7 @@ Return the name of the root of the created directory tree.
Set dynamically bound variables so that MH programs may log.
The tests use this method if a configured MH variant is found."
(let* ((temp-home-dir
- (make-temp-file "emacs-mh-e-unit-test" t))
+ (make-temp-file "emacs-mh-e-unit-test-" t))
(profile (expand-file-name
".mh_profile" temp-home-dir))
(mail-dir (expand-file-name "Mail" temp-home-dir))
@@ -215,7 +218,6 @@ The tests use this method if a configured MH variant is
found."
(make-directory (expand-file-name "foo" abso-folder) t)
(make-directory (expand-file-name "food" abso-folder) t)
(setq mh-test-abs-folder abso-folder)
- (mh-ensure-native-trampolines)
(fset 'call-process #'mh-test-utils-log-call-process)
(fset 'file-directory-p #'mh-test-utils-log-file-directory-p)
temp-home-dir))