<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/lisp, branch feature/delsel-replace</title>
<subtitle>Emacs is the extensible, customizable, self-documenting real-time display editor. 
</subtitle>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/'/>
<entry>
<title>delsel.el: Tweak the `delsel--replace-text-or-position` handling</title>
<updated>2026-02-14T18:11:50+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2026-02-14T18:11:50+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=90009704969e2ae2f50598a71d8369641968b367'/>
<id>90009704969e2ae2f50598a71d8369641968b367</id>
<content type='text'>
* lisp/delsel.el (delete-selection-replacement-face): Don't bother
changing the face "on the fly".
(delsel--replace-overlay, delsel--replace-text): Delete vars and ...
(delsel--replace-text-or-position): ...re-add this single var instead.
(delete-active-region): Adjust accordingly.
(delete--replacement-string): New function extracted from
`delete-selection-repeat-replace-region`, with adjustments to account
for the above changes.
(delete-selection-repeat-replace-region): Use it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/delsel.el (delete-selection-replacement-face): Don't bother
changing the face "on the fly".
(delsel--replace-overlay, delsel--replace-text): Delete vars and ...
(delsel--replace-text-or-position): ...re-add this single var instead.
(delete-active-region): Adjust accordingly.
(delete--replacement-string): New function extracted from
`delete-selection-repeat-replace-region`, with adjustments to account
for the above changes.
(delete-selection-repeat-replace-region): Use it.
</pre>
</div>
</content>
</entry>
<entry>
<title>delsel.el: Use an overlay to track the replacement text</title>
<updated>2026-02-14T17:43:33+00:00</updated>
<author>
<name>Kim F. Storm</name>
</author>
<published>2026-02-14T17:43:33+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=da3db9653d322f7a5a946082ec81420ebc23a8ab'/>
<id>da3db9653d322f7a5a946082ec81420ebc23a8ab</id>
<content type='text'>
This patch was sent back in 2014 as part of bug#18886.

* delsel.el (delsel--replace-text-or-position): Delete var.
(delete-selection-replacement-face): New defcustom.
(delsel--replace-text, delsel--replace-overlay): New vars.
(delete-active-region, delete-selection-repeat-replace-region):
Use overlay to track replacement text instead of abusing the
undo-list; this allows the text to be edited before it is
used for substitutions.  Add highlight to the replacement text.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch was sent back in 2014 as part of bug#18886.

