mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 17:36:19 +04:00
commands: add * as selection search.
This commit is contained in:
parent
61ce2c9cfe
commit
33c67f1388
@ -120,7 +120,7 @@ pub fn extend(&self, from: usize, to: usize) -> Self {
|
||||
// groupAt
|
||||
|
||||
#[inline]
|
||||
pub fn fragment<'a>(&'a self, text: RopeSlice<'a>) -> Cow<'a, str> {
|
||||
pub fn fragment<'a, 'b: 'a>(&'a self, text: RopeSlice<'b>) -> Cow<'b, str> {
|
||||
Cow::from(text.slice(self.from()..self.to() + 1))
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user