Skip to content
This repository has been archived by the owner on Apr 1, 2020. It is now read-only.

Re-architecture of language clients to support configuration #819

Merged
merged 193 commits into from
Oct 31, 2017

Conversation

bryphe
Copy link
Member

@bryphe bryphe commented Oct 21, 2017

This is a pretty massive PR, and does the following:

  • Allows language servers to be specified via a configuration setting - language.<filetype>.languageServer.command. The existing plugins (clangd, golang, python, and reason, have been refactored to use these new providers).
  • Removes a bunch of old code in PluginManager - there was some unnecessary complexity in the interop between how we communicate with the plugins and language servers. The responsibility is now managed by the code in the Services/Language folder, with LanguageManager being the main interaction point.
  • Exposes an Oni.languages API. This allows plugins to programmatically make language server requests (and makes it easy to test!),
  • Add some additional language server functionality - Symbol Search is accessible by Meta+T on OSX and Ctrl+T on Windows, if the language server supports it. Rename is supported (F2 in normal mode) ,and refactoring / code actions are actually supported too, but the UX needs to be improved here.

This also adds a couple more APIs:

  • An Oni.contextMenu API to be able to create a completion-like menu programmatically (this is leveraged by the refactoring code).

In addition, our existing TypeScript / JS language providers go through the same end code path, so things like the language status bar work the same in that language (it's been moved to a pseudo-language server).

There is still work to be done, especially around smoothing out the UX for some of the new functionality.

@bryphe bryphe changed the title [WIP] Re-architecture of language clients to support configuration Re-architecture of language clients to support configuration Oct 31, 2017
@bryphe bryphe merged commit 495c99d into master Oct 31, 2017
@bryphe bryphe deleted the bryphe/features/lsp-v2 branch October 31, 2017 19:11
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant