commands: Stop select_regex from breaking when no matches.

This commit is contained in:
Blaž Hrastnik 2021-03-03 17:55:56 +09:00
parent a21d96e729
commit 4c6611f96b
2 changed files with 8 additions and 5 deletions

View File

@ -307,11 +307,9 @@ pub fn select_all(cx: &mut Context) {
pub fn select_regex(cx: &mut Context) { pub fn select_regex(cx: &mut Context) {
let prompt = ui::regex_prompt(cx, "select:".to_string(), |doc, regex| { let prompt = ui::regex_prompt(cx, "select:".to_string(), |doc, regex| {
let text = doc.text().slice(..); let text = doc.text().slice(..);
// TODO: if select on matches returns empty range, we need to abort if let Some(selection) = selection::select_on_matches(text, doc.selection(), &regex) {
// if regex empty or no matches, return doc.set_selection(selection);
let selection = }
selection::select_on_matches(text, doc.selection(), &regex).expect("no matches");
doc.set_selection(selection);
}); });
cx.push_layer(Box::new(prompt)); cx.push_layer(Box::new(prompt));

View File

@ -45,6 +45,11 @@ pub fn regex_prompt(
// //
} }
PromptEvent::Update => { PromptEvent::Update => {
// skip empty input, TODO: trigger default
if input.is_empty() {
return;
}
match Regex::new(input) { match Regex::new(input) {
Ok(regex) => { Ok(regex) => {
let view = &mut editor.view_mut(); let view = &mut editor.view_mut();