branch: elpa/racket-mode
commit 46707179d2e1f114811652fb588ccb45e5f8de9b
Author: Greg Hendershott <g...@greghendershott.com>
Commit: Greg Hendershott <g...@greghendershott.com>

    racket-send-last-sexp: Don't insert \n; fixes #745
    
    Note: This drops an option that "echoes" the expression to the REPL.
    Doing so proactively is wrong for the same reason it's wrong to insert
    a newline proactively. To revive such a feature, the back end would
    need to hold onto this expression text in the interactions queue, and
    send it back later using repl-output-comment just prior to the
    repl-output-value. At the moment this seems like too much work for a
    an option that I don't know if anyone is even using, so I'm taking the
    approach of waiting to see if anyone actually notices or cares.
---
 doc/racket-mode.texi |  4 ----
 racket-repl.el       | 35 +++++++++--------------------------
 2 files changed, 9 insertions(+), 30 deletions(-)

diff --git a/doc/racket-mode.texi b/doc/racket-mode.texi
index b03fe7a339..7c6fc26fab 100644
--- a/doc/racket-mode.texi
+++ b/doc/racket-mode.texi
@@ -2772,10 +2772,6 @@ The expression may be either an at-expression or an 
s-expression.
 When the expression is a sexp comment, the sexp itself is sent,
 without the #; prefix.
 
-With a prefix argument (e.g. @kbd{C-u}  @kbd{C-x C-e} ), the sexp is copied
-into the REPL, followed by a ``=>'' line, to distinguish it
-from the zero or more values to which it evaluates.
-
 @node Collections
 @section Collections
 
diff --git a/racket-repl.el b/racket-repl.el
index 90644be7e0..c095f227d6 100644
--- a/racket-repl.el
+++ b/racket-repl.el
@@ -278,13 +278,13 @@ live prompt this marker will be at `point-max'.")
              (setq moving t)        ;leave point after, for tests
              (setq racket--repl-session-id nil))
             ('value
-             (insert-faced value 'racket-repl-value t))
+             (insert-faced value 'racket-repl-value))
             ('value-special
              (pcase value
                (`(image . ,file)
                 (racket--repl-insert-image file))
                (value
-                (insert-faced (format "%s" value) 'racket-repl-value t))))
+                (insert-faced (format "%s" value) 'racket-repl-value))))
             ('error
              (pcase value
                (`(,msg ,srclocs (,context-kind . ,context-names-and-locs))
@@ -336,6 +336,7 @@ live prompt this marker will be at `point-max'.")
           ;; When stdout/stderr output ends with prompt following on
           ;; same line, push the prompt down to its own line.
           (when (and (memq kind '(stdout stderr))
+                     (not (equal "\n" (substring value -1 nil)))
                      racket--repl-prompt-mark
                      (equal (point) (marker-position 
racket--repl-prompt-mark)))
             (insert (propertize "\n"
@@ -990,7 +991,7 @@ If no buffer is visting the file, `find-file' it in 
`other-window'."
 
 ;;; send to REPL
 
-(defun racket--send-region-to-repl (start end &optional echo-p)
+(defun racket--send-region-to-repl (start end)
   "Internal function to send the region to the Racket REPL.
 
 Requires the REPL already to be started, e.g. from a run command.
@@ -1009,19 +1010,7 @@ see the results."
   (let ((source-buffer (current-buffer)))
     (racket--repl-forget-errors)
     (with-racket-repl-buffer
-      (save-excursion
-        (racket--repl-delete-prompt-mark nil)
-        (goto-char (point-max))
-        (insert ?\n)
-        (when echo-p
-          (insert (with-current-buffer source-buffer
-                    (buffer-substring start end)))
-          (insert (propertize "\n=>\n"
-                              'font-lock-face 'racket-repl-message)))
-        (add-text-properties racket--repl-output-mark (point)
-                             (list 'field 'send
-                                   'read-only t))
-        (set-marker racket--repl-output-mark (point))))
+      (racket--repl-delete-prompt-mark nil))
     (racket--cmd/async (racket--repl-session-id)
                        `(repl-submit ,(with-current-buffer source-buffer
                                         (buffer-substring-no-properties start 
end))))
@@ -1045,23 +1034,17 @@ see the results."
       (beginning-of-defun)
       (racket--send-region-to-repl (point) end))))
 
-(defun racket-send-last-sexp (&optional prefix)
+(defun racket-send-last-sexp ()
   "Send the expression before point to the Racket REPL.
 
 The expression may be either an at-expression or an s-expression.
 
 When the expression is a sexp comment, the sexp itself is sent,
-without the #; prefix.
-
-\\<racket-mode-map>
-With a prefix argument (e.g. \\[universal-argument] 
\\[racket-send-last-sexp]), the sexp is copied
-into the REPL, followed by a \"=>\" line, to distinguish it
-from the zero or more values to which it evaluates."
-  (interactive "P")
+without the #; prefix."
+  (interactive)
   (racket--assert-sexp-edit-mode)
   (racket--send-region-to-repl (racket--start-of-previous-expression)
-                               (point)
-                               prefix))
+                               (point)))
 
 (defun racket-eval-last-sexp ()
   "Eval the expression before point asynchronously.

Reply via email to