mirror of
https://github.com/helix-editor/helix.git
synced 2025-01-19 21:47:07 +04:00
Add command to add word boundaries to search (#4322)
* Add command to add word boundaries to search * Calculate string capacity before building
This commit is contained in:
parent
77be98c783
commit
392a018aeb
@ -250,6 +250,7 @@ pub fn doc(&self) -> &str {
|
||||
extend_search_next, "Add next search match to selection",
|
||||
extend_search_prev, "Add previous search match to selection",
|
||||
search_selection, "Use current selection as search pattern",
|
||||
make_search_word_bounded, "Modify current search to make it word bounded",
|
||||
global_search, "Global search in workspace folder",
|
||||
extend_line, "Select current line, if already selected, extend to another line based on the anchor",
|
||||
extend_line_below, "Select current line, if already selected, extend to next line",
|
||||
@ -1809,6 +1810,35 @@ fn search_selection(cx: &mut Context) {
|
||||
cx.editor.set_status(msg);
|
||||
}
|
||||
|
||||
fn make_search_word_bounded(cx: &mut Context) {
|
||||
let regex = match cx.editor.registers.last('/') {
|
||||
Some(regex) => regex,
|
||||
None => return,
|
||||
};
|
||||
let start_anchored = regex.starts_with("\\b");
|
||||
let end_anchored = regex.ends_with("\\b");
|
||||
|
||||
if start_anchored && end_anchored {
|
||||
return;
|
||||
}
|
||||
|
||||
let mut new_regex = String::with_capacity(
|
||||
regex.len() + if start_anchored { 0 } else { 2 } + if end_anchored { 0 } else { 2 },
|
||||
);
|
||||
|
||||
if !start_anchored {
|
||||
new_regex.push_str("\\b");
|
||||
}
|
||||
new_regex.push_str(regex);
|
||||
if !end_anchored {
|
||||
new_regex.push_str("\\b");
|
||||
}
|
||||
|
||||
let msg = format!("register '{}' set to '{}'", '/', &new_regex);
|
||||
cx.editor.registers.get_mut('/').push(new_regex);
|
||||
cx.editor.set_status(msg);
|
||||
}
|
||||
|
||||
fn global_search(cx: &mut Context) {
|
||||
#[derive(Debug)]
|
||||
struct FileResult {
|
||||
|
Loading…
Reference in New Issue
Block a user