onivim / oni

Oni: Modern Modal Editing - powered by Neovim
https://www.onivim.io
MIT License
11.35k stars 299 forks source link

Plugin Management #186

Open bryphe opened 7 years ago

bryphe commented 7 years ago

ONI has some additional features / functionality around plugin management. In particular, it would be helpful to support:

For package management, there are also two modes that would be helpful to support:

Long-term, I'd like to have integration with the command palette and a UI for enabling, disabling, updating, and measuring performance characteristics of plugins. In the short-term, adding an opm command like:

By default, the packages would be installed per-user. Adding a -p flag would tell ONI to install in the project directory, which is the first directory upward named .oni.

bryphe commented 7 years ago

This is a pre-req for some of the language service work... There needs to be a robust way to add language service providers.

akinsho commented 6 years ago

@bryphe re. plugins and plugin management do you have a vision for how it might be implemented initially/minimally?

I've just been trying to setup the lsp for go and rust and theres seems to be a fair bit of leg work for a user to do in order to get that working, had a look at some vscode lsp extensions and basically they seem to programmatically just install dependencies, update them and call the right commands, having just done it manually (unsuccessfully on both counts sadly) kind of made me realise how incredibly useful it'd would have been to just install something that did that all for me successfully, basically ended up giving up which seemed like a point where we might lose a user.

It might be that theres no easy minimal way to do this although I noticed you added a YarnInstaller which seems to do something like this, is it possible to use that as a stepping of point for a minimal implementation of an lsp plugin for something like rust or go? v. much along the same lines as the vscode plugins

Ps: apologies for belabouring the minimal part it's something I'd love to see implemented enough to take on but I'd rather not take it on if was necessarily large in scope re initial implementation, plus pretty sure i've already spread myself ridiculously thin across issues I said i'd look at 😆