diff --git a/Makefile.in b/Makefile.in index 93e8f1ae5cd..1b6c7eb05dc 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1309,7 +1309,7 @@ emacslog = build-aux/gitlog-to-emacslog # The ChangeLog history files are called ChangeLog.1, ChangeLog.2, ..., # ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX). $(CHANGELOG_N) stands for # the newest (highest-numbered) ChangeLog history file. -CHANGELOG_HISTORY_INDEX_MAX = 3 +CHANGELOG_HISTORY_INDEX_MAX = 4 CHANGELOG_N = ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX) # Convert git commit log to ChangeLog file. make-dist uses this. diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt index 15342319829..1b6d9744ecc 100644 --- a/admin/make-tarball.txt +++ b/admin/make-tarball.txt @@ -95,11 +95,14 @@ General steps (for each step, check for possible errors): CHANGELOG_HISTORY_INDEX_MAX = N by incrementing the value of N by 1; then regenerate Makefile. - After bumping N, you need to actually create and commit - ChangeLog.N with the updated N, otherwise "M-x authors" below will - fail. The easiest way of creating the new ChangeLog.N is to - rename the file ChangeLog (without the .N suffix) left over from - the last major release (it is usually unversioned) and commit it. + After bumping N, you need to actually create and commit ChangeLog.N + with the updated N, otherwise "M-x authors" below will fail. The + easiest way of creating the new ChangeLog.N is to rename the file + ChangeLog (without the .N suffix) left over from the last release + (it is usually unversioned) and commit it, together with the + modified Makefile.in. If you don't have the unversioned ChangeLog + file from the last release, you can take it from the release + tarball. Now: diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index 196fe89a092..278b53d7f65 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -4992,22 +4992,22 @@ of the returned string depends on @var{algorithm}: @itemize @item -For @code{md5}: 32 characters (32 bytes if @var{binary} is +For @code{md5}: 32 characters (16 bytes if @var{binary} is non-@code{nil}). @item -For @code{sha1}: 40 characters (40 bytes if @var{binary} is +For @code{sha1}: 40 characters (20 bytes if @var{binary} is non-@code{nil}). @item -For @code{sha224}: 56 characters (56 bytes if @var{binary} is +For @code{sha224}: 56 characters (28 bytes if @var{binary} is non-@code{nil}). @item -For @code{sha256}: 64 characters (64 bytes if @var{binary} is +For @code{sha256}: 64 characters (32 bytes if @var{binary} is non-@code{nil}). @item -For @code{sha384}: 96 characters (96 bytes if @var{binary} is +For @code{sha384}: 96 characters (48 bytes if @var{binary} is non-@code{nil}). @item -For @code{sha512}: 128 characters (128 bytes if @var{binary} is +For @code{sha512}: 128 characters (64 bytes if @var{binary} is non-@code{nil}). @end itemize @@ -5062,7 +5062,7 @@ This function is equivalent to calling @code{secure-hash} like this: @end lisp It returns a 40-character string if @var{binary} is @code{nil}, or a -40-byte unibyte string otherwise. +20-byte unibyte string otherwise. @end defun @node Suspicious Text diff --git a/etc/NEWS b/etc/NEWS index 2ddbab29528..c5e3bb5a6c3 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -150,6 +150,16 @@ Advanced" node in the EWW manual. By customizing 'shr-image-zoom-levels', you can change the list of zoom levels that SHR cycles through when calling 'shr-zoom-image'. +** SHR + +--- +*** New user option 'shr-fill-text'. +When 'shr-fill-text' is non-nil (the default), SHR will fill text +according to the width of the window. If you customize it to nil, SHR +will leave the text as-is; in that case, EWW will automatically enable +'visual-line-mode' when displaying a page so that long lines are +visually wrapped at word boundaries. + ** EWW --- diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex index b112e957d1d..65e9caa26d2 100644 --- a/etc/refcards/orgcard.tex +++ b/etc/refcards/orgcard.tex @@ -1,5 +1,5 @@ % Reference Card for Org Mode -\def\orgversionnumber{9.7.9} +\def\orgversionnumber{9.7.10} \def\versionyear{2024} % latest update \input emacsver.tex diff --git a/lisp/emacs-lisp/compat.el b/lisp/emacs-lisp/compat.el index f7037dc4101..7f95702286a 100644 --- a/lisp/emacs-lisp/compat.el +++ b/lisp/emacs-lisp/compat.el @@ -2,13 +2,11 @@ ;; Copyright (C) 2021-2024 Free Software Foundation, Inc. -;; Author: \ -;; Philip Kaludercic , \ -;; Daniel Mendler -;; Maintainer: \ -;; Daniel Mendler , \ -;; Compat Development <~pkal/compat-devel@lists.sr.ht>, -;; emacs-devel@gnu.org +;; Author: Philip Kaludercic , +;; Daniel Mendler +;; Maintainers: Daniel Mendler , +;; Compat Development <~pkal/compat-devel@lists.sr.ht>, +;; emacs-devel@gnu.org ;; URL: https://github.com/emacs-compat/compat ;; Keywords: lisp, maint diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 8ea5b301684..8a2ae79736f 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -85,14 +85,14 @@ current help buffer.") (defun help-definition-prefixes () "Return the up-to-date radix-tree form of `definition-prefixes'." - (when (> (hash-table-count definition-prefixes) 0) + (when (and (null help-definition-prefixes) + (> (hash-table-count definition-prefixes) 0)) (maphash (lambda (prefix files) (let ((old (radix-tree-lookup help-definition-prefixes prefix))) (setq help-definition-prefixes (radix-tree-insert help-definition-prefixes prefix (append old files))))) - definition-prefixes) - (clrhash definition-prefixes)) + definition-prefixes)) help-definition-prefixes) (defun help--loaded-p (file) diff --git a/lisp/org/org-persist.el b/lisp/org/org-persist.el index 8b0d9b110f9..7fa836d0d7a 100644 --- a/lisp/org/org-persist.el +++ b/lisp/org/org-persist.el @@ -448,6 +448,8 @@ FORMAT and ARGS are passed to `message'." buffer-or-file (error-message-string err))) nil))))) +;; FIXME: `pp' is very slow when writing even moderately large datasets +;; We should probably drop it or find some fast formatter. (defun org-persist--write-elisp-file (file data &optional no-circular pp) "Write elisp DATA to FILE." ;; Fsync slightly reduces the chance of an incomplete filesystem @@ -898,7 +900,7 @@ Otherwise, return t." (let ((index-file (org-file-name-concat org-persist-directory org-persist-index-file))) (org-persist--merge-index-with-disk) - (org-persist--write-elisp-file index-file org-persist--index t t) + (org-persist--write-elisp-file index-file org-persist--index t) (setq org-persist--index-age (file-attribute-modification-time (file-attributes index-file))) index-file))) diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index d5a434e805d..989fadf69fa 100644 --- a/lisp/org/org-version.el +++ b/lisp/org/org-version.el @@ -5,13 +5,13 @@ (defun org-release () "The release version of Org. Inserted by installing Org mode or when a release is made." - (let ((org-release "9.7.9")) + (let ((org-release "9.7.10")) org-release)) ;;;###autoload (defun org-git-version () "The Git version of Org mode. Inserted by installing Org or when a release is made." - (let ((org-git-version "release_9.7.9")) + (let ((org-git-version "release_9.7.10")) org-git-version)) (provide 'org-version) diff --git a/lisp/org/org.el b/lisp/org/org.el index 0b3566121d9..26812bbfb29 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -9,7 +9,7 @@ ;; URL: https://orgmode.org ;; Package-Requires: ((emacs "26.1")) -;; Version: 9.7.9 +;; Version: 9.7.10 ;; This file is part of GNU Emacs. ;; diff --git a/lisp/org/ox-html.el b/lisp/org/ox-html.el index d1687cf5a80..446698758c4 100644 --- a/lisp/org/ox-html.el +++ b/lisp/org/ox-html.el @@ -2351,7 +2351,7 @@ is the language used for CODE, as a string, or nil." ((not (progn (require 'htmlize nil t) (fboundp 'htmlize-region-for-paste))) ;; Emit a warning. - (warn "Cannot fontify source block (htmlize.el >= 1.34 required)") + (warn "Cannot fontify source block (htmlize.el >= 1.34 required). Falling back to plain text. (see `org-html-htmlize-output-type')") (org-html-encode-plain-text code)) (t ;; Map language diff --git a/lisp/org/ox.el b/lisp/org/ox.el index 75839e6c88a..1024bdc4bae 100644 --- a/lisp/org/ox.el +++ b/lisp/org/ox.el @@ -81,6 +81,7 @@ (require 'ol) (require 'org-element) (require 'org-macro) +(require 'org-attach) ; org-attach adds staff to `org-export-before-parsing-functions' (require 'tabulated-list) (declare-function org-src-coderef-format "org-src" (&optional element)) diff --git a/lisp/subr.el b/lisp/subr.el index 9ea18ca5bff..2eaed682406 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -4487,8 +4487,8 @@ Otherwise, return nil." "Return the SHA-1 (Secure Hash Algorithm) of an OBJECT. OBJECT is either a string or a buffer. Optional arguments START and END are character positions specifying which portion of OBJECT for -computing the hash. If BINARY is non-nil, return a 40-byte unibyte -string; otherwise returna 40-character string. +computing the hash. If BINARY is non-nil, return a 20-byte unibyte +string; otherwise return a 40-character string. Note that SHA-1 is not collision resistant and should not be used for anything security-related. See `secure-hash' for diff --git a/lisp/use-package/use-package.el b/lisp/use-package/use-package.el index fc5c994a5f9..fd2496651df 100644 --- a/lisp/use-package/use-package.el +++ b/lisp/use-package/use-package.el @@ -5,7 +5,7 @@ ;; Author: John Wiegley ;; Maintainer: John Wiegley ;; Created: 17 Jun 2012 -;; Version: 2.4.5 +;; Version: 2.4.6 ;; Package-Requires: ((emacs "24.3") (bind-key "2.4")) ;; Keywords: dotemacs startup speed config package extensions ;; URL: https://github.com/jwiegley/use-package diff --git a/src/fns.c b/src/fns.c index c788ea54ec7..80794bc73a0 100644 --- a/src/fns.c +++ b/src/fns.c @@ -6422,7 +6422,9 @@ whole OBJECT. The full list of algorithms can be obtained with `secure-hash-algorithms'. -If BINARY is non-nil, returns a string in binary form. +If BINARY is non-nil, returns a string in binary form. In this case, +the function returns a unibyte string whose length is half the number +of characters it returns when BINARY is nil. Note that MD5 and SHA-1 are not collision resistant and should not be used for anything security-related. For these applications, use one diff --git a/src/sfnt.c b/src/sfnt.c index 1ed492b7506..02b8a33041c 100644 --- a/src/sfnt.c +++ b/src/sfnt.c @@ -383,15 +383,18 @@ sfnt_read_cmap_format_2 (int fd, for (i = 0; i < 256; ++i) { + /* Values in sub_header_keys are actually offsets from the end of + that array. Since the language of the spec is such as to imply + that they must be divisible by eight, divide them by the + same. */ sfnt_swap16 (&format2->sub_header_keys[i]); if (format2->sub_header_keys[i] > nsub) - nsub = format2->sub_header_keys[i]; + nsub = format2->sub_header_keys[i] / 8; } - if (!nsub) - /* If there are no subheaders, then things are finished. */ - return format2; + /* There always exists a subheader at index zero. */ + nsub ++; /* Otherwise, read the rest of the variable length data to the end of format2. */ @@ -1108,9 +1111,11 @@ sfnt_lookup_glyph_2 (sfnt_char character, && j <= ((int) subheader->first_code + (int) subheader->entry_count)) { - /* id_range_offset is actually the number of bytes past - itself containing the uint16_t ``slice''. It is possibly - unaligned. */ + /* id_range_offset is actually the number of bytes past itself + containing the uint16_t ``slice''. Whether this may be + unaligned is not stated in the specification, but I doubt + it, for that would render values meaningless if the array + were byte swapped when read. */ slice = (unsigned char *) &subheader->id_range_offset; slice += subheader->id_range_offset; slice += (j - subheader->first_code) * sizeof (uint16_t); diff --git a/test/infra/gitlab-ci.yml b/test/infra/gitlab-ci.yml index 24bb179af54..e16dcd54a45 100644 --- a/test/infra/gitlab-ci.yml +++ b/test/infra/gitlab-ci.yml @@ -192,10 +192,13 @@ default: - lisp/textmodes/*-ts-mode.el - src/treesit.{h,c} - test/infra/* + - test/lisp/align-resources/** - test/lisp/align-tests.el - test/lisp/progmodes/*-ts-mode-resources/** - test/lisp/progmodes/*-ts-mode-tests.el + - test/lisp/progmodes/csharp-mode-resources/** - test/lisp/progmodes/csharp-mode-tests.el + - test/lisp/progmodes/js-resources/** - test/lisp/progmodes/js-tests.el - test/lisp/progmodes/python-tests.el - test/lisp/textmodes/*-ts-mode-resources/**