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

Cohosting - Support LSP endpoints #10364

Open
davidwengier opened this issue May 13, 2024 · 2 comments
Open

Cohosting - Support LSP endpoints #10364

davidwengier opened this issue May 13, 2024 · 2 comments

Comments

@davidwengier
Copy link
Contributor

davidwengier commented May 13, 2024

Display

Endpoint Cohosting Calls Roslyn Calls Web Tools Notes
Diagnostics #10696 / #10882 Y: dotnet/roslyn#75102 Y Roslyn dependencies are problematic
WorkspaceDiagnostics ✔️ N/A N N Not supported by us
DocumentColor #10740 N Y Not in platform. See AB#2032948 Fixed with AB#570071
ColorPresentation #10740 N Y Not in platform. See AB#2032948 Fixed with AB#570071. Not supported in VS
DocumentSymbol #10689 / #10728 Y: dotnet/roslyn#74730 N
FoldingRange #10447 / #10638 Y: dotnet/roslyn#73609 Y
InlayHints AB#567229 / #10672 Y: dotnet/roslyn#74548 N
ProjectContext ✔️ N/A N N Roslyn handles this for us
SemanticTokensRange #10097 / #10619 Y: dotnet/roslyn#72495 N
SemanticTokensRefresh ✔️ N/A N N Called from an interceptor now. Handled by Roslyn in cohosting
DocumentSpellCheck #10746 / #10825 Y: dotnet/roslyn#74978 N
WorkspaceSpellCheck ✔️ N/A N N Not supported by us

Edit

Endpoint Cohosting Calls Roslyn Calls Web Tools Notes
OnAutoInsert #10630 / #10674 Y: dotnet/roslyn#73781 Y No IBraceCompletionServices in OOP? Fixed in dotnet/roslyn#73756
CodeAction #10742 / #11147 Y Y
Completion 🔜 #10697 Y Y Has dependency on CompletionListCache from LSP Services
TextPresentation #10740 Y Y Not supported in Roslyn
UriPresentation #10336 / #10642 Y Y Not supported in Roslyn
DocumentSync ✔️ N/A N N Roslyn handles this for us
Formatting #10743 /#10822 N Y Calls Roslyn API
InlineCompletion 🔜 #10744 Y N
LinkedEditingRange #10349 / #10596 N N
MapCode 🔜 #10745 Y N
Rename #10688 / #10721 Y: dotnet/roslyn#73781 Y
PrepareRename dotnet/roslyn#73781 ? We don't suport this at the moment
WrapWithTag N Y Not in platform
BreakpointSpan N N Calls Roslyn API, but probably needs a re-think in a cohosted world
ProximityExpression N N Calls Roslyn API, but probably needs a re-think in a cohosted world
ValidateBreakpointRange Y N

Navigate

Endpoint Cohosting Calls Roslyn Calls Web Tools Notes
CodeLens Y N We don't support this at the moment. VS doesn't either.
Definition #10631 / #10750 Y: dotnet/roslyn#73781 Y Needs MetadataAsFileService which needs Workspace Fixed in dotnet/roslyn#73781
DocumentHighlight #10656 Y Y Roslyn side isn't in OOP No idea why I wrote that.
FindAllReferences #11237 / #11238 Y: dotnet/roslyn#76002 N Roslyn side has WPF/problematic dependencies
Hover #10839 / #11150 Y Y Roslyn side has WPF dependencies
Implementation #10695 / #10824 Y: dotnet/roslyn#74978 Y
SignatureHelp #10595 Y: dotnet/roslyn#73781 Y OOP service uses STJ (see: dotnet/roslyn#74280)

Other

Endpoint Cohosting Calls Roslyn Calls Web Tools Notes
RazorLanguageQuery N N VS Code only. Hopefully unnecessary
RazorMapToDocumentRange N N VS Code only. Hopefully unnecessary
MonitorConfigurationFilePath ✔️ N/A N N Doesn't exist in Razor any more
ProjectInfo ✔️ N/A N N Doesn't exist in Razor any more
@ryzngard
Copy link
Contributor

❓are there any quick and easy ones for those not directly working on cohosting to fill a few hours and get used to the new design?

@davidwengier
Copy link
Contributor Author

davidwengier commented May 13, 2024

"Quick and easy" is a funny expression. I would say there is a heirachy of ease:

  1. Razor only: Things that have "N" in both Roslyn and Web Tools columns, and therefore have no dependencies outside our repo. Sadly the only two of these left are outside of LSP, so might have other unknown hurdles.
  2. Web Tools only: Things have an "N" in the Roslyn column, but "Y" in Web Tools, means all of the code changes are confined to our repo, since our method of communcation with Web Tools hasn't changed
  3. "Easy" Roslyn: Things have a "Y*" in the Roslyn column, from a cursory look, use only workspace services in Roslyn, so should "just" be a matter of exposing helper methods through our EA, and calling them
  4. Everything else: Things that have a "Y" in the Roslyn column potentially require rework or rearchitecting on the Roslyn side (modulo my understanding of MEF)

Worth noting that 3 and 4 are somewhat blocked on Roslyn LSP types being available to us, too

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

No branches or pull requests

3 participants