-
-
Notifications
You must be signed in to change notification settings - Fork 5.9k
Fix: Improve smartcase handling in search pattern completion #17665
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Not directly related, but I'm considering adding a new option value to |
|
@girishji I tried the patch If file has contents: I search But now it shows Correct ? |
Did you try this: #17667 ? |
|
Yes. I believe its working as expected. |
**Problem:** When using `/` or `?` in command-line mode with `'ignorecase'` and `'smartcase'` enabled, the completion menu could show items that don't actually match any text in the buffer due to case mismatches. **Solution:** Instead of validating menu items only against the user-typed pattern, the new logic also checks whether the completed item matches actual buffer content. If needed, it retries the match using a lowercased version of the candidate, respecting smartcase semantics.
|
thanks! |
…rtcase' well
Problem: When using `/` or `?` in command-line mode with 'ignorecase' and
'smartcase' enabled, the completion menu could show items that
don't actually match any text in the buffer due to case mismatches
Solution: Instead of validating menu items only against the user-typed
pattern, the new logic also checks whether the completed item
matches actual buffer content. If needed, it retries the match
using a lowercased version of the candidate, respecting
smartcase semantics.
closes: vim/vim#17665
vim/vim@af22007
Co-authored-by: Girish Palya <girishji@gmail.com>
…rtcase' well (#34840) Problem: When using `/` or `?` in command-line mode with 'ignorecase' and 'smartcase' enabled, the completion menu could show items that don't actually match any text in the buffer due to case mismatches Solution: Instead of validating menu items only against the user-typed pattern, the new logic also checks whether the completed item matches actual buffer content. If needed, it retries the match using a lowercased version of the candidate, respecting smartcase semantics. closes: vim/vim#17665 vim/vim@af22007 Co-authored-by: Girish Palya <girishji@gmail.com>
|
Thanks! |
parent de17dba author Girish Palya <girishji@gmail.com> 1751694076 +0200 committer Girish Palya <girishji@gmail.com> 1751955978 +0200 # This is a combination of 8 commits. # This is the 1st commit message: Feat: New 'wildoptions' value for search completion Addresses issue vim#17654 Based on PR vim#17665 # This is the commit message vim#2: Fix clash of unique identifiers M src/option.h # This is the commit message vim#3: Rename option value to convey function better M runtime/doc/options.txt M src/cmdexpand.c M src/option.h M src/optionstr.c M src/testdir/test_cmdline.vim # This is the commit message vim#4: Merge M runtime/doc/options.txt # This is the commit message vim#5: M runtime/doc/options.txt # This is the commit message vim#6: Simplify option value name M runtime/doc/options.txt M src/option.h M src/optionstr.c M src/testdir/test_cmdline.vim # This is the commit message vim#7: Keep alphabetical order in doc M runtime/doc/options.txt # This is the commit message vim#8: Improve doc M runtime/doc/options.txt # This is the commit message vim#9: Fix compile error M src/cmdexpand.c # This is the commit message vim#10: Fix compile issue M src/cmdexpand.c
author Girish Palya <girishji@gmail.com> 1751956573 +0200 committer Girish Palya <girishji@gmail.com> 1751956573 +0200 M runtime/doc/options.txt Rename option value to convey function better M runtime/doc/options.txt M src/cmdexpand.c M src/option.h M src/optionstr.c M src/testdir/test_cmdline.vim Merge M runtime/doc/options.txt M runtime/doc/options.txt Simplify option value name M runtime/doc/options.txt M src/option.h M src/optionstr.c M src/testdir/test_cmdline.vim Keep alphabetical order in doc M runtime/doc/options.txt Improve doc M runtime/doc/options.txt runtime(doc): fix a few typos introduced in 0ae9e19 Signed-off-by: Christian Brabandt <cb@256bit.org> translation(tr): Update Turkish translations closes: vim#17688 Signed-off-by: Emir SARI <emir_sari@icloud.com> Signed-off-by: Christian Brabandt <cb@256bit.org> runtime(optwin): add missing values for tabpanel option closes: vim#17685 Signed-off-by: RestorerZ <restorer@mail2k.ru> Signed-off-by: Christian Brabandt <cb@256bit.org> patch 9.1.1518: getcompletiontype() may crash Problem: getcompletiontype() crashes when no completion is available (after v9.1.1509). Solution: Don't call set_expand_context() (zeertzjq) fixes: vim#17681 closes: vim#17684 Signed-off-by: zeertzjq <zeertzjq@outlook.com> Signed-off-by: Christian Brabandt <cb@256bit.org> runtime(doc): Add documentation style closes: vim#17627 Co-authored-by: Phạm Bình An <111893501+brianhuster@users.noreply.github.com> Signed-off-by: Damien Lejay <damien@lejay.be> Signed-off-by: Christian Brabandt <cb@256bit.org> patch 9.1.1519: tests: Test_termdebug_decimal_breakpoints() may fail Problem: Test_termdebug_decimal_breakpoints() fails with List index out of range, because when adding the second breakpoint, the cursor is still on the very first line (a header include line) and therefore gdb refuses to set the breakpoint with: `msg="No compiled code for line 1 in file XTD_decimal.c"` Solution: Run the program, so that it will break at the very first defined breakpoint and then once we are in the program, set further breakpoints closes: vim#17689 Signed-off-by: Christian Brabandt <cb@256bit.org> patch 9.1.1520: completion: search completion doesn't handle 'smartcase' well Problem: When using `/` or `?` in command-line mode with 'ignorecase' and 'smartcase' enabled, the completion menu could show items that don't actually match any text in the buffer due to case mismatches Solution: Instead of validating menu items only against the user-typed pattern, the new logic also checks whether the completed item matches actual buffer content. If needed, it retries the match using a lowercased version of the candidate, respecting smartcase semantics. closes: vim#17665 Signed-off-by: Girish Palya <girishji@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org> patch 9.1.1521: completion: pum does not reset scroll pos on reopen with 'noselect' Problem: When 'wildmode' is set to include "noselect", the popup menu (pum) incorrectly retained its scroll position when reopened. This meant that after scrolling down through the menu with `<C-n>`, reopening the menu (e.g., by retyping the command and triggering completion again) would show the menu starting from the previously scrolled position, rather than from the top. This could confuse users, as the first visible item would not be the first actual match in the list. Solution: Ensure that the popup menu resets its scroll position to the top when reopened (Girish Palya). closes: vim#17673 Signed-off-by: Girish Palya <girishji@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org> patch 9.1.1522: tests: still some ANSI escape sequences in test output Problem: tests: still some ANSI escape sequences in test messages output Solution: update the cleanup regexp to also handle those ANSI escape sequences: `<esc>|2h` and `<esc>|31H` like in this log output: ``` 2025-07-05T20:02:47.6350409Z <esc>|2hExecuted 171 tests in 4.739708 seconds<esc>|31H ``` related: vim#17677 Signed-off-by: Christian Brabandt <cb@256bit.org> patch 9.1.1523: tests: test_clipmethod fails in non X11 environment Problem: tests: test_clipmethod fails in non X11 environment Solution: test that $DISPLAY is available related: vim#17677 Signed-off-by: Christian Brabandt <cb@256bit.org> patch 9.1.1524: tests: too many imports in the test suite Problem: tests: too many imports in the test suite Solution: Clean up the imported scripts Most tests make use of check.vim, so let's just source it once in runtest.vim instead of having each test manually source it. runtest.vim already sources shared.vim, which again sources view_util.vim, so we don't need to source those two common dependencies in all the other tests And then check.vim sources term_util.vim already, so we can in addition drop sourcing it explicitly in each single test script. Note: test_expand_func.vim had to be updated to account for the changed number of sourced files. And finally check.vim uses line-continuation so let's also explicitly enable line continuation via the 'cpo' option value. related: vim#17677 Signed-off-by: Christian Brabandt <cb@256bit.org> patch 9.1.1525: tests: testdir/ is a bit messy Problem: tests: testdir is a bit messy Solution: move test scripts into testdir/util/ directory src/testdir/ has become a dumping ground mixing test cases with utility functions. Let's fix this by moving all utility functions into the testdir/util/ directory Also a few related changes had to be done: - Update Filelist - update README.txt and mention the new directory layout - fix shadowbuild by linking the util directory into the shadow dir closes: vim#17677 Signed-off-by: Christian Brabandt <cb@256bit.org> runtime(netrw): restore blank line cleanup after file listing Problem: v182 refactoring removed blank line cleanup (g/^$/d) from s:LocalListing(), causing empty lines between directories and files. Solution: Add the missing cleanup after append() in s:PerformListing() (uma-chan). closes: vim#17672 Co-authored-by: Luca Saccarola <96259932+saccarosium@users.noreply.github.com> Signed-off-by: uma-chan <127664533+i9wa4@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem:
When using
/or?in command-line mode with'ignorecase'and'smartcase'enabled, the completion menu could show items that don't actually match any text in the buffer due to case mismatches.Solution:
Instead of validating menu items only against the user-typed pattern, the new logic also checks whether the completed item matches actual buffer content. If needed, it retries the match using a lowercased version of the candidate, respecting smartcase semantics.