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.
Browse 'git help bisect' for technical instructions.
** Starting a bisection
It is recommended to start a bisection with the admin/git-bisect-start
script. Using that script ensures that commits in branches that are
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
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
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}.
@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,
@code{buffer-file-name} returns @code{nil}. If @var{buffer} is not
supplied, it defaults to the current buffer.
@ -405,10 +405,11 @@ supplied, it defaults to the current buffer.
@end defun
@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
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
@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
recently-shown buffers, and the first element usually corresponds to the
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
@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)))))
#+end_src
Once you mark one of these five entry as DONE, rebuilding the agenda
will again the next five entries again, including the first entry that
Once you mark one of these five entries as DONE, rebuilding the agenda
will show the next five entries again, including the first entry that
was excluded so far.
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
(see [[*Internal archiving]]) are also scanned when producing 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
with the same values as ~org-agenda-archives-mode~.
@ -14552,11 +14552,13 @@ include:
#+vindex: org-latex-tables-booktabs
#+vindex: org-latex-tables-centered
All three commands are toggles. =:booktabs= brings in modern
typesetting enhancements to regular tables. The booktabs package
has to be loaded through ~org-latex-packages-alist~. =:center= is
for centering the table. =:rmlines= removes all but the very first
horizontal line made of ASCII characters from "table.el" tables
only.
typesetting enhancements to regular tables. The =booktabs= package
needs to be loaded through ~org-latex-packages-alist~, unless it is
already included by your document class[fn:: For example,
[[https://authors.acm.org/proceedings/production-information/preparing-your-article-with-latex][the
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= ::

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
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
---
@ -2338,6 +2329,13 @@ To get the old behavior back, add an element '(enum-open
** 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.
Emacs Lisp libraries have traditionally ended with a footer line

View file

@ -1,5 +1,5 @@
% Reference Card for Org Mode
\def\orgversionnumber{9.8.6}
\def\orgversionnumber{9.8.7}
\def\versionyear{2026} % latest update
\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
via Eldoc."
: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")
(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)))))))
(defvar eldoc-documentation-functions (list #'eldoc-show-help-at-pt)
(defvar eldoc-documentation-functions nil
"Hook of functions that produce doc strings.
A doc string is typically relevant if point is on a function-like
@ -813,7 +818,9 @@ all."
(defun eldoc--supported-p ()
"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
;; The old API had major modes set `eldoc-documentation-function'
;; 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 available)))
(not (package-vc-p (cadr elt))))))
(nconc (and include-builtins (package--builtin-alist))
(package--alist)))))
(append (and include-builtins (package--builtin-alist))
(package--alist)))))
;;;###autoload
(defun package-upgrade-all (&optional query)

View file

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

View file

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

View file

@ -112,7 +112,7 @@
(defcustom org-feed-alist nil
"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:
name a custom name for this feed

View file

@ -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.8.6"))
(let ((org-release "9.8.7"))
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.8.6"))
(let ((org-git-version "release_9.8.7"))
org-git-version))
(provide 'org-version)

View file

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

View file

@ -4,6 +4,7 @@
;; Author: Carsten Dominik <carsten.dominik 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
;; 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;
use `setopt' or \\[customize-option] instead."
:type 'integer
:type '(choice integer (alist :key-type symbol :value-type integer))
:set #'treesit--font-lock-level-setter
:version "29.1")

View file

@ -7774,19 +7774,22 @@ pbm_load (struct frame *f, struct image *img)
}
else
{
int expected_size = height * width;
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);
image_clear_image (f, img);
image_error ("Invalid image size in image `%s'", img->spec);
goto error;
ptrdiff_t expected_size;
bool bad = ckd_mul (&expected_size, height, width);
bad |= ckd_mul (&expected_size, expected_size,
(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)

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),
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)
{
return decode_live_window (window)->prev_buffers;

View file

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

View file

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