Fork me on GitHub
#unrepl
<
2018-02-26
>
cgrand11:02:17

Ok, over the weekend I’ve worked on simplifying blob generation. The resulting blob is easier to read (for a human) and I guess the generator is easier to understand too.

cgrand12:02:59

summary: 1/ find resources for the class and a source file (clj or else cljc) 2/ if .class is strictly more recent (or not found) then try to load it as a class [Comment #1] 3/ if sucess done 4/ if there was a source file, load it

cgrand12:02:28

[Comment #1] great it means that classes go over the network twice, once for the timestamp (that we don’t provide and time is relative) once for actual loading [AOT sucks]

cgrand12:02:45

It may explain why @gcast find loading libs through the network super slow (iirc you wree loading from an AOT compiled uberjar, no?)

cgrand15:02:24

If anyone is looking for a project: mix https://github.com/djpowell/liverepl and unrepl

dominicm15:02:23

that looks fun

kotarak20:02:38

@dominicm The code is now online. But it doesn't work, yet. Only manually sending stuff. And appending (part of) the response to the current buffer.

kotarak20:02:59

side loading works, though. 😄

kotarak20:02:36

EDN is a bit of a pain, though. In particalur the actions being actual clojure code.

kotarak20:02:49

Vim (and a lot of other languages, I fancy) doesn't have lists and vectors. Similar for symbols. So I had to introduce quite a bit of magic tagging to make these identifyable.

kotarak20:02:18

For normal data it might not be that of a big deal. You loose a bit. But for code things are not that easy. You mustn't loose info.

kotarak20:02:48

However, It should work now. Albeit inefficient and probably half-broken.

cgrand20:02:11

I know this slippery slope, we went down it once. It ended with bencode.

cgrand20:02:31

I think that @pesterhazy had to do some tagging even with cljs.

cgrand20:02:40

A vague memory

kotarak20:02:10

Anyway, the response works really well.

kotarak20:02:30

I'll probably need some load testing, but things are otherwise smooth.

cgrand20:02:49

The response?

kotarak20:02:04

The side loading was very easy to implement, inparticular.

kotarak20:02:10

The response processing, I meant.

kotarak20:02:44

For the loader it was just to get things set up correctly.

kotarak20:02:55

Then it was a breeze.

kotarak20:02:27

Now I'll have to retrofit the asyncronicity to all kinds of interaction.

kotarak20:02:55

It should work for most. Eg. for doc lookup or macro expansion, one should not find a difference.

kotarak20:02:27

The only thing I already know will be troublesome is the completion.

kotarak21:02:51

It seems the internet delivered already on the latter. Although I always read "python". shiver

kotarak22:02:47

Asyncronuous completion.

kotarak22:02:34

There seem to be some dark voodoo incantations to make it happen. So, off we go, Lord Samedi.

dominicm22:02:13

@kotarak probably worth looking at hooking deocomplete and nvim completion manager

kotarak22:02:51

"python" is for me a no-go.

kotarak22:02:59

If there is a way without, we'll see.