|
|
@ -1360,7 +1360,7 @@ pub fn scroll(cx: &mut Context, offset: usize, direction: Direction) {
|
|
|
|
let range = doc.selection(view.id).primary();
|
|
|
|
let range = doc.selection(view.id).primary();
|
|
|
|
let text = doc.text().slice(..);
|
|
|
|
let text = doc.text().slice(..);
|
|
|
|
|
|
|
|
|
|
|
|
let cursor = coords_at_pos(text, range.cursor(text));
|
|
|
|
let cursor = visual_coords_at_pos(text, range.cursor(text), doc.tab_width());
|
|
|
|
let doc_last_line = doc.text().len_lines().saturating_sub(1);
|
|
|
|
let doc_last_line = doc.text().len_lines().saturating_sub(1);
|
|
|
|
|
|
|
|
|
|
|
|
let last_line = view.last_line(doc);
|
|
|
|
let last_line = view.last_line(doc);
|
|
|
@ -1392,7 +1392,7 @@ pub fn scroll(cx: &mut Context, offset: usize, direction: Direction) {
|
|
|
|
|
|
|
|
|
|
|
|
// If cursor needs moving, replace primary selection
|
|
|
|
// If cursor needs moving, replace primary selection
|
|
|
|
if line != cursor.row {
|
|
|
|
if line != cursor.row {
|
|
|
|
let head = pos_at_coords(text, Position::new(line, cursor.col), true); // this func will properly truncate to line end
|
|
|
|
let head = pos_at_visual_coords(text, Position::new(line, cursor.col), doc.tab_width()); // this func will properly truncate to line end
|
|
|
|
|
|
|
|
|
|
|
|
let anchor = if cx.editor.mode == Mode::Select {
|
|
|
|
let anchor = if cx.editor.mode == Mode::Select {
|
|
|
|
range.anchor
|
|
|
|
range.anchor
|
|
|
|