Now that json.el uses the new sort calling convention, there's no
need to prefer string< over value<, which may even run faster.
Suggested by Mattias Engdegård <mattias.engdegard@gmail.com>.
* lisp/json.el (json-encoding-object-sort-predicate): Mention value<
in docstring.
(json-pretty-print-buffer-ordered, json-pretty-print-ordered): Use
value< in place of string<.
* test/lisp/json-tests.el (test-json-encode-hash-table-sort): Use
value< as json-encoding-object-sort-predicate in at least one test.
* lisp/emacs-lisp/package.el (package-upgrade): Trigger error
redirecting user to use 'package-vc-upgrade'.
(package--upgradeable-packages): Exclude VC packages from list
of "upgradable" packages.
* lisp/vc/vc.el (vc-pull): Don't fail when called from buffers
visiting unregistered or ignored files so long as there is a
'pull' function available from the backend.
* lisp/vc/vc-hooks.el (vc-find-backend-function): Require vc for
default implementations (bug#80254). Report and fix due to
Daniel Mendler <mail@daniel-mendler.de>.
* lisp/emacs-lisp/vtable.el (vtable--insert-line): Do not
produce a divider after the final column. This thinko is more
noticeable on a tty.
(vtable--insert-header-line): On a tty, nullify indicator
padding.
(vtable-tty-char-pixel-width): New defconst.
(vtable--compute-width): On a tty, adjust column width specified
in pixels down by a factor of 'vtable-tty-char-pixel-width'.
(vtable--alter-column-width): On a tty, adjust column width in
characters, otherwise in pixels.
* lisp/vc/vc-hg.el (vc-hg--bookmarks): New function.
(vc-hg-trunk-or-topic-p):
* lisp/vc/vc-git.el (vc-git--branch-remotes)
(vc-git-trunk-or-topic-p): New optional BRANCH argument.
(vc-trunk-or-topic-p): Declare.
(vc-git-topic-outgoing-base): Consider only local trunks, if
there are any (bug#80006).
* lisp/vc/vc.el (trunk-or-topic-p): New optional BRANCH
argument.
(vc-trunk-or-topic-p): New function.
(vc--outgoing-base): Call it.
* lisp/net/shr.el (shr-dom-print): Escape these strings, as done
in `dom-print', to prevent producing an erroneous XML document.
* test/lisp/net/shr-tests.el (dom-print-escape): Add new test
(Bug#80383).
* doc/lispref/edebug.texi (Edebug, Using Edebug, Instrumenting)
(Source Breakpoints, Specification List): Improve indexing and
tell how to end debugging.
* lisp/textmodes/page-ext.el (pages-directory-revert-function): New
function.
(pages-directory-list-all-headers-p, pages-directory-count-lines-p)
(pages-directory-regexp): New variables to store the page directory
style. (Bug#80319)
* src/xdisp.c (compute_display_string_pos): Pay attention to
'display' properties that come from overlays, in case the overlays
are window-specific. Call 'handle_display_prop' with the argument
OVERLAY non-nil, if the property is from an overlay.
(compute_display_string_end): Accept an additional argument, a
pointer to the window; all callers changed. Pay attention to
'display' properties that come from overlays, in case the overlays
are window-specific. In particular, if the property comes from an
overlay, use that overlay's end position as the next place where
the 'display' property changes, effectively disregarding any
properties on buffer text that is replaced by this overlay's
'display' property.
(handle_single_display_spec): Always use the end position of the
overlay which determined the 'display' property as the end of the
property, to make sure we obey windows-specific overlays.
* src/bidi.c (bidi_fetch_char): Adapt to the above change.
* src/dispextern.h: Adjust prototype of 'compute_display_string_end'.
(Bug#80255)
* lisp/completion-preview.el (completion-preview-commands):
Allow the value t, which says that completion preview should
be attempted after any command.
* lisp/completion-preview.el
(completion-preview-require-certain-commands): Adapt.
* lisp/completion-preview.el
(completion-preview-inhibit-functions): New option.
(completion-preview--post-command): Respect it.
* etc/NEWS: Announce it.
* doc/lispintro/emacs-lisp-intro.texi (Permanent Installation):
Add a cross-reference to "Contributing" in the Emacs user manual.
Suggested by Matto Fransen <matto@matto.nl>. (Bug#80393)
* lisp/speedbar.el (speedbar-get-focus)
(speedbar-frame-or-window): Support for 'speedbar-prefer-window'
with fix of 'speedbar-window' trying to delete current frame.
(Bug#80392)
* src/buffer.c (overlays_in): Fix commentary to match the code.
(Foverlays_in, Foverlays_at): Doc fixes. (Bug#80242)
* test/src/buffer-tests.el (test-overlays-at-2): Add one test.
* doc/lispref/display.texi (Finding Overlays): Update and improve
the documentation of 'overlays-in' and 'overlays-at'.
* etc/NEWS: Announce the changes.
* src/pgtkfns.c (xg_set_icon_from_xpm_data):
* src/xfns.c (xg_set_icon_from_xpm_data):
gdk-pixbuf 2.44 (2025-09) deprecated xg_set_icon_from_xpm_data,
and this breaks --enable-gcc-warnings builds.
For now, pacify GCC by using a pragma.
Uses of <vla.h>’s macro VLA_ELEMS were removed some time ago.
* admin/merge-gnulib (GNULIB_MODULES): Remove vla.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* lib/vla.h: Remove.
* src/fns.c, src/lread.c: Do not include <vla.h>.
* lisp/vc/vc.el (vc-log-show-limit):
Change the default to 500 (bug#80037).
(vc-print-log-setup-buttons): Have the first button prompt and
propose 4X the current limit as the default.
(vc-print-fileset-branch-log):
Update the reference to the changed button text.
* lisp/vc/log-view.el (log-view-end-of-defun-1): Same.
* doc/emacs/maintaining.texi (VC Change Log): Also here.
The greedy regexp matching, broken scoring and broken highlight were
sources of frequent complaints about the 'flex' matching style. This
commit fixes that.
Inspired by the 'hotfuzz' style (available at
https://github.com/axelf4/hotfuzz) it uses a modified version of Gotoh's
1982 dynamic programming algorithm. It is strictly more correct than the
"old" flex. For example, when matching the pattern 'goto' to no longer
will 'eglot-format' be sorted before some hypothetical much better
'goobarbaz-goto'. And of course the highlighting is also correctly
placed on the 'goto', not scattered across the candidate.
Regarding performance, it is faster than the naive 'flex', primarily
because of the Elisp rewrite in minibuffer.el. The matching and costing
algorithm matters but is not the bottleneck.
The Elisp parts of the style were almost completely decoupled from the
pcm/substring styles in lisp/minibuffer.el. Only
'completion-flex-try-completion' uses some of pcm's code for pattern
augmentation.
* src/minibuf.c (completion--flex-cost-gotoh): New function.
* lisp/minibuffer.el (completion-flex--pattern-str): New variable.
(flex-score-match-tightness): Make obsolete.
(completion--flex-all-completions-1): New helper function.
(completion-flex-try-completion, completion-flex-all-completions): Rewrite.
(completion-substring--all-completions): No longer take transform-pattern-fn.
(completion--flex-adjust-metadata): Tweak.
(completion--flex-score, completion--flex-score-1)
(completion--flex-score-last-md, completion-flex--make-flex-pattern): Delete.
* test/lisp/minibuffer-tests.el (completion--sorted-flex-completions):
New helper function.
(completion-flex-test-non-ascii): New test.
(completion--pcm-score): Delete.
(completion-pcm-test-3, completion-pcm-test-4)
(completion-substring-test-1, completion-substring-test-2)
(completion-flex-test-2, completion-flex-test-3): Tweak.
* etc/NEWS: Describe change.
* lisp/emacs-lisp/package.el (package-dir-info): Do not check
files that do not satisfy 'file-regular-p' when trying to find
the file with the package metadata. (Bug#79742)
* lisp/emacs-lisp/package-activate.el (package--autosugest-line-format):
Remove variable and function.
(package--autosuggest-after-change-mode): Inject upgrade prompt
using ':propertize'. We can drop the condition testing if there
are any suggestions, as installing the package changes the major
mode and thus also 'mode-name'.
* test/lisp/progmodes/eglot-tests.el
(eglot-test-project-wide-diagnostics-rust-analyzer):
Bind project-vc-non-essential-cache-timeout to 0 so that the
result of project-current is refreshed (bug#80387).