FUEL: New refactoring: inline word.
parent
0b36b8b259
commit
5909ca0bd8
|
@ -148,6 +148,8 @@ MEMO: fuel-get-article-title ( name -- )
|
||||||
|
|
||||||
: fuel-word-see ( name -- ) (fuel-word-see) fuel-eval-set-result ;
|
: fuel-word-see ( name -- ) (fuel-word-see) fuel-eval-set-result ;
|
||||||
|
|
||||||
|
: fuel-word-def ( name -- ) (fuel-word-def) fuel-eval-set-result ;
|
||||||
|
|
||||||
: fuel-vocab-help ( name -- ) (fuel-vocab-help) fuel-eval-set-result ;
|
: fuel-vocab-help ( name -- ) (fuel-vocab-help) fuel-eval-set-result ;
|
||||||
|
|
||||||
: fuel-vocab-summary ( name -- )
|
: fuel-vocab-summary ( name -- )
|
||||||
|
@ -171,3 +173,4 @@ MEMO: fuel-get-article-title ( name -- )
|
||||||
(normalize-path) fuel-eval-set-result ;
|
(normalize-path) fuel-eval-set-result ;
|
||||||
|
|
||||||
: fuel-scaffold-get-root ( name -- ) find-vocab-root fuel-eval-set-result ;
|
: fuel-scaffold-get-root ( name -- ) find-vocab-root fuel-eval-set-result ;
|
||||||
|
|
||||||
|
|
|
@ -87,13 +87,16 @@ SYMBOL: vocab-list
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
: (fuel-word-help) ( object -- object )
|
: (fuel-word-help) ( name -- elem )
|
||||||
fuel-find-word [ [ auto-use? on (fuel-word-element) ] with-scope ] [ f ] if* ;
|
fuel-find-word [ [ auto-use? on (fuel-word-element) ] with-scope ] [ f ] if* ;
|
||||||
|
|
||||||
: (fuel-word-see) ( word -- elem )
|
: (fuel-word-see) ( word -- elem )
|
||||||
[ name>> \ article swap ]
|
[ name>> \ article swap ]
|
||||||
[ [ see ] with-string-writer \ $code swap 2array ] bi 3array ; inline
|
[ [ see ] with-string-writer \ $code swap 2array ] bi 3array ; inline
|
||||||
|
|
||||||
|
: (fuel-word-def) ( name -- str )
|
||||||
|
fuel-find-word [ [ def>> pprint ] with-string-writer ] when* ; inline
|
||||||
|
|
||||||
: (fuel-vocab-summary) ( name -- str ) >vocab-link summary ; inline
|
: (fuel-vocab-summary) ( name -- str ) >vocab-link summary ; inline
|
||||||
|
|
||||||
: (fuel-vocab-help) ( name -- str )
|
: (fuel-vocab-help) ( name -- str )
|
||||||
|
|
|
@ -105,6 +105,7 @@ beast.
|
||||||
|
|
||||||
- C-cC-xs : extract innermost sexp (up to point) as a separate word
|
- C-cC-xs : extract innermost sexp (up to point) as a separate word
|
||||||
- C-cC-xr : extract region as a separate word
|
- C-cC-xr : extract region as a separate word
|
||||||
|
- C-cC-xi : replace word at point by its definition
|
||||||
- C-cC-xv : extract region as a separate vocabulary
|
- C-cC-xv : extract region as a separate vocabulary
|
||||||
|
|
||||||
*** In the listener:
|
*** In the listener:
|
||||||
|
|
|
@ -198,6 +198,7 @@ interacting with a factor listener is at your disposal.
|
||||||
(fuel-mode--key ?x ?s 'fuel-refactor-extract-sexp)
|
(fuel-mode--key ?x ?s 'fuel-refactor-extract-sexp)
|
||||||
(fuel-mode--key ?x ?r 'fuel-refactor-extract-region)
|
(fuel-mode--key ?x ?r 'fuel-refactor-extract-region)
|
||||||
(fuel-mode--key ?x ?v 'fuel-refactor-extract-vocab)
|
(fuel-mode--key ?x ?v 'fuel-refactor-extract-vocab)
|
||||||
|
(fuel-mode--key ?x ?i 'fuel-refactor-inline-word)
|
||||||
|
|
||||||
(fuel-mode--key ?d ?> 'fuel-show-callees)
|
(fuel-mode--key ?d ?> 'fuel-show-callees)
|
||||||
(fuel-mode--key ?d ?< 'fuel-show-callers)
|
(fuel-mode--key ?d ?< 'fuel-show-callers)
|
||||||
|
|
|
@ -141,6 +141,29 @@ word."
|
||||||
(if (looking-at-p ";") (point)
|
(if (looking-at-p ";") (point)
|
||||||
(fuel-syntax--end-of-symbol-pos))))
|
(fuel-syntax--end-of-symbol-pos))))
|
||||||
|
|
||||||
|
|
||||||
|
;;; Inline word:
|
||||||
|
|
||||||
|
(defun fuel-refactor--word-def (word)
|
||||||
|
(let ((def (fuel-eval--retort-result
|
||||||
|
(fuel-eval--send/wait `(:fuel* (,word fuel-word-def) "fuel")))))
|
||||||
|
(when def
|
||||||
|
(substring (substring def 2) 0 -2))))
|
||||||
|
|
||||||
|
(defun fuel-refactor-inline-word ()
|
||||||
|
"Inserts definition of word at point."
|
||||||
|
(interactive)
|
||||||
|
(let ((word (fuel-syntax-symbol-at-point)))
|
||||||
|
(unless word (error "No word at point"))
|
||||||
|
(let ((code (fuel-refactor--word-def word)))
|
||||||
|
(unless code (error "Word's definition not found"))
|
||||||
|
(fuel-syntax--beginning-of-symbol)
|
||||||
|
(kill-word 1)
|
||||||
|
(let ((start (point)))
|
||||||
|
(insert code)
|
||||||
|
(save-excursion (font-lock-fontify-region start (point)))
|
||||||
|
(indent-region start (point))))))
|
||||||
|
|
||||||
|
|
||||||
;;; Extract vocab:
|
;;; Extract vocab:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue