@nate fwiw, vim-jack-in can open the repl in tmux
:thinking_face: thank you for the information! I guess if there's LOTS of results I could be doing something inefficient while processing the results, I could definitely try to optimise that. Are there lots of results as far as you can tell? Like, thousands? LuaJIT is pretty damn fast (understatement) and all I'll be doing is mapping some strings into some tables, something that's pretty simple.
I suppose there could be some things in here I could make faster (looking at the source). But not by much, I'm wondering if I'm doing more work up front to extract the context, I guess Fireplace does the same? (like it sends the context code so you get (let [...] ...)
completions? That's unlikely to be the culprit, but let g:conjure#debug = v:true
might highlight it. It'll show how quickly the completion request is sent after you request completions at least. And how many results you're getting!
I've pushed some slight optimisations to develop for this, you may notice a difference! I've never had enough completions to cause a slow down really, so I should probably try to reproduce this and work at making that faster.
Thanks for the heads up! I wasn't planning on this time around since I recently started a new job, I won't be able to justify a mini sabbatical this early on I don't think.
One day though!
For now sponsorships are really helping my motivation, I'd eventually slide my time to be 80% workwork and 20% Conjure / OSS anyway, I used to work 4 days a week and I'd like to go back to that eventually.
1From my experience vim-jack-in
works great for this and does write the port. Here's the args I use for clojure cli (without the deps.edn part but still)
clj -A:nrepl:cider \
-m nrepl.cmdline \
--middleware "[cider.nrepl/cider-middleware]" \
--interactive
I have a feeling the interactive flag ensures the .nrepl-port file is created?
As for lein, is should definitely make the file :thinking_face:
--interactive
should create the .nrepl-port
file from clj cli fwiw 🙂 https://clojurians.slack.com/archives/CK143P6D7/p1595765542032500
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
It does, yep!
💯
Oh, wow. Thanks a bunch! I'll take a look at this as soon as I can!
I'm semi-concerned it'll make 0 difference, but I replaced a bunch of higher level function calls with much simpler direct calls out to Lua builtins.
So maybe it was my fn overhead in a tight loop that was causing it to be O(n^2) slow or something like that
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?
Nice! Glad to hear it! Should have it released this week too 😄
It is indeed using nREPL for pprint
One sec will check
Conjure sends conjure.internal/pprint
to the REPL on connection and sets nrepl.middleware.print/print
for each eval
I don't think you can just set the print-fn to any old fn, I think it has to have a certain signature
:code (.. "(ns conjure.internal"
" (:require [clojure.pprint :as pp]))"
"(defn pprint [val w opts]"
" (apply pp/write val"
" (mapcat identity (assoc opts :stream w))))")}
So I think it needs to take value, writer and options map.
hm. I was following the example here https://nrepl.org/nrepl/usage/misc.html#_pretty_printing
Pretty sure if you don't meet that contract it silently fails and just falls through to a default?
Including the zprint-pprint
wrapper function?
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!
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
I tried using the wrapper, but to no effect. None of the changes seem to affect the log printing
:thinking_face:
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
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!
Thanks, I'll give it a go!
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!