1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-11 22:11:21 -08:00
emacs/test/lisp
Spencer Baugh 03ac16ece4 Correctly handle common prefixes in substring completion
Substring completion would previously not complete the longest common
substring if that substring was a prefix of all the completion
alternatives.  Now it does.  An explanation of this bug

Substring completion is implemented by passing the `prefix' symbol as
part of the pattern passed to completion-pcm--merge-completions.  This
symbol is supposed to cause completion-pcm--merge-completions to
"grow" a completion of a common substring only from the "right" of the
symbol (a common suffix), not from the "left" of the symbol (a common
prefix).  Yes, this is the opposite of what the name `prefix' would
imply.

When processing a symbolic element of the pattern,
completion-pcm--merge-completions first finds the common prefix of all
the completions in that part of the pattern (using try-completion).
Then for `prefix' and other elements which want to complete a common
suffix, the common prefix is removed from each element and then the
common suffix is calculated with completion--common-suffix.

If the common prefix covers the entirety of all the alternatives
(i.e. when "unique" is true in the code), it's also a common suffix.
In that case, the common suffix calculation (if it runs) is basically
a no-op which will produce an empty string, since we removed the
common prefix before running it.

Before this change, `prefix' elements would unconditionally discard
the common prefix, which produced the wrong result in the case that
common prefix == common suffix.  For example:

  (completion-pcm--merge-completions '("ab" "ab") '(prefix "b"))
  -> ("b")

