http://blog.cognitect.com/blog/2017/4/17/clojure-for-neovim-for-clojure
I've been looking at using this to build a new nrepl client for vim
I was able to get it to start in < 0.9s using uberjars & some JVM options. I understand it can go down to 0.4 with the right incantation.
The startup time is not bad per Se, the problem is that at some point you will need to require the core ns of you app and that will take a while. From my tests it is average 15s to load a repl in your core ns directly. No nrepl.
15s? I've seen up to 2 minutes.
1s is fantastic
@richiardiandrea just had a chance to try your branch - works well for me!
do you have any examples for me to try where Compliment completions are superior to the simple-minded approach we took before?
@pesterhazy I have put all the options there but left it unconfigured basically. The plan is to follow what cider does and use the :context
param to get locals completions
We could also take away the plain suggestion switch (which is now there) and display namespace and meta info nicely
Are we talking about nrepl server or nrepl client startup? If it is one second for nrepl server + middleware then I am surprised 😄
oh I thought we were talking about the Socket Server
Released a new unravel version: https://github.com/pesterhazy/unravel#022 -- let me know if it works (especially installation via npm install -g unravel-repl
)
I was talking about the client 😛
I will try it out, great!
I created the unrepl github org (union for a novel repl?)
Ahah I joined
@cgrand is there a way to move a repo to an org?
I think so (in project settings) but can't confirm at the moment (unloading the car, back from holidays)
Confirmed: it's in the danger zone "transfer ownership"
So for the munging, should the blob contain a preamble of nses it wants to load? My task could generate that easily (in order) because I am already using tools.namespace
on the files
@richiardiandrea what is the purpose of this preamble?
I was thinking unrepl would need to know (and store in the state) a map of munged to unmumged unmunged to munged namespaces so that if the client wants to evaluate compliment.core/completions
it can use the munged ns instead.
nice, happy to do that for unravel
Alternatively each blob handles his own message, still need to read how this is handled now in unrepl
But then the blob becomes stateful I guess?
Thanks! I already transferred unrepl proper
> if the client wants to evaluate compliment.core/completions
it can use the munged ns instead.
User code or client code? I think client code should avoid direct calls.
@cgrand what is the alternative to direct calls? (Sorry if I am repeating something)
Message templates.
Also: with big blobs comes big latency.
I thought as much 🙂
So a middle ground is to have blobs that mostly register actions and action handlers that require ns and call actual lib. So loading of the lib is postponed until first use.
The whole actions story mostly makes sense to ease sharing (stealing?) of features between clients.
As a vim user: I heavily use the works of cider team.
Agree that I foresee a mix between server side and client loading
One question is: do server loading occurs from the server? (The server can be heavily firewalled and can't access clojars or a private repo, let alone you local file system)
But we need a good story there
Good extension story I mean
We have no extension story at the moment. Not even a bad one.