From 60c8c81da30190127f9260bad881ec376c43eaa6 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Tue, 24 Mar 2020 11:33:52 -0400 Subject: [PATCH] Relocate during replace Fixes #1587 --- internal/action/command.go | 3 +++ internal/display/bufwindow.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/internal/action/command.go b/internal/action/command.go index ec4da484..3fdd30a7 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -762,6 +762,8 @@ func (h *BufPane) ReplaceCmd(args []string) { h.Cursor.SetSelectionStart(locs[0]) h.Cursor.SetSelectionEnd(locs[1]) + h.Relocate() + InfoBar.YNPrompt("Perform replacement (y,n,esc)", func(yes, canceled bool) { if !canceled && yes { _, nrunes := h.Buf.ReplaceRegex(locs[0], locs[1], regex, replace) @@ -786,6 +788,7 @@ func (h *BufPane) ReplaceCmd(args []string) { } h.Buf.RelocateCursors() + h.Relocate() var s string if nreplaced > 1 { diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 372b13dc..f366cfe7 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -139,6 +139,9 @@ func (w *BufWindow) Relocate() bool { ret := false activeC := w.Buf.GetActiveCursor() cy := activeC.Y + if activeC.HasSelection() { + cy = activeC.CurSelection[0].Y + } scrollmargin := int(b.Settings["scrollmargin"].(float64)) if cy < w.StartLine+scrollmargin && cy > scrollmargin-1 { w.StartLine = cy - scrollmargin