mirror of https://github.com/helix-editor/helix
Fix ctrl-u on insert behavior (#1957)
* Fix ctrl-u on insert behavior Now should follow vim behavior more - no longer remove text on cursor - no longer remove selected text while inserting - first kill to start non-whitespace, start, previous new line * Add comment for c-u partspull/2234/head
parent
dd5a7c6191
commit
c1d3d49f3f
|
@ -681,7 +681,24 @@ fn kill_to_line_start(cx: &mut Context) {
|
||||||
|
|
||||||
let selection = doc.selection(view.id).clone().transform(|range| {
|
let selection = doc.selection(view.id).clone().transform(|range| {
|
||||||
let line = range.cursor_line(text);
|
let line = range.cursor_line(text);
|
||||||
range.put_cursor(text, text.line_to_char(line), true)
|
let first_char = text.line_to_char(line);
|
||||||
|
let anchor = range.cursor(text);
|
||||||
|
let head = if anchor == first_char && line != 0 {
|
||||||
|
// select until previous line
|
||||||
|
line_end_char_index(&text, line - 1)
|
||||||
|
} else if let Some(pos) = find_first_non_whitespace_char(text.line(line)) {
|
||||||
|
if first_char + pos < anchor {
|
||||||
|
// select until first non-blank in line if cursor is after it
|
||||||
|
first_char + pos
|
||||||
|
} else {
|
||||||
|
// select until start of line
|
||||||
|
first_char
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// select until start of line
|
||||||
|
first_char
|
||||||
|
};
|
||||||
|
Range::new(head, anchor)
|
||||||
});
|
});
|
||||||
delete_selection_insert_mode(doc, view, &selection);
|
delete_selection_insert_mode(doc, view, &selection);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue