just to give a bit of context around why I would use compliment for completions: https://github.com/alexander-yakushev/compliment/wiki/Examples
@richiardiandrea is it possible to squish all of it into a blob?
All clojure can go in a blob right? something something the network something something lisp machines
probably yes, no deps there https://github.com/alexander-yakushev/compliment/blob/master/project.clj
the compilment project's project.clj is very encouraging - it's essential empty
jinx
lol
we should probably think about a lein/boot little thing to create blobs 😄
I did something back in the days for collecting source files for bootstrapped cljs: https://github.com/Lambda-X/boot-pack-source
there already is https://github.com/cgrand/unrepl/blob/master/tasks/leiningen/unrepl_make_blob.clj
do not if it can work, will try for sure
well this does resolution and filtering of source files: https://github.com/Lambda-X/boot-pack-source/blob/master/src/replumb/boot_pack_source.clj#L136
https://github.com/Lambda-X/boot-pack-source/blob/master/src/replumb/boot_pack_source.clj#L93
we also need gensym'ed namespaces for isoluation
yeah...that is true
I wonder if https://github.com/typedclojure/mranderson code can come in handy as well
The more I think of it, the more I like the idea of a boot-unrepl
lib containg basically only the adapted code from the Christoper above that concatenates the blob, it would be also a good idea so that we can test how slow the bootstrap of complicated things is. I hope I will have some time soon.
Also the gensym thing can be actually a problem in case of compliment: we cannot then use the gensym-ed namespace from tooling
The blob could do some self-check in order to be able to detect if the namespace is already required server side...and avoid doing the eval
if positive
that'd be cool, though what about different concurrent blobs included at the same time?
unrepl.el using v1, unrepl.vim using v2
an unrepl extension could provide access to the compliment api by providing forms in the hello
essentially wrap the blob'ed api in something consistent for that particular repl session
cool idea too, it complicates things a bit because now you need to wrap eval so that it reads namespace mappings from the state (if I understand the idea correctly)
Not sure how clients are looking. But I was thinking you would reach into the :unrepl/hello
to find the functions you want from compliment.
with message templates https://github.com/cgrand/unrepl#message-templates
in any case yes, it looks like the extension model needs to be per session if we want to send different blobs per client, did not think about that
Things to note about the current implementation: • gensyms are static • they should not be random but content-dependent so as to reflect a whole configuration.
So more hashsyms than gensyms.