diff options
Diffstat (limited to 'helix-term/src')
-rw-r--r-- | helix-term/src/commands.rs | 11 | ||||
-rw-r--r-- | helix-term/src/keymap.rs | 1 |
2 files changed, 11 insertions, 1 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index b6d8d818..c048ff9a 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -1,7 +1,7 @@ use helix_core::{ comment, graphemes, indent::TAB_WIDTH, - regex::Regex, + regex::{self, Regex}, register, selection, state::{Direction, Granularity, State}, ChangeSet, Range, Selection, Tendril, Transaction, @@ -412,6 +412,15 @@ pub fn search_next(cx: &mut Context) { } } +pub fn search_selection(cx: &mut Context) { + let doc = cx.doc(); + let contents = doc.text().slice(..); + let query = doc.selection().primary().fragment(contents); + let regex = regex::escape(&query); + register::set('\\', vec![regex]); + search_next(cx); +} + // TODO: N -> search_prev // need to loop around buffer also and show a message // same for no matches diff --git a/helix-term/src/keymap.rs b/helix-term/src/keymap.rs index 124456c9..69c8e48c 100644 --- a/helix-term/src/keymap.rs +++ b/helix-term/src/keymap.rs @@ -170,6 +170,7 @@ pub fn default() -> Keymaps { vec![key!('x')] => commands::select_line, vec![key!('/')] => commands::search, vec![key!('n')] => commands::search_next, + vec![key!('*')] => commands::search_selection, vec![key!('u')] => commands::undo, vec![shift!('U')] => commands::redo, vec![key!('y')] => commands::yank, |