diff --git a/cmd/micro/cellview.go b/cmd/micro/cellview.go index 87c026e1..f7d8e41d 100644 --- a/cmd/micro/cellview.go +++ b/cmd/micro/cellview.go @@ -96,6 +96,11 @@ func (c *CellView) Draw(buf *Buffer, top, height, left, width int) { if wrap && viewCol >= width { viewLine++ + // If we go too far soft wrapping we have to cut off + if viewLine >= height { + break + } + nextLine := line[colN:] lineLength := min(StringWidth(string(nextLine), tabsize), width) if len(c.lines[viewLine]) != lineLength { @@ -104,10 +109,6 @@ func (c *CellView) Draw(buf *Buffer, top, height, left, width int) { viewCol = 0 - // If we go too far soft wrapping we have to cut off - if viewLine >= height { - break - } } } diff --git a/cmd/micro/view2.go b/cmd/micro/view2.go index faa28f84..db8c6b54 100644 --- a/cmd/micro/view2.go +++ b/cmd/micro/view2.go @@ -1,11 +1,24 @@ package main +import "strconv" + func (v *View) DisplayView() { if v.Type == vtLog { // Log views should always follow the cursor... v.Relocate() } + // We need to know the string length of the largest line number + // so we can pad appropriately when displaying line numbers + maxLineNumLength := len(strconv.Itoa(v.Buf.NumLines)) + + if v.Buf.Settings["ruler"] == true { + // + 1 for the little space after the line number + v.lineNumOffset = maxLineNumLength + 1 + } else { + v.lineNumOffset = 0 + } + height := v.Height width := v.Width left := v.leftCol