summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2016-09-25 04:12:44 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2016-09-25 04:12:44 +0900
commit8c8b5b313e85cc3c13a1ebe33a6d718577d15a2f (patch)
treecb97d2704562fe85d71dd41b936e52da1f845876 /src
parent66d55fd89349b38e61ba2180ea8e7d8e5656c878 (diff)
Add preview-page-up and preview-page-down actions
Diffstat (limited to 'src')
-rw-r--r--src/options.go4
-rw-r--r--src/terminal.go27
2 files changed, 22 insertions, 9 deletions
diff --git a/src/options.go b/src/options.go
index 3b412f83..f586e5e0 100644
--- a/src/options.go
+++ b/src/options.go
@@ -667,6 +667,10 @@ func parseKeymap(keymap map[int]actionType, execmap map[int]string, str string)
keymap[key] = actPreviewUp
case "preview-down":
keymap[key] = actPreviewDown
+ case "preview-page-up":
+ keymap[key] = actPreviewPageUp
+ case "preview-page-down":
+ keymap[key] = actPreviewPageDown
default:
if isExecuteAction(actLower) {
var offset int
diff --git a/src/terminal.go b/src/terminal.go
index 9bb92629..2d7f4c6a 100644
--- a/src/terminal.go
+++ b/src/terminal.go
@@ -174,6 +174,8 @@ const (
actTogglePreview
actPreviewUp
actPreviewDown
+ actPreviewPageUp
+ actPreviewPageDown
actPreviousHistory
actNextHistory
actExecute
@@ -1123,6 +1125,11 @@ func (t *Terminal) Loop() {
req(reqInfo)
}
}
+ scrollPreview := func(amount int) {
+ t.previewer.offset = util.Constrain(
+ t.previewer.offset+amount, 0, t.previewer.lines-t.pwindow.Height)
+ req(reqPreviewRefresh)
+ }
for key, ret := range t.expect {
if keyMatch(key, event) {
t.pressed = ret
@@ -1171,15 +1178,19 @@ func (t *Terminal) Loop() {
return false
case actPreviewUp:
if t.isPreviewEnabled() {
- t.previewer.offset = util.Constrain(
- t.previewer.offset-1, 0, t.previewer.lines-t.pwindow.Height)
- req(reqPreviewRefresh)
+ scrollPreview(-1)
}
case actPreviewDown:
if t.isPreviewEnabled() {
- t.previewer.offset = util.Constrain(
- t.previewer.offset+1, 0, t.previewer.lines-t.pwindow.Height)
- req(reqPreviewRefresh)
+ scrollPreview(1)
+ }
+ case actPreviewPageUp:
+ if t.isPreviewEnabled() {
+ scrollPreview(-t.pwindow.Height)
+ }
+ case actPreviewPageDown:
+ if t.isPreviewEnabled() {
+ scrollPreview(t.pwindow.Height)
}
case actBeginningOfLine:
t.cx = 0
@@ -1350,9 +1361,7 @@ func (t *Terminal) Loop() {
t.vmove(me.S)
req(reqList)
} else if t.isPreviewEnabled() && t.pwindow.Enclose(my, mx) {
- t.previewer.offset = util.Constrain(
- t.previewer.offset-me.S, 0, t.previewer.lines-t.pwindow.Height)
- req(reqPreviewRefresh)
+ scrollPreview(-me.S)
}
} else if t.window.Enclose(my, mx) {
mx -= t.window.Left