Fork me on GitHub
#vim
<
2017-03-22
>
dominicm09:03:40

@kotarak Planning to implement unrepl on it?

dominicm10:03:49

Awesome 😄. Lots of "competition" in this space now.

kotarak10:03:13

There is? I'm not uptodate there.

dominicm10:03:33

clojure-vim has become a bit of organization for the vim/clojure group.

dominicm10:03:43

Also vim-fireplace of course.

kotarak10:03:10

The neovim stuff has many moving parts....

dominicm11:03:39

@kotarak Not sure I follow?

kotarak11:03:49

I see there python/pip and such things. That's a pain on the company machine.

dominicm11:03:27

@kotarak For acid, there is python/pip. if_python has been moved to being an external module (not compiled into vim).

dominicm11:03:09

This allows extensions to be written in any language though. For example https://github.com/clojure-vim/clj-refactor.nvim and https://github.com/clojure-vim/nvim-parinfer.js are written in cljs

kotarak11:03:14

There I read something about node.js IIRC. That's what I meant with moving parts. Just an observation.

dominicm11:03:51

You can definitely take on more moving parts. Plain ol' vim can in much the same way really (see YCM) anything that requires a language ecosystem to work will have those moving parts. It's up to plugin authors to try minimize those where they can.

dominicm11:03:38

I'm sort of coming round to the idea of Go/Rust/(Chicken?) being the ideal languages for writing async components of Vim plugins. Just because they're a cross platform statically compiled binary with minimal fluff.

mikepjb15:03:39

everything is better with ice you guys 😉

mikepjb15:03:59

we have lots of competition

hkupty15:03:23

That is great!

dominicm15:03:14

Ruby now too? 😆 There's nothing if not choice

dominicm15:03:28

@mikepjb Are you going for the 3 letter thing?

mikepjb15:03:18

haha yeah I tried in anger to write the project in clojurescript on node but it proved too difficult

mikepjb15:03:35

I know ruby so there is much less of a barrier testing everything/working with sockets etcetc

mikepjb15:03:44

no vimscript so far too haha 100% ruby 😉

dominicm15:03:05

Because of node? Cljs? Or node-host?

hkupty15:03:14

> no vimscript so far too haha 100% ruby And that is the beauty of neovim...

mikepjb15:03:12

mixed bag - 1. my own unfamiliarity with node, 2. having issues running integration tests that run on node against a running repl and yes finally 3. node-host combined with having to compile the project each time to use in neovim made development more difficult

dominicm15:03:56

2 is easily fixed. Don't write tests 😁

dominicm15:03:01

No tests means they don't break. Easy.

mikepjb15:03:05

oh you 😉

mikepjb15:03:33

it’s tempting to rewrite and provide an alternative to node-host

dominicm15:03:44

@kotarak the biggest barrier to a pure vimscript unrepl client I can see is trying to parse edn in vimscript. Or do you have a solution to that?

kotarak21:03:05

dominicm: I have. Untested, though.

dominicm22:03:48

Is it remotely efficient? I'm kinda expecting delays in times of high throughput

kotarak06:03:36

It's for the repl, not a high performance database backend event managing thingy. Performance is the last thing I worry here. The question is rather: Is it correct?

dominicm10:03:24

I've always thought that vimscript is quite slow, and if you're being spammed with logging messages on the :out, then it would need to be performant enough not to block my typing when the logging is high.

kotarak11:03:07

That is to be seen. Vim is vim. If you need constant log watching, you should use a terminal or such. Emacs isn't that fast in the repl either. I have to implement it and have a look.

dominicm11:03:36

I agree. Totally. But if logging is going on in the background (just because of the application I'm working on), that would be out of my control.

mikepjb15:03:59

I really like the idea of writing clojure plugins in clojure but have found it to be more trouble than it’s worth

mikepjb15:03:10

I tip my hat to @snoe!

dominicm15:03:23

@mikepjb once you have ice.nvim to a good level, ping me & I'll integrate NCM with ice.nvim

dominicm15:03:51

Deoplete might be a bit harder, but potentially doable.

dominicm15:03:28

uh, basically I'll get it into async-clj-omni 🙂

mikepjb15:03:57

will do 😊

hkupty15:03:04

The major problem I have with writing the clojure problem in clojure is having to fire up a jvm for the plugin...

hkupty15:03:27

This might make things slower than they should..

dominicm15:03:53

@ingvij Well, clojurescript. On node.

hkupty15:03:11

> node. still a problem for me...

hkupty15:03:39

(but that goes down to personal preferences, not really technological ones..)

dominicm15:03:23

Yeah, I think we're going to have a chaos period in Neovim for a while. With Ruby/Go/Python/Node/Rust/Haskell(1 rogue plugin)/Lua all competing to have you install their ecosystems.

dominicm16:03:07

Then one or two will win out (e.g. Ruby & Node), and then the transitions between languages will be slower, with migrations happening slowly as certain languages show ease to set up within Vim.

hkupty16:03:35

> (e.g. Ruby & Node) I'd call it a nightmare..

hkupty16:03:28

Don't mind me, I'm just being picky..

dominicm16:03:41

Though, speaking of "ease to setup", I think node wins over python & ruby due to how they handle dependencies. Python is global (without virtualenvs, but they become messy, as you must have a virtualenv for all of vim). Ruby is… I've never figured it out. Similar to python though. node_modules is pretty great for "this is local. It will not touch anything else"

mikepjb16:03:47

ruby wins for me only purely because I’ve used it in full time work for years

hkupty16:03:05

I see some value with compiled plugins (such as those built with rust, go or haskell).. They're literally standalone and it seems to me that they are the least intrusive..

mikepjb16:03:09

would agree that node seems to be the best choice - clojurescript & ease to setup are big pros

mikepjb16:03:34

which makes rewriting node-host in clojurescript so tempting… 😏

dominicm16:03:28

@ingvij I agree. I think that's actually what makes fzf so simple to use.

dominicm16:03:06

I've been experimenting with Go as an nrepl client in https://github.com/SevereOverfl0w/clojure-check/ which is working pretty well.

hkupty16:03:19

:thinking_face:

hkupty16:03:28

Sounds interesting

dominicm16:03:55

fzf's installer script goes over to the latest builds & just fetches the binary for the right platform (out of about 10 or so)

mikepjb16:03:35

also writing in clojurescript grants more experience with clojure rather than learning another language to solve your current languages ecosystem

dominicm18:03:21

It's worth sticking with figuring out. 2017 is the year of clojurescript on node 😄