! Evaluation status:
-TUPLE: fuel-status in use ds? restarts ;
+TUPLE: fuel-status in use restarts ;
SYMBOL: fuel-status-stack
V{ } clone fuel-status-stack set-global
f fuel-eval-res-flag set-global ; inline
: push-fuel-status ( -- )
- in get use get clone display-stacks? get restarts get-global clone
+ in get use get clone restarts get-global clone
fuel-status boa
fuel-status-stack get push ;
fuel-status-stack get pop {
[ in>> in set ]
[ use>> clone use set ]
- [ ds?>> display-stacks? swap [ on ] [ off ] if ]
[
restarts>> fuel-eval-restartable? [ drop ] [
clone restarts set-global
error get
fuel-eval-result get-global
fuel-eval-output get-global
- 3array fuel-pprint flush nl "EOT:" write ;
+ 3array fuel-pprint flush nl "<~FUEL~>" write nl flush ;
: fuel-forget-error ( -- ) f error set-global ; inline
: fuel-forget-result ( -- ) f fuel-eval-result set-global ; inline
: (fuel-begin-eval) ( -- )
push-fuel-status
- display-stacks? off
fuel-forget-error
fuel-forget-result
fuel-forget-output ;
: (fuel-end-eval) ( quot -- )
- with-string-writer fuel-eval-output set-global
- fuel-retort pop-fuel-status ; inline
+ with-string-writer fuel-eval-output set-global fuel-retort
+ pop-fuel-status ; inline
: (fuel-eval) ( lines -- )
[ [ parse-lines ] with-compilation-unit call ] curry
: fuel-end-eval ( -- ) [ ] (fuel-end-eval) ; inline
+: fuel-run-file ( path -- ) run-file ; inline
+
+! Edit locations
+
: fuel-get-edit-location ( defspec -- )
where [
first2 [ (normalize-path) ] dip 2array fuel-eval-set-result
: fuel-get-vocab-location ( vocab -- )
>vocab-link fuel-get-edit-location ; inline
+! Completion support
+
+: fuel-filter-prefix ( seq prefix -- seq )
+ [ drop-prefix nip length 0 = ] curry filter prune ; inline
+
: (fuel-get-vocabs) ( -- seq )
all-vocabs-seq [ vocab-name ] map ; inline
: fuel-get-vocabs ( -- )
(fuel-get-vocabs) fuel-eval-set-result ; inline
+: fuel-get-vocabs/prefix ( prefix -- )
+ (fuel-get-vocabs) swap fuel-filter-prefix fuel-eval-set-result ; inline
+
+: fuel-vocab-summary ( name -- )
+ >vocab-link summary fuel-eval-set-result ; inline
+
MEMO: (fuel-vocab-words) ( name -- seq )
>vocab-link words [ name>> ] map ;
: (fuel-get-words) ( prefix names/f -- seq )
[ fuel-vocabs-words ] [ fuel-current-words ] if* natural-sort
- swap [ drop-prefix nip length 0 = ] curry filter ;
+ swap fuel-filter-prefix ;
: fuel-get-words ( prefix names -- )
(fuel-get-words) fuel-eval-set-result ; inline
-: fuel-run-file ( path -- ) run-file ; inline
+
+! -run=fuel support
: fuel-startup ( -- ) "listener" run-file ; inline