Fork me on GitHub
#vim
<
2017-02-13
>
mikepjb11:02:14

Hey guys, I’ve been working on an asynchronous repl tool like fireplace for vim, feel free to have a look https://github.com/michaelbruce/vim-link

dominicm12:02:30

Interesting, @ingvij might be interested ^^

dominicm12:02:45

We should probably all try & convene at some point and agree on a good approach to this async nrepl stuff 😛

dominicm12:02:54

@mikepjb Feel free to use https://github.com/clojure-vim/nrepl-python-client as a submodule for python stuff, It's pretty well battle tested now

dominicm12:02:20

It's used in both Acid.nvim & async-clj-omni & I've found + fixed a lot of bugs

dominicm12:02:49

A lot of bencode implementations I found (including the one I forked from) didn't handle utf-8 properly.

mikepjb14:02:32

ah thanks @dominicm I’ll have a look - I’m using vim 8 at the moment so I’m not sure whether this plugin is compatible?

mikepjb14:02:58

would definitely be interested to join in async nrepl discussions

dominicm14:02:52

nrepl-python-client is a generic python client. It's not coupled to vim8/neovim/anything

dominicm14:02:00

And, to my knowledge actually works with both Py2 & Py3

dominicm14:02:16

@mikepjb out of interest why VimL8? (I tease only of course, particularly now I know we share a British sense of humour which is built on sarcasm)

dominicm14:02:39

Actually, more I think about it, the nrepl-python-client is really good for vim8, because of the generic channels feature.

mikepjb14:02:12

I found nvim to be subpar - embedded terminals have performance issues, you cannot configure control over external programs like selecta (which I use as a fuzzy searching tool) easily

mikepjb14:02:43

the tldr is that all the listed advantages don’t seem to be worth it currently

dominicm14:02:49

If you created a watcher & hooked it up to Vim's er... is it JSON-RPC-like or something? If you hooked it up to that you could do some really interested core.async-like stuff.

dominicm14:02:04

I dunno, inccommand is pretty great 😉

mikepjb14:02:21

I don’t know what that is haha

dominicm14:02:31

Real-time previews of :s/foo/bar

dominicm14:02:24

Interesting what you say about the external programs… Selecta is very similar to Fzf, which does work in Neovim, though I think there was some tweaking to make it so. So I can understand that.

mikepjb14:02:51

fzf works by using the embedded terminal feature in nvim unless I’m mistaken

dominicm14:02:11

It detects neovim & uses the embedded terminal, yeah

mikepjb14:02:24

selecta should be able to do the same but it’d require work

mikepjb14:02:50

yeah nvim is an interesting project, I can’t imagine it’ll be too long before I jump ship

dominicm14:02:10

I think there's an issue on the fzf gh where there's a reference to the surprisingly small amount of changes it required to fzf.

mikepjb14:02:35

I really like the ability to write plugins using clojurescript and hosting on nodejs that’s pretty exciting

dominicm14:02:50

I think the general sentiment about the breaking compat change that the neovim made was that: - Vim never gave guarantees on STDIN - GVim doesn't actually work with STDIN

dominicm14:02:14

So giving :term was a guranteed working with STDIN

dominicm14:02:46

Yeah, the remote plugin host stuff is really interesting.

dominicm14:02:14

Especially now lumo is a thing, that would be a really interesting way to build an nREPL client.

mikepjb14:02:48

yeah I’d been toying around with bootstrapping with lumo to install arch https://github.com/michaelbruce/arch-installer/blob/master/install.cljs

mikepjb14:02:37

and seeing the stuff you can do with mach is nice

dominicm14:02:47

Oh neat! Here at JUXT @malcolmsparks has been using it to write Mach for deploying infrastructure & building— ah you know 😛

dominicm14:02:16

@jonpither is currently building https://github.com/juxt/roll to work with Mach as well.

mikepjb14:02:19

yeah @malcolmsparks showed us a little bit during his yada talk at codenode

dominicm14:02:44

Ah, you went to that, makes sense. I caught it on the weekend. He mentioned me 😊

mikepjb14:02:51

what is roll? the readme isn’t very informative

dominicm14:02:25

Bascially a bunch of stuff for working with terraform & templating in cljs.

mikepjb14:02:26

as in ‘rollout’ to a new env uat/prod

dominicm14:02:46

I'm guessing so, I wasn't able to get a particularly solid answer about what it was 😛

dominicm14:02:15

The policy in JUXT is that all projects must be 4 chars. So that shortening makes sense.

mikepjb14:02:05

oh wow I never realised

dominicm14:02:27

bidi, yada, mach, roll, aero, baby. These are all under the 4-letter rules.

dominicm14:02:46

Also tick & edge

dominicm14:02:36

Only major project still about that doesn't conform is Joplin. Which is somewhere between JUXTer & JUXT project.

dominicm15:02:16

Given that Python seems to be the most popular way to be doing vim + nrepl, I'll throw this in as a "no dependencies required" example of what I've been playing with: https://github.com/SevereOverfl0w/clojure-check which is based on Go, so you could just grab a binary for your platform.

mikepjb15:02:23

I’ll save this for later

dominicm15:02:10

I'd find it very interesting to see a no-dependencies nrepl client thing, based entirely on jobs so it could run on both neovim & vim8 with minimal work