vim: Add smartcase search (#16932)

Closes #16878

Release Notes:

- Added a vim-style smart case option for search patterns

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
This commit is contained in:
0x2CA 2024-09-05 03:26:25 +08:00 committed by GitHub
parent b0045b9324
commit 65bc1ea7c8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 78 additions and 8 deletions

View file

@ -302,11 +302,15 @@ impl Vim {
query = search_bar.query(cx);
};
Some(search_bar.search(
&query,
Some(SearchOptions::CASE_SENSITIVE | SearchOptions::REGEX),
cx,
))
let mut options = SearchOptions::REGEX | SearchOptions::CASE_SENSITIVE;
if search_bar.should_use_smartcase_search(cx) {
options.set(
SearchOptions::CASE_SENSITIVE,
search_bar.is_contains_uppercase(&query),
);
}
Some(search_bar.search(&query, Some(options), cx))
});
let Some(search) = search else { return };
let search_bar = search_bar.downgrade();
@ -368,7 +372,12 @@ impl Vim {
} else {
replacement.search
};
if search_bar.should_use_smartcase_search(cx) {
options.set(
SearchOptions::CASE_SENSITIVE,
search_bar.is_contains_uppercase(&search),
);
}
search_bar.set_replacement(Some(&replacement.replacement), cx);
Some(search_bar.search(&search, Some(options), cx))
});