1
0
Fork 0
mirror of https://github.com/helix-editor/helix synced 2024-06-01 07:46:05 +02:00

split_selection

This commit is contained in:
Blaž Hrastnik 2020-12-14 16:02:07 +09:00
parent f92998a14b
commit 2bfdcede32
2 changed files with 19 additions and 16 deletions

View File

@ -262,23 +262,26 @@ pub fn split_selection(cx: &mut Context) {
// # update state
// }
let prompt = Prompt::new(
"split:".to_string(),
|input: &str| Vec::new(), // TODO: use Option here?
|editor: &mut Editor, input: &str| {
match Regex::new(input) {
Ok(regex) => {
let view = editor.view_mut().unwrap();
let text = &view.doc.text().slice(..);
let selection = selection::split_on_matches(text, view.doc.selection(), &regex);
view.doc.set_selection(selection);
cx.callback = Some(Box::new(|compositor: &mut Compositor| {
let prompt = Prompt::new(
"split:".to_string(),
|input: &str| Vec::new(), // this is fine because Vec::new() doesn't allocate
|editor: &mut Editor, input: &str| {
match Regex::new(input) {
Ok(regex) => {
let view = editor.view_mut().unwrap();
let text = &view.doc.text().slice(..);
let selection =
selection::split_on_matches(text, view.doc.selection(), &regex);
view.doc.set_selection(selection);
}
Err(_) => (), // TODO: mark command line as error
}
Err(_) => (), // TODO: mark command line as error
}
},
);
},
);
unimplemented!()
compositor.push(Box::new(prompt));
}));
}
pub fn split_selection_on_newline(cx: &mut Context) {

View File

@ -156,8 +156,8 @@ pub fn default() -> Keymaps {
vec![key!('o')] => commands::open_below,
vec![key!('d')] => commands::delete_selection,
vec![key!('c')] => commands::change_selection,
vec![shift!('S')] => commands::split_selection,
vec![key!('s')] => commands::split_selection_on_newline,
vec![shift!('S')] => commands::split_selection,
vec![key!(';')] => commands::collapse_selection,
// TODO should be alt(;)
vec![key!('%')] => commands::flip_selections,