mirror of https://github.com/helix-editor/helix
Show "Invalid regex" message on enter (Validate) (#3049)
* Show "Invalid regex" message on enter (Validate) * Reset selection on invalid regex * Add popup for invalid regex * Replace set_position with position * Make popup auto closepull/4085/head
parent
bcba5d67f9
commit
57dc5fbe3a
|
@ -12,6 +12,8 @@ mod spinner;
|
||||||
mod statusline;
|
mod statusline;
|
||||||
mod text;
|
mod text;
|
||||||
|
|
||||||
|
use crate::compositor::{Component, Compositor};
|
||||||
|
use crate::job;
|
||||||
pub use completion::Completion;
|
pub use completion::Completion;
|
||||||
pub use editor::EditorView;
|
pub use editor::EditorView;
|
||||||
pub use markdown::Markdown;
|
pub use markdown::Markdown;
|
||||||
|
@ -110,7 +112,37 @@ pub fn regex_prompt(
|
||||||
|
|
||||||
view.ensure_cursor_in_view(doc, config.scrolloff);
|
view.ensure_cursor_in_view(doc, config.scrolloff);
|
||||||
}
|
}
|
||||||
Err(_err) => (), // TODO: mark command line as error
|
Err(err) => {
|
||||||
|
let (view, doc) = current!(cx.editor);
|
||||||
|
doc.set_selection(view.id, snapshot.clone());
|
||||||
|
view.offset = offset_snapshot;
|
||||||
|
|
||||||
|
if event == PromptEvent::Validate {
|
||||||
|
let callback = async move {
|
||||||
|
let call: job::Callback = Box::new(
|
||||||
|
move |_editor: &mut Editor, compositor: &mut Compositor| {
|
||||||
|
let contents = Text::new(format!("{}", err));
|
||||||
|
let size = compositor.size();
|
||||||
|
let mut popup = Popup::new("invalid-regex", contents)
|
||||||
|
.position(Some(helix_core::Position::new(
|
||||||
|
size.height as usize - 2, // 2 = statusline + commandline
|
||||||
|
0,
|
||||||
|
)))
|
||||||
|
.auto_close(true);
|
||||||
|
popup.required_size((size.width, size.height));
|
||||||
|
|
||||||
|
compositor.replace_or_push("invalid-regex", popup);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
Ok(call)
|
||||||
|
};
|
||||||
|
|
||||||
|
cx.jobs.callback(callback);
|
||||||
|
} else {
|
||||||
|
// Update
|
||||||
|
// TODO: mark command line as error
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue