mirror of https://github.com/helix-editor/helix
Implement replace command (r<key>).
parent
bf95ee27aa
commit
42d07b0621
|
@ -380,6 +380,29 @@ pub fn extend_prev_char(cx: &mut Context) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn replace(cx: &mut Context) {
|
||||||
|
// need to wait for next key
|
||||||
|
cx.on_next_key(move |cx, event| {
|
||||||
|
if let KeyEvent {
|
||||||
|
code: KeyCode::Char(ch),
|
||||||
|
..
|
||||||
|
} = event
|
||||||
|
{
|
||||||
|
let text = Tendril::from_char(ch);
|
||||||
|
|
||||||
|
let mut doc = cx.doc();
|
||||||
|
|
||||||
|
let transaction =
|
||||||
|
Transaction::change_by_selection(doc.text(), doc.selection(), |range| {
|
||||||
|
(range.from(), range.to() + 1, Some(text.clone()))
|
||||||
|
});
|
||||||
|
|
||||||
|
doc.apply(&transaction);
|
||||||
|
doc.append_changes_to_history();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
fn scroll(view: &mut View, offset: usize, direction: Direction) {
|
fn scroll(view: &mut View, offset: usize, direction: Direction) {
|
||||||
use Direction::*;
|
use Direction::*;
|
||||||
// we use short lived borrows since view's methods read from doc too
|
// we use short lived borrows since view's methods read from doc too
|
||||||
|
|
|
@ -141,6 +141,8 @@ pub fn default() -> Keymaps {
|
||||||
shift!('T') => commands::till_prev_char,
|
shift!('T') => commands::till_prev_char,
|
||||||
shift!('F') => commands::find_prev_char,
|
shift!('F') => commands::find_prev_char,
|
||||||
// and matching set for select mode (extend)
|
// and matching set for select mode (extend)
|
||||||
|
//
|
||||||
|
key!('r') => commands::replace,
|
||||||
|
|
||||||
key!('0') => commands::move_line_start,
|
key!('0') => commands::move_line_start,
|
||||||
key!('$') => commands::move_line_end,
|
key!('$') => commands::move_line_end,
|
||||||
|
|
Loading…
Reference in New Issue