This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-03-22
Channels
- # beginners (42)
- # boot (73)
- # cider (17)
- # clara (1)
- # cljs-dev (47)
- # cljsrn (9)
- # clojars (4)
- # clojure (241)
- # clojure-italy (11)
- # clojure-norway (5)
- # clojure-russia (93)
- # clojure-spec (28)
- # clojure-uk (32)
- # clojurescript (170)
- # core-async (20)
- # cursive (62)
- # data-science (2)
- # datomic (47)
- # dirac (4)
- # events (1)
- # funcool (12)
- # gsoc (1)
- # hoplon (59)
- # immutant (8)
- # lambdaisland (4)
- # luminus (3)
- # lumo (11)
- # off-topic (13)
- # om (81)
- # onyx (1)
- # pedestal (47)
- # planck (30)
- # re-frame (2)
- # reactive (1)
- # reagent (2)
- # ring-swagger (15)
- # rum (1)
- # slack-help (5)
- # specter (5)
- # testing (5)
- # uncomplicate (8)
- # untangled (16)
- # vim (71)
- # yada (16)
by the way @kotarak has made https://github.com/kotarak/vimpire
https://github.com/clojure-vim/neovim-client is for talking to socket repl also. https://github.com/clojure-vim/acid.nvim does a lot with the nREPL.
@kotarak For acid, there is python/pip. if_python
has been moved to being an external module (not compiled into vim).
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
There I read something about node.js IIRC. That's what I meant with moving parts. Just an observation.
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.
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.
haha yeah I tried in anger to write the project in clojurescript on node but it proved too difficult
I know ruby so there is much less of a barrier testing everything/working with sockets etcetc
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
@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?
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?
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.
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.
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.
I really like the idea of writing clojure plugins in clojure but have found it to be more trouble than it’s worth
@mikepjb once you have ice.nvim to a good level, ping me & I'll integrate NCM with ice.nvim
The major problem I have with writing the clojure problem in clojure is having to fire up a jvm for the plugin...
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.
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.
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"
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..
would agree that node seems to be the best choice - clojurescript & ease to setup are big pros
I've been experimenting with Go as an nrepl client in https://github.com/SevereOverfl0w/clojure-check/ which is working pretty well.
fzf's installer script goes over to the latest builds & just fetches the binary for the right platform (out of about 10 or so)