internal LanguageClient( Connection connection, IOptions <LanguageClientOptions> options, IEnumerable <ICapability> capabilities, ClientInfo clientInfo, ClientCapabilities clientCapabilities, ILspClientReceiver lspClientReceiver, TextDocumentIdentifiers textDocumentIdentifiers, IServiceProvider serviceProvider, IEnumerable <OnLanguageClientStartedDelegate> startedDelegates, IEnumerable <IOnLanguageClientStarted> startedHandlers, ITextDocumentLanguageClient textDocumentLanguageClient, IClientLanguageClient clientLanguageClient, IGeneralLanguageClient generalLanguageClient, IWindowLanguageClient windowLanguageClient, IWorkspaceLanguageClient workspaceLanguageClient, LanguageProtocolSettingsBag languageProtocolSettingsBag, SharedHandlerCollection handlerCollection, IResponseRouter responseRouter, IProgressManager progressManager, IClientWorkDoneManager clientWorkDoneManager, IRegistrationManager registrationManager, ILanguageClientWorkspaceFoldersManager languageClientWorkspaceFoldersManager, IEnumerable <OnLanguageClientInitializeDelegate> initializeDelegates, IEnumerable <IOnLanguageClientInitialize> initializeHandlers, IEnumerable <OnLanguageClientInitializedDelegate> initializedDelegates, IEnumerable <IOnLanguageClientInitialized> initializedHandlers ) : base(handlerCollection, responseRouter) { _connection = connection; _capabilities = capabilities; _clientCapabilities = clientCapabilities; _clientInfo = clientInfo; _receiver = lspClientReceiver; _textDocumentIdentifiers = textDocumentIdentifiers; _startedDelegates = startedDelegates; _startedHandlers = startedHandlers; _rootUri = options.Value.RootUri; _trace = options.Value.Trace; _initializationOptions = options.Value.InitializationOptions; _settingsBag = languageProtocolSettingsBag; _collection = handlerCollection; Services = serviceProvider; _responseRouter = responseRouter; ProgressManager = progressManager; WorkDoneManager = clientWorkDoneManager; RegistrationManager = registrationManager; WorkspaceFoldersManager = languageClientWorkspaceFoldersManager; _initializeDelegates = initializeDelegates; _initializeHandlers = initializeHandlers; _initializedDelegates = initializedDelegates; _initializedHandlers = initializedHandlers; _concurrency = options.Value.Concurrency; // We need to at least create Window here in case any handler does loggin in their constructor TextDocument = textDocumentLanguageClient; Client = clientLanguageClient; General = generalLanguageClient; Window = windowLanguageClient; Workspace = workspaceLanguageClient; }
public static IRequestProgressObservable <SemanticTokensFullOrDeltaPartialResult, SemanticTokensFullOrDelta?> RequestSemanticTokensDelta( this ITextDocumentLanguageClient mediator, SemanticTokensDeltaParams @params, CancellationToken cancellationToken = default ) => mediator.ProgressManager.MonitorUntil( @params, (partial, result) => { if (partial.IsDelta) { return(new SemanticTokensFullOrDelta( new SemanticTokensDelta { Edits = partial.Delta.Edits, ResultId = result?.Delta?.ResultId ?? result?.Full?.ResultId } )); } if (partial.IsFull) { return(new SemanticTokensFullOrDelta( new SemanticTokens { Data = partial.Full.Data, ResultId = result?.Full?.ResultId ?? result?.Delta?.ResultId } )); } return(new SemanticTokensFullOrDelta(new SemanticTokens())); }, cancellationToken );
public static TResult ObserveWorkDone <T, TResult>( this ITextDocumentLanguageClient proxy, T @params, Func <ITextDocumentLanguageClient, T, TResult> func, IWorkDoneProgressObserver observer ) where T : IWorkDoneProgressParams { DoObserveWorkDone(proxy, @params, observer); return(func(proxy, @params)); }
public static IRequestProgressObservable <SemanticTokensPartialResult, SemanticTokens> RequestSemanticTokensRange( this ITextDocumentLanguageClient mediator, SemanticTokensRangeParams @params, CancellationToken cancellationToken = default ) => mediator.ProgressManager.MonitorUntil( @params, (partial, result) => new SemanticTokens { Data = partial.Data, ResultId = result.ResultId }, cancellationToken );
public static IRequestProgressObservable <SemanticTokensFullOrDeltaPartialResult, SemanticTokensFullOrDelta?> RequestSemanticTokensDelta( this ITextDocumentLanguageClient mediator, SemanticTokensDeltaParams @params, CancellationToken cancellationToken = default ) => mediator.ProgressManager.MonitorUntil( @params, (partial, result) => { if (partial.IsDelta) { return(new SemanticTokensFullOrDelta( new SemanticTokensDelta { Edits = partial.Delta !.Edits,