Merge from origin/emacs-31

6800426743 admin/make-manuals: Include type hierarchy auxiliary files
a013cdd3e8 ; * admin/make-tarball.txt: Various improvements.
82ba6298ae Merge branch 'emacs-31' of git.savannah.gnu.org:/srv/git/...
091398b045 ; * src/treesit.c: Fix wording and typos in commentary.
83ef59ef5e ; Update tree-sitter docstrings
c51104de28 ; * ChangeLog.5: Fix position of one entry.
This commit is contained in:
Sean Whitton 2026-08-24 13:42:13 +01:00
commit 78df4833e6
4 changed files with 52 additions and 61 deletions

View file

@ -1,3 +1,7 @@
2026-08-24 Sean Whitton <spwhitton@spwhitton.name>
* Version 31.1 released.
2026-08-24 Sean Whitton <spwhitton@spwhitton.name> 2026-08-24 Sean Whitton <spwhitton@spwhitton.name>
Delete test that hangs Delete test that hangs
@ -113,10 +117,6 @@
skip-syntax-forward always works regardless whether skip-syntax-forward always works regardless whether
adaptive-fill-regexp has a match group for the prefix. adaptive-fill-regexp has a match group for the prefix.
2026-08-24 Sean Whitton <spwhitton@spwhitton.name>
* Version 31.1 released.
2026-08-17 Sean Whitton <spwhitton@spwhitton.name> 2026-08-17 Sean Whitton <spwhitton@spwhitton.name>
* doc/misc/efaq.texi (New in Emacs 31): New node. * doc/misc/efaq.texi (New in Emacs 31): New node.

View file

