x for line selection

pull/4/head
Blaž Hrastnik 4 years ago
parent 8098279676
commit a5be718dc6

@ -235,6 +235,18 @@ pub fn split_selection_on_newline(view: &mut View, _count: usize) {
view.state.selection = selection::split_on_matches(text, view.state.selection(), &REGEX) view.state.selection = selection::split_on_matches(text, view.state.selection(), &REGEX)
} }
pub fn select_line(view: &mut View, _count: usize) {
// TODO: count
let pos = view.state.selection().primary();
let text = view.state.doc();
let line = text.char_to_line(pos.head);
let start = text.line_to_char(line);
let end = text.line_to_char(line + 1);
// TODO: use a transaction
view.state.selection = Selection::single(start, end);
}
pub fn delete_selection(view: &mut View, _count: usize) { pub fn delete_selection(view: &mut View, _count: usize) {
let transaction = let transaction =
Transaction::change_by_selection(&view.state, |range| (range.from(), range.to(), None)); Transaction::change_by_selection(&view.state, |range| (range.from(), range.to(), None));

@ -145,6 +145,7 @@ pub fn default() -> Keymaps {
vec![key!('c')] => commands::change_selection, vec![key!('c')] => commands::change_selection,
vec![key!('s')] => commands::split_selection_on_newline, vec![key!('s')] => commands::split_selection_on_newline,
vec![key!(';')] => commands::collapse_selection, vec![key!(';')] => commands::collapse_selection,
vec![key!('x')] => commands::select_line,
vec![key!('u')] => commands::undo, vec![key!('u')] => commands::undo,
vec![shift!('U')] => commands::redo, vec![shift!('U')] => commands::redo,
vec![key!('y')] => commands::yank, vec![key!('y')] => commands::yank,

Loading…
Cancel
Save