Open bryphe opened 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.
@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 😆
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:opm ls
opm install https://github.com/tpope/vim-fugitive
(git clone)opm install oni-plugin-python-language-service
(npm install)opm uninstall oni-plugin-python-language-service
(npm uninstallJ)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
.