! Copyright (C) 2009 Jose Antonio Ortega Ruiz.
! See http://factorcode.org/license.txt for BSD license.
-USING: fuel.eval io.streams.string math namespaces random.data sequences
-tools.test ;
+USING: fuel fuel.eval io.streams.string math namespaces random.data
+sequences tools.test ;
IN: fuel.eval.tests
! Make sure prettyprint doesn't limit output.
1000 random-string fuel-eval-result set-global
[ fuel-send-retort ] with-string-writer length 1000 >
] unit-test
+
+{
+ "(nil \"IN: kernel PRIMITIVE: dup ( x -- x x )\" \"\")\n<~FUEL~>\n"
+} [
+ [
+ V{ "\"dup\"" "fuel-word-synopsis" } "scratchpad" V{ } fuel-eval-in-context
+ ] with-string-writer
+] unit-test
: fuel-vocab-help ( name -- ) (fuel-vocab-help) fuel-eval-set-result ;
-: fuel-word-synopsis ( word usings -- ) (fuel-word-synopsis) fuel-eval-set-result ;
+: fuel-word-synopsis ( word -- ) (fuel-word-synopsis) fuel-eval-set-result ;
: fuel-vocab-summary ( name -- )
(fuel-vocab-summary) fuel-eval-set-result ;
PRIVATE>
-: (fuel-word-help) ( name -- elem )
+: (fuel-word-help) ( name -- elem/f )
fuel-find-word [
[ auto-use? on (fuel-word-element) ] with-scope
] [ f ] if* ;
-: (fuel-word-synopsis) ( word usings -- str/f )
- [
- [ lookup-vocab ] filter interactive-vocabs [ append ] change
- fuel-find-word [ synopsis ] [ f ] if*
- ] with-scope ;
+: (fuel-word-synopsis) ( name -- str/f )
+ fuel-find-word [ synopsis ] [ f ] if* ;
: (fuel-word-def) ( name -- str )
fuel-find-word [ [ def>> pprint ] with-string-writer ] [ f ] if* ; inline
(let ((word (or word (factor-symbol-at-point)))
(fuel-log--inhibit-p t))
(when word
- (let* ((usings (if fuel-autodoc-eval-using-form-p :usings t))
- (cmd (if (factor-on-vocab)
- `(:fuel* (,word fuel-vocab-summary) :in t)
- `(:fuel* ((,word :usings fuel-word-synopsis)) t ,usings)))
- (ret (fuel-eval--send/wait cmd fuel-autodoc--timeout))
- (res (fuel-eval--retort-result ret)))
- (when (and ret (not (fuel-eval--retort-error ret)) (stringp res))
- (if fuel-autodoc-minibuffer-font-lock
- (factor-font-lock-string res)
- res))))))
+ (let ((cmd `(:fuel* (,word ,'fuel-word-synopsis)
+ ,(factor-current-vocab)
+ ,(factor-usings))))
+ (let* ((ret (fuel-eval--send/wait cmd fuel-autodoc--timeout))
+ (res (fuel-eval--retort-result ret)))
+ (if (not res)
+ (message "No synposis for '%s'" word)
+ (if fuel-autodoc-minibuffer-font-lock
+ (factor-font-lock-string res)
+ res)))))))
(defvar-local fuel-autodoc--fallback-function nil)