diff --git a/modules/tools/eval/autoload/eval.el b/modules/tools/eval/autoload/eval.el index 3d82bff7d..41be372c4 100644 --- a/modules/tools/eval/autoload/eval.el +++ b/modules/tools/eval/autoload/eval.el @@ -56,18 +56,27 @@ (defun +eval/buffer () "Evaluate the whole buffer." (interactive) - (cond ((assq major-mode +eval-runners) - (+eval/region (point-min) (point-max))) - ((quickrun)))) + (if (or (assq major-mode +eval-runners) + (and (fboundp '+eval--ensure-in-repl-buffer) + (ignore-errors + (get-buffer-window (or (+eval--ensure-in-repl-buffer) + t))))) + (+eval/region (point-min) (point-max)) + (quickrun))) ;;;###autoload (defun +eval/region (beg end) "Evaluate a region between BEG and END and display the output." (interactive "r") (let ((load-file-name buffer-file-name)) - (if-let (runner (cdr (assq major-mode +eval-runners))) - (funcall runner beg end) - (quickrun-region beg end)))) + (if (and (fboundp '+eval--ensure-in-repl-buffer) + (ignore-errors + (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 (defun +eval/line-or-region () diff --git a/modules/tools/eval/autoload/evil.el b/modules/tools/eval/autoload/evil.el index 801f69ee3..218b12ce6 100644 --- a/modules/tools/eval/autoload/evil.el +++ b/modules/tools/eval/autoload/evil.el @@ -6,10 +6,7 @@ "Evaluate selection or sends it to the open REPL, if available." :move-point nil (interactive "") - (if (and (fboundp '+eval--ensure-in-repl-buffer) - (+eval--ensure-in-repl-buffer)) - (+eval/send-region-to-repl beg end) - (+eval/region beg end))) + (+eval/region beg end)) ;;;###autoload (autoload '+eval:replace-region "tools/eval/autoload/evil" nil t) (evil-define-operator +eval:replace-region (beg end)