Now we detect this situation and include the common prefix in this
case for `prefix' elements.  Then we get:

  (completion-pcm--merge-completions '("ab" "ab") '(prefix "b"))
  -> ("b" "a")

which is correct.

* lisp/minibuffer.el (completion-pcm--merge-completions): Don't ignore
a common suffix in a `prefix' pattern element when it's also a common
prefix.
* test/lisp/minibuffer-tests.el (completion-substring-test-5): Add a
test.
2023-09-05 17:16:57 -04:00
..
align-resources * test/lisp/align-resources/c-mode.erts: Make test agree with Emacs 2023-08-05 18:23:52 +02:00
auth-source-resources Move netrc tests to auth-source-tests.el 2022-08-04 17:33:34 +02:00
bookmark-resources
calc Actually check the result of equal comparisons in tests 2023-08-14 17:03:44 +02:00
calendar Merge from origin/emacs-29 2023-07-08 05:46:10 -04:00
cedet Split up tests in bovine/gcc-tests.el 2023-08-28 22:07:23 +02:00
custom-resources
dired-resources/insert-directory
emacs-lisp Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
emulation ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
epg-resources Replace aging OpenPGP artifacts in the epg tests. 2022-10-06 14:53:39 +02:00
erc Prevent unwanted recursion in erc-nickbar-disable 2023-08-25 14:47:07 -07:00
eshell Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
faces-resources ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
files-resources * test/lisp/files-resources/compile-utf8.el: Use lexical-binding 2022-05-26 12:16:04 -04:00
gnus Remove useless unwind-protect forms, or make them useful as intended 2023-04-07 19:08:33 +02:00
hfy-cmap-resources
image Revert "Fix image-dired-utils-tests after 83b6a8a514 (bug#61394)" 2023-08-03 11:40:44 +03:00
international Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
loadhist-resources ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
mail ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
mh-e ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
minibuffer-resources
net Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
nxml ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
obsolete ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
org ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
pcmpl-linux-resources
play ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
progmodes Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
saveplace-resources
so-long-tests ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
term ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
textmodes Fix font locking of booleans in conf-toml-mode 2023-08-01 14:39:30 +02:00
time-resources
url Use more recent public_suffix_list.dat where possible 2023-02-17 22:50:13 +01:00
use-package Fix use-package :vc keyword when byte-compiled 2023-06-03 10:27:46 +03:00
vc Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
xdg-resources
abbrev-tests.el ; * test/lisp/abbrev-tests.el (abbrev--possibly-save-test): Fix test. 2023-03-18 12:35:10 +02:00
align-tests.el Add test for align-regexp 2023-08-03 11:58:03 +02:00
allout-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
allout-widgets-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
ansi-color-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
ansi-osc-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
apropos-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
arc-mode-tests.el Clean up files created by arc-mode-tests 2023-05-10 14:48:34 +02:00
auth-source-pass-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
auth-source-tests.el Fix auth-source-macos-keychain (bug#64977) 2023-08-13 18:31:47 +02:00
autoinsert-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
autorevert-tests.el Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
battery-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
bookmark-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
buff-menu-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
button-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
calculator-tests.el Add test for calculator-exp 2023-08-16 21:27:50 +02:00
char-fold-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
color-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
comint-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
completion-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
cus-edit-tests.el ; * test/lisp/cus-edit-tests.el: remove unused var (bug#63290) 2023-08-21 17:05:53 +02:00
custom-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
dabbrev-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
delim-col-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
descr-text-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
desktop-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
dired-aux-tests.el ; * test/lisp/dired-aux-tests.el: remove mistaken unwind-protect 2023-03-29 22:18:28 +02:00
dired-tests.el ; * test/lisp/dired-tests.el (dired-test-bug27243-03): fix unwind 2023-08-14 17:03:44 +02:00
dired-x-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
dnd-tests.el * test/lisp/dnd-tests.el (dnd-tests-begin-text-drag): Fix typo. 2023-05-30 17:46:06 +02:00
dom-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
edmacro-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
electric-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
elide-head-tests.el Merge from origin/emacs-29 2023-01-01 05:47:47 -05:00
env-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
epg-config-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
epg-tests.el Skip hanging EasyPG tests on GnuPG 2.4 2023-08-29 00:48:54 +02:00
faces-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
ffap-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
filenotify-tests.el Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
files-tests.el Fix test in files-tests.el 2023-08-15 12:02:03 +02:00
files-x-tests.el Fix connection-local variables settings 2023-03-13 18:02:36 +01:00
find-cmd-tests.el Avoid using rx any for not-newline 2023-05-30 17:44:53 +02:00
font-lock-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
format-spec-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
help-fns-tests.el Make describe-keymap tests more robust 2023-08-08 03:54:02 +02:00
help-mode-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
help-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
hfy-cmap-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
hi-lock-tests.el Fix hi-lock-tests when 'use-dialog-box' is non-nil 2023-02-18 10:45:12 +02:00
hl-line-tests.el Remove useless unwind-protect forms, or make them useful as intended 2023-04-07 19:08:33 +02:00
htmlfontify-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
ibuffer-tests.el Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
ido-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
image-file-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
image-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
imenu-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
info-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
info-xref-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
isearch-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
jit-lock-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
json-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
jsonrpc-tests.el Better jsonrpc.el workaround for debug-on-error check 2023-03-14 19:36:47 +00:00
kmacro-tests.el Fix insertion of keyboard macro containing named keys 2023-02-24 11:43:08 +01:00
loadhist-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
lpr-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
ls-lisp-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
man-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
md4-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
minibuffer-tests.el Correctly handle common prefixes in substring completion 2023-09-05 17:16:57 -04:00
misc-tests.el Add duplicate-region-final-position (bug#64185) 2023-07-01 12:41:09 +02:00
mouse-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
mwheel-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
newcomment-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
obarray-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
paren-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
password-cache-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
pcmpl-linux-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
pcomplete-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
proced-tests.el ; Fix copyright year in proced-tests.el 2023-08-29 21:40:38 +02:00
ps-print-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
register-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
repeat-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
replace-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
rot13-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
saveplace-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
scroll-lock-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
server-tests.el Skip hanging tests on Cygwin (bug#65325) 2023-08-19 14:21:34 -04:00
ses-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
shadowfile-tests.el Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
shell-tests.el ; * test/lisp/shell-tests.el: Add tests for shell-dirtrack-mode (bug#64311) 2023-07-08 19:30:06 +03:00
simple-tests.el Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
sort-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
soundex-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
startup-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
subr-tests.el Fix condition-case-unless-debug with :success 2023-07-08 12:14:57 +01:00
tab-bar-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
tabify-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
tar-mode-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
tempo-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
term-tests.el Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
thingatpt-tests.el Improve thing-at-point email detection 2023-03-10 11:22:54 +01:00
thread-tests.el Use new ERT skip-when macro in tests 2023-09-04 18:25:18 +02:00
time-stamp-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
time-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
timezone-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
uniquify-tests.el ; * test/lisp/uniquify-tests.el (uniquify-home): Delete (bug#62621). 2023-08-03 17:04:41 +03:00
version-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
wdired-tests.el Fix wdired-tests on MS-Windows 2023-03-02 14:21:33 +02:00
whitespace-tests.el Merge from origin/emacs-29 2023-01-01 05:47:47 -05:00
wid-edit-tests.el Specialize default-get for alist widgets (Bug#63290) 2023-08-19 11:33:25 +03:00
x-dnd-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
xdg-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
xml-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
xt-mouse-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
yank-media-tests.el ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00