/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/LanguageServer/Protocol/Handler/InitializeManager.cs
68 строк
2 KB
David Barbet
Replace helper for mapping Uri->file path with DocumentUri version; make Uri version Razor only
08 май 2026, 21:02
08 май 2026, 21:02
0bf9cff
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.Collections.Immutable; using Microsoft.CodeAnalysis.PooledObjects; using Roslyn.LanguageServer.Protocol; namespace Microsoft.CodeAnalysis.LanguageServer.Handler; internal sealed class InitializeManager : IInitializeManager { public InitializeManager() { } private InitializeParams? _initializeParams; private ImmutableArray<string> _workspaceFolderPathsOpt; public ClientCapabilities GetClientCapabilities() { if (_initializeParams?.Capabilities is null) { throw new InvalidOperationException($"Tried to get required {nameof(ClientCapabilities)} before it was set"); } return _initializeParams.Capabilities; } public void SetInitializeParams(InitializeParams initializeParams) { Contract.ThrowIfFalse(_initializeParams == null); _initializeParams = initializeParams; _workspaceFolderPathsOpt = initializeParams.WorkspaceFolders is [_, ..] workspaceFolders ? GetFolderPaths(workspaceFolders) : []; static ImmutableArray<string> GetFolderPaths(WorkspaceFolder[] workspaceFolders) { var builder = ArrayBuilder<string>.GetInstance(workspaceFolders.Length); foreach (var workspaceFolder in workspaceFolders) { if (workspaceFolder.DocumentUri.ParsedUri is not { } parsedUri) continue; var workspaceFolderPath = workspaceFolder.DocumentUri.GetDocumentFilePathFromUri(); builder.Add(workspaceFolderPath); } return builder.ToImmutableAndFree(); } } public InitializeParams? TryGetInitializeParams() { return _initializeParams; } public ImmutableArray<string> GetRequiredWorkspaceFolderPaths() { Contract.ThrowIfTrue(_workspaceFolderPathsOpt.IsDefault, $"{nameof(_workspaceFolderPathsOpt)} was not initialized. Was this accessed before the OnInitialized event ran?"); return _workspaceFolderPathsOpt; } public ClientCapabilities? TryGetClientCapabilities() { return _initializeParams?.Capabilities; } }