REPL: only the first expression/form is evaluated/printed
priime0 opened this issue · comments
Problem
Thanks to @soegaard for initially identifying this issue.
When interacting with the Racket REPL, I expect passing in multiple expressions/forms to evaluate/print all of them in order.
> 1 2
1
2
> (define x 1) (define y 2)
> x
1
> y
2
However, a recent change resulted in only the first expression/form to be evaluated/printed.
> 1 2
1
> (define x 1) (define y 2)
> x
1
> y
y: undefined;
cannot reference an identifier before its definition
I am filing this issue because:
- This change isn't mentioned in the commit message's "major themes".
- My workflow previously depended on multiple expressions/forms in the REPL.
Reproducing and Details
This bug was introduced in the large commit 25224889d20b37bfd0d315a656542bb4fe8c2076 Redesign REPL I/O and add racket-hash-lang-mode
. In the hash-lang
branch, this was introduced in the commit fad7adfc2583a5c3f4264cdc7e698391eb87aa15
.
Minimal reproducible configuration:
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 6))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(straight-use-package 'racket-mode)
((alist-get 'racket-mode package-alist)) ((emacs-version "29.2") (system-type gnu/linux) (x-gtk-use-system-tooltips t) (major-mode help-mode) (racket--el-source-dir "/home/priime/.emacs.d/straight/build/racket-mode/") (racket--rkt-source-dir "/home/priime/.emacs.d/straight/build/racket-mode/racket/") (racket-program "racket") (racket-command-timeout 10) (racket-path-from-emacs-to-racket-function UNDEFINED) (racket-path-from-racket-to-emacs-function UNDEFINED) (racket-browse-url-function racket-browse-url-using-temporary-file) (racket-documentation-search-location "https://docs.racket-lang.org/search/index.html?q=%s") (racket-xp-after-change-refresh-delay 1) (racket-xp-mode-lighter (:eval (racket--xp-mode-lighter))) (racket-xp-highlight-unused-regexp "^[^_]") (racket-repl-buffer-name-function nil) (racket-submodules-to-run ((test) (main))) (racket-memory-limit 2048) (racket-error-context medium) (racket-repl-history-directory "~/.emacs.d/racket-mode/") (racket-history-filter-regexp "\\`\\s *\\'") (racket-images-inline t) (racket-imagemagick-props nil) (racket-images-keep-last 100) (racket-images-system-viewer "display") (racket-pretty-print t) (racket-use-repl-submit-predicate nil) (racket-pretty-print t) (racket-indent-curly-as-sequence t) (racket-indent-sequence-depth 0) (racket-pretty-lambda nil) (racket-smart-open-bracket-enable nil) (racket-module-forms "\\s(\\(?:module[*+]?\\|library\\)") (racket-logger-config ((cm-accomplice . warning) (GC . info) (module-prefetch . warning) (optimizer . info) (racket/contract . error) (racket-mode-debugger . info) (sequence-specialization . info) (* . fatal))) (racket-show-functions (racket-show-pseudo-tooltip))) (enabled-minor-modes (auto-composition-mode) (auto-compression-mode) (auto-encryption-mode) (auto-fill-mode) (auto-save-mode) (blink-cursor-mode) (buffer-read-only) (electric-indent-mode) (file-name-shadow-mode) (font-lock-mode) (global-eldoc-mode) (global-font-lock-mode) (hs-minor-mode) (indent-tabs-mode) (isearch-fold-quotes-mode) (line-number-mode) (menu-bar-mode) (mouse-wheel-mode) (semantic-minor-modes-format) (shell-dirtrack-mode) (show-paren-mode) (straight-package-neutering-mode) (straight-use-package-mode) (tool-bar-mode) (tooltip-mode) (transient-mark-mode)) (disabled-minor-modes (abbrev-mode) (auto-fill-function) (auto-save-visited-mode) (buffer-face-mode) (button-mode) (cl-old-struct-compat-mode) (column-number-mode) (comint-fontify-input-mode) (compilation-minor-mode) (compilation-shell-minor-mode) (completion-in-region-mode) (context-menu-mode) (cursor-face-highlight-mode) (defining-kbd-macro) (eldoc-mode) (electric-layout-mode) (electric-quote-mode) (global-prettify-symbols-mode) (global-semantic-highlight-edits-mode) (global-semantic-highlight-func-mode) (global-semantic-show-parser-state-mode) (global-semantic-show-unmatched-syntax-mode) (global-semantic-stickyfunc-mode) (global-visual-line-mode) (horizontal-scroll-bar-mode) (isearch-mode) (jit-lock-debug-mode) (lock-file-mode) (lost-selection-mode) (next-error-follow-minor-mode) (overwrite-mode) (paragraph-indent-minor-mode) (prettify-symbols-mode) (read-extended-command-mode) (semantic-highlight-edits-mode) (semantic-highlight-func-mode) (semantic-mode) (semantic-show-parser-state-mode) (semantic-show-unmatched-syntax-mode) (semantic-stickyfunc-mode) (sh-electric-here-document-mode) (shell-highlight-undef-mode) (size-indication-mode) (straight-live-modifications-mode) (straight-symlink-emulation-mode) (tab-bar-history-mode) (tab-bar-mode) (temp-buffer-resize-mode) (text-scale-mode) (treesit-explore-mode) (treesit-inspect-mode) (undelete-frame-mode) (url-handler-mode) (use-hard-newlines) (view-mode) (visible-mode) (visual-line-mode) (window-divider-mode) (xref-etags-mode))
I recall being aware that was going to get dropped, and meaning to loop back later and revive it... but obviously didn't. Sorry!
I've started to dig in. I think I see how to make it work again. Already in my first quick attempt "it works".
I just want to test it more -- including against some of the various bug reports mentioned in the comments:
Although some of those might be merely adjacent, or might be N/A with the new design, I still want to double check them all before merging a commit.
I think this is ready. In my own testing it restores the desired behavior, and doesn't regress the other issues above.
@priime0 Is it convenient for you to try this from the issue-705
branch? If so, I'll wait before merging. If not, no worries, just please let me know that and I'll go ahead and merge.
Yep, I can test it out. Will probably get back to you in <12 hours. Thanks for doing this!
@greghendershott Tried it out -- all looks good! Thanks again
Thanks again for reporting and for testing! Merged.