public WorkspaceManager( OmniSharp.Extensions.LanguageServer.Server.ILanguageServer languageServer, ILogger <WorkspaceManager> logger, IServiceProvider serviceProvider, ProjectManager projectManager) { TaskScheduler.UnobservedTaskException += (s, e) => { logger.LogWarning(e.Exception, "Unobserved exception thrown."); }; _languageServer = languageServer; _logger = logger; _serviceProvider = serviceProvider; _projectManager = projectManager; var textProvider = (TextDocumentScriptTextProvider)_serviceProvider.GetService <IScriptTextProvider>(); textProvider.OnDidOpenTextDocument += async(s, e) => { var filePath = e.TextDocument.Uri.ToFilePath(); if (Path.GetExtension(filePath).CaseInsensitiveEquals(".psc") && _projectManager.Projects.Count() == 0) { await UpdateProjects(UpdateProjectsOptions.ReloadProjects); } await _projectManager.PublishDiagnosticsForFilePath(filePath); }; _languageServer.AddHandlers(textProvider); }
public async Task InitializedAsync(ILanguageServer languageServer) { if (languageServer is null) { throw new ArgumentNullException(nameof(languageServer)); } // Initialized request, this occurs once the server and client have agreed on what sort of features they both support. It only happens once. var workspaceDirectory = ResolveWorkspaceDirectory(languageServer.ClientSettings); foreach (var fileChangeDetector in _fileChangeDetectors) { // We create a dummy cancellation token for now. Have an issue to pass through the cancellation token in the O# lib: https://github.com/OmniSharp/csharp-language-server-protocol/issues/200 var cancellationToken = CancellationToken.None; await fileChangeDetector.StartAsync(workspaceDirectory, cancellationToken); } lock (_disposeLock) { if (_disposed) { // Got disposed while starting our file change detectors. We need to re-stop our change detectors. Stop(); } } }
public TextDocumentSynchronizationEndpoint( ILanguageServer router, WorkspaceSnapshotManager snapshotManager, ForegroundThreadManager threadManager) { _router = router ?? throw new ArgumentNullException(nameof(router)); _snapshotManager = snapshotManager; _threadManager = threadManager; }
public DefaultWorkspaceDirectoryPathResolver(ILanguageServer languageServer) { if (languageServer is null) { throw new ArgumentNullException(nameof(languageServer)); } _languageServer = languageServer; }
public CompletionHandler(ILanguageServer server, BufferManager bufferManager) { _server = server; _bufferManager = bufferManager; _mocks = new ConcurrentDictionary <Type, Structure>(); _bindings = new ConcurrentDictionary <string, Type>(); Console.Error.WriteLine("CompletionHandler: " + this.GetHashCode()); InitializeMockObjects(); InitializeBindings(); }
public ProjectProgramOptionsProvider( string projectFlagsFileName, OmniSharp.Extensions.LanguageServer.Server.ILanguageServer languageServer, IXmlProjectLocator projectLocator, IXmlProjectLoader projectLoader, CreationKitProgramOptionsProvider ambientOptionsProvider, ILogger <ProjectProgramOptionsProvider> logger) { _projectFlagsFileName = projectFlagsFileName; _languageServer = languageServer; _projectLocator = projectLocator; _projectLoader = projectLoader; _ambientOptionsProvider = ambientOptionsProvider; _logger = logger; }
public DocumentChangeHandler(ILanguageServer server, BufferManager bufferManager) { _server = server; _bufferManager = bufferManager; Console.Error.WriteLine("DocumentChangeHandler: " + this.GetHashCode()); }
public void SetLanguageServer(ILanguageServer server) { _server = server; }
public DocumentCloseHandler(ILanguageServer server) { _server = server; Console.Error.WriteLine("DocumentCloseHandler: " + this.GetHashCode()); }