aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src/commands.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term/src/commands.rs')
-rw-r--r--helix-term/src/commands.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index 28caa6d5..55cbf0fe 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -429,6 +429,25 @@ pub fn select_line(cx: &mut Context) {
doc.set_selection(Selection::single(start, end));
}
+pub fn extend_line(cx: &mut Context) {
+ let count = cx.count;
+ let doc = cx.doc();
+
+ let pos = doc.selection().primary();
+ let text = doc.text();
+
+ let line_start = text.char_to_line(pos.anchor);
+ let mut line = text.char_to_line(pos.head);
+ let line_end = text.line_to_char(line + 1).saturating_sub(1);
+ if line_start <= pos.anchor && pos.head == line_end && line != text.len_lines() {
+ line += 1;
+ }
+
+ let start = text.line_to_char(line_start);
+ let end = text.line_to_char(line + 1).saturating_sub(1);
+
+ doc.set_selection(Selection::single(start, end));
+}
// heuristic: append changes to history after each command, unless we're in insert mode