factor/basis/ui/tools/operations/operations.factor

200 lines
4.6 KiB
Factor
Raw Normal View History

2009-01-06 17:53:08 -05:00
! Copyright (C) 2006, 2009 Slava Pestov.
2007-09-20 18:09:08 -04:00
! See http://factorcode.org/license.txt for BSD license.
2009-01-26 19:09:04 -05:00
USING: continuations definitions generic help.topics threads
stack-checker summary io.pathnames io.styles kernel namespaces
parser prettyprint quotations tools.crossref tools.annotations
editors tools.test tools.time tools.walker vocabs
vocabs.loader words sequences classes compiler.errors
compiler.units accessors vocabs.parser macros.expander ui
ui.tools.browser ui.tools.listener ui.tools.listener.completion
ui.tools.inspector ui.tools.traceback
ui.commands ui.gadgets.editors ui.gestures ui.operations
ui.tools.deploy models help.tips source-files.errors destructors
libc libc.private ;
2007-09-20 18:09:08 -04:00
IN: ui.tools.operations
! Objects
2009-01-07 00:30:08 -05:00
[ drop t ] \ inspector H{
2007-09-20 18:09:08 -04:00
{ +primary+ t }
} define-operation
2008-06-08 16:32:55 -04:00
: com-prettyprint ( obj -- ) . ;
2007-09-20 18:09:08 -04:00
[ drop t ] \ com-prettyprint H{
{ +listener+ t }
} define-operation
2008-06-08 16:32:55 -04:00
: com-push ( obj -- obj ) ;
2007-09-20 18:09:08 -04:00
[ drop t ] \ com-push H{
{ +listener+ t }
} define-operation
2008-06-08 16:32:55 -04:00
: com-unparse ( obj -- ) unparse listener-input ;
2007-09-20 18:09:08 -04:00
[ drop t ] \ com-unparse H{ } define-operation
! Models
[ model? ] \ inspect-model H{
{ +primary+ t }
} define-operation
2007-09-20 18:09:08 -04:00
! Input
2008-06-08 16:32:55 -04:00
: com-input ( obj -- ) string>> listener-input ;
2007-09-20 18:09:08 -04:00
[ input? ] \ com-input H{
{ +primary+ t }
{ +secondary+ t }
} define-operation
! Restart
[ restart? ] \ restart H{
{ +primary+ t }
{ +secondary+ t }
{ +listener+ t }
} define-operation
! Continuation
[ continuation? ] \ traceback-window H{
{ +primary+ t }
{ +secondary+ t }
} define-operation
2009-01-26 19:09:04 -05:00
! Thread
: com-thread-traceback-window ( thread -- )
thread-continuation traceback-window ;
2009-01-26 19:09:04 -05:00
[ thread? ] \ com-thread-traceback-window H{
{ +primary+ t }
{ +secondary+ t }
} define-operation
2007-09-20 18:09:08 -04:00
[ pathname? ] \ edit-file H{
{ +keyboard+ T{ key-down f { C+ } "e" } }
2007-09-20 18:09:08 -04:00
{ +primary+ t }
{ +secondary+ t }
{ +listener+ t }
2007-09-20 18:09:08 -04:00
} define-operation
[ definition? ] \ edit H{
{ +keyboard+ T{ key-down f { C+ } "e" } }
{ +listener+ t }
2007-09-20 18:09:08 -04:00
} define-operation
2009-04-11 16:11:40 -04:00
! Source file error
[ source-file-error? ] \ edit-error H{
{ +primary+ t }
{ +secondary+ t }
{ +listener+ t }
} define-operation
: com-reload ( error -- )
file>> run-file ;
[ compiler-error? ] \ com-reload H{
{ +listener+ t }
} define-operation
! Definitions
: com-forget ( defspec -- )
[ forget ] with-compilation-unit ;
[ definition? ] \ com-forget H{ } define-operation
2007-09-20 18:09:08 -04:00
2009-02-18 22:01:19 -05:00
[ topic? ] \ com-browse H{
{ +keyboard+ T{ key-down f { C+ } "h" } }
2007-09-20 18:09:08 -04:00
{ +primary+ t }
} define-operation
2009-01-26 19:09:04 -05:00
[ word? ] \ usage. H{
{ +keyboard+ T{ key-down f { C+ } "u" } }
{ +listener+ t }
2009-01-26 19:09:04 -05:00
} define-operation
2007-09-20 18:09:08 -04:00
[ word? ] \ fix H{
{ +keyboard+ T{ key-down f { C+ } "f" } }
2007-09-20 18:09:08 -04:00
{ +listener+ t }
} define-operation
[ annotated? not ] \ watch H{ } define-operation
[ annotated? ] \ reset H{ } define-operation
2007-09-20 18:09:08 -04:00
[ word? ] \ breakpoint H{ } define-operation
GENERIC: com-stack-effect ( obj -- )
M: quotation com-stack-effect infer. ;
2009-02-01 04:27:10 -05:00
M: word com-stack-effect 1quotation com-stack-effect ;
2007-09-20 18:09:08 -04:00
: com-enter-in ( vocab -- ) vocab-name set-current-vocab ;
2007-09-20 18:09:08 -04:00
[ vocab? ] \ com-enter-in H{
{ +listener+ t }
} define-operation
: com-use-vocab ( vocab -- ) vocab-name use-vocab ;
2007-09-20 18:09:08 -04:00
[ vocab-spec? ] \ com-use-vocab H{
{ +secondary+ t }
{ +listener+ t }
} define-operation
[ vocab-spec? ] \ run H{
{ +listener+ t }
} define-operation
[ vocab? ] \ test H{
{ +listener+ t }
} define-operation
2007-11-05 00:46:03 -05:00
[ vocab-spec? ] \ deploy-tool H{ } define-operation
2007-09-20 18:09:08 -04:00
! Quotations
[ quotation? ] \ com-stack-effect H{
{ +keyboard+ T{ key-down f { C+ } "i" } }
{ +listener+ t }
} define-operation
[ quotation? ] \ walk H{
{ +keyboard+ T{ key-down f { C+ } "w" } }
{ +listener+ t }
} define-operation
[ quotation? ] \ time H{
{ +keyboard+ T{ key-down f { C+ } "t" } }
{ +listener+ t }
} define-operation
2009-01-16 15:57:23 -05:00
: com-expand-macros ( quot -- ) expand-macros . ;
[ quotation? ] \ com-expand-macros H{
{ +keyboard+ T{ key-down f { C+ } "m" } }
{ +listener+ t }
} define-operation
! Disposables
[ disposable? ] \ dispose H{ } define-operation
! Disposables with a continuation
PREDICATE: tracked-disposable < disposable
continuation>> >boolean ;
PREDICATE: tracked-malloc-ptr < malloc-ptr
continuation>> >boolean ;
: com-creation-traceback ( disposable -- )
continuation>> traceback-window ;
[ tracked-disposable? ] \ com-creation-traceback H{ { +primary+ t } } define-operation
[ tracked-malloc-ptr? ] \ com-creation-traceback H{ { +primary+ t } } define-operation
2007-09-20 18:09:08 -04:00
! Operations -> commands
interactor
"quotation"
"These commands operate on the entire contents of the input area."
[ ]
[ quot-action ]
define-operation-map