From 78c66cdec2b94809c2b393d041b53f3bac106148 Mon Sep 17 00:00:00 2001 From: Vitalie Spinu Date: Fri, 26 Sep 2014 22:34:18 -0700 Subject: [PATCH] Use `*cider-read-eval*` buffer for `cider-read-and-eval` error locations - On errors in `cider-read-and-eval` don't jump to non-existent locations but create a buffer with relevant ns-form and evaled expression - Truly use `cider-minibuffer-history` in `cider-read-from-minibuffer` --- cider-interaction.el | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/cider-interaction.el b/cider-interaction.el index 226addbd7..4729be5df 100644 --- a/cider-interaction.el +++ b/cider-interaction.el @@ -49,6 +49,7 @@ (require 'apropos) (defconst cider-error-buffer "*cider-error*") +(defconst cider-read-eval-buffer "*cider-read-eval*") (defconst cider-doc-buffer "*cider-doc*") (defconst cider-result-buffer "*cider-result*") (defconst cider-apropos-buffer "*cider-apropos*") @@ -419,7 +420,6 @@ Returns to the buffer in which the command was invoked." (cider-repl-clear-buffer) (switch-to-buffer origin-buffer))) -;;; Minibuffer eval (defvar cider-minibuffer-history '() "History list of expressions read from the minibuffer.") @@ -442,12 +442,7 @@ reading input." (run-hooks 'eval-expression-minibuffer-setup-hook)) (read-from-minibuffer prompt initial-value cider-minibuffer-map nil - cider-minibuffer-history))) - -(defun cider-read-and-eval () - "Read a sexp from the minibuffer and output its result to the echo area." - (interactive) - (cider-interactive-eval (cider-read-from-minibuffer "CIDER Eval: "))) + 'cider-minibuffer-history))) ;;; Utilities @@ -1334,6 +1329,19 @@ With a PREFIX argument, print the result in the current buffer." (goto-char (match-beginning 0)) (cider-eval-defun-at-point)))) +(defun cider-read-and-eval () + "Read a sexp from the minibuffer and output its result to the echo area." + (interactive) + (let* ((form (cider-read-from-minibuffer "CIDER Eval: ")) + (ns-form (if (cider-ns-form-p form) "" (cider-ns-form)))) + (with-current-buffer (get-buffer-create cider-read-eval-buffer) + (erase-buffer) + (clojure-mode) + (insert ns-form "\n") + (let ((start-pos (point))) + (insert form) + (cider-interactive-eval form start-pos))))) + ;; Connection and REPL