]> git.lizzy.rs Git - micro.git/blobdiff - internal/display/bufwindow.go
Implement moving cursor up/down within a wrapped line
[micro.git] / internal / display / bufwindow.go
index e493547bedfce84b24cfe33b9b04993140545789..930d9c36936af10690d4a75cc58b357ddd962438 100644 (file)
@@ -54,8 +54,15 @@ func (w *BufWindow) SetBuffer(b *buffer.Buffer) {
                                w.StartLine.Row = 0
                        }
                        w.Relocate()
+
+                       for _, c := range w.Buf.GetCursors() {
+                               c.LastVisualX = c.GetVisualX()
+                       }
                }
        }
+       b.GetVisualX = func(loc buffer.Loc) int {
+               return w.VLocFromLoc(loc).VisualX
+       }
 }
 
 func (w *BufWindow) GetView() *View {
@@ -68,7 +75,15 @@ func (w *BufWindow) SetView(view *View) {
 
 func (w *BufWindow) Resize(width, height int) {
        w.Width, w.Height = width, height
+       w.updateDisplayInfo()
+
        w.Relocate()
+
+       if w.Buf.Settings["softwrap"].(bool) {
+               for _, c := range w.Buf.GetCursors() {
+                       c.LastVisualX = c.GetVisualX()
+               }
+       }
 }
 
 func (w *BufWindow) SetActive(b bool) {