diff --git a/src/Tools/ExternalAccess/LiveShare/Classification/RoslynClassificationService.Exports.cs b/src/Tools/ExternalAccess/LiveShare/Classification/RoslynClassificationService.Exports.cs index 17c78f930915505d82c5e49ebc551ba97ba52420..0c9e603964eedf25e6c1a150270ec7b31e2c5b71 100644 --- a/src/Tools/ExternalAccess/LiveShare/Classification/RoslynClassificationService.Exports.cs +++ b/src/Tools/ExternalAccess/LiveShare/Classification/RoslynClassificationService.Exports.cs @@ -30,42 +30,42 @@ public ILanguageService CreateLanguageService(HostLanguageServices languageServi [ExportLanguageServiceFactory(typeof(ISyntaxClassificationService), StringConstants.CSharpLspLanguageName), Shared] internal class CSharpLspEditorClassificationFactoryService : ILanguageServiceFactory { - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly CSharpLspClientServiceFactory _csharpLspClientServiceFactory; private readonly ClassificationTypeMap _classificationTypeMap; private readonly IThreadingContext _threadingContext; [ImportingConstructor] - public CSharpLspEditorClassificationFactoryService(RoslynLspClientServiceFactory roslynLspClientServiceFactory, ClassificationTypeMap classificationTypeMap, IThreadingContext threadingContext) + public CSharpLspEditorClassificationFactoryService(CSharpLspClientServiceFactory csharpLspClientServiceFactory, ClassificationTypeMap classificationTypeMap, IThreadingContext threadingContext) { - _roslynLspClientServiceFactory = roslynLspClientServiceFactory ?? throw new ArgumentNullException(nameof(roslynLspClientServiceFactory)); + _csharpLspClientServiceFactory = csharpLspClientServiceFactory ?? throw new ArgumentNullException(nameof(csharpLspClientServiceFactory)); _classificationTypeMap = classificationTypeMap ?? throw new ArgumentNullException(nameof(classificationTypeMap)); _threadingContext = threadingContext; } public ILanguageService CreateLanguageService(HostLanguageServices languageServices) { - return new RoslynClassificationService(_roslynLspClientServiceFactory, languageServices.GetOriginalLanguageService(), _classificationTypeMap, _threadingContext); + return new RoslynClassificationService(_csharpLspClientServiceFactory, languageServices.GetOriginalLanguageService(), _classificationTypeMap, _threadingContext); } } [ExportLanguageServiceFactory(typeof(ISyntaxClassificationService), StringConstants.VBLspLanguageName), Shared] internal class VBLspEditorClassificationFactoryService : ILanguageServiceFactory { - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly VisualBasicLspClientServiceFactory _vbLspClientServiceFactory; private readonly ClassificationTypeMap _classificationTypeMap; private readonly IThreadingContext _threadingContext; [ImportingConstructor] - public VBLspEditorClassificationFactoryService(RoslynLspClientServiceFactory roslynLspClientServiceFactory, ClassificationTypeMap classificationTypeMap, IThreadingContext threadingContext) + public VBLspEditorClassificationFactoryService(VisualBasicLspClientServiceFactory vbLspClientServiceFactory, ClassificationTypeMap classificationTypeMap, IThreadingContext threadingContext) { - _roslynLspClientServiceFactory = roslynLspClientServiceFactory ?? throw new ArgumentNullException(nameof(roslynLspClientServiceFactory)); + _vbLspClientServiceFactory = vbLspClientServiceFactory ?? throw new ArgumentNullException(nameof(vbLspClientServiceFactory)); _classificationTypeMap = classificationTypeMap ?? throw new ArgumentNullException(nameof(classificationTypeMap)); _threadingContext = threadingContext; } public ILanguageService CreateLanguageService(HostLanguageServices languageServices) { - return new RoslynClassificationService(_roslynLspClientServiceFactory, languageServices.GetOriginalLanguageService(), _classificationTypeMap, _threadingContext); + return new RoslynClassificationService(_vbLspClientServiceFactory, languageServices.GetOriginalLanguageService(), _classificationTypeMap, _threadingContext); } } } diff --git a/src/Tools/ExternalAccess/LiveShare/Classification/RoslynClassificationService.cs b/src/Tools/ExternalAccess/LiveShare/Classification/RoslynClassificationService.cs index 6be6990dabb05c3d0cae01617faeb2ef68764650..9dae70c5ebfb2350b1f185f2e71a2f83939ed264 100644 --- a/src/Tools/ExternalAccess/LiveShare/Classification/RoslynClassificationService.cs +++ b/src/Tools/ExternalAccess/LiveShare/Classification/RoslynClassificationService.cs @@ -17,12 +17,12 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.Classification { internal class RoslynClassificationService : ISyntaxClassificationService { - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly AbstractLspClientServiceFactory _roslynLspClientServiceFactory; private readonly ISyntaxClassificationService _originalService; private readonly ClassificationTypeMap _classificationTypeMap; private readonly IThreadingContext _threadingContext; - public RoslynClassificationService(RoslynLspClientServiceFactory roslynLspClientServiceFactory, ISyntaxClassificationService originalService, + public RoslynClassificationService(AbstractLspClientServiceFactory roslynLspClientServiceFactory, ISyntaxClassificationService originalService, ClassificationTypeMap classificationTypeMap, IThreadingContext threadingContext) { _roslynLspClientServiceFactory = roslynLspClientServiceFactory ?? throw new ArgumentNullException(nameof(roslynLspClientServiceFactory)); diff --git a/src/Tools/ExternalAccess/LiveShare/CodeActions/RoslynCodeActionProvider.Exports.cs b/src/Tools/ExternalAccess/LiveShare/CodeActions/RoslynCodeActionProvider.Exports.cs index db98e973b8b7b79876425a0a8a1a991d10dcf6ca..4721afc38af26f1c4759c744f9d751c50a8738a1 100644 --- a/src/Tools/ExternalAccess/LiveShare/CodeActions/RoslynCodeActionProvider.Exports.cs +++ b/src/Tools/ExternalAccess/LiveShare/CodeActions/RoslynCodeActionProvider.Exports.cs @@ -11,8 +11,8 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.CodeActions internal class CSharpLspCodeActionProvider : RoslynCodeActionProvider { [ImportingConstructor] - public CSharpLspCodeActionProvider(RoslynLspClientServiceFactory roslynLspClientServiceFactory, IDiagnosticAnalyzerService diagnosticAnalyzerService) - : base(roslynLspClientServiceFactory, diagnosticAnalyzerService) + public CSharpLspCodeActionProvider(CSharpLspClientServiceFactory csharpLspClientServiceFactory, IDiagnosticAnalyzerService diagnosticAnalyzerService) + : base(csharpLspClientServiceFactory, diagnosticAnalyzerService) { } } @@ -22,8 +22,8 @@ public CSharpLspCodeActionProvider(RoslynLspClientServiceFactory roslynLspClient internal class VBLspCodeActionProvider : RoslynCodeActionProvider { [ImportingConstructor] - public VBLspCodeActionProvider(RoslynLspClientServiceFactory roslynLspClientServiceFactory, IDiagnosticAnalyzerService diagnosticAnalyzerService) - : base(roslynLspClientServiceFactory, diagnosticAnalyzerService) + public VBLspCodeActionProvider(VisualBasicLspClientServiceFactory vbLspClientServiceFactory, IDiagnosticAnalyzerService diagnosticAnalyzerService) + : base(vbLspClientServiceFactory, diagnosticAnalyzerService) { } } diff --git a/src/Tools/ExternalAccess/LiveShare/CodeActions/RoslynCodeActionProvider.cs b/src/Tools/ExternalAccess/LiveShare/CodeActions/RoslynCodeActionProvider.cs index 0587bcab7dbe2611fdef32894ae7ef1db84ef391..158f76ad7c5a5e41925e7e81016546b31037cc99 100644 --- a/src/Tools/ExternalAccess/LiveShare/CodeActions/RoslynCodeActionProvider.cs +++ b/src/Tools/ExternalAccess/LiveShare/CodeActions/RoslynCodeActionProvider.cs @@ -14,10 +14,10 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.CodeActions { internal class RoslynCodeActionProvider : CodeRefactoringProvider { - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly AbstractLspClientServiceFactory _roslynLspClientServiceFactory; private readonly IDiagnosticAnalyzerService _diagnosticAnalyzerService; - public RoslynCodeActionProvider(RoslynLspClientServiceFactory roslynLspClientServiceFactory, IDiagnosticAnalyzerService diagnosticAnalyzerService) + public RoslynCodeActionProvider(AbstractLspClientServiceFactory roslynLspClientServiceFactory, IDiagnosticAnalyzerService diagnosticAnalyzerService) { _roslynLspClientServiceFactory = roslynLspClientServiceFactory ?? throw new ArgumentNullException(nameof(roslynLspClientServiceFactory)); _diagnosticAnalyzerService = diagnosticAnalyzerService ?? throw new ArgumentNullException(nameof(diagnosticAnalyzerService)); diff --git a/src/Tools/ExternalAccess/LiveShare/Completion/RoslynCompletionProvider.Exports.cs b/src/Tools/ExternalAccess/LiveShare/Completion/RoslynCompletionProvider.Exports.cs index 257b15839dc355a21e4a90594263a12741f679a5..692f3013f3ed9a104e563adb247b3a4a964e158f 100644 --- a/src/Tools/ExternalAccess/LiveShare/Completion/RoslynCompletionProvider.Exports.cs +++ b/src/Tools/ExternalAccess/LiveShare/Completion/RoslynCompletionProvider.Exports.cs @@ -9,8 +9,8 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.Completion internal class CSharpLspCompletionProvider : RoslynCompletionProvider { [ImportingConstructor] - public CSharpLspCompletionProvider(RoslynLspClientServiceFactory roslynLspClientServiceFactory) - : base(roslynLspClientServiceFactory) + public CSharpLspCompletionProvider(CSharpLspClientServiceFactory csharpLspClientServiceFactory) + : base(csharpLspClientServiceFactory) { } } @@ -19,8 +19,8 @@ public CSharpLspCompletionProvider(RoslynLspClientServiceFactory roslynLspClient internal class VBLspCompletionProvider : RoslynCompletionProvider { [ImportingConstructor] - public VBLspCompletionProvider(RoslynLspClientServiceFactory roslynLspClientServiceFactory) - : base(roslynLspClientServiceFactory) + public VBLspCompletionProvider(VisualBasicLspClientServiceFactory vbLspClientServiceFactory) + : base(vbLspClientServiceFactory) { } } diff --git a/src/Tools/ExternalAccess/LiveShare/Completion/RoslynCompletionProvider.cs b/src/Tools/ExternalAccess/LiveShare/Completion/RoslynCompletionProvider.cs index 27547eeb68d40c83e7037d3a3d4fd9fd53a67fc5..5d6726375e77daded1dc69116252131921e9eca1 100644 --- a/src/Tools/ExternalAccess/LiveShare/Completion/RoslynCompletionProvider.cs +++ b/src/Tools/ExternalAccess/LiveShare/Completion/RoslynCompletionProvider.cs @@ -16,9 +16,9 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.Completion { internal class RoslynCompletionProvider : CommonCompletionProvider { - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly AbstractLspClientServiceFactory _roslynLspClientServiceFactory; - public RoslynCompletionProvider(RoslynLspClientServiceFactory roslynLspClientServiceFactory) + public RoslynCompletionProvider(AbstractLspClientServiceFactory roslynLspClientServiceFactory) { _roslynLspClientServiceFactory = roslynLspClientServiceFactory ?? throw new ArgumentNullException(nameof(roslynLspClientServiceFactory)); } diff --git a/src/Tools/ExternalAccess/LiveShare/Diagnostics/RoslynRemoteDiagnosticsService.Exports.cs b/src/Tools/ExternalAccess/LiveShare/Diagnostics/RoslynRemoteDiagnosticsService.Exports.cs index 95b64446abd3914deb3bfb6b4889281d2ff65d7d..676157d957b9bba310ec7a6dab73bd4ea8cdd6d1 100644 --- a/src/Tools/ExternalAccess/LiveShare/Diagnostics/RoslynRemoteDiagnosticsService.Exports.cs +++ b/src/Tools/ExternalAccess/LiveShare/Diagnostics/RoslynRemoteDiagnosticsService.Exports.cs @@ -9,8 +9,8 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.Diagnostics internal class CSharpLspRemoteDiagnosticsService : RoslynRemoteDiagnosticsService { [ImportingConstructor] - public CSharpLspRemoteDiagnosticsService(RoslynLspClientServiceFactory roslynLspClientServiceFactory) - : base(roslynLspClientServiceFactory) + public CSharpLspRemoteDiagnosticsService(CSharpLspClientServiceFactory csharpLspClientServiceFactory) + : base(csharpLspClientServiceFactory) { } } @@ -19,8 +19,8 @@ public CSharpLspRemoteDiagnosticsService(RoslynLspClientServiceFactory roslynLsp internal class VBLspRemoteDiagnosticsService : RoslynRemoteDiagnosticsService { [ImportingConstructor] - public VBLspRemoteDiagnosticsService(RoslynLspClientServiceFactory roslynLspClientServiceFactory) - : base(roslynLspClientServiceFactory) + public VBLspRemoteDiagnosticsService(VisualBasicLspClientServiceFactory vbLspClientServiceFactory) + : base(vbLspClientServiceFactory) { } } diff --git a/src/Tools/ExternalAccess/LiveShare/Diagnostics/RoslynRemoteDiagnosticsService.cs b/src/Tools/ExternalAccess/LiveShare/Diagnostics/RoslynRemoteDiagnosticsService.cs index 4178f6bbe6c51587aeb3c6e4a181140dab10653a..47859eccc013b1f69d26ebaa194ac6dee794be9d 100644 --- a/src/Tools/ExternalAccess/LiveShare/Diagnostics/RoslynRemoteDiagnosticsService.cs +++ b/src/Tools/ExternalAccess/LiveShare/Diagnostics/RoslynRemoteDiagnosticsService.cs @@ -13,9 +13,9 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.Diagnostics { internal class RoslynRemoteDiagnosticsService : IRemoteDiagnosticsService { - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly AbstractLspClientServiceFactory _roslynLspClientServiceFactory; - public RoslynRemoteDiagnosticsService(RoslynLspClientServiceFactory roslynLspClientServiceFactory) + public RoslynRemoteDiagnosticsService(AbstractLspClientServiceFactory roslynLspClientServiceFactory) { _roslynLspClientServiceFactory = roslynLspClientServiceFactory ?? throw new ArgumentNullException(nameof(roslynLspClientServiceFactory)); } diff --git a/src/Tools/ExternalAccess/LiveShare/GotoDefinition/RoslynGotoDefinitionService.Exports.cs b/src/Tools/ExternalAccess/LiveShare/GotoDefinition/RoslynGotoDefinitionService.Exports.cs index bd8aa78e916901cbb90fd0baba7d1afa5be4e9e1..6e8073dea8726ee3ba03db6a4a5d78a60d936b2f 100644 --- a/src/Tools/ExternalAccess/LiveShare/GotoDefinition/RoslynGotoDefinitionService.Exports.cs +++ b/src/Tools/ExternalAccess/LiveShare/GotoDefinition/RoslynGotoDefinitionService.Exports.cs @@ -13,17 +13,17 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.GotoDefinition internal class CSharpLspGotoDefinitionService : RoslynGotoDefinitionService { [ImportingConstructor] - public CSharpLspGotoDefinitionService(IStreamingFindUsagesPresenter streamingPresenter, RoslynLspClientServiceFactory roslynLspClientServiceFactory, + public CSharpLspGotoDefinitionService(IStreamingFindUsagesPresenter streamingPresenter, CSharpLspClientServiceFactory csharpLspClientServiceFactory, RemoteLanguageServiceWorkspace remoteWorkspace, IThreadingContext threadingContext) - : base(streamingPresenter, roslynLspClientServiceFactory, remoteWorkspace, threadingContext) { } + : base(streamingPresenter, csharpLspClientServiceFactory, remoteWorkspace, threadingContext) { } } [ExportLanguageService(typeof(IGoToDefinitionService), StringConstants.VBLspLanguageName), Shared] internal class VBLspGotoDefinitionService : RoslynGotoDefinitionService { [ImportingConstructor] - public VBLspGotoDefinitionService(IStreamingFindUsagesPresenter streamingPresenter, RoslynLspClientServiceFactory roslynLspClientServiceFactory, + public VBLspGotoDefinitionService(IStreamingFindUsagesPresenter streamingPresenter, VisualBasicLspClientServiceFactory vbLspClientServiceFactory, RemoteLanguageServiceWorkspace remoteWorkspace, IThreadingContext threadingContext) - : base(streamingPresenter, roslynLspClientServiceFactory, remoteWorkspace, threadingContext) { } + : base(streamingPresenter, vbLspClientServiceFactory, remoteWorkspace, threadingContext) { } } } diff --git a/src/Tools/ExternalAccess/LiveShare/GotoDefinition/RoslynGotoDefinitionService.cs b/src/Tools/ExternalAccess/LiveShare/GotoDefinition/RoslynGotoDefinitionService.cs index 9c407f0e7e5c7a0a94b906d674bafc50a9a528b3..f54249dceb8e6daa2b35073ac23a5e494caf93fd 100644 --- a/src/Tools/ExternalAccess/LiveShare/GotoDefinition/RoslynGotoDefinitionService.cs +++ b/src/Tools/ExternalAccess/LiveShare/GotoDefinition/RoslynGotoDefinitionService.cs @@ -21,13 +21,13 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.GotoDefinition internal class RoslynGotoDefinitionService : IGoToDefinitionService { private readonly IStreamingFindUsagesPresenter _streamingPresenter; - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly AbstractLspClientServiceFactory _roslynLspClientServiceFactory; private readonly RemoteLanguageServiceWorkspace _remoteWorkspace; private readonly IThreadingContext _threadingContext; public RoslynGotoDefinitionService( IStreamingFindUsagesPresenter streamingPresenter, - RoslynLspClientServiceFactory roslynLspClientServiceFactory, + AbstractLspClientServiceFactory roslynLspClientServiceFactory, RemoteLanguageServiceWorkspace remoteWorkspace, IThreadingContext threadingContext) { diff --git a/src/Tools/ExternalAccess/LiveShare/Highlights/RoslynDocumentHighlightsService.Exports.cs b/src/Tools/ExternalAccess/LiveShare/Highlights/RoslynDocumentHighlightsService.Exports.cs index c1dbfe7e0c4c17b8228753ef21f64dce44b90123..c394b3b43df25fd4e30b3f67dcd8ab39cd277bc8 100644 --- a/src/Tools/ExternalAccess/LiveShare/Highlights/RoslynDocumentHighlightsService.Exports.cs +++ b/src/Tools/ExternalAccess/LiveShare/Highlights/RoslynDocumentHighlightsService.Exports.cs @@ -10,8 +10,8 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.Highlights internal class CSharpLspDocumentHighlightsService : RoslynDocumentHighlightsService { [ImportingConstructor] - public CSharpLspDocumentHighlightsService(RoslynLspClientServiceFactory roslynLspClientServiceFactory) - : base(roslynLspClientServiceFactory) + public CSharpLspDocumentHighlightsService(CSharpLspClientServiceFactory csharpLspClientServiceFactory) + : base(csharpLspClientServiceFactory) { } } @@ -20,8 +20,8 @@ public CSharpLspDocumentHighlightsService(RoslynLspClientServiceFactory roslynLs internal class VBLspDocumentHighlightsService : RoslynDocumentHighlightsService { [ImportingConstructor] - public VBLspDocumentHighlightsService(RoslynLspClientServiceFactory roslynLspClientServiceFactory) - : base(roslynLspClientServiceFactory) + public VBLspDocumentHighlightsService(VisualBasicLspClientServiceFactory vbLspClientServiceFactory) + : base(vbLspClientServiceFactory) { } } diff --git a/src/Tools/ExternalAccess/LiveShare/Highlights/RoslynDocumentHighlightsService.cs b/src/Tools/ExternalAccess/LiveShare/Highlights/RoslynDocumentHighlightsService.cs index 4c39641405b9f19f8bad580b1f6354a393b08b1f..0a96e9903fd098694c1ea30f9ee5ea1953605843 100644 --- a/src/Tools/ExternalAccess/LiveShare/Highlights/RoslynDocumentHighlightsService.cs +++ b/src/Tools/ExternalAccess/LiveShare/Highlights/RoslynDocumentHighlightsService.cs @@ -13,9 +13,9 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.Highlights { internal class RoslynDocumentHighlightsService : IDocumentHighlightsService { - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly AbstractLspClientServiceFactory _roslynLspClientServiceFactory; - public RoslynDocumentHighlightsService(RoslynLspClientServiceFactory roslynLspClientServiceFactory) + public RoslynDocumentHighlightsService(AbstractLspClientServiceFactory roslynLspClientServiceFactory) { _roslynLspClientServiceFactory = roslynLspClientServiceFactory ?? throw new ArgumentNullException(nameof(roslynLspClientServiceFactory)); } diff --git a/src/Tools/ExternalAccess/LiveShare/Navigation/RoslynNavigationBarItemService.Exports.cs b/src/Tools/ExternalAccess/LiveShare/Navigation/RoslynNavigationBarItemService.Exports.cs index 3895e87ad05288a83166962648938a2459e7e30e..f99ddc7f1616625865b322f197c1e8a45e92baff 100644 --- a/src/Tools/ExternalAccess/LiveShare/Navigation/RoslynNavigationBarItemService.Exports.cs +++ b/src/Tools/ExternalAccess/LiveShare/Navigation/RoslynNavigationBarItemService.Exports.cs @@ -10,8 +10,8 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.Navigation internal class CSharpLspNavigationBarItemService : RoslynNavigationBarItemService { [ImportingConstructor] - protected CSharpLspNavigationBarItemService(RoslynLspClientServiceFactory roslynLspClientServiceFactory) - : base(roslynLspClientServiceFactory) + protected CSharpLspNavigationBarItemService(CSharpLspClientServiceFactory csharpLspClientServiceFactory) + : base(csharpLspClientServiceFactory) { } } @@ -20,8 +20,8 @@ protected CSharpLspNavigationBarItemService(RoslynLspClientServiceFactory roslyn internal class VBLspNavigationBarItemService : RoslynNavigationBarItemService { [ImportingConstructor] - protected VBLspNavigationBarItemService(RoslynLspClientServiceFactory roslynLspClientServiceFactory) - : base(roslynLspClientServiceFactory) + protected VBLspNavigationBarItemService(VisualBasicLspClientServiceFactory vbLspClientServiceFactory) + : base(vbLspClientServiceFactory) { } } @@ -30,8 +30,8 @@ protected VBLspNavigationBarItemService(RoslynLspClientServiceFactory roslynLspC internal class TypeScriptLspNavigationBarItemService : RoslynNavigationBarItemService { [ImportingConstructor] - protected TypeScriptLspNavigationBarItemService(RoslynLspClientServiceFactory roslynLspClientServiceFactory) - : base(roslynLspClientServiceFactory) + protected TypeScriptLspNavigationBarItemService(TypeScriptLspClientServiceFactory typeScriptLspClientServiceFactory) + : base(typeScriptLspClientServiceFactory) { } } diff --git a/src/Tools/ExternalAccess/LiveShare/Navigation/RoslynNavigationBarItemService.cs b/src/Tools/ExternalAccess/LiveShare/Navigation/RoslynNavigationBarItemService.cs index 70c695bead318aa483569181532cb5d272abacec..d78a2dc1b06b2988490ca10420babf1012070a64 100644 --- a/src/Tools/ExternalAccess/LiveShare/Navigation/RoslynNavigationBarItemService.cs +++ b/src/Tools/ExternalAccess/LiveShare/Navigation/RoslynNavigationBarItemService.cs @@ -20,9 +20,9 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.Navigation { internal class RoslynNavigationBarItemService : AbstractNavigationBarItemService { - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly AbstractLspClientServiceFactory _roslynLspClientServiceFactory; - internal RoslynNavigationBarItemService(RoslynLspClientServiceFactory roslynLspClientServiceFactory) + internal RoslynNavigationBarItemService(AbstractLspClientServiceFactory roslynLspClientServiceFactory) { _roslynLspClientServiceFactory = roslynLspClientServiceFactory ?? throw new ArgumentNullException(nameof(roslynLspClientServiceFactory)); } diff --git a/src/Tools/ExternalAccess/LiveShare/Projects/RoslynRemoteProjectInfoProvider.cs b/src/Tools/ExternalAccess/LiveShare/Projects/RoslynRemoteProjectInfoProvider.cs index 650430c87c4a577e78e5e3c6ac006a6229669941..8a4ad9ed1e65fba658dcb67e35be8d963f1570f5 100644 --- a/src/Tools/ExternalAccess/LiveShare/Projects/RoslynRemoteProjectInfoProvider.cs +++ b/src/Tools/ExternalAccess/LiveShare/Projects/RoslynRemoteProjectInfoProvider.cs @@ -17,11 +17,11 @@ internal class RoslynRemoteProjectInfoProvider : IRemoteProjectInfoProvider { private const string SystemUriSchemeExternal = "vslsexternal"; - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly CSharpLspClientServiceFactory _roslynLspClientServiceFactory; private readonly RemoteLanguageServiceWorkspace _remoteLanguageServiceWorkspace; [ImportingConstructor] - public RoslynRemoteProjectInfoProvider(RoslynLspClientServiceFactory roslynLspClientServiceFactory, RemoteLanguageServiceWorkspace remoteLanguageServiceWorkspace) + public RoslynRemoteProjectInfoProvider(CSharpLspClientServiceFactory roslynLspClientServiceFactory, RemoteLanguageServiceWorkspace remoteLanguageServiceWorkspace) { _roslynLspClientServiceFactory = roslynLspClientServiceFactory ?? throw new ArgumentNullException(nameof(roslynLspClientServiceFactory)); _remoteLanguageServiceWorkspace = remoteLanguageServiceWorkspace ?? throw new ArgumentNullException(nameof(RemoteLanguageServiceWorkspace)); diff --git a/src/Tools/ExternalAccess/LiveShare/References/RoslynFindUsagesService.Exports..cs b/src/Tools/ExternalAccess/LiveShare/References/RoslynFindUsagesService.Exports..cs index 6e3963f22dd43ded93f6b37037f292adbfc7fc05..c90ed8d487cfd04ca84105754fc0bd604c423c25 100644 --- a/src/Tools/ExternalAccess/LiveShare/References/RoslynFindUsagesService.Exports..cs +++ b/src/Tools/ExternalAccess/LiveShare/References/RoslynFindUsagesService.Exports..cs @@ -10,8 +10,8 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.References internal class CSharpLspFindUsagesService : RoslynFindUsagesService { [ImportingConstructor] - public CSharpLspFindUsagesService(RoslynLspClientServiceFactory roslynLspClientServiceFactory, RemoteLanguageServiceWorkspace remoteLanguageServiceWorkspace) - : base(roslynLspClientServiceFactory, remoteLanguageServiceWorkspace) + public CSharpLspFindUsagesService(CSharpLspClientServiceFactory csharpLspClientServiceFactory, RemoteLanguageServiceWorkspace remoteLanguageServiceWorkspace) + : base(csharpLspClientServiceFactory, remoteLanguageServiceWorkspace) { } } @@ -20,8 +20,8 @@ public CSharpLspFindUsagesService(RoslynLspClientServiceFactory roslynLspClientS internal class VBLspFindUsagesService : RoslynFindUsagesService { [ImportingConstructor] - public VBLspFindUsagesService(RoslynLspClientServiceFactory roslynLspClientServiceFactory, RemoteLanguageServiceWorkspace remoteLanguageServiceWorkspace) - : base(roslynLspClientServiceFactory, remoteLanguageServiceWorkspace) + public VBLspFindUsagesService(VisualBasicLspClientServiceFactory vbLspClientServiceFactory, RemoteLanguageServiceWorkspace remoteLanguageServiceWorkspace) + : base(vbLspClientServiceFactory, remoteLanguageServiceWorkspace) { } } diff --git a/src/Tools/ExternalAccess/LiveShare/References/RoslynFindUsagesService.cs b/src/Tools/ExternalAccess/LiveShare/References/RoslynFindUsagesService.cs index 88643aeb84d9d2a324d5f397aef8468faa23b5e5..fed4a93f4f618a01ef9ef6c86b61b5930ed6099e 100644 --- a/src/Tools/ExternalAccess/LiveShare/References/RoslynFindUsagesService.cs +++ b/src/Tools/ExternalAccess/LiveShare/References/RoslynFindUsagesService.cs @@ -14,10 +14,10 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare.References { internal class RoslynFindUsagesService : IFindUsagesService { - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly AbstractLspClientServiceFactory _roslynLspClientServiceFactory; private readonly RemoteLanguageServiceWorkspace _remoteLanguageServiceWorkspace; - public RoslynFindUsagesService(RoslynLspClientServiceFactory roslynLspClientServiceFactory, RemoteLanguageServiceWorkspace remoteLanguageServiceWorkspace) + public RoslynFindUsagesService(AbstractLspClientServiceFactory roslynLspClientServiceFactory, RemoteLanguageServiceWorkspace remoteLanguageServiceWorkspace) { _roslynLspClientServiceFactory = roslynLspClientServiceFactory ?? throw new ArgumentNullException(nameof(roslynLspClientServiceFactory)); _remoteLanguageServiceWorkspace = remoteLanguageServiceWorkspace ?? throw new ArgumentNullException(nameof(remoteLanguageServiceWorkspace)); diff --git a/src/Tools/ExternalAccess/LiveShare/RoslynLSPClientService.cs b/src/Tools/ExternalAccess/LiveShare/RoslynLSPClientService.cs index ccdafac277bc46c842c859f22e007bb407f1b73b..ebf9037697bab56b39c76c19b79f1ffcbb6dda2b 100644 --- a/src/Tools/ExternalAccess/LiveShare/RoslynLSPClientService.cs +++ b/src/Tools/ExternalAccess/LiveShare/RoslynLSPClientService.cs @@ -11,16 +11,9 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.LiveShare { - [Export] - [ExportCollaborationService(typeof(RoslynLSPClientLifeTimeService), - Scope = SessionScope.Guest, - Role = ServiceRole.LocalService, - Features = "LspServices", - CreationPriority = (int)ServiceRole.LocalService + 2000)] - internal class RoslynLspClientServiceFactory : ICollaborationServiceFactory + internal abstract class AbstractLspClientServiceFactory : ICollaborationServiceFactory { - private const string RoslynProviderName = "Roslyn"; - private const string AnyProviderName = "any"; + protected abstract string LanguageSpecificProviderName { get; } public ILanguageServerClient ActiveLanguageServerClient { get; private set; } @@ -30,11 +23,19 @@ public Task CreateServiceAsync(CollaborationSession colla collaborationSession.RemoteServicesChanged += (sender, e) => { - // VS will expose a roslyn LSP server and VSCode will expose a "any" LSP provider and both support roslyn languages. - var roslynLspServerProviderName = LanguageServicesUtils.GetLanguageServerProviderServiceName(RoslynProviderName); - var anyLspServerProviderName = LanguageServicesUtils.GetLanguageServerProviderServiceName(AnyProviderName); + // VS will expose a roslyn LSP server. + var roslynLspServerProviderName = LanguageServicesUtils.GetLanguageServerProviderServiceName(StringConstants.RoslynProviderName); + // Newer versions of VS will expose language specific LSP servers for Roslyn. + var languageSpecificLspServerProviderName = LanguageServicesUtils.GetLanguageServerProviderServiceName(LanguageSpecificProviderName); + // VSCode will expose a "any" LSP provider and both support roslyn languages. + var anyLspServerProviderName = LanguageServicesUtils.GetLanguageServerProviderServiceName(StringConstants.AnyProviderName); - if (collaborationSession.RemoteServiceNames.Contains(roslynLspServerProviderName)) + // For VS, Preferentially use the language specific server when it's available, otherwise fall back to the generic roslyn server. + if (collaborationSession.RemoteServiceNames.Contains(languageSpecificLspServerProviderName)) + { + ActiveLanguageServerClient = languageServerGuestService.CreateLanguageServerClient(languageSpecificLspServerProviderName); + } + else if (collaborationSession.RemoteServiceNames.Contains(roslynLspServerProviderName)) { ActiveLanguageServerClient = languageServerGuestService.CreateLanguageServerClient(roslynLspServerProviderName); } @@ -112,7 +113,7 @@ public Task CreateServiceAsync(CollaborationSession colla return Task.FromResult(lifeTimeService); } - private class RoslynLSPClientLifeTimeService : ICollaborationService, IDisposable + protected class RoslynLSPClientLifeTimeService : ICollaborationService, IDisposable { public event EventHandler Disposed; @@ -122,4 +123,37 @@ public void Dispose() } } } + + [Export] + [ExportCollaborationService(typeof(RoslynLSPClientLifeTimeService), + Scope = SessionScope.Guest, + Role = ServiceRole.LocalService, + Features = "LspServices", + CreationPriority = (int)ServiceRole.LocalService + 2000)] + internal class CSharpLspClientServiceFactory : AbstractLspClientServiceFactory + { + protected override string LanguageSpecificProviderName => StringConstants.CSharpProviderName; + } + + [Export] + [ExportCollaborationService(typeof(RoslynLSPClientLifeTimeService), + Scope = SessionScope.Guest, + Role = ServiceRole.LocalService, + Features = "LspServices", + CreationPriority = (int)ServiceRole.LocalService + 2000)] + internal class VisualBasicLspClientServiceFactory : AbstractLspClientServiceFactory + { + protected override string LanguageSpecificProviderName => StringConstants.VisualBasicProviderName; + } + + [Export] + [ExportCollaborationService(typeof(RoslynLSPClientLifeTimeService), + Scope = SessionScope.Guest, + Role = ServiceRole.LocalService, + Features = "LspServices", + CreationPriority = (int)ServiceRole.LocalService + 2000)] + internal class TypeScriptLspClientServiceFactory : AbstractLspClientServiceFactory + { + protected override string LanguageSpecificProviderName => StringConstants.TypeScriptProviderName; + } } diff --git a/src/Tools/ExternalAccess/LiveShare/SignatureHelp/RoslynSignatureHelpProvider.Exports.cs b/src/Tools/ExternalAccess/LiveShare/SignatureHelp/RoslynSignatureHelpProvider.Exports.cs index 09f3101670a4885c8bb8c78747cd2e6c198b5c2b..36cd28bd178fc793aa0c9dc5898392e8579df961 100644 --- a/src/Tools/ExternalAccess/LiveShare/SignatureHelp/RoslynSignatureHelpProvider.Exports.cs +++ b/src/Tools/ExternalAccess/LiveShare/SignatureHelp/RoslynSignatureHelpProvider.Exports.cs @@ -11,8 +11,8 @@ namespace Microsoft.VisualStudio.LanguageServices.LiveShare.Client internal class CSharpLspSignatureHelpProvider : RoslynSignatureHelpProvider { [ImportingConstructor] - public CSharpLspSignatureHelpProvider(RoslynLspClientServiceFactory roslynLspClientServiceFactory) - : base(roslynLspClientServiceFactory) + public CSharpLspSignatureHelpProvider(CSharpLspClientServiceFactory csharpLspClientServiceFactory) + : base(csharpLspClientServiceFactory) { } } @@ -22,8 +22,8 @@ public CSharpLspSignatureHelpProvider(RoslynLspClientServiceFactory roslynLspCli internal class VBLspSignatureHelpProvider : RoslynSignatureHelpProvider { [ImportingConstructor] - public VBLspSignatureHelpProvider(RoslynLspClientServiceFactory roslynLspClientServiceFactory) - : base(roslynLspClientServiceFactory) + public VBLspSignatureHelpProvider(VisualBasicLspClientServiceFactory vbLspClientServiceFactory) + : base(vbLspClientServiceFactory) { } } diff --git a/src/Tools/ExternalAccess/LiveShare/SignatureHelp/RoslynSignatureHelpProvider.cs b/src/Tools/ExternalAccess/LiveShare/SignatureHelp/RoslynSignatureHelpProvider.cs index b9a043d4b180925afbfef5135b9a31c64a4394d5..7844e18cb29449b8e6056e6faf5ffef7bf12bde3 100644 --- a/src/Tools/ExternalAccess/LiveShare/SignatureHelp/RoslynSignatureHelpProvider.cs +++ b/src/Tools/ExternalAccess/LiveShare/SignatureHelp/RoslynSignatureHelpProvider.cs @@ -16,9 +16,9 @@ namespace Microsoft.VisualStudio.LanguageServices.LiveShare.Client { class RoslynSignatureHelpProvider : ISignatureHelpProvider { - private readonly RoslynLspClientServiceFactory _roslynLspClientServiceFactory; + private readonly AbstractLspClientServiceFactory _roslynLspClientServiceFactory; - public RoslynSignatureHelpProvider(RoslynLspClientServiceFactory roslynLspClientServiceFactory) + public RoslynSignatureHelpProvider(AbstractLspClientServiceFactory roslynLspClientServiceFactory) { _roslynLspClientServiceFactory = roslynLspClientServiceFactory ?? throw new ArgumentNullException(nameof(roslynLspClientServiceFactory)); } diff --git a/src/Tools/ExternalAccess/LiveShare/StringConstants.cs b/src/Tools/ExternalAccess/LiveShare/StringConstants.cs index f2dc65a4ead6da3631b87d579417f99d336cc388..05acc61873134e3c1cecb5918ed93a2ddc945778 100644 --- a/src/Tools/ExternalAccess/LiveShare/StringConstants.cs +++ b/src/Tools/ExternalAccess/LiveShare/StringConstants.cs @@ -11,6 +11,13 @@ internal class StringConstants // The service name for an LSP server implemented using Roslyn designed to be used with the LSP SDK client public const string RoslynLspSdkContractName = "RoslynLSPSDK"; + // LSP server provider names. + public const string RoslynProviderName = "Roslyn"; + public const string CSharpProviderName = "RoslynCSharp"; + public const string VisualBasicProviderName = "RoslynVisualBasic"; + public const string TypeScriptProviderName = "RoslynTypeScript"; + public const string AnyProviderName = "any"; + public const string CSharpLspLanguageName = "C#_LSP"; public const string CSharpLspContentTypeName = "C#_LSP"; public const string TypeScriptLanguageName = "TypeScript";