This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-12-09
Channels
- # adventofcode (187)
- # aws (1)
- # aws-lambda (1)
- # beginners (162)
- # boot (64)
- # cljs-dev (6)
- # cljsjs (2)
- # cljsrn (32)
- # clojure (357)
- # clojure-greece (1)
- # clojure-korea (4)
- # clojure-russia (63)
- # clojure-sanfrancisco (3)
- # clojure-spec (91)
- # clojure-uk (63)
- # clojurescript (74)
- # clojurex (10)
- # code-reviews (55)
- # core-async (4)
- # core-typed (1)
- # cursive (17)
- # datascript (36)
- # datomic (43)
- # devcards (4)
- # dirac (3)
- # emacs (59)
- # hoplon (286)
- # jobs-discuss (399)
- # luminus (4)
- # mount (9)
- # off-topic (30)
- # onyx (53)
- # protorepl (3)
- # re-frame (88)
- # reagent (4)
- # spacemacs (1)
- # specter (14)
- # untangled (1)
- # vim (42)
@dominicm looking at https://github.com/neovim/node-host — trying to understand how to / if I should make neovim-client a “plugin host”?
The parts that compromise the host: - https://github.com/neovim/node-host/blob/master/plugin/js_host.vim - https://github.com/neovim/node-host/blob/master/autoload/js_host.vim - https://github.com/neovim/node-host/blob/master/index.js I believe the part in the plugin folder will be a documented api inside neovim
Right, digesting this. So is the goal for the various plugin hosts to be distributed with Neovim? Or will they always require a separate install?
I guess I’m trying to understand why that’s more desirable than distributing it as a library that plugins can just use.
@jebberjeb The idea is to remove some of the boilerplate required to make the RPC connection as a plugin.
https://neovim.io/doc/user/remote_plugin.html > Plugin hosts are programs that provide a high-level environment for plugins, taking care of most boilerplate involved in defining commands, autocmds, and functions that are implemented over |RPC| connections. Hosts are loaded only when one of their registered plugins require it, keeping Nvim's startup as fast as possible, even if many plugins/hosts are installed.
it sounds like neovim does want to solve automatically install a host if a plugin needs it
@dominicm hmm. I guess there is still some boilerplate w/ neovim-client. You have to “connect”. But after that, it removes any boilerplate associated w/ RPC. You just call functions.
neovim-client probably is an outlier really — it makes a lot more sense in python where you want to point them at an object or something.
https://github.com/neovim/python-client/blob/master/neovim/plugin/host.py seems to do a good amount of work...
https://github.com/neovim/node-client I guess this is what neovim-client currently is?
hmm, looks like node-client generates their typescript declaration file and commits it. But still creates their api reflexively at runtime using vim_get_api_info. How does that not break plugins/consumers?
I’ve noticed that even though Neovim api names changes, old names still work (despite their being missing from vim_get_api_info).
I think parameter chang iirc. https://github.com/neovim/node-client/commit/cda3e3fb528e110e0e4066e54b8544e1c20f97a8 looks breaking