diff --git a/basis/ui/tools/listener/history/history-tests.factor b/basis/ui/tools/listener/history/history-tests.factor index 068673889a..331437c472 100644 --- a/basis/ui/tools/listener/history/history-tests.factor +++ b/basis/ui/tools/listener/history/history-tests.factor @@ -1,7 +1,9 @@ ! Copyright (C) 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: documents namespaces tools.test io.styles -ui.tools.listener.history kernel ; + +USING: accessors documents io.styles kernel namespaces +sequences tools.test ui.tools.listener.history ; + IN: ui.tools.listener.history.tests [ ] [ "d" set ] unit-test @@ -65,3 +67,9 @@ IN: ui.tools.listener.history.tests [ ] [ " " "d" get set-doc-string ] unit-test [ ] [ "h" get history-recall-previous ] unit-test +[ 1 ] [ + "abc" [ set-doc-string ] [ ] bi + [ history-add drop ] + [ history-add drop ] + [ elements>> length ] tri +] unit-test diff --git a/basis/ui/tools/listener/history/history.factor b/basis/ui/tools/listener/history/history.factor index dae9e26dc8..5a22021e90 100644 --- a/basis/ui/tools/listener/history/history.factor +++ b/basis/ui/tools/listener/history/history.factor @@ -9,10 +9,19 @@ TUPLE: history document elements index ; : ( document -- history ) V{ } clone 0 history boa ; + + : history-add ( history -- input ) dup elements>> length 1 + >>index [ document>> doc-string [ ] [ empty? ] bi ] keep - '[ [ _ elements>> push ] keep ] unless ; + '[ [ _ elements>> push-if-not-last ] keep ] unless ;