Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Epic] Language Server Protocol #968

Open
11 of 46 tasks
david-driscoll opened this issue Sep 25, 2017 · 6 comments
Open
11 of 46 tasks

[Epic] Language Server Protocol #968

david-driscoll opened this issue Sep 25, 2017 · 6 comments

Comments

@david-driscoll
Copy link
Member

david-driscoll commented Sep 25, 2017

For history see: #576
For initial PR see: #969

Lsp packages have been pushed to nuget here and here.

This starts consuming them, the branch lsp may be long lived, or we may merge into master a few times, we haven't discussed this yet.

Note: not all endpoints currently map 1:1 to LSP, more information on lsp can be found here and the C# implementation here

For testing I was using the test extension from the csharp-lsp repository, and simplying making sure that OmniSharp.exe was invoked with -lsp or --languageserver and it will negotiate with language server mode automatically. It would be great to get others feedback using this against language server 2.0 vs 3.0 (that vscode implements).

Parts done:

  • Wired in language server protocol to the default host
  • Endpoints configured so far :
    • /gotodefinition
    • /findsymbols
    • /updatebuffer
    • /changebuffer
    • /codecheck
    • /filesChanged
    • /formatAfterKeystroke
    • /formatRange
    • /codeformat
    • /highlight
    • /autocomplete
    • /findimplementations
    • /findusages
    • /gotofile
    • /gotoregion
    • /navigateup
    • /navigatedown
    • /typelookup
    • /getcodeactions
    • /runcodeaction
    • /rename
    • /signatureHelp
    • /currentfilemembersastree
    • /currentfilemembersasflat
    • /gettestcontext
    • /metadata
    • /packagesource
    • /packagesearch
    • /packageversion
    • /projects
    • /project
    • /fixusings
    • /checkalivestatus
    • /checkreadystatus
    • /stopserver
    • /open
    • /close
    • /diagnostics
    • /v2/getcodeactions
    • /v2/runcodeaction
    • /v2/getteststartinfo
    • /v2/runtest
    • /v2/debugtest/getstartinfo
    • /v2/debugtest/launch
    • /v2/debugtest/stop
@david-driscoll
Copy link
Member Author

cc @mickaelistria

@david-driscoll
Copy link
Member Author

Also a reference implementation of the current working mappings can be found in the existing OmniSharp-node-client repo by looking at /languageserver/server.ts

@mickaelistria
Copy link

Sorry for the long silence, I was (and am still) busy with a bunch of other stuff. Is there a binary build of OmniSharp we can try with the current support included?

@david-driscoll
Copy link
Member Author

FYI the initial version has been made https://github.com/OmniSharp/omnisharp-roslyn/releases/tag/v1.29.0-beta1 this includes the list of items above and a few more I think.

@mholo65 what ones did you implement again? I'll check them off.

@mickaelistria
Copy link

mickaelistria commented Jan 10, 2018 via email

@mickaelistria
Copy link

I just tried this with Eclipse aCute, and it works like a charm with no required change to our code (except the command-line to run). Thanks a lot and congrats for this addition @david-driscoll !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants