FUEL: Better word extraction.
parent
b3b4d0bf7c
commit
3b44c824ee
|
@ -74,7 +74,8 @@ beast.
|
|||
- C-cM-<, C-cC-d< : show callers of word at point
|
||||
- C-cM->, C-cC-d> : show callees of word at point
|
||||
|
||||
- C-cC-xw : extract region 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
|
||||
|
||||
*** In the listener:
|
||||
|
||||
|
|
|
@ -225,7 +225,8 @@ interacting with a factor listener is at your disposal.
|
|||
(fuel-mode--key ?e ?w 'fuel-edit-word)
|
||||
(fuel-mode--key ?e ?x 'fuel-eval-definition)
|
||||
|
||||
(fuel-mode--key ?x ?w 'fuel-refactor-extract-word)
|
||||
(fuel-mode--key ?x ?s 'fuel-refactor-extract-sexp)
|
||||
(fuel-mode--key ?x ?r 'fuel-refactor-extract-region)
|
||||
|
||||
(fuel-mode--key ?d ?> 'fuel-show-callees)
|
||||
(fuel-mode--key ?d ?< 'fuel-show-callers)
|
||||
|
|
|
@ -20,23 +20,13 @@
|
|||
|
||||
;;; Extract word:
|
||||
|
||||
(defun fuel-refactor-extract-word (begin end)
|
||||
"Extracts current region as a separate word."
|
||||
(interactive "r")
|
||||
(defun fuel-refactor--extract (begin end)
|
||||
(let* ((word (read-string "New word name: "))
|
||||
(begin (save-excursion
|
||||
(goto-char begin)
|
||||
(when (zerop (skip-syntax-backward "w"))
|
||||
(skip-syntax-forward "-"))
|
||||
(point)))
|
||||
(end (save-excursion
|
||||
(goto-char end)
|
||||
(skip-syntax-forward "w")
|
||||
(point)))
|
||||
(code (buffer-substring begin end))
|
||||
(code-str (fuel--region-to-string begin end))
|
||||
(stack-effect (or (fuel-stack--infer-effect code-str)
|
||||
(read-string "Stack effect: "))))
|
||||
(unless (< begin end) (error "No proper region to extract"))
|
||||
(goto-char begin)
|
||||
(delete-region begin end)
|
||||
(insert word)
|
||||
|
@ -52,6 +42,29 @@
|
|||
(sit-for fuel-stack-highlight-period)
|
||||
(delete-overlay fuel-stack--overlay))))
|
||||
|
||||
(defun fuel-refactor-extract-region (begin end)
|
||||
"Extracts current region as a separate word."
|
||||
(interactive "r")
|
||||
(let ((begin (save-excursion
|
||||
(goto-char begin)
|
||||
(when (zerop (skip-syntax-backward "w"))
|
||||
(skip-syntax-forward "-"))
|
||||
(point)))
|
||||
(end (save-excursion
|
||||
(goto-char end)
|
||||
(skip-syntax-forward "w")
|
||||
(point))))
|
||||
(fuel-refactor--extract begin end)))
|
||||
|
||||
(defun fuel-refactor-extract-sexp ()
|
||||
"Extracts current innermost sexp (up to point) as a separate
|
||||
word."
|
||||
(interactive)
|
||||
(fuel-refactor-extract-region (1+ (fuel-syntax--beginning-of-sexp-pos))
|
||||
(if (looking-at-p ";") (point)
|
||||
(fuel-syntax--end-of-symbol-pos))))
|
||||
|
||||
|
||||
|
||||
(provide 'fuel-refactor)
|
||||
;;; fuel-refactor.el ends here
|
||||
|
|
Loading…
Reference in New Issue