* delsel.el (delsel--replace-text-or-position): Delete var.
(delete-selection-replacement-face): New defcustom.
(delsel--replace-text, delsel--replace-overlay): New vars.
(delete-active-region, delete-selection-repeat-replace-region):
Use overlay to track replacement text instead of abusing the
undo-list; this allows the text to be edited before it is
used for substitutions.  Add highlight to the replacement text.
</pre>
</div>
</content>
</entry>
<entry>
<title>ede/proj-shared.el: Remove leftover obsolete EIEIO name arguments</title>
<updated>2026-02-14T04:48:32+00:00</updated>
<author>
<name>Stefan Monnier</name>
</author>
<published>2026-02-14T04:48:32+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=9fe325c9355fbea46e8ee5818a2bce133f08dce0'/>
<id>9fe325c9355fbea46e8ee5818a2bce133f08dce0</id>
<content type='text'>
* lisp/cedet/ede/proj-shared.el (ede-gcc-shared-compiler)
(ede-gcc-libtool-shared-compiler, ede-cc-linker-libtool)
(ede-g++-shared-compiler, ede-g++-libtool-shared-compiler)
(ede-g++-linker-libtool): Remove obsolete name argument to `clone`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/cedet/ede/proj-shared.el (ede-gcc-shared-compiler)
(ede-gcc-libtool-shared-compiler, ede-cc-linker-libtool)
(ede-g++-shared-compiler, ede-g++-libtool-shared-compiler)
(ede-g++-linker-libtool): Remove obsolete name argument to `clone`.
</pre>
</div>
</content>
</entry>
<entry>
<title>vc-log-show-limit: Change default to 500, and the button to 4X</title>
<updated>2026-02-14T00:52:52+00:00</updated>
<author>
<name>Dmitry Gutov</name>
</author>
<published>2026-02-14T00:46:32+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=a937396e7626a2a217e747aa1320d669f2323032'/>
<id>a937396e7626a2a217e747aa1320d669f2323032</id>
<content type='text'>
* 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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Rewrite flex completion with Gotoh algorithm</title>
<updated>2026-02-13T23:46:11+00:00</updated>
<author>
<name>João Távora</name>
</author>
<published>2026-02-03T12:14:03+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=aa181cd35220242a23fe98932386facaba18c4c5'/>
<id>aa181cd35220242a23fe98932386facaba18c4c5</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Only check regular files for package metadata</title>
<updated>2026-02-13T21:47:59+00:00</updated>
<author>
<name>Philip Kaludercic</name>
</author>
<published>2026-02-13T21:47:40+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=52b24ed7aacb2e879c68e0f51f3b32c1700c9324'/>
<id>52b24ed7aacb2e879c68e0f51f3b32c1700c9324</id>
<content type='text'>
* 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)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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)
</pre>
</div>
</content>
</entry>
<entry>
<title>Improve 'package-upgrade-all' robustness</title>
<updated>2026-02-13T21:23:01+00:00</updated>
<author>
<name>Philip Kaludercic</name>
</author>
<published>2026-02-13T21:23:01+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=567155047c407a43cd397a2c1ad91d5872d8e712'/>
<id>567155047c407a43cd397a2c1ad91d5872d8e712</id>
<content type='text'>
* lisp/emacs-lisp/package.el (package-upgrade-all): Do not quit
because a single upgrade fails with an error.  (Bug#80357)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/emacs-lisp/package.el (package-upgrade-all): Do not quit
because a single upgrade fails with an error.  (Bug#80357)
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix 'help-echo' for package suggestions in mode line</title>
<updated>2026-02-13T21:01:35+00:00</updated>
<author>
<name>Philip Kaludercic</name>
</author>
<published>2026-02-13T21:00:26+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=d092c8f63abacc9672fa1d70da3a81e8d1b26f66'/>
<id>d092c8f63abacc9672fa1d70da3a81e8d1b26f66</id>
<content type='text'>
* 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'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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'.
</pre>
</div>
</content>
</entry>
<entry>
<title>Autoload 'diff-no-select'</title>
<updated>2026-02-13T18:53:12+00:00</updated>
<author>
<name>Philip Kaludercic</name>
</author>
<published>2026-02-08T18:08:46+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=7470151179bb65e162bf25e574cad09241ad7d8c'/>
<id>7470151179bb65e162bf25e574cad09241ad7d8c</id>
<content type='text'>
* lisp/emacs-lisp/package.el (package-review): Remove
unnecessary 'require'.
* lisp/eshell/em-unix.el: Remove declaration.
* lisp/files.el (save-some-buffers-action-alist): Remove
unnecessary 'require'.
* lisp/vc/diff.el (diff-no-select): Autoload it.

(Bug#80288)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/emacs-lisp/package.el (package-review): Remove
unnecessary 'require'.
* lisp/eshell/em-unix.el: Remove declaration.
* lisp/files.el (save-some-buffers-action-alist): Remove
unnecessary 'require'.
* lisp/vc/diff.el (diff-no-select): Autoload it.

(Bug#80288)
</pre>
</div>
</content>
</entry>
<entry>
<title>; vc-git-topic-outgoing-base: Preparatory refactoring.</title>
<updated>2026-02-13T13:37:22+00:00</updated>
<author>
<name>Sean Whitton</name>
</author>
<published>2026-02-13T13:37:22+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=85dc3d882d2749ff5249491a9ff5b021f92036b2'/>
<id>85dc3d882d2749ff5249491a9ff5b021f92036b2</id>
<content type='text'>
No intentional functional change.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
No intentional functional change.
</pre>
</div>
</content>
</entry>
</feed>