@ -322,8 +322,8 @@ Optional argument TYPE is type of output (nil means all)."
(push (concat i j) res)))) (push (concat i j) res))))
(manual-misc-manuals root))))))) (manual-misc-manuals root)))))))
(let* ((dest (expand-file-name "manual" root)) (let* ((dest (expand-file-name "manual" root))
(html-node-dir (expand-file-name "html_node" dest)) (html-node-dir (expand-file-name "html_node/" dest))
(html-mono-dir (expand-file-name "html_mono" dest)) (html-mono-dir (expand-file-name "html_mono/" dest))
(ps-dir (expand-file-name "ps" dest)) (ps-dir (expand-file-name "ps" dest))
(pdf-dir (expand-file-name "pdf" dest)) (pdf-dir (expand-file-name "pdf" dest))
(emacs (expand-file-name "doc/emacs/emacs.texi" root)) (emacs (expand-file-name "doc/emacs/emacs.texi" root))
@ -369,6 +369,13 @@ Optional argument TYPE is type of output (nil means all)."
(dolist (manual misc) (dolist (manual misc)
(if (member type `(nil ,manual "misc")) (if (member type `(nil ,manual "misc"))
(manual-misc-html manual root html-node-dir html-mono-dir))) (manual-misc-html manual root html-node-dir html-mono-dir)))
;; Auxiliary files
(when (member type '(nil "elisp" "elisp-mono" "elisp-node"))
(dolist (file '("doc/lispref/elisp_type_hierarchy.txt"
"doc/lispref/elisp_type_hierarchy.jpg"))
(let ((file (expand-file-name file root)))
(copy-file file html-mono-dir t)
(copy-file file (expand-file-name "elisp/" html-node-dir) t))))
(message "Manuals created in %s" dest))) (message "Manuals created in %s" dest)))
(defconst manual-doctype-string (defconst manual-doctype-string
@ -761,6 +768,9 @@ style=\"text-align:left\">")
(and (equal type "lispintro") (and (equal type "lispintro")
(string-match-p "\\.\\(eps\\|pdf\\)\\'" file))) (string-match-p "\\.\\(eps\\|pdf\\)\\'" file)))
(copy-file file stem))) (copy-file file stem)))
(when (equal type "lispref")
(copy-file "../doc/lispref/elisp_type_hierarchy.txt" stem)
(copy-file "../doc/lispref/elisp_type_hierarchy.jpg" stem))
(with-temp-buffer (with-temp-buffer
(let ((outvars make-manuals-dist-output-variables) (let ((outvars make-manuals-dist-output-variables)
(case-fold-search nil)) (case-fold-search nil))

View file

@ -102,9 +102,7 @@ General steps (for each step, check for possible errors):
easiest way of creating the new ChangeLog.N is to rename the file easiest way of creating the new ChangeLog.N is to rename the file
ChangeLog (without the .N suffix) left over from the last release ChangeLog (without the .N suffix) left over from the last release
(it is usually unversioned) and commit it, together with the (it is usually unversioned) and commit it, together with the
modified Makefile.in. If you don't have the unversioned ChangeLog modified Makefile.in.
file from the last release, you can take it from the release
tarball.
Now: Now:
@ -133,6 +131,7 @@ General steps (for each step, check for possible errors):
Save the "*Authors*" buffer as etc/AUTHORS. Save the "*Authors*" buffer as etc/AUTHORS.
Check the diff looks reasonable. Maybe add more entries to Check the diff looks reasonable. Maybe add more entries to
authors-ambiguous-files or authors-aliases, and repeat. authors-ambiguous-files or authors-aliases, and repeat.
If making a release, move the "Version NN.N released." back to the top.
Commit and push any fixes to authors.el with a message like this: Commit and push any fixes to authors.el with a message like this:
; Update exported ChangeLog files and etc/AUTHORS ; Update exported ChangeLog files and etc/AUTHORS
@ -161,30 +160,17 @@ General steps (for each step, check for possible errors):
one, as described above). Pick a date about a week from now when one, as described above). Pick a date about a week from now when
you intend to make the release. Use M-x add-release-logs from you intend to make the release. Use M-x add-release-logs from
admin/admin.el to add entries to etc/HISTORY and the ChangeLog admin/admin.el to add entries to etc/HISTORY and the ChangeLog
file. It's best not to commit these files until the release is file. Merge the entries from the unversioned ChangeLog into the
actually made. Merge the entries from (unversioned) ChangeLog top of the current versioned ChangeLog.N and commit that along
into the top of the current versioned ChangeLog.N and commit that with etc/HISTORY. Name the tar file as emacs-XX.Y-rc1.tar.
along with etc/HISTORY. Then you can tag that commit as the
release.
Alternatively, you can commit and tag with the RC tag right away, If you need another release candidate, remember to adjust the
and delay the final tagging until you actually decide to make a ChangeLog and etc/HISTORY entries. Never replace an existing
release and announce it. The "git tag" command can tag a specific tarfile! If you need to fix something, always upload it with a
commit if you give it the SHA1 of that commit, even if additional different name.
commits have been pushed in the meantime.
Name the tar file as emacs-XX.Y-rc1.tar. If all goes well in the If this is the release itself, copy the unversioned ChangeLog from
following week, you can simply rename the file and use it for the the previous release candidate tarball into your worktree.
actual release. If you need another release candidate, remember
to adjust the ChangeLog and etc/HISTORY entries.
If you need to change only a file(s) that cannot possibly affect
the build (README, ChangeLog, NEWS, etc.) then rather than doing
an entirely new build, it is better to unpack the existing
tarfile, modify the file(s), and tar it back up again.
Never replace an existing tarfile! If you need to fix something,
always upload it with a different name.
4. autoreconf -i -I m4 --force && make bootstrap 4. autoreconf -i -I m4 --force && make bootstrap
@ -304,6 +290,8 @@ General steps (for each step, check for possible errors):
-- NEW_FILE.gz NEW_FILE.xz ... -- NEW_FILE.gz NEW_FILE.xz ...
For a release: For a release:
gnupload [--user your@gpg.key.email] --to alpha.gnu.org:emacs/pretest \
--delete NEW-rc1_FILE.xz
gnupload [--user your@gpg.key.email] --to ftp.gnu.org:emacs \ gnupload [--user your@gpg.key.email] --to ftp.gnu.org:emacs \
NEW_FILE.gz NEW_FILE.xz ... NEW_FILE.gz NEW_FILE.xz ...
@ -333,8 +321,8 @@ General steps (for each step, check for possible errors):
12. After five minutes, verify that the files are visible at 12. After five minutes, verify that the files are visible at
<https://alpha.gnu.org/gnu/emacs/pretest/> for a pretest, or <https://alpha.gnu.org/gnu/emacs/pretest/> for a pretest, or
<https://ftp.gnu.org/gnu/emacs/> for a release. If uploading a <https://ftp.gnu.org/gnu/emacs/> for a release. If uploading a
pretest, the delete of the previous pretest a few minutes before the pretest, the deletion of the previous pretest happens a few minutes
creation of the new file. before the creation of the new file.
Download them and check the signatures and SHA1/SHA256 checksums. Download them and check the signatures and SHA1/SHA256 checksums.

View file

@ -421,19 +421,19 @@ init_treesit_functions (void)
:-) :-)
Parsers in indirect buffers: We make indirect buffers share the Parsers in indirect buffers: We make indirect buffers share the
parser of their base buffer. Indirect buffers and their base buffer parser list of their base buffer. Indirect buffers and their base
share the same buffer content but not other buffer attributes. If buffer share the same buffer content but not other buffer attributes.
they have separate parser lists, changes made in an indirect buffer If they had separate parser lists, changes made in an indirect
will only update parsers of that indirect buffer, and not parsers in buffer would only update parsers of that indirect buffer, and not
the base buffer or other indirect buffers, and vice versa. For that parsers in the base buffer or other indirect buffers, and vice versa.
reason, the base buffer and all ot its indirect buffers share a For that reason, the base buffer and all of its indirect buffers
single parser list. But each parser in this shared parser list still share a single parser list. But each parser in this shared parser
points to their own buffer. On top of that, treesit-parser-list only list still points to their own buffer. On top of that,
return parsers that belongs to the calling buffer. So ultimately, treesit-parser-list only returns parsers that belong to the calling
from the user's POV, each buffer, regardless of indirect or not, buffer. So ultimately, from the user's POV, each buffer, regardless
appears to have their own parser list. A discussion can be found in of whether indirect or not, appears to have its own parser list. A
bug#59693. Note that that discussion led to an earlier design, which discussion can be found in bug#59693. Note that the discussion led
is different from the current one. to an earlier design, which is different from the current one.
Line and column reporting to tree-sitter: technically we had to send Line and column reporting to tree-sitter: technically we had to send
tree-sitter the line and column position of each edit. But in tree-sitter the line and column position of each edit. But in
@ -2398,12 +2398,7 @@ already has a parser for LANGUAGE with TAG, return that parser, but if
NO-REUSE is non-nil, always create a new parser. NO-REUSE is non-nil, always create a new parser.
TAG can be any symbol except t, and defaults to nil. Different TAG can be any symbol except t, and defaults to nil. Different
parsers can have the same tag. parsers can have the same tag. */)
If that buffer is an indirect buffer, its base buffer is used instead.
That is, indirect buffers use their base buffer's parsers. Lisp
programs should widen as necessary should they want to use a parser in
an indirect buffer. */)
(Lisp_Object language, Lisp_Object buffer, Lisp_Object no_reuse, (Lisp_Object language, Lisp_Object buffer, Lisp_Object no_reuse,
Lisp_Object tag) Lisp_Object tag)
{ {
@ -2517,9 +2512,7 @@ DEFUN ("treesit-parser-list",
0, 3, 0, 0, 3, 0,
doc: /* Return BUFFER's parser list, filtered by LANGUAGE and TAG. doc: /* Return BUFFER's parser list, filtered by LANGUAGE and TAG.
BUFFER defaults to the current buffer. If that buffer is an indirect BUFFER defaults to the current buffer.
buffer, its base buffer is used instead. That is, indirect buffers
use their base buffer's parsers.
If LANGUAGE is non-nil, only return parsers for that language. If LANGUAGE is non-nil, only return parsers for that language.