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
|
2009-08-24 21:22:00 -04:00
|
|
|
stack-checker summary io.pathnames io.styles kernel namespaces
|
|
|
|
parser prettyprint quotations tools.crossref tools.annotations
|
2011-11-10 15:32:43 -05:00
|
|
|
editors tools.test tools.time tools.walker vocabs
|
2009-08-24 21:22:00 -04:00
|
|
|
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
|
2011-11-10 15:32:43 -05:00
|
|
|
ui.tools.inspector ui.tools.traceback
|
2009-08-24 21:22:00 -04:00
|
|
|
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
|
|
|
|
|
2009-02-05 05:00:27 -05:00
|
|
|
! Models
|
|
|
|
[ model? ] \ inspect-model H{
|
|
|
|
{ +primary+ t }
|
|
|
|
} define-operation
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2009-02-05 05:00:27 -05: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 -- )
|
2010-03-29 20:40:17 -04:00
|
|
|
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{
|
2011-10-29 17:47:33 -04:00
|
|
|
{ +keyboard+ T{ key-down f { C+ } "e" } }
|
2007-09-20 18:09:08 -04:00
|
|
|
{ +primary+ t }
|
|
|
|
{ +secondary+ t }
|
2007-11-25 04:33:46 -05:00
|
|
|
{ +listener+ t }
|
2007-09-20 18:09:08 -04:00
|
|
|
} define-operation
|
|
|
|
|
2007-12-21 21:18:24 -05:00
|
|
|
[ definition? ] \ edit H{
|
2011-10-29 17:47:33 -04:00
|
|
|
{ +keyboard+ T{ key-down f { C+ } "e" } }
|
2007-11-25 04:33:46 -05:00
|
|
|
{ +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{
|
2009-03-28 05:19:02 -04:00
|
|
|
{ +primary+ t }
|
|
|
|
{ +secondary+ t }
|
|
|
|
{ +listener+ t }
|
|
|
|
} define-operation
|
|
|
|
|
|
|
|
: com-reload ( error -- )
|
|
|
|
file>> run-file ;
|
|
|
|
|
|
|
|
[ compiler-error? ] \ com-reload H{
|
|
|
|
{ +listener+ t }
|
|
|
|
} define-operation
|
|
|
|
|
|
|
|
! Definitions
|
2007-12-24 17:32:41 -05:00
|
|
|
: 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{
|
2009-01-08 19:56:39 -05:00
|
|
|
{ +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" } }
|
2009-01-31 00:52:17 -05:00
|
|
|
{ +listener+ t }
|
2009-01-26 19:09:04 -05:00
|
|
|
} define-operation
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
[ word? ] \ fix H{
|
2009-01-08 19:56:39 -05:00
|
|
|
{ +keyboard+ T{ key-down f { C+ } "f" } }
|
2007-09-20 18:09:08 -04:00
|
|
|
{ +listener+ t }
|
|
|
|
} define-operation
|
|
|
|
|
2012-07-27 17:06:52 -04:00
|
|
|
[ 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
|
|
|
|
2009-05-14 23:31:29 -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
|
|
|
|
|
2009-05-14 23:31:29 -04:00
|
|
|
: 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
|
|
|
|
|
2009-08-24 21:22:00 -04:00
|
|
|
! 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."
|
|
|
|
[ ]
|
2009-01-15 22:34:41 -05:00
|
|
|
[ quot-action ]
|
2011-10-18 14:38:08 -04:00
|
|
|
define-operation-map
|