ui.tools.listener: make it so up/down arrows can be used for history

cycling

It's how it works in most CLIs so it's nice if it works in Factor too.
db4
Björn Lindqvist 2015-10-14 03:05:16 +02:00
parent f9e5d4f22c
commit 420ca29795
2 changed files with 26 additions and 26 deletions

View File

@ -1,9 +1,7 @@
USING: continuations documents
ui.tools.listener hashtables kernel namespaces parser sequences
tools.test ui.commands ui.gadgets ui.gadgets.editors
ui.gadgets.panes vocabs words ui.gadgets.debug slots.private
arrays generic threads accessors listener math
calendar concurrency.promises io ui.tools.common ;
USING: accessors arrays calendar concurrency.promises continuations
documents io kernel listener math namespaces parser threads tools.test
ui.gadgets.debug ui.gadgets.editors ui.gadgets.panes ui.gestures
ui.tools.common ui.tools.listener ;
IN: ui.tools.listener.tests
[
@ -198,3 +196,10 @@ CONSTANT: text "Hello world.\nThis is a test."
{ } [ <listener-gadget> "l" set ] unit-test
{ } [ "l" get com-scroll-up ] unit-test
{ } [ "l" get com-scroll-down ] unit-test
{ t t } [
T{ key-down f f "UP" } T{ key-down f { C+ } "p" }
[ <interactor> get-gesture-handler ] same?
T{ key-down f f "DOWN" } T{ key-down f { C+ } "n" }
[ <interactor> get-gesture-handler ] same?
] unit-test

View File

@ -1,27 +1,23 @@
! Copyright (C) 2005, 2010 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors arrays assocs calendar colors.constants
combinators combinators.short-circuit concurrency.flags
concurrency.mailboxes continuations destructors documents
documents.elements fry hashtables help help.markup help.tips io
io.styles kernel lexer listener locals make math models
models.arrow models.delay namespaces parser prettyprint
quotations sequences source-files.errors strings system threads
tools.errors.model ui ui.commands ui.gadgets ui.gadgets.buttons
USING: accessors arrays assocs calendar combinators
combinators.short-circuit concurrency.flags concurrency.mailboxes
continuations destructors documents documents.elements fry hashtables
help help.markup help.tips io io.styles kernel lexer listener locals
make math models models.arrow models.delay namespaces parser
prettyprint quotations sequences source-files.errors strings system
threads tools.errors.model ui ui.commands ui.gadgets
ui.gadgets.editors ui.gadgets.glass ui.gadgets.labeled
ui.gadgets.panes ui.gadgets.scrollers ui.gadgets.status-bar
ui.gadgets.tracks ui.gadgets.toolbar ui.gadgets.theme
ui.gestures ui.operations ui.pens.solid
ui.tools.browser ui.tools.common ui.tools.debugger
ui.tools.error-list ui.tools.listener.completion
ui.gadgets.theme ui.gadgets.toolbar ui.gadgets.tracks ui.gestures
ui.operations ui.pens.solid ui.tools.browser ui.tools.common
ui.tools.debugger ui.tools.error-list ui.tools.listener.completion
ui.tools.listener.history ui.tools.listener.popups vocabs
vocabs.loader vocabs.parser vocabs.refresh words ;
IN: ui.tools.listener
! If waiting is t, we're waiting for user input, and invoking
! evaluate-input resumes the thread.
TUPLE: interactor < source-editor
output history flag mailbox thread waiting token-model word-model popup ;
output history flag mailbox thread waiting token-model word-model popup ;
INSTANCE: interactor input-stream
@ -189,9 +185,6 @@ TUPLE: listener-gadget < tool error-summary output scroller input ;
{ 600 700 } listener-gadget set-tool-dim
: find-listener ( gadget -- listener )
[ listener-gadget? ] find-parent ;
: listener-streams ( listener -- input output )
[ input>> ] [ output>> <pane-stream> ] bi ;
@ -217,7 +210,7 @@ TUPLE: listener-gadget < tool error-summary output scroller input ;
: init-error-summary ( listener -- listener )
<error-summary> >>error-summary
dup error-summary>> f track-add ;
: add-listener-area ( listener -- listener )
dup output>> margins <scroller> >>scroller
dup scroller>> white-interior 1 track-add ;
@ -334,7 +327,7 @@ M: object accept-completion-hook 2drop ;
parse-lines-interactive ;
: <debugger-popup> ( error continuation -- popup )
over compute-restarts [ hide-glass ] <debugger>
over compute-restarts [ hide-glass ] <debugger>
"Error" debugger-color <framed-labeled> ;
: debugger-popup ( interactor error continuation -- )
@ -392,6 +385,8 @@ interactor "completion" f {
{ T{ key-down f f "TAB" } code-completion-popup }
{ T{ key-down f { C+ } "p" } recall-previous }
{ T{ key-down f { C+ } "n" } recall-next }
{ T{ key-down f f "UP" } recall-previous }
{ T{ key-down f f "DOWN" } recall-next }
{ T{ key-down f { C+ } "r" } history-completion-popup }
} define-command-map