emacs/lisp
João Távora aa181cd352 Rewrite flex completion with Gotoh algorithm
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.
2026-02-13 23:46:11 +00:00
..
calc ; calc: Correct width of rules composed of Unicode glyphs 2026-01-17 14:51:01 +02:00
calendar lisp/calendar/diary-icalendar.el (di:summary-regexp): Fix :type 2026-02-12 08:47:09 -05:00
cedet Fix [More] buttons in tutorial and other buttons in Semantic 2026-02-03 05:14:59 +02:00
emacs-lisp Only check regular files for package metadata 2026-02-13 22:47:59 +01:00
emulation ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
erc Use seq-doseq for iterating over strings in ERC 2026-01-11 05:25:03 -08:00
eshell Autoload 'diff-no-select' 2026-02-13 19:53:12 +01:00
gnus Fix selected group sort with topics (bug#80341) 2026-02-09 18:28:08 +01:00
image Refill 'image-dired-display-image-buffer' 2026-01-03 13:22:01 +02:00
international ; Remove redundant cl-lib runtime dependencies across lisp/ 2026-01-17 15:32:15 +02:00
language Improve composition rules for Devanagari script 2026-02-12 12:45:26 +02:00
leim/quail Add a character to IPA input method 2026-02-12 13:23:24 +02:00
mail ; Remove redundant cl-lib runtime dependencies across lisp/ 2026-01-17 15:32:15 +02:00
mh-e ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
net Tramp signals 'remote-file-error' consequently 2026-02-12 19:24:10 +01:00
nxml ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
obsolete ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
org ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
play ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
progmodes Eglot: fix neocmakelsp invocation 2026-02-13 11:28:44 +00:00
term (xterm--init): Fix probem in async mode (bug#80163) 2026-01-20 22:46:31 -05:00
textmodes (yaml-ts-mode-yamllint-options): Use a list of strings 2026-02-04 11:03:57 -05:00
url ; Remove redundant cl-lib runtime dependencies across lisp/ 2026-01-17 15:32:15 +02:00
use-package ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
vc Autoload 'diff-no-select' 2026-02-13 19:53:12 +01:00
abbrev.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
align.el Fix last change in align.el 2026-02-05 10:56:51 +02:00
allout-widgets.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
allout.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ansi-color.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ansi-osc.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
apropos.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
arc-mode.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
array.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
auth-source-pass.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
auth-source.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
autoinsert.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
autorevert.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
avoid.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
battery.el Check that a UPower battery device IsPresent 2026-02-12 19:15:39 +01:00
bind-key.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
bindings.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
bookmark.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
bs.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
buff-menu.el Fix buffer menu unmark (bug#80082) 2026-01-13 20:49:03 +02:00
button.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
calculator.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
case-table.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.1 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.2 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.3 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.4 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.5 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.6 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.7 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.8 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.9 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.10 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.11 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.12 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.13 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.14 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.15 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.16 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ChangeLog.17 ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
char-fold.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
chistory.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
cmuscheme.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
color.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
comint.el * lisp/comint.el (comint-redirect-hook): Defvar (bug#80313) 2026-02-04 11:14:10 -05:00
completion-preview.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
completion.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
composite.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
COPYING
cus-dep.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
cus-edit.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
cus-face.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
cus-start.el ; Improve last change 2026-01-26 14:29:47 +02:00
cus-theme.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
custom.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
dabbrev.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
delim-col.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
delsel.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
descr-text.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
desktop.el Fix desktop saving and restoring in daemon sessions 2026-02-01 08:49:57 +02:00
dframe.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
dired-aux.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
dired-x.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
dired.el Fix support of listing switches with whitespace in Dired 2026-01-24 15:39:11 +02:00
dirtrack.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
disp-table.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
display-fill-column-indicator.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
display-line-numbers.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
dnd.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
doc-view.el ; * lisp/doc-view.el (doc-view-mode-p): Fix docstring. 2026-02-07 11:33:14 +01:00
dom.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
dos-fns.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
dos-vars.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
dos-w32.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
double.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
dynamic-setting.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ebuff-menu.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ecomplete.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
editorconfig-conf-mode.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
editorconfig-core-handle.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
editorconfig-core.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
editorconfig-fnmatch.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
editorconfig-tools.el ; Remove redundant cl-lib runtime dependencies across lisp/ 2026-01-17 15:32:15 +02:00
editorconfig.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
edmacro.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ehelp.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
elec-pair.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
electric.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
elide-head.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
emacs-lock.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
env.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
epa-dired.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
epa-file.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
epa-hook.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
epa-ks.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
epa-mail.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
epa.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
epg-config.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
epg.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
expand.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
external-completion.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ezimage.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
face-remap.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
facemenu.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
faces.el ; Fix a recent change of tab-bar/line faces 2026-01-12 15:10:59 +02:00
ffap.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
filecache.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
fileloop.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
filenotify.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
files-x.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
files.el Autoload 'diff-no-select' 2026-02-13 19:53:12 +01:00
filesets.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
find-cmd.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
find-dired.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
find-file.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
find-lisp.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
finder.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
flow-ctrl.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
foldout.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
follow.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
font-core.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
font-lock.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
format-spec.el ; * lisp/format-spec.el (format-spec): Doc fix. (Bug#80078) 2026-01-03 14:21:19 +02:00
format.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
forms.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
frame.el Document frame id related commands and tweak a return value (Bug#80192) 2026-01-27 10:23:34 +01:00
frameset.el Fix desktop saving and restoring in daemon sessions 2026-02-01 08:49:57 +02:00
fringe.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
generic-x.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
help-at-pt.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
help-fns.el (describe-mode): Fix bug#80170 2026-02-11 15:53:09 -05:00
help-macro.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
help-mode.el Fix [More] buttons in tutorial and other buttons in Semantic 2026-02-03 05:14:59 +02:00
help.el Bind 'apropos-user-option' to C-h u 2026-01-10 12:38:05 +01:00
hex-util.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
hexl.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
hfy-cmap.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
hi-lock.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
hilit-chg.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
hippie-exp.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
hl-line.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
htmlfontify.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ibuf-ext.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ibuf-macs.el (define-ibuffer-column): Fix corner case miscompilations (bug#80180) 2026-01-14 16:52:09 -05:00
ibuffer.el Avoid byte-compiled code in `ibuffer-maybe-show-predicates' value (bug#80117) 2026-01-11 22:31:49 +13:00
icomplete.el icomplete-ret: Ignore icomplete-show-matches-on-no-input 2026-02-11 15:04:18 +00:00
ido.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ielm.el Fix behavior for ielm-dynamic-multiline-inputs (bug#80123) 2026-01-15 11:12:12 +00:00
iimage.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
image-file.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
image-mode.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
image.el Improve (WebP) image animation 2026-01-24 19:37:30 +01:00
imenu.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
indent-aux.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
indent.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
info-look.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
info-xref.el ; Remove redundant cl-lib runtime dependencies across lisp/ 2026-01-17 15:32:15 +02:00
info.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
informat.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
isearch.el isearch.el: Remove autoloads hacks 2026-02-02 17:42:40 -05:00
isearchb.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
jit-lock.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
jka-cmpr-hook.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
jka-compr.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
json.el Use new 'sort' calling convention in json.el 2026-02-12 19:51:32 +01:00
jsonrpc.el Jsonrpc: avoid redisplay_internal calls from jsonrpc-request 2026-01-26 22:57:09 +00:00
keymap.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
kmacro.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ldefs-boot.el ; * lisp/ldefs-boot.el: Regenerate. 2026-01-29 17:03:58 +00:00
loadhist.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
loadup.el Revert "Enable 'package-autosuggest-mode' at startup" 2026-02-07 10:39:18 +01:00
locate.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
lpr.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ls-lisp.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
macros.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
Makefile.in ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
man.el ; Fix messages in "M-x man" 2026-01-18 14:36:51 +02:00
master.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
mb-depth.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
md4.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
menu-bar.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
midnight.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
minibuf-eldef.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
minibuffer.el Rewrite flex completion with Gotoh algorithm 2026-02-13 23:46:11 +00:00
misc.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
misearch.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
mouse-copy.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
mouse-drag.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
mouse.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
mpc.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
msb.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
mwheel.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
newcomment.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
notifications.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
novice.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
obarray.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
outline.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
paren.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
password-cache.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
pcmpl-cvs.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
pcmpl-git.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
pcmpl-gnu.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
pcmpl-linux.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
pcmpl-rpm.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
pcmpl-unix.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
pcmpl-x.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
pcomplete.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
pgtk-dnd.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
pixel-scroll.el pixel-scroll: Avoid loading `cua-base' 2026-01-31 11:01:02 +02:00
plstore.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
printing.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
proced.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
profiler.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ps-bdf.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ps-mule.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ps-print.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ps-samp.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
pulse.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
README
recentf.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
rect.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
register.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
registry.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
repeat.el repeat: handle non-character keys with hint strings 2026-01-04 18:56:19 -05:00
replace.el Revert "New key 'M-j' for 'icomplete-mode' (bug#62108)" 2026-02-11 09:19:52 +02:00
reposition.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
reveal.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
rfn-eshadow.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ring-bell-fns.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
rot13.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
rtree.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
ruler-mode.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
savehist.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
saveplace.el save-place-alist-to-file: Use prin1, not pp (bug#80183) 2026-01-12 09:59:40 +00:00
scroll-all.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
scroll-bar.el ; Remove redundant cl-lib runtime dependencies across lisp/ 2026-01-17 15:32:15 +02:00
scroll-lock.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
select.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
send-to.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
server.el Revert "Extend emacs server protocol for empty arguments" 2026-02-08 16:52:12 +00:00
ses.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
shadowfile.el shadowfile.el uses eqhemeral buffer names now 2026-01-07 10:08:45 +01:00
shell.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
simple.el Support cons cell for 'line-spacing' 2026-01-24 13:32:44 +02:00
skeleton.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
so-long.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
sort.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
soundex.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
speedbar.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
sqlite-mode.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
sqlite.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
startup.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
strokes.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
subr.el ; * lisp/subr.el (take-while): bytecode micro-optimisation 2026-02-05 17:36:17 +01:00
svg.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
system-sleep.el ; Fix recently installed changes 2026-02-11 14:44:09 +02:00
system-taskbar.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
t-mouse.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
tab-bar.el ; Remove "--" from the name of autoloaded 'window--get-split-combination' 2026-01-22 20:09:47 +02:00
tab-line.el ; Fix a recent change of tab-bar/line faces 2026-01-12 15:10:59 +02:00
tabify.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
talk.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
tar-mode.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
tempo.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
term.el Fix updating buffer menu after invoking "M-x term" 2026-01-21 17:37:33 +02:00
thingatpt.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
thread.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
time-stamp.el ; time-stamp-inserts-lines: Clearer doc string 2026-01-05 15:53:47 -08:00
time.el display-time: Add option to customize help-echo format 2026-01-31 12:12:21 +02:00
timezone.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
tmm.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
tool-bar.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
tooltip.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
touch-screen.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
transient.el Update to Transient v0.12.0-15-gfe5214e6 2026-01-04 17:52:30 +01:00
tree-widget.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
treesit-x.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
treesit.el hideshow: Reword documentation (bug#80116) 2026-01-10 14:55:55 +02:00
tty-tip.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
tutorial.el Fix [More] buttons in tutorial and other buttons in Semantic 2026-02-03 05:14:59 +02:00
type-break.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
uniquify.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
userlock.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
vcursor.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
version.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
view.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
visual-wrap.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
w32-fns.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
w32-vars.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
wdired.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
which-key.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
whitespace.el ; whitespace-global-modes: Replace "automagically". 2026-01-12 10:38:29 +00:00
wid-browse.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
wid-edit.el ; Fix documentation of widget commands 2026-02-07 11:45:00 +02:00
widget.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
windmove.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
window-tool-bar.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
window-x.el ; Remove "--" from the name of autoloaded 'window--get-split-combination' 2026-01-22 20:09:47 +02:00
window.el ; * lisp/window.el (window--frame-landscape-p): Tweak wording. 2026-02-05 12:18:54 +00:00
winner.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
woman.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
x-dnd.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
xdg.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
xml.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
xt-mouse.el ; Add 2026 to copyright years. 2026-01-01 12:54:34 +00:00
xwidget.el ; Remove redundant cl-lib runtime dependencies across lisp/ 2026-01-17 15:32:15 +02:00
yank-media.el ; Remove redundant cl-lib runtime dependencies across lisp/ 2026-01-17 15:32:15 +02:00

This directory contains source code for the parts of Emacs that are
written in Emacs Lisp.  *.el files are Emacs Lisp source, and the
corresponding *.elc files are byte-compiled versions.  Byte-compiled
files are architecture-independent.

The term subdirectory contains Lisp files that customize Emacs for
certain terminal types.  When Emacs starts, it checks the TERM
environment variable to get the terminal type and loads
'term/${TERM}.el' if it exists.

The other subdirectories hold Lisp packages grouped by their general
purpose.