1 ! Copyright (C) 2008, 2009 Jose Antonio Ortega Ruiz.
2 ! See http://factorcode.org/license.txt for BSD license.
4 USING: accessors assocs compiler.units continuations fuel.eval fuel.help
5 fuel.remote fuel.xref help.topics io.pathnames kernel math namespaces parser
6 sequences tools.scaffold vocabs.loader ;
12 : fuel-eval-restartable ( -- )
13 t fuel-eval-res-flag set-global ; inline
15 : fuel-eval-non-restartable ( -- )
16 f fuel-eval-res-flag set-global ; inline
18 : fuel-eval-in-context ( lines in usings -- )
19 (fuel-eval-in-context) ;
21 : fuel-eval-set-result ( obj -- )
22 clone fuel-eval-result set-global ; inline
24 : fuel-retort ( -- ) fuel-send-retort ; inline
31 SYMBOL: :uses-suggestions
33 : is-use-restart ( restart -- ? )
34 name>> [ "Use the " head? ] [ " vocabulary" tail? ] bi and ;
36 : get-restart-vocab ( restart -- vocab )
37 [ "Use the " length ] dip
38 name>> [ length " vocabulary" length - ] keep
41 : is-suggested-restart ( restart -- ? )
43 get-restart-vocab :uses-suggestions get member?
46 : try-suggested-restarts ( -- )
47 restarts get [ is-suggested-restart ] filter
48 dup length 1 = [ first restart ] [ drop ] if ;
50 : fuel-set-use-hook ( -- )
51 [ amended-use get clone :uses prefix fuel-eval-set-result ]
54 : (fuel-get-uses) ( lines -- )
55 [ parse-fresh drop ] curry with-compilation-unit ; inline
59 : fuel-use-suggested-vocabs ( ... suggestions quot: ( ... -- ... ) -- ... )
60 [ :uses-suggestions set ] dip
61 [ try-suggested-restarts rethrow ] recover ;
63 : fuel-run-file ( path -- )
64 [ fuel-set-use-hook run-file ] curry with-scope ; inline
66 : fuel-with-autouse ( ... quot: ( ... -- ... ) -- ... )
67 [ auto-use? on fuel-set-use-hook call ] curry with-scope ; inline
69 : fuel-get-uses ( lines -- )
70 [ (fuel-get-uses) ] curry fuel-with-autouse ;
74 : fuel-get-word-location ( word -- )
75 word-location fuel-eval-set-result ;
77 : fuel-get-vocab-location ( vocab -- )
78 vocab-location fuel-eval-set-result ;
80 : fuel-get-doc-location ( word -- )
81 doc-location fuel-eval-set-result ;
83 : fuel-get-article-location ( name -- )
84 article-location fuel-eval-set-result ;
86 : fuel-get-vocabs ( -- )
87 get-vocabs fuel-eval-set-result ;
89 : fuel-get-vocabs/prefix ( prefix -- )
90 get-vocabs/prefix fuel-eval-set-result ;
92 : fuel-get-words ( prefix names -- )
93 get-vocabs-words/prefix fuel-eval-set-result ;
97 : fuel-callers-xref ( word -- ) callers-xref fuel-eval-set-result ;
99 : fuel-callees-xref ( word -- ) callees-xref fuel-eval-set-result ;
101 : fuel-apropos-xref ( str -- ) apropos-xref fuel-eval-set-result ;
103 : fuel-vocab-xref ( vocab -- ) vocab-xref fuel-eval-set-result ;
105 : fuel-vocab-uses-xref ( vocab -- ) vocab-uses-xref fuel-eval-set-result ;
107 : fuel-vocab-usage-xref ( vocab -- ) vocab-usage-xref fuel-eval-set-result ;
111 : fuel-get-article ( name -- ) article fuel-eval-set-result ;
113 : fuel-get-article-title ( name -- )
114 articles get at [ article-title ] [ f ] if* fuel-eval-set-result ;
116 : fuel-word-help ( name -- ) (fuel-word-help) fuel-eval-set-result ;
118 : fuel-word-see ( name -- ) (fuel-word-see) fuel-eval-set-result ;
120 : fuel-word-def ( name -- ) (fuel-word-def) fuel-eval-set-result ;
122 : fuel-vocab-help ( name -- ) (fuel-vocab-help) fuel-eval-set-result ;
124 : fuel-word-synopsis ( word usings -- ) (fuel-word-synopsis) fuel-eval-set-result ;
126 : fuel-vocab-summary ( name -- )
127 (fuel-vocab-summary) fuel-eval-set-result ;
129 : fuel-index ( quot -- ) call( -- seq ) format-index fuel-eval-set-result ;
131 : fuel-get-vocabs/tag ( tag -- )
132 (fuel-get-vocabs/tag) fuel-eval-set-result ;
134 : fuel-get-vocabs/author ( author -- )
135 (fuel-get-vocabs/author) fuel-eval-set-result ;
139 : fuel-scaffold-vocab ( root name devname -- )
140 developer-name set dup [ scaffold-vocab ] dip
141 dup require vocab-source-path (normalize-path) fuel-eval-set-result ;
143 : fuel-scaffold-help ( name devname -- )
145 dup require dup scaffold-help vocab-docs-path
146 (normalize-path) fuel-eval-set-result ;
148 : fuel-scaffold-get-root ( name -- ) find-vocab-root fuel-eval-set-result ;
152 MAIN: fuel-start-remote-listener*