@@ -452,7 +452,8 @@ reading input."
452
452
The two arguments START and END are character positions;
453
453
they can be in either order."
454
454
(interactive " r" )
455
- (cider-interactive-eval (buffer-substring-no-properties start end)))
455
+ (let ((code (buffer-substring-no-properties start end)))
456
+ (cider-interactive-eval code start)))
456
457
457
458
(defun cider-eval-buffer ()
458
459
" Evaluate the current buffer."
@@ -477,10 +478,11 @@ they can be in either order."
477
478
" Evaluate the current toplevel form, and print result in the minibuffer.
478
479
With a PREFIX argument, print the result in the current buffer."
479
480
(interactive " P" )
480
- (let ((form (cider-defun-at-point)))
481
+ (let ((form (cider-defun-at-point))
482
+ (start-pos (car (cider--region-for-defun-at-point))))
481
483
(if prefix
482
484
(cider-interactive-eval-print form)
483
- (cider-interactive-eval form))))
485
+ (cider-interactive-eval form start-pos ))))
484
486
485
487
(defun cider-ns-form ()
486
488
" Retrieve the ns form."
@@ -540,6 +542,11 @@ With a PREFIX argument, print the result in the current buffer."
540
542
(point ))
541
543
(point )))
542
544
545
+ (defun cider-last-sexp-start-pos ()
546
+ (save-excursion
547
+ (backward-sexp )
548
+ (point )))
549
+
543
550
; ;;
544
551
(defun cider-tramp-prefix (&optional buffer )
545
552
" Use the filename for BUFFER to determine a tramp prefix.
@@ -1291,13 +1298,31 @@ When invoked with a prefix ARG the command doesn't prompt for confirmation."
1291
1298
(cider-interactive-eval-print-handler buffer)
1292
1299
(cider-current-ns))))
1293
1300
1294
- (defun cider-interactive-eval (form )
1301
+ (defun cider--dummy-file-contents (form start-pos )
1302
+ (let ((current-ns (cider-current-ns))
1303
+ (start-line (line-number-at-pos start-pos)))
1304
+ (with-temp-buffer
1305
+ (insert (format " (ns %s ) " current-ns))
1306
+ (dotimes (_ (1- start-line))
1307
+ (insert " \n " ))
1308
+ (insert form)
1309
+ (buffer-string ))))
1310
+
1311
+ (defun cider-interactive-eval (form &optional start-pos )
1295
1312
" Evaluate the given FORM and print value in minibuffer."
1296
1313
(cider--clear-compilation-highlights)
1297
- (let ((buffer (current-buffer )))
1298
- (cider-eval form
1299
- (cider-interactive-eval-handler buffer)
1300
- (cider-current-ns))))
1314
+ (let ((buffer (current-buffer ))
1315
+ (filename (buffer-file-name )))
1316
+ (if buffer-file-name
1317
+ (nrepl-send-request (list " op" " load-file"
1318
+ " session" (nrepl-current-session)
1319
+ " file" (cider--dummy-file-contents form start-pos)
1320
+ " file-path" (funcall cider-to-nrepl-filename-function (cider--server-filename filename))
1321
+ " file-name" (file-name-nondirectory filename))
1322
+ (cider-interactive-eval-handler buffer))
1323
+ (cider-eval form
1324
+ (cider-interactive-eval-handler buffer)
1325
+ (cider-current-ns)))))
1301
1326
1302
1327
(defun cider-interactive-eval-to-repl (form )
1303
1328
" Evaluate the given FORM and print it's value in REPL buffer."
@@ -1312,7 +1337,7 @@ If invoked with a PREFIX argument, print the result in the current buffer."
1312
1337
(interactive " P" )
1313
1338
(if prefix
1314
1339
(cider-interactive-eval-print (cider-last-sexp))
1315
- (cider-interactive-eval (cider-last-sexp))))
1340
+ (cider-interactive-eval (cider-last-sexp) (cider-last-sexp-start-pos) )))
1316
1341
1317
1342
(defun cider-eval-last-sexp-and-replace ()
1318
1343
" Evaluate the expression preceding point and replace it with its result."
0 commit comments