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-def ( name -- ) (fuel-word-def) fuel-eval-set-result ;
|
||||
|
||||
: fuel-vocab-help ( name -- ) (fuel-vocab-help) fuel-eval-set-result ;
|
||||
|
||||
: fuel-vocab-summary ( name -- )
|
||||
|
@ -170,4 +172,5 @@ MEMO: fuel-get-article-title ( name -- )
|
|||
dup require dup scaffold-help vocab-docs-path
|
||||
(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>
|
||||
|
||||
: (fuel-word-help) ( object -- object )
|
||||
: (fuel-word-help) ( name -- elem )
|
||||
fuel-find-word [ [ auto-use? on (fuel-word-element) ] with-scope ] [ f ] if* ;
|
||||
|
||||
: (fuel-word-see) ( word -- elem )
|
||||
[ name>> \ article swap ]
|
||||
[ [ 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-help) ( name -- str )
|
||||
|
|
|
@ -105,6 +105,7 @@ beast.
|
|||
|
||||
- C-cC-xs : extract innermost sexp (up to point) 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
|
||||
|
||||
*** 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 ?r 'fuel-refactor-extract-region)
|
||||
(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-callers)
|
||||
|
|
|
@ -141,6 +141,29 @@ word."
|
|||
(if (looking-at-p ";") (point)
|
||||
(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:
|
||||
|
||||
|
|
Loading…
Reference in New Issue