Fork me on GitHub
#squint
<
2023-11-11
>
pez22:11:35

Calva’s highlighting isn’t happy with strings being evaluated to use single quotes. Can that be changed back to use double quotes?

1
borkdude22:11:37

I'm not sure what you're talking about

borkdude22:11:12

do you mean how the result is printed? this happens through node:util/inspect - it's just how Node.js prints stuff in a REPL or with console.log

pez22:11:43

Yeah, how the results are printed. Would be nice if it stayed within the Clojure syntax for strings.

borkdude22:11:01

I'm not sure if I can change that

pez22:11:29

But understanding that it’s node:util/inspect in action I guess it goes deeper than just strings.

borkdude23:11:23

in CIDER I didn't notice any problems, but I think this is just because it doesn't use syntax highlighting for inline eval

borkdude23:11:43

I guess it would make sense to print it in a way that you can paste it back in. I did have that initially, perhaps I'll revert to that

borkdude23:11:27

no wait, I used JSON.stringify before, that also wasn't clojure syntax

pez23:11:09

Something like

(-> x js/JSON.stringify js/JSON.parse js->clj)
Would be needed maybe…

borkdude23:11:30

I could certainly try that, convert the JS value back to CLJ and then print that

borkdude23:11:40

you could try this locally I guess with squint + bb dev

borkdude23:11:53

I'm not in dev mode right now

pez23:11:53

It’s not just the syntax highlighting. The output window in Calva is a Clojure file. Calva’s parser croaks on it when quotes are used like that.

pez23:11:17

I’ll try it locally and see what gives.

pez23:11:37

I think CIDER’s repl window is also a Clojure file. So maybe it also dislikes non-clojure results.

borkdude23:11:24

I haven’t noticed problems with it but I’ll try tomorrow

borkdude11:11:02

I am trying with prn now: but I find the formatting of JS objects that are of specific classes a bit underwhelming compared to node.util/inspect

borkdude11:11:19

with node.util/inspect I get:

Response {
  [Symbol(realm)]: null,
  [Symbol(state)]: {
    aborted: false,
    rangeRequested: false,
    timingAllowPassed: true,
    requestIncludesCredentials: true,
    type: 'default',
    status: 200,
    timingInfo: {
      startTime: 421738.30520802736,
      redirectStartTime: 0,
      redirectEndTime: 0,
      postRedirectStartTime: 421738.30520802736,
      finalServiceWorkerStartTime: 0,
      finalNetworkResponseStartTime: 0,
      finalNetworkRequestStartTime: 0,
      endTime: 0,
      encodedBodySize: 0,
      decodedBodySize: 0,
      finalConnectionTimingInfo: null
    },
    cacheState: '',
    statusText: 'OK',
    headersList: HeadersList

borkdude11:11:58

anyway, it's probably better to use prn or pprint

pez12:11:53

I’m still adapting to cljs js semantics 😃 Is this a reasonable thing to return?

(frequencies (concat (range 1 2000) [1 1 1 1 2 2 2]))
=>
#js {"1" 5, "2" 4, "3" 1, "4" 1, "5" 1, "6" 1, "7" 1, "8" 1, "9" 1, "10" 1, "11" 1, "12" 1, "13" 1, "14" 1, "15" 1, "16" 1, "17" 1, "18" 1, "19" 1, "20" 1, "21" 1, "22" 1, "23" 1, "24" 1, "25" 1, "26" 1, "27" 1, "28" 1, "29" 1, "30" 1, "31" 1, "32" 1, "33" 1, "34" 1, "35" 1, "36" 1, "37" 1, "38" 1, "39" 1, "40" 1, "41" 1, "42" 1, "43" 1, "44" 1, "45" 1, "46" 1, "47" 1, "48" 1, "49" 1, "50" 1, "51" 1, "52" 1, "53" 1, "54" 1, "55" 1, "56" 1, "57" 1, "58" 1, "59" 1, "60" 1, "61" 1, "62" 1, "63" 1, "64" 1, "65" 1, "66" 1, "67" 1, "68" 1, "69" 1, "70" 1, "71" 1, "72" 1, "73" 1, "74" 1, "75" 1, "76" 1, "77" 1, "78" 1, "79" 1, "80" 1, "81" 1, "82" 1, "83" 1, "84" 1, "85" 1, "86" 1, "87" 1, "88" 1, "89" 1, "90" 1, "91" 1, "92" 1, "93" 1, "94" 1, "95" 1, "96" 1, "97" 1, "98" 1, "99" 1, "100" 1, "101" 1, "102" 1, "103" 1, "104" 1, "105" 1, "106" 1, "107" 1, "108" 1, "109" 1, "110" 1, "111" 1, "112" 1, "113" 1, "114" 1, "115" 1, "116" 1, "117" 1, "118" 1, "119" 1, "120" 1, "121" 1, "122" 1, "123" 1, "124" 1, "125" 1, "126" 1, "127" 1, "128" 1, "129" 1, "130" 1, "131" 1, "132" 1, "133" 1, "134" 1, "135" 1, "136" 1, "137" 1, "138" 1, "139" 1, "140" 1, "141" 1, "142" 1, "143" 1, "144" 1, "145" 1, "146" 1, "147" 1, "148" 1, "149" 1, "150" 1, ...} 
My pprint settings:
"calva.prettyPrintingOptions": {
    "printEngine": "pprint",
    "enabled": true,
    "width": 80,
    "maxLength": 150
  },

pez12:11:45

It’s what I get if I copy over the way we return values from the Joyride nrepl server.

borkdude12:11:59

yeah I think so

pez12:11:15

I’ll prepare a PR, if you like.

borkdude12:11:33

yeah, please do!

🙏 1
pez13:11:31

I know you get notified, @U04V15CAJ. Posting the PR link for context in this thread. https://github.com/squint-cljs/squint/pull/365

pez13:11:59

Just let me know what I can improve and all that.

borkdude13:11:46

released as 0.4.40

pez13:11:53

Haha, awesome.