1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-23 10:34:07 +00:00

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
This commit is contained in:
Glenn Morris 2021-10-06 07:50:33 -07:00
commit 1b11fcae92
17 changed files with 209 additions and 54 deletions

View File

@ -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

View File

@ -874,9 +874,6 @@ for func in $ac_func_list; do
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])])

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
@ -3031,6 +3031,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.

View File

@ -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))

141
lib/md5-stream.c Normal file
View File

@ -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:
*/

View File

@ -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))))

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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))