Toggle line numbers
This commit is contained in:
parent
acabfcb8bb
commit
0440ca45cd
2 changed files with 45 additions and 18 deletions
|
@ -21,6 +21,7 @@ type Settings struct {
|
|||
AutoIndent bool `json:"autoindent"`
|
||||
Syntax bool `json:"syntax"`
|
||||
TabsToSpaces bool `json:"tabsToSpaces"`
|
||||
Ruler bool `json:"ruler"`
|
||||
}
|
||||
|
||||
// InitSettings initializes the options map and sets all options to their default values
|
||||
|
@ -61,6 +62,7 @@ func DefaultSettings() Settings {
|
|||
AutoIndent: true,
|
||||
Syntax: true,
|
||||
TabsToSpaces: false,
|
||||
Ruler: true,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -103,7 +105,17 @@ func SetOption(view *View, args []string) {
|
|||
messenger.Error("Invalid value for " + option)
|
||||
return
|
||||
}
|
||||
} else if option == "ruler" {
|
||||
if value == "on" {
|
||||
settings.Ruler = true
|
||||
} else if value == "off" {
|
||||
settings.Ruler = false
|
||||
} else {
|
||||
messenger.Error("Invalid value for " + option)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
err := WriteSettings(filename)
|
||||
if err != nil {
|
||||
messenger.Error("Error writing to settings.json: " + err.Error())
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/atotto/clipboard"
|
||||
"github.com/gdamore/tcell"
|
||||
"github.com/mitchellh/go-homedir"
|
||||
"io/ioutil"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/atotto/clipboard"
|
||||
"github.com/gdamore/tcell"
|
||||
"github.com/mitchellh/go-homedir"
|
||||
)
|
||||
|
||||
// The View struct stores information about a view into a buffer.
|
||||
|
@ -509,6 +510,12 @@ func (v *View) HandleEvent(event tcell.Event) {
|
|||
case tcell.KeyCtrlD:
|
||||
v.HalfPageDown()
|
||||
relocate = false
|
||||
case tcell.KeyCtrlR:
|
||||
if settings.Ruler == false {
|
||||
settings.Ruler = true
|
||||
} else {
|
||||
settings.Ruler = false
|
||||
}
|
||||
case tcell.KeyRune:
|
||||
// Insert a character
|
||||
if v.cursor.HasSelection() {
|
||||
|
@ -620,8 +627,11 @@ func (v *View) DisplayView() {
|
|||
// We are going to have to offset by that amount
|
||||
maxLineLength := len(strconv.Itoa(len(v.buf.lines)))
|
||||
// + 1 for the little space after the line number
|
||||
if settings.Ruler == true {
|
||||
v.lineNumOffset = maxLineLength + 1
|
||||
|
||||
} else {
|
||||
v.lineNumOffset = 0
|
||||
}
|
||||
var highlightStyle tcell.Style
|
||||
|
||||
for lineN := 0; lineN < v.height; lineN++ {
|
||||
|
@ -639,7 +649,9 @@ func (v *View) DisplayView() {
|
|||
lineNumStyle = style
|
||||
}
|
||||
// Write the spaces before the line number if necessary
|
||||
lineNum := strconv.Itoa(lineN + v.topline + 1)
|
||||
var lineNum string
|
||||
if settings.Ruler == true {
|
||||
lineNum = strconv.Itoa(lineN + v.topline + 1)
|
||||
for i := 0; i < maxLineLength-len(lineNum); i++ {
|
||||
screen.SetContent(x, lineN, ' ', nil, lineNumStyle)
|
||||
x++
|
||||
|
@ -649,10 +661,13 @@ func (v *View) DisplayView() {
|
|||
screen.SetContent(x, lineN, ch, nil, lineNumStyle)
|
||||
x++
|
||||
}
|
||||
|
||||
if settings.Ruler == true {
|
||||
// Write the extra space
|
||||
screen.SetContent(x, lineN, ' ', nil, lineNumStyle)
|
||||
x++
|
||||
|
||||
}
|
||||
}
|
||||
// Write the line
|
||||
tabchars := 0
|
||||
runes := []rune(line)
|
||||
|
|
Loading…
Reference in a new issue