diff --git a/ChangeLog.5 b/ChangeLog.5 index 54234f605c0..3eb6662cf16 100644 --- a/ChangeLog.5 +++ b/ChangeLog.5 @@ -1,3 +1,7 @@ +2026-08-24 Sean Whitton + + * Version 31.1 released. + 2026-08-24 Sean Whitton Delete test that hangs @@ -113,10 +117,6 @@ skip-syntax-forward always works regardless whether adaptive-fill-regexp has a match group for the prefix. -2026-08-24 Sean Whitton - - * Version 31.1 released. - 2026-08-17 Sean Whitton * doc/misc/efaq.texi (New in Emacs 31): New node. diff --git a/admin/admin.el b/admin/admin.el index 305449fd25e..bd9148d0b48 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -322,8 +322,8 @@ Optional argument TYPE is type of output (nil means all)." (push (concat i j) res)))) (manual-misc-manuals root))))))) (let* ((dest (expand-file-name "manual" root)) - (html-node-dir (expand-file-name "html_node" dest)) - (html-mono-dir (expand-file-name "html_mono" dest)) + (html-node-dir (expand-file-name "html_node/" dest)) + (html-mono-dir (expand-file-name "html_mono/" dest)) (ps-dir (expand-file-name "ps" dest)) (pdf-dir (expand-file-name "pdf" dest)) (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) (if (member type `(nil ,manual "misc")) (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))) (defconst manual-doctype-string @@ -761,6 +768,9 @@ style=\"text-align:left\">") (and (equal type "lispintro") (string-match-p "\\.\\(eps\\|pdf\\)\\'" file))) (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 (let ((outvars make-manuals-dist-output-variables) (case-fold-search nil)) diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt index 51908478877..79f6d71e68b 100644 --- a/admin/make-tarball.txt +++ b/admin/make-tarball.txt @@ -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 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. + modified Makefile.in. Now: @@ -133,6 +131,7 @@ General steps (for each step, check for possible errors): Save the "*Authors*" buffer as etc/AUTHORS. Check the diff looks reasonable. Maybe add more entries to 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: ; 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 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 - file. It's best not to commit these files until the release is - actually made. Merge the entries from (unversioned) ChangeLog - into the top of the current versioned ChangeLog.N and commit that - along with etc/HISTORY. Then you can tag that commit as the - release. + file. Merge the entries from the unversioned ChangeLog into the + top of the current versioned ChangeLog.N and commit that along + with etc/HISTORY. Name the tar file as emacs-XX.Y-rc1.tar. - Alternatively, you can commit and tag with the RC tag right away, - and delay the final tagging until you actually decide to make a - release and announce it. The "git tag" command can tag a specific - commit if you give it the SHA1 of that commit, even if additional - commits have been pushed in the meantime. + If you need another release candidate, remember to adjust the + ChangeLog and etc/HISTORY entries. Never replace an existing + tarfile! If you need to fix something, always upload it with a + different name. - Name the tar file as emacs-XX.Y-rc1.tar. If all goes well in the - following week, you can simply rename the file and use it for the - 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. + If this is the release itself, copy the unversioned ChangeLog from + the previous release candidate tarball into your worktree. 4. autoreconf -i -I m4 --force && make bootstrap @@ -231,8 +217,8 @@ General steps (for each step, check for possible errors): Alternatively, if you want to do this manually using the compressed tarballs: - tar tJf emacs-OLD.tar.xz | sed -e 's,^[^/]*,,' | sort > old_tmp - tar tJf emacs-NEW.tar.xz | sed -e 's,^[^/]*,,' | sort > new_tmp + tar tJf emacs-OLD.tar.xz | sed -e 's,^[^/]*,,' | sort >old_tmp + tar tJf emacs-NEW.tar.xz | sed -e 's,^[^/]*,,' | sort >new_tmp diff -u old_tmp new_tmp If this is the first pretest of a major release, just comparing @@ -289,8 +275,8 @@ General steps (for each step, check for possible errors): 11. Decide what compression schemes to offer. For a release, at least gz and xz: - gzip --best --no-name -c emacs-NEW.tar > emacs-NEW.tar.gz - xz -c emacs-NEW.tar > emacs-NEW.tar.xz + gzip --best --no-name -c emacs-NEW.tar >emacs-NEW.tar.gz + xz -c emacs-NEW.tar >emacs-NEW.tar.xz For pretests, just xz is probably fine (saves bandwidth). Now we will upload the files to the GNU FTP server. In the case of @@ -304,6 +290,8 @@ General steps (for each step, check for possible errors): -- NEW_FILE.gz NEW_FILE.xz ... 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 \ NEW_FILE.gz NEW_FILE.xz ... @@ -321,8 +309,8 @@ General steps (for each step, check for possible errors): clearsigned directive file like this: gpg -b FILE - echo directory: emacs/pretest > FILE.directive (for a pretest) - echo directory: emacs > FILE.directive (for a release) + echo directory: emacs/pretest >FILE.directive (for a pretest) + echo directory: emacs >FILE.directive (for a release) gpg --clearsign FILE.directive Upload by anonymous ftp to ftp://ftp-upload.gnu.org/ the files FILE, FILE.sig, FILE.directive.asc. @@ -333,8 +321,8 @@ General steps (for each step, check for possible errors): 12. After five minutes, verify that the files are visible at for a pretest, or for a release. If uploading a - pretest, the delete of the previous pretest a few minutes before the - creation of the new file. + pretest, the deletion of the previous pretest happens a few minutes + before the creation of the new file. Download them and check the signatures and SHA1/SHA256 checksums. diff --git a/src/treesit.c b/src/treesit.c index d5f58c5416d..c2ab3bc40fa 100644 --- a/src/treesit.c +++ b/src/treesit.c @@ -421,19 +421,19 @@ init_treesit_functions (void) :-) Parsers in indirect buffers: We make indirect buffers share the - parser of their base buffer. Indirect buffers and their base buffer - share the same buffer content but not other buffer attributes. If - they have separate parser lists, changes made in an indirect buffer - will only update parsers of that indirect buffer, and not parsers in - the base buffer or other indirect buffers, and vice versa. For that - reason, the base buffer and all ot its indirect buffers share a - single parser list. But each parser in this shared parser list still - points to their own buffer. On top of that, treesit-parser-list only - return parsers that belongs to the calling buffer. So ultimately, - from the user's POV, each buffer, regardless of indirect or not, - appears to have their own parser list. A discussion can be found in - bug#59693. Note that that discussion led to an earlier design, which - is different from the current one. + parser list of their base buffer. Indirect buffers and their base + buffer share the same buffer content but not other buffer attributes. + If they had separate parser lists, changes made in an indirect + buffer would only update parsers of that indirect buffer, and not + parsers in the base buffer or other indirect buffers, and vice versa. + For that reason, the base buffer and all of its indirect buffers + share a single parser list. But each parser in this shared parser + list still points to their own buffer. On top of that, + treesit-parser-list only returns parsers that belong to the calling + buffer. So ultimately, from the user's POV, each buffer, regardless + of whether indirect or not, appears to have its own parser list. A + discussion can be found in bug#59693. Note that the discussion led + to an earlier design, which is different from the current one. Line and column reporting to tree-sitter: technically we had to send 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. TAG can be any symbol except t, and defaults to nil. Different -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. */) +parsers can have the same tag. */) (Lisp_Object language, Lisp_Object buffer, Lisp_Object no_reuse, Lisp_Object tag) { @@ -2517,9 +2512,7 @@ DEFUN ("treesit-parser-list", 0, 3, 0, doc: /* Return BUFFER's parser list, filtered by LANGUAGE and TAG. -BUFFER defaults to the current buffer. If that buffer is an indirect -buffer, its base buffer is used instead. That is, indirect buffers -use their base buffer's parsers. +BUFFER defaults to the current buffer. If LANGUAGE is non-nil, only return parsers for that language.