From 3a16197da71c48bdc84bd097f4e185fefc4720b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6ran=20Karl?= <3951388+JoeKar@users.noreply.github.com> Date: Wed, 20 Nov 2024 14:29:02 +0100 Subject: [PATCH] actions: On `Cursor(Page)Down` with selection of newline place cursor to start --- internal/action/actions.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/internal/action/actions.go b/internal/action/actions.go index 4599606c..c1a96e33 100644 --- a/internal/action/actions.go +++ b/internal/action/actions.go @@ -254,8 +254,12 @@ func (h *BufPane) CursorUp() bool { // CursorDown moves the cursor down func (h *BufPane) CursorDown() bool { + selectionEndNewline := h.Cursor.HasSelection() && h.Cursor.CurSelection[1].X == 0 h.Cursor.Deselect(false) h.MoveCursorDown(1) + if selectionEndNewline { + h.Cursor.Start() + } h.Relocate() return true } @@ -1732,6 +1736,7 @@ func (h *BufPane) CursorPageUp() bool { // CursorPageDown places the cursor a page down, // moving the view to keep cursor at the same relative position in the view func (h *BufPane) CursorPageDown() bool { + selectionEndNewline := h.Cursor.HasSelection() && h.Cursor.CurSelection[1].X == 0 h.Cursor.Deselect(false) pageOverlap := int(h.Buf.Settings["pageoverlap"].(float64)) scrollAmount := h.BufView().Height - pageOverlap @@ -1740,6 +1745,9 @@ func (h *BufPane) CursorPageDown() bool { h.ScrollDown(scrollAmount) h.ScrollAdjust() } + if selectionEndNewline { + h.Cursor.Start() + } h.Relocate() return true }