Merge from origin/emacs-31

0748af27c0 ; * admin/notes/repo (Bisecting): Refine 'git bisect run'...
c565251dd6 ; * admin/notes/repo (Bisecting): Provide a 'git bisect r...
ba781ed754 Fix blinking Eldoc messages
3e7908fe23 ; Fix two tests
924d88a736 ; Warn about killed buffers returned by 'window-prev-buff...
b07e634e4c Fix undefined behavior in pbm_load
5404761a47 ; Correct treesit-font-lock-level customize type (issue#8...
6464453558 Avoid destructively modifying 'package--builtin-alist'
ffad15bf73 Update to Org 9.8.7
9ab1aa887a Ensure, that `buffer-file-name' is expanded in tramp-archive
4721a44e8a ; * doc/lispref/buffers.texi (Buffer File Name): Clarify ...
9777acdc95 ; etc/NEWS: Fix duplicate "Emacs Lisp mode" heading.

# Conflicts:
#	etc/NEWS
This commit is contained in:
Sean Whitton 2026-07-07 16:01:01 +01:00
commit 202d29726d
19 changed files with 100 additions and 46 deletions

View file

@ -118,6 +118,8 @@ again.
This is a semi-automated way to find the revision that introduced a bug. This is a semi-automated way to find the revision that introduced a bug.
Browse 'git help bisect' for technical instructions. Browse 'git help bisect' for technical instructions.
** Starting a bisection
It is recommended to start a bisection with the admin/git-bisect-start It is recommended to start a bisection with the admin/git-bisect-start
script. Using that script ensures that commits in branches that are script. Using that script ensures that commits in branches that are
the result of merging external trees into the Emacs repository, as the result of merging external trees into the Emacs repository, as
@ -126,6 +128,34 @@ during the bisection process. That script can also be executed
automatically when 'git bisect start' is called, with the help of a automatically when 'git bisect start' is called, with the help of a
wrapper script that is included in its commentary section. wrapper script that is included in its commentary section.
** Automated bisection
In the case that you have a command which exits non-zero if and only if
the bug is present, then after starting the bisection, you can have Git
automatically recompile Emacs at the relevant revisions and run that
command for you, recording a result based on the exit code.
Suppose 'emacs -batch -eval "(foo)"' exits non-zero if and only if the
bug is present. Then you may be able to use something like this:
git bisect run sh -xc '{ test -e Makefile && { make || make bootstrap; }; } \
|| { git clean -xdff && ./autogen.sh autoconf && ./configure && make; } \
|| exit 125; src/emacs -batch -eval "(foo)"'
This tries to recompile Emacs, tries a bootstrap build if that fails,
and completely empties out your working tree of build products with 'git
clean -xdff' if even that fails. If that isn't enough for a successful
build, returning code 125 tells Git to skip evaluating that commit.
You can substitute in any options to './configure' you need on your
machine, and the test command at the end. It is usually best to
configure with '--without-native-compilation' for rebuild speed, unless
the bug only occurs with native compilation enabled.
Note that this runs 'git clean -xdff', which deletes **any and all
untracked files**, so it is best to run it in a throwaway Git worktree.
You can create these using 'C-x v w c' from inside Emacs.
* Maintaining ChangeLog history * Maintaining ChangeLog history
Older ChangeLog entries are kept in history files named ChangeLog.1, Older ChangeLog entries are kept in history files named ChangeLog.1,

View file

@ -391,7 +391,7 @@ the buffer name are distinct and can be set independently.
@xref{Visiting Files}. @xref{Visiting Files}.
@defun buffer-file-name &optional buffer @defun buffer-file-name &optional buffer
This function returns the absolute file name of the file that This function returns the fully-expanded absolute file name of the file that
@var{buffer} is visiting. If @var{buffer} is not visiting any file, @var{buffer} is visiting. If @var{buffer} is not visiting any file,
@code{buffer-file-name} returns @code{nil}. If @var{buffer} is not @code{buffer-file-name} returns @code{nil}. If @var{buffer} is not
supplied, it defaults to the current buffer. supplied, it defaults to the current buffer.
@ -405,10 +405,11 @@ supplied, it defaults to the current buffer.
@end defun @end defun
@defvar buffer-file-name @defvar buffer-file-name
This buffer-local variable contains the name of the file being visited This buffer-local variable contains the absolute name of the file being visited
in the current buffer, or @code{nil} if it is not visiting a file. It in the current buffer, or @code{nil} if it is not visiting a file. It
is a permanent local variable, unaffected by is a permanent local variable, unaffected by
@code{kill-all-local-variables}. @code{kill-all-local-variables}. The value is identical to the one
which the @code{buffer-file-name} function returns.
@example @example
@group @group

View file

@ -4939,6 +4939,11 @@ and @var{window-pos} is a marker that gives the window point position
The list is ordered so that earlier elements correspond to more The list is ordered so that earlier elements correspond to more
recently-shown buffers, and the first element usually corresponds to the recently-shown buffers, and the first element usually corresponds to the
buffer most recently removed from the window. buffer most recently removed from the window.
As a rule, elements are removed from this list when their buffer gets
killed. In rare cases, however, elements may have survived the killing
of their buffer. It's a good idea therefore to always check buffers for
liveness when processing the return value of this function.
@end defun @end defun
@defun set-window-prev-buffers window prev-buffers @defun set-window-prev-buffers window prev-buffers

View file

@ -10013,8 +10013,8 @@ entries with a =NEXT= TODO keyword.
((org-agenda-max-entries 5))))) ((org-agenda-max-entries 5)))))
#+end_src #+end_src
Once you mark one of these five entry as DONE, rebuilding the agenda Once you mark one of these five entries as DONE, rebuilding the agenda
will again the next five entries again, including the first entry that will show the next five entries again, including the first entry that
was excluded so far. was excluded so far.
You can also dynamically set temporary limits, which are lost when You can also dynamically set temporary limits, which are lost when
@ -10269,7 +10269,7 @@ the other commands, point needs to be in the desired line.
Toggle Archives mode. In Archives mode, trees that are archived Toggle Archives mode. In Archives mode, trees that are archived
(see [[*Internal archiving]]) are also scanned when producing the (see [[*Internal archiving]]) are also scanned when producing the
agenda. To exit archives mode, press {{{kbd(v a)}}} again. The agenda. To exit archives mode, press {{{kbd(v a)}}} again. The
initial setting for this mode in new agenda buffers can set with the initial setting for this mode in new agenda buffers can be set with the
variable ~org-agenda-start-with-archives-mode~, which can be set variable ~org-agenda-start-with-archives-mode~, which can be set
with the same values as ~org-agenda-archives-mode~. with the same values as ~org-agenda-archives-mode~.
@ -14552,11 +14552,13 @@ include:
#+vindex: org-latex-tables-booktabs #+vindex: org-latex-tables-booktabs
#+vindex: org-latex-tables-centered #+vindex: org-latex-tables-centered
All three commands are toggles. =:booktabs= brings in modern All three commands are toggles. =:booktabs= brings in modern
typesetting enhancements to regular tables. The booktabs package typesetting enhancements to regular tables. The =booktabs= package
has to be loaded through ~org-latex-packages-alist~. =:center= is needs to be loaded through ~org-latex-packages-alist~, unless it is
for centering the table. =:rmlines= removes all but the very first already included by your document class[fn:: For example,
horizontal line made of ASCII characters from "table.el" tables [[https://authors.acm.org/proceedings/production-information/preparing-your-article-with-latex][the
only. ACM article template]].]. =:center= is for centering the table.
=:rmlines= removes all but the very first horizontal line made of
ASCII characters from "table.el" tables only.
- =:math-prefix=, =:math-suffix=, =:math-arguments= :: - =:math-prefix=, =:math-suffix=, =:math-arguments= ::

View file

@ -1640,15 +1640,6 @@ at run-time for the use of the associated deprecated features.
'(setq eieio-backward-compatibility t)' can be used to recover '(setq eieio-backward-compatibility t)' can be used to recover
the previous silence. the previous silence.
** Emacs Lisp mode
+++
*** Semantic highlighting support for Emacs Lisp.
'emacs-lisp-mode' can now use code analysis to highlight more symbols
more accurately. Customize the new user option
'elisp-fontify-semantically' to non-nil to enable this feature, and see
the Info node "(emacs) Semantic Font Lock" for more information.
** Text mode ** Text mode
--- ---
@ -2338,6 +2329,13 @@ To get the old behavior back, add an element '(enum-open
** Emacs Lisp mode ** Emacs Lisp mode
+++
*** Semantic highlighting support for Emacs Lisp.
'emacs-lisp-mode' can now use code analysis to highlight more symbols
more accurately. Customize the new user option
'elisp-fontify-semantically' to non-nil to enable this feature, and see
the Info node "(emacs) Semantic Font Lock" for more information.
--- ---
*** Checkdoc no longer warns about missing footer lines in some cases. *** Checkdoc no longer warns about missing footer lines in some cases.
Emacs Lisp libraries have traditionally ended with a footer line Emacs Lisp libraries have traditionally ended with a footer line

View file

@ -1,5 +1,5 @@
% Reference Card for Org Mode % Reference Card for Org Mode
\def\orgversionnumber{9.8.6} \def\orgversionnumber{9.8.7}
\def\versionyear{2026} % latest update \def\versionyear{2026} % latest update
\input emacsver.tex \input emacsver.tex

View file

@ -144,6 +144,11 @@ This setting is an alternative to `help-at-pt-display-when-idle'. If
the value is non-nil, `eldoc-show-help-at-pt' will show help-at-point the value is non-nil, `eldoc-show-help-at-pt' will show help-at-point
via Eldoc." via Eldoc."
:type 'boolean :type 'boolean
:set (lambda (sym val)
(custom-set-default sym val)
(if val
(add-hook 'eldoc-documentation-functions #'eldoc-show-help-at-pt 90)
(remove-hook 'eldoc-documentation-functions #'eldoc-show-help-at-pt)))
:version "31.1") :version "31.1")
(defface eldoc-highlight-function-argument (defface eldoc-highlight-function-argument
@ -417,7 +422,7 @@ Also store it in `eldoc-last-message' and return that value."
(overlay-end show-paren--overlay))))))) (overlay-end show-paren--overlay)))))))
(defvar eldoc-documentation-functions (list #'eldoc-show-help-at-pt) (defvar eldoc-documentation-functions nil
"Hook of functions that produce doc strings. "Hook of functions that produce doc strings.
A doc string is typically relevant if point is on a function-like A doc string is typically relevant if point is on a function-like
@ -813,7 +818,9 @@ all."
(defun eldoc--supported-p () (defun eldoc--supported-p ()
"Non-nil if an ElDoc function is set for this buffer." "Non-nil if an ElDoc function is set for this buffer."
(and (not (memq eldoc-documentation-strategy '(nil ignore))) ;; Exclude ephemeral *eldoc* buffers, to avoid blinking (bug#81356).
(and (not (string-prefix-p " *eldoc" (buffer-name)))
(not (memq eldoc-documentation-strategy '(nil ignore)))
(or eldoc-documentation-functions (or eldoc-documentation-functions
;; The old API had major modes set `eldoc-documentation-function' ;; The old API had major modes set `eldoc-documentation-function'
;; to provide eldoc support. It's impossible now to determine ;; to provide eldoc support. It's impossible now to determine

View file

@ -2186,8 +2186,8 @@ NAME should be a symbol."
(package-desc-version (cadr elt)) (package-desc-version (cadr elt))
(package-desc-version available))) (package-desc-version available)))
(not (package-vc-p (cadr elt)))))) (not (package-vc-p (cadr elt))))))
(nconc (and include-builtins (package--builtin-alist)) (append (and include-builtins (package--builtin-alist))
(package--alist))))) (package--alist)))))
;;;###autoload ;;;###autoload
(defun package-upgrade-all (&optional query) (defun package-upgrade-all (&optional query)

View file

@ -710,11 +710,12 @@ offered."
(defun tramp-archive-handle-insert-file-contents (defun tramp-archive-handle-insert-file-contents
(filename &optional visit beg end replace) (filename &optional visit beg end replace)
"Like `insert-file-contents' for file archives." "Like `insert-file-contents' for file archives."
(setq filename (expand-file-name filename))
(let ((result (let ((result
(insert-file-contents (insert-file-contents
(tramp-archive-gvfs-file-name filename) visit beg end replace))) (tramp-archive-gvfs-file-name filename) visit beg end replace)))
(when visit (setq buffer-file-name filename)) (when visit (setq buffer-file-name filename))
(cons (expand-file-name filename) (cdr result)))) (cons filename (cdr result))))
(defun tramp-archive-handle-load (defun tramp-archive-handle-load
(file &optional noerror nomessage nosuffix must-suffix) (file &optional noerror nomessage nosuffix must-suffix)

View file

@ -9723,8 +9723,10 @@ the dedicated frame."
(pos (marker-position marker))) (pos (marker-position marker)))
(with-current-buffer buffer (with-current-buffer buffer
(save-excursion (save-excursion
(goto-char pos) (save-restriction
(org-tree-to-indirect-buffer arg)))) (widen)
(goto-char pos)
(org-tree-to-indirect-buffer arg)))))
(setq org-agenda-last-indirect-buffer org-last-indirect-buffer)) (setq org-agenda-last-indirect-buffer org-last-indirect-buffer))
(defvar org-last-heading-marker (make-marker) (defvar org-last-heading-marker (make-marker)

View file

@ -112,7 +112,7 @@
(defcustom org-feed-alist nil (defcustom org-feed-alist nil
"Alist specifying RSS feeds that should create inputs for Org. "Alist specifying RSS feeds that should create inputs for Org.
Each entry in this list specified an RSS feed tat should be queried Each entry in this list specified an RSS feed that should be queried
to create inbox items in Org. Each entry is a list with the following items: to create inbox items in Org. Each entry is a list with the following items:
name a custom name for this feed name a custom name for this feed

View file

@ -5,13 +5,13 @@
(defun org-release () (defun org-release ()
"The release version of Org. "The release version of Org.
Inserted by installing Org mode or when a release is made." Inserted by installing Org mode or when a release is made."
(let ((org-release "9.8.6")) (let ((org-release "9.8.7"))
org-release)) org-release))
;;;###autoload ;;;###autoload
(defun org-git-version () (defun org-git-version ()
"The Git version of Org mode. "The Git version of Org mode.
Inserted by installing Org or when a release is made." Inserted by installing Org or when a release is made."
(let ((org-git-version "release_9.8.6")) (let ((org-git-version "release_9.8.7"))
org-git-version)) org-git-version))
(provide 'org-version) (provide 'org-version)

View file

@ -9,7 +9,7 @@
;; URL: https://orgmode.org ;; URL: https://orgmode.org
;; Package-Requires: ((emacs "28.2")) ;; Package-Requires: ((emacs "28.2"))
;; Version: 9.8.6 ;; Version: 9.8.7
;; This file is part of GNU Emacs. ;; This file is part of GNU Emacs.
;; ;;

View file

@ -4,6 +4,7 @@
;; Author: Carsten Dominik <carsten.dominik AT gmail DOT com> ;; Author: Carsten Dominik <carsten.dominik AT gmail DOT com>
;; Nicolas Goaziou <n.goaziou AT gmail DOT com> ;; Nicolas Goaziou <n.goaziou AT gmail DOT com>
;; Maintainer: Pedro A. Aranda <paaguti aT gmail d.T com>
;; Keywords: org, text, tex ;; Keywords: org, text, tex
;; This file is part of GNU Emacs. ;; This file is part of GNU Emacs.

View file

@ -1598,7 +1598,7 @@ variable `treesit-font-lock-feature-list'.
Setting this variable directly with `setq' or `let' doesn't work; Setting this variable directly with `setq' or `let' doesn't work;
use `setopt' or \\[customize-option] instead." use `setopt' or \\[customize-option] instead."
:type 'integer :type '(choice integer (alist :key-type symbol :value-type integer))
:set #'treesit--font-lock-level-setter :set #'treesit--font-lock-level-setter
:version "29.1") :version "29.1")

View file

@ -7774,19 +7774,22 @@ pbm_load (struct frame *f, struct image *img)
} }
else else
{ {
int expected_size = height * width;
bool two_byte = 255 < max_color_idx; bool two_byte = 255 < max_color_idx;
if (two_byte)
expected_size *= 2;
if (type == PBM_COLOR)
expected_size *= 3;
if (raw_p && p + expected_size > end) if (raw_p)
{ {
image_destroy_x_image (ximg); ptrdiff_t expected_size;
image_clear_image (f, img); bool bad = ckd_mul (&expected_size, height, width);
image_error ("Invalid image size in image `%s'", img->spec); bad |= ckd_mul (&expected_size, expected_size,
goto error; (two_byte ? 2 : 1) * (type == PBM_COLOR ? 3 : 1));
bad |= end - p < expected_size;
if (bad)
{
image_destroy_x_image (ximg);
image_clear_image (f, img);
image_error ("Invalid image size in image `%s'", img->spec);
goto error;
}
} }
for (y = 0; y < height; ++y) for (y = 0; y < height; ++y)

View file

@ -2326,7 +2326,11 @@ WINDOW must be a live window and defaults to the selected one.
The return value is a list of elements (BUFFER WINDOW-START POS), The return value is a list of elements (BUFFER WINDOW-START POS),
where BUFFER is a buffer, WINDOW-START is the start position of the where BUFFER is a buffer, WINDOW-START is the start position of the
window for that buffer, and POS is a window-specific point value. */) window for that buffer, and POS is a window-specific point value.
In rare ocasions BUFFER may have been already killed. It's therefore
advisable to always check the return value for the occurrence of dead
buffers before using it. */)
(Lisp_Object window) (Lisp_Object window)
{ {
return decode_live_window (window)->prev_buffers; return decode_live_window (window)->prev_buffers;

View file

@ -100,7 +100,7 @@ global enabled."
(condition-case err (condition-case err
(semanticdb-enable-gnu-global-in-buffer) (semanticdb-enable-gnu-global-in-buffer)
(error (if standardfile (error (if standardfile
(error err) (signal err)
(save-match-data (save-match-data
(set-buffer (find-file-noselect semanticdb-test-gnu-global-startfile))) (set-buffer (find-file-noselect semanticdb-test-gnu-global-startfile)))
(semanticdb-enable-gnu-global-in-buffer)))) (semanticdb-enable-gnu-global-in-buffer))))

View file

@ -58,7 +58,7 @@
(error (error
(unless (string= "No further undo information" (unless (string= "No further undo information"
(cadr err)) (cadr err))
(error err)))) (signal err))))
(undo-boundary) (undo-boundary)
(insert "This") (insert "This")
(undo-boundary) (undo-boundary)