This commit is contained in:
WitheringAway 2025-05-27 11:10:47 +02:00 committed by GitHub
commit 0a73f70b94
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1438,12 +1438,13 @@ func (h *BufPane) Duplicate() bool {
// DuplicateLine duplicates the current line. If there is a selection, DuplicateLine
// duplicates all the lines that are (fully or partially) in the selection.
func (h *BufPane) DuplicateLine() bool {
if h.Cursor.HasSelection() {
origLoc := h.Cursor.Loc
origLastVisualX := h.Cursor.LastVisualX
origLastWrappedVisualX := h.Cursor.LastWrappedVisualX
origSelection := h.Cursor.CurSelection
loc := h.Cursor.Loc
lastVisualX := h.Cursor.LastVisualX
lastWrappedVisualX := h.Cursor.LastWrappedVisualX
curSelection := h.Cursor.CurSelection
origSelection := h.Cursor.OrigSelection
if h.Cursor.HasSelection() {
start := h.Cursor.CurSelection[0]
end := h.Cursor.CurSelection[1]
if start.GreaterThan(end) {
@ -1460,11 +1461,6 @@ func (h *BufPane) DuplicateLine() bool {
h.Buf.Insert(h.Cursor.Loc, "\n"+string(h.Buf.LineBytes(y)))
}
h.Cursor.Loc = origLoc
h.Cursor.LastVisualX = origLastVisualX
h.Cursor.LastWrappedVisualX = origLastWrappedVisualX
h.Cursor.CurSelection = origSelection
if start.Y < end.Y {
InfoBar.Message(fmt.Sprintf("Duplicated %d lines", end.Y-start.Y+1))
} else {
@ -1475,6 +1471,13 @@ func (h *BufPane) DuplicateLine() bool {
h.Buf.Insert(h.Cursor.Loc, "\n"+string(h.Buf.LineBytes(h.Cursor.Y)))
InfoBar.Message("Duplicated line")
}
h.Cursor.Loc = loc
h.Cursor.LastVisualX = lastVisualX
h.Cursor.LastWrappedVisualX = lastWrappedVisualX
h.Cursor.CurSelection = curSelection
h.Cursor.OrigSelection = origSelection
h.Relocate()
return true
}