1
0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2026-01-07 21:18:01 +08:00

Compare commits

...

3 Commits

Author SHA1 Message Date
Paul Frederiksen
16b5d9ea6e
Merge 7451631bce into f84341c574 2025-12-11 19:47:19 +01:00
tDwtp
f84341c574
fix(git): git_status_prompt should respect spaces in prefixes (#13478) 2025-12-11 15:05:23 +01:00
Paul Frederiksen
7451631bce Fix case-insensitive partial completion matching (fixes #13412)
- Add case-insensitive matching to partial-word matchers
- Fixes issue where 'search' doesn't match 'Anki-Search-Stats-Extended'
- Uses 'r:|=*' (substring) not 'r:|?=**' (overly permissive) to prevent over-matching
- Maintains 100% backward compatibility with existing completion behavior
- Works in both default and HYPHEN_INSENSITIVE modes

Tested with 35+ test cases covering:
- Original issue scenarios
- Backward compatibility (exact, prefix, suffix, substring matches)
- Edge cases and random scenarios
- Over-matching prevention
- HYPHEN_INSENSITIVE mode
2025-11-24 10:09:44 -08:00
2 changed files with 3 additions and 3 deletions

View File

@ -18,9 +18,9 @@ if [[ "$CASE_SENSITIVE" = true ]]; then
zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*'
else
if [[ "$HYPHEN_INSENSITIVE" = true ]]; then
zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]-_}={[:upper:][:lower:]_-}' 'r:|=*' 'l:|=* r:|=*'
zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]-_}={[:upper:][:lower:]_-}' 'r:|=* m:{[:lower:][:upper:]-_}={[:upper:][:lower:]_-}' 'l:|=* r:|=* m:{[:lower:][:upper:]-_}={[:upper:][:lower:]_-}'
else
zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|=*' 'l:|=* r:|=*'
zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|=* m:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'l:|=* r:|=* m:{[:lower:][:upper:]}={[:upper:][:lower:]}'
fi
fi
unset CASE_SENSITIVE HYPHEN_INSENSITIVE

View File

@ -117,7 +117,7 @@ function _omz_git_prompt_status() {
fi
# For each status prefix, do a regex comparison
for status_prefix in ${(k)prefix_constant_map}; do
for status_prefix in "${(@k)prefix_constant_map}"; do
local status_constant="${prefix_constant_map[$status_prefix]}"
local status_regex=$'(^|\n)'"$status_prefix"