Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Evaluating a value with custom print has weird behavior #3741

Open
Macroz opened this issue Sep 12, 2024 · 0 comments
Open

Evaluating a value with custom print has weird behavior #3741

Macroz opened this issue Sep 12, 2024 · 0 comments

Comments

@Macroz
Copy link

Macroz commented Sep 12, 2024

Hey,

I've been trying to add custom printing to my user type in ClojureScript. Evaluating a value with custom print has weird behavior, when done inside CIDER + Shadow-CLJS. If I run a plain Shadow-CLJS REPL then it just works. Also I've heard that a plain REPL also works. Therefore, I think my problem has something to do with CIDER, in how it "prints a value".

It would also help me, if you can confirm or deny the problem in a plain CLJS project with Shadow-CLJS, with "jacked-in" CIDER. Perhaps it is my user error.

See also discussion https://clojurians.slack.com/archives/C0617A8PQ/p1725863915225369

Expected behavior

A custom IPrintWithWriter (standard CLJS) can be defined for a type and the custom printed value is used by CIDER when showing a value without problem.

You should see in the following example this should print.

Actual behavior

It seems like the printing is cut at the first space since CIDER only shows this. Also special characters # and [] seem to be acting weird. Perhaps there is some kind of an encoding problem or missing escaping somewhere.

Steps to reproduce the problem

Define the type (in e.g., REPL)

(deftype TestType []
  IPrintWithWriter
  (-pr-writer [this writer _]
    (-write writer "this should print")))

Then evaluate to return a value of it:

> (TestType.)
this

NB. This works:

> (pr-str (TestType.))
"this should print"

Environment & Version information

CIDER version information

Tested with two nREPL versions.

CIDER 1.15.1 (Cogne), nREPL 1.3.0
Clojure 1.11.1, Java 17.0.12

CIDER 1.15.1 (Cogne), nREPL 1.2.0
Clojure 1.11.1, Java 17.0.12

Lein / Clojure CLI version

Leiningen 2.9.8 on Java 17.0.12 OpenJDK 64-Bit Server VM

Emacs version

GNU Emacs 28.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.16.0) of 2024-06-25, modified by Debian

Operating system

Linux beta 6.1.0-25-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.106-3 (2024-08-26) x86_64 GNU/Linux

JDK distribution

openjdk version "17.0.12" 2024-07-16
OpenJDK Runtime Environment (build 17.0.12+7-Debian-2deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.12+7-Debian-2deb12u1, mixed mode, sharing)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant