summaryrefslogtreecommitdiffstats
path: root/src/terminal.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/terminal.go')
-rw-r--r--src/terminal.go14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/terminal.go b/src/terminal.go
index a7e9e9b2..2fa13984 100644
--- a/src/terminal.go
+++ b/src/terminal.go
@@ -1374,7 +1374,7 @@ func atopi(s string) int {
return n
}
-func (t *Terminal) evaluateScrollOffset(list []*Item) int {
+func (t *Terminal) evaluateScrollOffset(list []*Item, height int) int {
offsetExpr := t.replacePlaceholder(t.preview.scroll, false, "", list)
nums := strings.Split(offsetExpr, "-")
switch len(nums) {
@@ -1387,6 +1387,13 @@ func (t *Terminal) evaluateScrollOffset(list []*Item) int {
} else if len(nums) == 1 {
return base - 1
}
+ if nums[1][0] == '/' {
+ denom := atopi(nums[1][1:])
+ if denom == 0 {
+ return base
+ }
+ return base - height/denom
+ }
return base - atopi(nums[1]) - 1
default:
return 0
@@ -1676,11 +1683,12 @@ func (t *Terminal) Loop() {
// We don't display preview window if no match
if items[0] != nil {
command := t.replacePlaceholder(commandTemplate, false, string(t.Input()), items)
- offset := t.evaluateScrollOffset(items)
+ height := t.pwindow.Height()
+ offset := t.evaluateScrollOffset(items, height)
cmd := util.ExecCommand(command, true)
if t.pwindow != nil {
env := os.Environ()
- lines := fmt.Sprintf("LINES=%d", t.pwindow.Height())
+ lines := fmt.Sprintf("LINES=%d", height)
columns := fmt.Sprintf("COLUMNS=%d", t.pwindow.Width())
env = append(env, lines)
env = append(env, "FZF_PREVIEW_"+lines)