conjure

:neovim:+:clj: https://github.com/Olical/conjure - If you're enjoying Conjure and want to say thanks: https://github.com/users/Olical/sponsorship :smile: (alt https://conjure.fun/discord)
dominicm 2020-07-26T09:09:19.030900Z

@nate fwiw, vim-jack-in can open the repl in tmux

dave 2020-07-26T12:49:10.035400Z

I think it might even be able to figure out that it's inside tmux and use tmux automagically? I remember using vim-jack-in inside tmux and being pleasantly surprised that my REPL opened in a tmux window

dominicm 2020-07-27T07:40:50.044600Z

It does, yep!

dave 2020-07-27T14:34:35.047100Z

💯

2020-07-26T15:14:04.040200Z

Is there a way to configure pretty printing at the moment? At first, I thought conjure was leveraging nrepl-middleware to print to the log buffer, but i haven't been able to do (set! nrepl.middleware.print/*print-fn* zprint.core/zprint) so perhaps not?

Olical 2020-07-27T09:20:14.044800Z

Nice! Glad to hear it! Should have it released this week too 😄

Olical 2020-07-26T15:15:03.040500Z

It is indeed using nREPL for pprint

Olical 2020-07-26T15:15:07.040700Z

One sec will check

Olical 2020-07-26T15:16:32.041Z

Conjure sends conjure.internal/pprint to the REPL on connection and sets nrepl.middleware.print/print for each eval

Olical 2020-07-26T15:16:54.041200Z

I don't think you can just set the print-fn to any old fn, I think it has to have a certain signature

Olical 2020-07-26T15:17:11.041400Z

:code (.. "(ns conjure.internal"
               "  (:require [clojure.pprint :as pp]))"
               "(defn pprint [val w opts]"
               "  (apply pp/write val"
               "    (mapcat identity (assoc opts :stream w))))")}

Olical 2020-07-26T15:17:21.041700Z

So I think it needs to take value, writer and options map.

2020-07-26T15:17:43.041900Z

hm. I was following the example here https://nrepl.org/nrepl/usage/misc.html#_pretty_printing

Olical 2020-07-26T15:17:45.042100Z

Pretty sure if you don't meet that contract it silently fails and just falls through to a default?

Olical 2020-07-26T15:18:17.042300Z

Including the zprint-pprint wrapper function?

2020-07-26T15:18:38.042500Z

it's funny they give an example of setting print-fn and then afterwards explain the wrapper. sorry if the error is between the keyboard and computer here!

Olical 2020-07-26T15:19:19.042700Z

Yeah, maybe the docs could be improved there :thinking_face: I remember being thoroughly confused when I was first implementing the print option at the nREPL message level

2020-07-26T15:26:13.042900Z

2020-07-26T15:27:21.043300Z

I tried using the wrapper, but to no effect. None of the changes seem to affect the log printing

Olical 2020-07-26T15:27:30.043500Z

:thinking_face:

Olical 2020-07-26T15:40:15.043700Z

Not really sure what's going on right now but I'm off to cook some dinner, might be worth running it past #cider or #nrepl? I feel like it's more a problem with getting that config exactly right

Olical 2020-07-26T15:45:25.044Z

Oops I accidentally slipped and made it configurable on develop with g:conjure#client#clojure#nrepl#eval#print_function. Feel free to give that a go!

2020-07-26T15:45:44.044200Z

Thanks, I'll give it a go!

2020-07-26T16:04:57.044400Z

Thanks a bunch. I was able to get it to work with that configuration. I'll continue to investigate doing it with nrepl directly though, because I wouldn't want for you to add unnecessary configuration bloat if you don't have to!