Implemented line numbers (#133)
This commit is contained in:
parent
e0e5977008
commit
90f0339fa9
@ -106,6 +106,12 @@ var (
|
||||
"wrapscan",
|
||||
"nowrapscan",
|
||||
"wrapscan!",
|
||||
"number",
|
||||
"nonumber",
|
||||
"number!",
|
||||
"relativenumber",
|
||||
"norelativenumber",
|
||||
"relativenumber!",
|
||||
"findlen",
|
||||
"period",
|
||||
"scrolloff",
|
||||
|
60
doc.go
60
doc.go
@ -94,35 +94,37 @@ keybindings:
|
||||
|
||||
The following options can be used to customize the behavior of lf:
|
||||
|
||||
anchorfind boolean (default on)
|
||||
color256 boolean (default off)
|
||||
dircounts boolean (default off)
|
||||
dirfirst boolean (default on)
|
||||
drawbox boolean (default off)
|
||||
globsearch boolean (default off)
|
||||
hidden boolean (default off)
|
||||
ignorecase boolean (default on)
|
||||
ignoredia boolean (default off)
|
||||
incsearch boolean (default off)
|
||||
preview boolean (default on)
|
||||
reverse boolean (default off)
|
||||
smartcase boolean (default on)
|
||||
smartdia boolean (default off)
|
||||
wrapscan boolean (default on)
|
||||
findlen integer (default 1) (zero to prompt until single match)
|
||||
period integer (default 0) (zero to disable periodic loading)
|
||||
scrolloff integer (default 0)
|
||||
tabstop integer (default 8)
|
||||
filesep string (default "\n")
|
||||
ifs string (default '') (not exported if empty)
|
||||
previewer string (default '') (not filtered if empty)
|
||||
promptfmt string (default "\033[32;1m%u@%h\033[0m:\033[34;1m%w/\033[0m\033[1m%f\033[0m")
|
||||
shell string (default 'sh')
|
||||
sortby string (default 'natural')
|
||||
timefmt string (default 'Mon Jan _2 15:04:05 2006')
|
||||
ratios string (default '1:2:3')
|
||||
info string (default '')
|
||||
shellopts string (default '')
|
||||
anchorfind boolean (default on)
|
||||
color256 boolean (default off)
|
||||
dircounts boolean (default off)
|
||||
dirfirst boolean (default on)
|
||||
drawbox boolean (default off)
|
||||
globsearch boolean (default off)
|
||||
hidden boolean (default off)
|
||||
ignorecase boolean (default on)
|
||||
ignoredia boolean (default off)
|
||||
incsearch boolean (default off)
|
||||
preview boolean (default on)
|
||||
reverse boolean (default off)
|
||||
smartcase boolean (default on)
|
||||
smartdia boolean (default off)
|
||||
wrapscan boolean (default on)
|
||||
number boolean (default off)
|
||||
relativenumber boolean (default off)
|
||||
findlen integer (default 1) (zero to prompt until single match)
|
||||
period integer (default 0) (zero to disable periodic loading)
|
||||
scrolloff integer (default 0)
|
||||
tabstop integer (default 8)
|
||||
filesep string (default "\n")
|
||||
ifs string (default '') (not exported if empty)
|
||||
previewer string (default '') (not filtered if empty)
|
||||
promptfmt string (default "\033[32;1m%u@%h\033[0m:\033[34;1m%w/\033[0m\033[1m%f\033[0m")
|
||||
shell string (default 'sh')
|
||||
sortby string (default 'natural')
|
||||
timefmt string (default 'Mon Jan _2 15:04:05 2006')
|
||||
ratios string (default '1:2:3')
|
||||
info string (default '')
|
||||
shellopts string (default '')
|
||||
|
||||
The following variables are exported for shell commands:
|
||||
|
||||
|
60
docstring.go
60
docstring.go
@ -97,35 +97,37 @@ keybindings:
|
||||
|
||||
The following options can be used to customize the behavior of lf:
|
||||
|
||||
anchorfind boolean (default on)
|
||||
color256 boolean (default off)
|
||||
dircounts boolean (default off)
|
||||
dirfirst boolean (default on)
|
||||
drawbox boolean (default off)
|
||||
globsearch boolean (default off)
|
||||
hidden boolean (default off)
|
||||
ignorecase boolean (default on)
|
||||
ignoredia boolean (default off)
|
||||
incsearch boolean (default off)
|
||||
preview boolean (default on)
|
||||
reverse boolean (default off)
|
||||
smartcase boolean (default on)
|
||||
smartdia boolean (default off)
|
||||
wrapscan boolean (default on)
|
||||
findlen integer (default 1) (zero to prompt until single match)
|
||||
period integer (default 0) (zero to disable periodic loading)
|
||||
scrolloff integer (default 0)
|
||||
tabstop integer (default 8)
|
||||
filesep string (default "\n")
|
||||
ifs string (default '') (not exported if empty)
|
||||
previewer string (default '') (not filtered if empty)
|
||||
promptfmt string (default "\033[32;1m%u@%h\033[0m:\033[34;1m%w/\033[0m\033[1m%f\033[0m")
|
||||
shell string (default 'sh')
|
||||
sortby string (default 'natural')
|
||||
timefmt string (default 'Mon Jan _2 15:04:05 2006')
|
||||
ratios string (default '1:2:3')
|
||||
info string (default '')
|
||||
shellopts string (default '')
|
||||
anchorfind boolean (default on)
|
||||
color256 boolean (default off)
|
||||
dircounts boolean (default off)
|
||||
dirfirst boolean (default on)
|
||||
drawbox boolean (default off)
|
||||
globsearch boolean (default off)
|
||||
hidden boolean (default off)
|
||||
ignorecase boolean (default on)
|
||||
ignoredia boolean (default off)
|
||||
incsearch boolean (default off)
|
||||
preview boolean (default on)
|
||||
reverse boolean (default off)
|
||||
smartcase boolean (default on)
|
||||
smartdia boolean (default off)
|
||||
wrapscan boolean (default on)
|
||||
number boolean (default off)
|
||||
relativenumber boolean (default off)
|
||||
findlen integer (default 1) (zero to prompt until single match)
|
||||
period integer (default 0) (zero to disable periodic loading)
|
||||
scrolloff integer (default 0)
|
||||
tabstop integer (default 8)
|
||||
filesep string (default "\n")
|
||||
ifs string (default '') (not exported if empty)
|
||||
previewer string (default '') (not filtered if empty)
|
||||
promptfmt string (default "\033[32;1m%u@%h\033[0m:\033[34;1m%w/\033[0m\033[1m%f\033[0m")
|
||||
shell string (default 'sh')
|
||||
sortby string (default 'natural')
|
||||
timefmt string (default 'Mon Jan _2 15:04:05 2006')
|
||||
ratios string (default '1:2:3')
|
||||
info string (default '')
|
||||
shellopts string (default '')
|
||||
|
||||
The following variables are exported for shell commands:
|
||||
|
||||
|
12
eval.go
12
eval.go
@ -143,6 +143,18 @@ func (e *setExpr) eval(app *app, args []string) {
|
||||
gOpts.wrapscan = false
|
||||
case "wrapscan!":
|
||||
gOpts.wrapscan = !gOpts.wrapscan
|
||||
case "number":
|
||||
gOpts.number = true
|
||||
case "nonumber":
|
||||
gOpts.number = false
|
||||
case "number!":
|
||||
gOpts.number = !gOpts.number
|
||||
case "relativenumber":
|
||||
gOpts.relativenumber = true
|
||||
case "norelativenumber":
|
||||
gOpts.relativenumber = false
|
||||
case "relativenumber!":
|
||||
gOpts.relativenumber = !gOpts.relativenumber
|
||||
case "findlen":
|
||||
n, err := strconv.Atoi(e.val)
|
||||
if err != nil {
|
||||
|
60
lf.1
60
lf.1
@ -109,35 +109,37 @@ The following command line commands are provided by lf with default keybindings:
|
||||
The following options can be used to customize the behavior of lf:
|
||||
.PP
|
||||
.EX
|
||||
anchorfind boolean (default on)
|
||||
color256 boolean (default off)
|
||||
dircounts boolean (default off)
|
||||
dirfirst boolean (default on)
|
||||
drawbox boolean (default off)
|
||||
globsearch boolean (default off)
|
||||
hidden boolean (default off)
|
||||
ignorecase boolean (default on)
|
||||
ignoredia boolean (default off)
|
||||
incsearch boolean (default off)
|
||||
preview boolean (default on)
|
||||
reverse boolean (default off)
|
||||
smartcase boolean (default on)
|
||||
smartdia boolean (default off)
|
||||
wrapscan boolean (default on)
|
||||
findlen integer (default 1) (zero to prompt until single match)
|
||||
period integer (default 0) (zero to disable periodic loading)
|
||||
scrolloff integer (default 0)
|
||||
tabstop integer (default 8)
|
||||
filesep string (default "\en")
|
||||
ifs string (default '') (not exported if empty)
|
||||
previewer string (default '') (not filtered if empty)
|
||||
promptfmt string (default "\e033[32;1m%u@%h\e033[0m:\e033[34;1m%w/\e033[0m\e033[1m%f\e033[0m")
|
||||
shell string (default 'sh')
|
||||
sortby string (default 'natural')
|
||||
timefmt string (default 'Mon Jan _2 15:04:05 2006')
|
||||
ratios string (default '1:2:3')
|
||||
info string (default '')
|
||||
shellopts string (default '')
|
||||
anchorfind boolean (default on)
|
||||
color256 boolean (default off)
|
||||
dircounts boolean (default off)
|
||||
dirfirst boolean (default on)
|
||||
drawbox boolean (default off)
|
||||
globsearch boolean (default off)
|
||||
hidden boolean (default off)
|
||||
ignorecase boolean (default on)
|
||||
ignoredia boolean (default off)
|
||||
incsearch boolean (default off)
|
||||
preview boolean (default on)
|
||||
reverse boolean (default off)
|
||||
smartcase boolean (default on)
|
||||
smartdia boolean (default off)
|
||||
wrapscan boolean (default on)
|
||||
number boolean (default off)
|
||||
relativenumber boolean (default off)
|
||||
findlen integer (default 1) (zero to prompt until single match)
|
||||
period integer (default 0) (zero to disable periodic loading)
|
||||
scrolloff integer (default 0)
|
||||
tabstop integer (default 8)
|
||||
filesep string (default "\en")
|
||||
ifs string (default '') (not exported if empty)
|
||||
previewer string (default '') (not filtered if empty)
|
||||
promptfmt string (default "\e033[32;1m%u@%h\e033[0m:\e033[34;1m%w/\e033[0m\e033[1m%f\e033[0m")
|
||||
shell string (default 'sh')
|
||||
sortby string (default 'natural')
|
||||
timefmt string (default 'Mon Jan _2 15:04:05 2006')
|
||||
ratios string (default '1:2:3')
|
||||
info string (default '')
|
||||
shellopts string (default '')
|
||||
.EE
|
||||
.PP
|
||||
The following variables are exported for shell commands:
|
||||
|
60
opts.go
60
opts.go
@ -25,35 +25,37 @@ type sortType struct {
|
||||
}
|
||||
|
||||
var gOpts struct {
|
||||
anchorfind bool
|
||||
color256 bool
|
||||
dircounts bool
|
||||
drawbox bool
|
||||
globsearch bool
|
||||
ignorecase bool
|
||||
incsearch bool
|
||||
preview bool
|
||||
smartcase bool
|
||||
ignoredia bool
|
||||
smartdia bool
|
||||
wrapscan bool
|
||||
findlen int
|
||||
period int
|
||||
scrolloff int
|
||||
tabstop int
|
||||
filesep string
|
||||
ifs string
|
||||
previewer string
|
||||
promptfmt string
|
||||
shell string
|
||||
timefmt string
|
||||
ratios []int
|
||||
info []string
|
||||
shellopts []string
|
||||
keys map[string]expr
|
||||
cmdkeys map[string]expr
|
||||
cmds map[string]expr
|
||||
sortType sortType
|
||||
anchorfind bool
|
||||
color256 bool
|
||||
dircounts bool
|
||||
drawbox bool
|
||||
globsearch bool
|
||||
ignorecase bool
|
||||
incsearch bool
|
||||
preview bool
|
||||
smartcase bool
|
||||
ignoredia bool
|
||||
smartdia bool
|
||||
wrapscan bool
|
||||
number bool
|
||||
relativenumber bool
|
||||
findlen int
|
||||
period int
|
||||
scrolloff int
|
||||
tabstop int
|
||||
filesep string
|
||||
ifs string
|
||||
previewer string
|
||||
promptfmt string
|
||||
shell string
|
||||
timefmt string
|
||||
ratios []int
|
||||
info []string
|
||||
shellopts []string
|
||||
keys map[string]expr
|
||||
cmdkeys map[string]expr
|
||||
cmds map[string]expr
|
||||
sortType sortType
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
35
ui.go
35
ui.go
@ -267,18 +267,45 @@ func (win *win) printDir(dir *dir, selections map[string]int, saves map[string]b
|
||||
return
|
||||
}
|
||||
|
||||
var lnwidth int = 0;
|
||||
var lnformat string = "";
|
||||
|
||||
if (gOpts.number || gOpts.relativenumber) {
|
||||
lnwidth = 1;
|
||||
for j := 10; j < len(dir.files); j *= 10 {
|
||||
lnwidth++
|
||||
}
|
||||
lnformat = fmt.Sprintf("%%%d.d ", lnwidth)
|
||||
}
|
||||
|
||||
for i, f := range dir.files[beg:end] {
|
||||
fg, bg = colors.get(f)
|
||||
|
||||
if (lnwidth > 0) {
|
||||
var ln string
|
||||
|
||||
if (gOpts.number && (!gOpts.relativenumber || i == dir.pos)) {
|
||||
ln = fmt.Sprintf(lnformat, i + 1 + beg)
|
||||
} else if (gOpts.relativenumber) {
|
||||
if (i < dir.pos) {
|
||||
ln = fmt.Sprintf(lnformat, dir.pos - i)
|
||||
} else {
|
||||
ln = fmt.Sprintf(lnformat, i - dir.pos)
|
||||
}
|
||||
}
|
||||
|
||||
win.print(0, i, termbox.ColorYellow, bg, ln)
|
||||
}
|
||||
|
||||
path := filepath.Join(dir.path, f.Name())
|
||||
|
||||
if _, ok := selections[path]; ok {
|
||||
win.print(0, i, fg, termbox.ColorMagenta, " ")
|
||||
win.print(lnwidth, i, fg, termbox.ColorMagenta, " ")
|
||||
} else if cp, ok := saves[path]; ok {
|
||||
if cp {
|
||||
win.print(0, i, fg, termbox.ColorYellow, " ")
|
||||
win.print(lnwidth, i, fg, termbox.ColorYellow, " ")
|
||||
} else {
|
||||
win.print(0, i, fg, termbox.ColorRed, " ")
|
||||
win.print(lnwidth, i, fg, termbox.ColorRed, " ")
|
||||
}
|
||||
}
|
||||
|
||||
@ -321,7 +348,7 @@ func (win *win) printDir(dir *dir, selections map[string]int, saves map[string]b
|
||||
|
||||
s = append(s, ' ')
|
||||
|
||||
win.print(1, i, fg, bg, string(s))
|
||||
win.print(lnwidth+1, i, fg, bg, string(s))
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user