public LanguageServerWorkspaceFolderManager(IWorkspaceLanguageServer server) { _server = server; _workspaceFolders = new ConcurrentDictionary <DocumentUri, WorkspaceFolder>(DocumentUri.Comparer); _workspaceFoldersSubject = new ReplaySubject <IEnumerable <WorkspaceFolder> >(1); _workspaceFoldersChangedSubject = new Subject <WorkspaceFolderChange>(); }
public DidChangeConfigurationProvider( Action <IConfigurationBuilder> configurationBuilderAction, ILogger <DidChangeConfigurationProvider> logger, IWorkspaceLanguageServer workspaceLanguageServer, ConfigurationConverter configurationConverter ) { _logger = logger; _workspaceLanguageServer = workspaceLanguageServer; _configurationConverter = configurationConverter; var builder = new ConfigurationBuilder() .Add(new DidChangeConfigurationSource(this)); configurationBuilderAction(builder); _configuration = (builder.Build() as ConfigurationRoot) !; var triggerChange = new Subject <System.Reactive.Unit>(); _compositeDisposable.Add(triggerChange); _triggerChange = triggerChange; // ReSharper disable once SuspiciousTypeConversion.Global if (_configuration is IDisposable disposableConfiguration) { _compositeDisposable.Add(disposableConfiguration); } _compositeDisposable.Add(triggerChange.Throttle(TimeSpan.FromMilliseconds(50)).Select(_ => GetWorkspaceConfiguration()).Switch().Subscribe()); }
internal LanguageServer( Connection connection, IResponseRouter responseRouter, IOptions <LanguageServerOptions> options, ILanguageServerConfiguration configuration, ServerInfo serverInfo, ILspServerReceiver receiver, ISerializer serializer, IServiceProvider serviceProvider, ISupportedCapabilities supportedCapabilities, TextDocumentIdentifiers textDocumentIdentifiers, IEnumerable <OnLanguageServerInitializeDelegate> initializeDelegates, IEnumerable <OnLanguageServerInitializedDelegate> initializedDelegates, IEnumerable <OnLanguageServerStartedDelegate> startedDelegates, IEnumerable <IOnLanguageServerStarted> startedHandlers, IServerWorkDoneManager serverWorkDoneManager, ITextDocumentLanguageServer textDocumentLanguageServer, IClientLanguageServer clientLanguageServer, IGeneralLanguageServer generalLanguageServer, IWindowLanguageServer windowLanguageServer, IWorkspaceLanguageServer workspaceLanguageServer, LanguageProtocolSettingsBag languageProtocolSettingsBag, SharedHandlerCollection handlerCollection, IProgressManager progressManager, ILanguageServerWorkspaceFolderManager workspaceFolderManager, IEnumerable <IOnLanguageServerInitialize> initializeHandlers, IEnumerable <IOnLanguageServerInitialized> initializedHandlers ) : base(handlerCollection, responseRouter) { Configuration = configuration; _connection = connection; _serverInfo = serverInfo; _serverReceiver = receiver; _serializer = serializer; _supportedCapabilities = supportedCapabilities; _textDocumentIdentifiers = textDocumentIdentifiers; _initializeDelegates = initializeDelegates; _initializedDelegates = initializedDelegates; _startedDelegates = startedDelegates; _startedHandlers = startedHandlers; WorkDoneManager = serverWorkDoneManager; _settingsBag = languageProtocolSettingsBag; Services = serviceProvider; _collection = handlerCollection; // We need to at least create Window here in case any handler does logging in their constructor TextDocument = textDocumentLanguageServer; Client = clientLanguageServer; General = generalLanguageServer; Window = windowLanguageServer; Workspace = workspaceLanguageServer; ProgressManager = progressManager; WorkspaceFolderManager = workspaceFolderManager; _initializeHandlers = initializeHandlers; _initializedHandlers = initializedHandlers; _concurrency = options.Value.Concurrency; _disposable.Add(_collection.Add(this)); }
public DidChangeConfigurationProvider( IEnumerable <ConfigurationItem> configurationItems, Action <IConfigurationBuilder> configurationBuilderAction, ILogger <DidChangeConfigurationProvider> logger, IWorkspaceLanguageServer workspaceLanguageServer ) { _configurationItems = configurationItems; _logger = logger; _workspaceLanguageServer = workspaceLanguageServer; var builder = new ConfigurationBuilder() .Add(new DidChangeConfigurationSource(this)); configurationBuilderAction(builder); _configuration = builder.Build() as ConfigurationRoot; }
internal LanguageServer( Connection connection, IResponseRouter responseRouter, IOptions <LanguageServerOptions> options, ILanguageServerConfiguration configuration, ServerInfo serverInfo, ILspServerReceiver receiver, ISerializer serializer, IResolverContext resolverContext, ISupportedCapabilities supportedCapabilities, TextDocumentIdentifiers textDocumentIdentifiers, IEnumerable <OnLanguageServerInitializeDelegate> initializeDelegates, IEnumerable <OnLanguageServerInitializedDelegate> initializedDelegates, IEnumerable <OnLanguageServerStartedDelegate> startedDelegates, IEnumerable <IOnLanguageServerStarted> startedHandlers, IServerWorkDoneManager serverWorkDoneManager, ITextDocumentLanguageServer textDocumentLanguageServer, IClientLanguageServer clientLanguageServer, IGeneralLanguageServer generalLanguageServer, IWindowLanguageServer windowLanguageServer, IWorkspaceLanguageServer workspaceLanguageServer, LanguageProtocolSettingsBag languageProtocolSettingsBag, SharedHandlerCollection handlerCollection, IProgressManager progressManager, ILanguageServerWorkspaceFolderManager workspaceFolderManager, IEnumerable <IOnLanguageServerInitialize> initializeHandlers, IEnumerable <IOnLanguageServerInitialized> initializedHandlers, IEnumerable <IRegistrationOptionsConverter> registrationOptionsConverters, InstanceHasStarted instanceHasStarted ) : base(handlerCollection, responseRouter) { Configuration = configuration; _connection = connection; _serverInfo = serverInfo; _serverReceiver = receiver; _serializer = serializer; _supportedCapabilities = supportedCapabilities; _textDocumentIdentifiers = textDocumentIdentifiers; _initializeDelegates = initializeDelegates; _initializedDelegates = initializedDelegates; _startedDelegates = startedDelegates; _startedHandlers = startedHandlers; WorkDoneManager = serverWorkDoneManager; _settingsBag = languageProtocolSettingsBag; Services = _resolverContext = resolverContext; _collection = handlerCollection; // We need to at least create Window here in case any handler does logging in their constructor TextDocument = textDocumentLanguageServer; Client = clientLanguageServer; General = generalLanguageServer; Window = windowLanguageServer; Workspace = workspaceLanguageServer; ProgressManager = progressManager; WorkspaceFolderManager = workspaceFolderManager; _initializeHandlers = initializeHandlers; _initializedHandlers = initializedHandlers; _registrationOptionsConverters = registrationOptionsConverters; _instanceHasStarted = instanceHasStarted; _concurrency = options.Value.Concurrency; _capabilityTypes = options .Value.Assemblies .SelectMany(z => z.ExportedTypes) .Where(z => z.IsClass && !z.IsAbstract) .Where(z => typeof(ICapability).IsAssignableFrom(z)) .Where(z => z.GetCustomAttributes <CapabilityKeyAttribute>().Any()) .ToLookup(z => string.Join(".", z.GetCustomAttribute <CapabilityKeyAttribute>().Keys)); _disposable.Add(_collection.Add(this)); }