diff --git a/README.md b/README.md index 12a2d9e..316dee2 100644 --- a/README.md +++ b/README.md @@ -181,8 +181,8 @@ Example: ```json { "Keymap": { - "M-v": "peco.SelectPreviousPage", - "C-v": "peco.SelectNextPage", + "M-v": "peco.ScrollPageDown", + "C-v": "peco.ScrollPageUp", "C-x,C-c": "peco.Cancel" } } @@ -201,9 +201,9 @@ As of v0.2.1, you can create custom combined actions. For example, if you find y "Action": { "foo.SelectFour": [ "peco.ToggleRangeMode", - "peco.SelectNext", - "peco.SelectNext", - "peco.SelectNext", + "peco.SelectDown", + "peco.SelectDown", + "peco.SelectDown", "peco.ToggleRangeMode" ] }, @@ -269,8 +269,10 @@ Some keys just... don't map correctly / too easily for various reasons. Here, we | peco.DeleteBackwardWord | Delete one word backward | | peco.KillEndOfLine | Delete the characters under the cursor until the end of the line | | peco.DeleteAll | Delete all entered characters | -| peco.SelectPreviousPage | Jumps to previous page | -| peco.SelectNextPage | Jumps to next page| +| peco.SelectPreviousPage | (DEPRECATED) Alias to ScrollPageUp | +| peco.SelectNextPage | (DEPRECATED) Alias to ScrollPageDown | +| peco.ScrollPageDown | Moves the selected line cursor for an entire page, downwards | +| peco.ScrollPageUp | Moves the selected line cursor for an entire page, upwards | | peco.SelectUp | Moves the selected line cursor to one line above | | peco.SelectDown | Moves the selected line cursor to one line below | | peco.SelectPrevious | (DEPRECATED) Alias to SelectUp | diff --git a/action.go b/action.go index 9498f93..ae727c9 100644 --- a/action.go +++ b/action.go @@ -83,10 +83,11 @@ func init() { doSelectUp(i, ev) }).Register("SelectNext") - ActionFunc(doSelectNextPage).Register( - "SelectNextPage", - termbox.KeyArrowRight, - ) + ActionFunc(doScrollPageDown).Register("ScrollPageDown", termbox.KeyArrowRight) + ActionFunc(func(i *Input, ev termbox.Event) { + i.SendStatusMsg("SelectNextPage is deprecated. Use ScrollPageDown/ScrollPageUp") + doScrollPageDown(i, ev) + }).Register("SelectNextPage") ActionFunc(doSelectDown).Register("SelectDown", termbox.KeyArrowDown, termbox.KeyCtrlN) ActionFunc(func(i *Input, ev termbox.Event) { @@ -94,10 +95,11 @@ func init() { doSelectDown(i, ev) }).Register( "SelectPrevious") - ActionFunc(doSelectPreviousPage).Register( - "SelectPreviousPage", - termbox.KeyArrowLeft, - ) + ActionFunc(doScrollPageUp).Register("ScrollPageUp", termbox.KeyArrowLeft) + ActionFunc(func(i *Input, ev termbox.Event) { + i.SendStatusMsg("SelectPreviousPage is deprecated. Uselect ScrollPageDown/ScrollPageUp") + doScrollPageUp(i, ev) + }).Register("SelectPreviousPage") ActionFunc(doToggleSelection).Register("ToggleSelection") ActionFunc(doToggleSelectionAndSelectNext).Register( @@ -262,13 +264,13 @@ func doSelectUp(i *Input, ev termbox.Event) { i.DrawMatches(nil) } -func doSelectPreviousPage(i *Input, ev termbox.Event) { - i.SendPaging(ToPrevPage) +func doScrollPageUp(i *Input, ev termbox.Event) { + i.SendPaging(ToScrollPageUp) i.DrawMatches(nil) } -func doSelectNextPage(i *Input, ev termbox.Event) { - i.SendPaging(ToNextPage) +func doScrollPageDown(i *Input, ev termbox.Event) { + i.SendPaging(ToScrollPageDown) i.DrawMatches(nil) } diff --git a/layout.go b/layout.go index 48b40dc..e548b21 100644 --- a/layout.go +++ b/layout.go @@ -383,28 +383,33 @@ func (l *BasicLayout) DrawScreen(targets []Match) { } } -func (l *BasicLayout) MovePage(p PagingRequest) { +func linesPerPage() int { _, height := termbox.Size() - perPage := height - 2 // list area is always the display area - 2 lines for prompt and status + return height - 2 // list area is always the display area - 2 lines for prompt and status +} - switch p { - case ToLineAbove: - if l.list.sortTopDown { +func (l *BasicLayout) MovePage(p PagingRequest) { + if l.list.sortTopDown { + switch p { + case ToLineAbove: l.currentLine-- - } else { + case ToLineBelow: l.currentLine++ + case ToScrollPageDown: + l.currentLine += linesPerPage() + case ToScrollPageUp: + l.currentLine -= linesPerPage() } - case ToLineBelow: - if l.list.sortTopDown { + } else { + switch p { + case ToLineAbove: l.currentLine++ - } else { + case ToLineBelow: l.currentLine-- - } - case ToPrevPage, ToNextPage: - if p == ToPrevPage { - l.currentLine -= perPage - } else { - l.currentLine += perPage + case ToScrollPageDown: + l.currentLine -= linesPerPage() + case ToScrollPageUp: + l.currentLine += linesPerPage() } } diff --git a/view.go b/view.go index 4b47353..c1f834b 100644 --- a/view.go +++ b/view.go @@ -14,12 +14,12 @@ type PagingRequest int const ( // ToLineAbove moves the selection to the line above ToLineAbove PagingRequest = iota - // ToNextPage moves the selection to the next page - ToNextPage + // ToScrollPageDown moves the selection to the next page + ToScrollPageDown // ToLineBelow moves the selection to the line below ToLineBelow - // ToPrevPage moves the selection to the previous page - ToPrevPage + // ToScrollPageUp moves the selection to the previous page + ToScrollPageUp ) // Loop receives requests to update the screen