inf-clojure icon indicating copy to clipboard operation
inf-clojure copied to clipboard

inf-clojure-eval-last-sexp should respect current namespace of a file evaluating from

Open Inc0n opened this issue 3 years ago • 2 comments

Steps to reproduce the problem

Have a script with (ns <namespace> ...) at the top. Define some variables with filler values. Run C-x C-e on one of the variables. The inf-clojure repl will report

Syntax error compiling at (REPL:0:0).
Unable to resolve symbol: <variable name> in this context

## Make C-x C-e respecet the file namespace it was triggered from

This will be convenient to have.

Environment & Version information

Clojure CLI version 1.11.1.1189

inf-clojure version information

3.2.1

Lein/Boot version

clojure-cli

Emacs version

28.1

Operating system

Mac Monterey M1

Inc0n avatar Nov 12 '22 20:11 Inc0n

I'm not sure that I want this. A fundamental value proposition of inf-clojure to me is that it is dead simple and works with a standard repl. To me, I have a regular repl and inf-clojure sends simple commands. Adding this changes this assumption, and makes the client more complicated and opaque.

I'm not 100% opposed, and I would like to see what the VS Code extension Clover does in this instance.

dpsutton avatar Nov 13 '22 15:11 dpsutton

Fair enough. Here is the extension that requires cider-current-ns from CIDER to work.

(defun inf-clojure-eval-last-sexp-in-ns ()
	(interactive)
	(inf-clojure-eval-string
	 (format "(binding [*ns* (find-ns '%s)] (eval '%s))"
			 (cider-current-ns)
			 (buffer-substring
			  (save-excursion (backward-sexp) (point))
			  (point)))))

Here is a link for some more ways to get this to work (instead of using binding). https://stackoverflow.com/questions/7684656/clojure-eval-code-in-different-namespace

Inc0n avatar Nov 13 '22 15:11 Inc0n