From 9533913d705d56aa22bc10b36c755533599cbb16 Mon Sep 17 00:00:00 2001 From: simeji Date: Sat, 16 Mar 2019 21:29:15 +0900 Subject: [PATCH 1/2] Add features : PageUp/Down --- README.md | 2 ++ cmd/jid/jid.go | 6 ++++++ engine.go | 32 +++++++++++++++++++++++++++----- engine_test.go | 37 +++++++++++++++++++++++++++++++++++++ 4 files changed, 72 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 4ebf2b9..36d5b63 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,8 @@ jid < file.json |`CTRL` + `K`|Scroll json buffer 1 line upwards| |`CTRL` + `G`|Scroll json buffer to bottom| |`CTRL` + `T`|Scroll json buffer to top| +|`CTRL` + `N`|Scroll json buffer 'Page Down'| +|`CTRL` + `P`|Scroll json buffer 'Page Up'| |`CTRL` + `L`|Change view mode whole json or keys (only object)| |`ESC`|Hide a candidate box| diff --git a/cmd/jid/jid.go b/cmd/jid/jid.go index deeb36b..6c60239 100644 --- a/cmd/jid/jid.go +++ b/cmd/jid/jid.go @@ -114,6 +114,12 @@ CTRL-G CTRL-T Scroll json buffer to top +CTRL-N + Scroll json buffer 'Page Down' + +CTRL-P + Scroll json buffer 'Page Up' + CTRL-L Change view mode whole json or keys (only object) diff --git a/engine.go b/engine.go index c039b11..f9b3b3b 100644 --- a/engine.go +++ b/engine.go @@ -4,7 +4,7 @@ import ( "io" "strings" - "github.com/nsf/termbox-go" + termbox "github.com/nsf/termbox-go" ) const ( @@ -151,6 +151,12 @@ func (e *Engine) Run() EngineResultInterface { e.scrollToBottom(len(contents)) case termbox.KeyCtrlT: e.scrollToTop() + case termbox.KeyCtrlN: + _, h := termbox.Size() + e.scrollPageDown(len(contents), h) + case termbox.KeyCtrlP: + _, h := termbox.Size() + e.scrollPageUp(h) case termbox.KeyCtrlL: e.toggleKeymode() case termbox.KeyCtrlU: @@ -165,14 +171,14 @@ func (e *Engine) Run() EngineResultInterface { var err error if e.prettyResult { cc, _, _, err = e.manager.GetPretty(e.query, true) - }else{ + } else { cc, _, _, err = e.manager.Get(e.query, true) } return &EngineResult{ - content: cc, - qs: e.query.StringGet(), - err: err, + content: cc, + qs: e.query.StringGet(), + err: err, } } e.confirmCandidate() @@ -253,6 +259,22 @@ func (e *Engine) scrollToTop() { e.contentOffset = 0 } +func (e *Engine) scrollPageDown(rownum int, height int) { + co := rownum - 1 + if o := rownum - e.contentOffset; o > height { + co = e.contentOffset + (height - DefaultY) + } + e.contentOffset = co +} + +func (e *Engine) scrollPageUp(height int) { + co := 0 + if o := e.contentOffset - (height - DefaultY); o > 0 { + co = o + } + e.contentOffset = co +} + func (e *Engine) toggleKeymode() { e.keymode = !e.keymode } diff --git a/engine_test.go b/engine_test.go index 9492847..9eefb8a 100644 --- a/engine_test.go +++ b/engine_test.go @@ -114,6 +114,43 @@ func TestScrollToBottomAndTop(t *testing.T) { assert.Equal(0, e.contentOffset) } +func TestScrollPageUpDown(t *testing.T) { + var assert = assert.New(t) + e := getEngine(`{"named":"go","NameTest":[1,2,3]}`, "") + + cl := len(e.getContents()) + // Then DefaultY = 1 + e.scrollPageDown(cl, 3) + assert.Equal(2, e.contentOffset) + e.scrollPageDown(cl, 3) + assert.Equal(4, e.contentOffset) + + e.scrollPageUp(3) + assert.Equal(2, e.contentOffset) + + // term height changed + e.scrollPageDown(cl, 5) + assert.Equal(6, e.contentOffset) + + e.scrollPageDown(cl, 5) + assert.Equal(7, e.contentOffset) + + e.scrollPageDown(cl, 5) + assert.Equal(7, e.contentOffset) + + e.scrollPageUp(5) + assert.Equal(3, e.contentOffset) + + e.scrollPageUp(5) + assert.Equal(0, e.contentOffset) + + e.scrollPageUp(5) + assert.Equal(0, e.contentOffset) + + // term height > content size + default Y (a filter query line) + e.scrollPageDown(cl, 10) + assert.Equal(7, e.contentOffset) +} func TestGetContents(t *testing.T) { var assert = assert.New(t) From 972f301753b801151719f59812a7d15f66f4983a Mon Sep 17 00:00:00 2001 From: simeji Date: Sat, 16 Mar 2019 21:43:46 +0900 Subject: [PATCH 2/2] change version --- cmd/jid/jid.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/jid/jid.go b/cmd/jid/jid.go index 6c60239..9749b3c 100644 --- a/cmd/jid/jid.go +++ b/cmd/jid/jid.go @@ -8,7 +8,7 @@ import ( "github.com/simeji/jid" ) -const VERSION = "0.7.3" +const VERSION = "0.7.5" func main() { content := os.Stdin