tools/eval: add REPL support for +eval/buffer

This commit is contained in:
Henrik Lissner 2019-11-15 00:17:10 -05:00
parent 6536eded02
commit c2db4a8708
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 16 additions and 10 deletions

View file

@ -56,18 +56,27 @@
(defun +eval/buffer () (defun +eval/buffer ()
"Evaluate the whole buffer." "Evaluate the whole buffer."
(interactive) (interactive)
(cond ((assq major-mode +eval-runners) (if (or (assq major-mode +eval-runners)
(+eval/region (point-min) (point-max))) (and (fboundp '+eval--ensure-in-repl-buffer)
((quickrun)))) (ignore-errors
(get-buffer-window (or (+eval--ensure-in-repl-buffer)
t)))))
(+eval/region (point-min) (point-max))
(quickrun)))
;;;###autoload ;;;###autoload
(defun +eval/region (beg end) (defun +eval/region (beg end)
"Evaluate a region between BEG and END and display the output." "Evaluate a region between BEG and END and display the output."
(interactive "r") (interactive "r")
(let ((load-file-name buffer-file-name)) (let ((load-file-name buffer-file-name))
(if-let (runner (cdr (assq major-mode +eval-runners))) (if (and (fboundp '+eval--ensure-in-repl-buffer)
(funcall runner beg end) (ignore-errors
(quickrun-region beg end)))) (get-buffer-window (or (+eval--ensure-in-repl-buffer)
t))))
(+eval/send-region-to-repl beg end)
(if-let (runner (cdr (assq major-mode +eval-runners)))
(funcall runner beg end)
(quickrun-region beg end)))))
;;;###autoload ;;;###autoload
(defun +eval/line-or-region () (defun +eval/line-or-region ()

View file

@ -6,10 +6,7 @@
"Evaluate selection or sends it to the open REPL, if available." "Evaluate selection or sends it to the open REPL, if available."
:move-point nil :move-point nil
(interactive "<r>") (interactive "<r>")
(if (and (fboundp '+eval--ensure-in-repl-buffer) (+eval/region beg end))
(+eval--ensure-in-repl-buffer))
(+eval/send-region-to-repl beg end)
(+eval/region beg end)))
;;;###autoload (autoload '+eval:replace-region "tools/eval/autoload/evil" nil t) ;;;###autoload (autoload '+eval:replace-region "tools/eval/autoload/evil" nil t)
(evil-define-operator +eval:replace-region (beg end) (evil-define-operator +eval:replace-region (beg end)