/// <summary> /// Constructs an instance of the SymbolsService class and uses /// the given Runspace to execute language service operations. /// </summary> /// <param name="factory">An ILoggerFactory implementation used for writing log messages.</param> public SymbolsService( ILoggerFactory factory, PowerShellContextService powerShellContextService, WorkspaceService workspaceService) { _logger = factory.CreateLogger <SymbolsService>(); _powerShellContextService = powerShellContextService; _workspaceService = workspaceService; _codeLensProviders = new ConcurrentDictionary <string, ICodeLensProvider>(); var codeLensProviders = new ICodeLensProvider[] { new ReferencesCodeLensProvider(_workspaceService, this), new PesterCodeLensProvider(), }; foreach (ICodeLensProvider codeLensProvider in codeLensProviders) { _codeLensProviders.TryAdd(codeLensProvider.ProviderId, codeLensProvider); } _documentSymbolProviders = new ConcurrentDictionary <string, IDocumentSymbolProvider>(); var documentSymbolProviders = new IDocumentSymbolProvider[] { new ScriptDocumentSymbolProvider(), new PsdDocumentSymbolProvider(), new PesterDocumentSymbolProvider(), }; foreach (IDocumentSymbolProvider documentSymbolProvider in documentSymbolProviders) { _documentSymbolProviders.TryAdd(documentSymbolProvider.ProviderId, documentSymbolProvider); } }
/// <summary> /// Creates an instance of the CodeLens class. /// </summary> /// <param name="provider"> /// The ICodeLensProvider which created this CodeLens. /// </param> /// <param name="scriptFile"> /// The ScriptFile for which the CodeLens was created. /// </param> /// <param name="scriptExtent"> /// The IScriptExtent for the region which the CodeLens /// pertains. /// </param> public CodeLens( ICodeLensProvider provider, ScriptFile scriptFile, IScriptExtent scriptExtent) : this( provider, scriptFile, scriptExtent, null) { }
public override Task <CodeLens> Handle(CodeLens request, CancellationToken cancellationToken) { // TODO: Catch deserializtion exception on bad object CodeLensData codeLensData = request.Data.ToObject <CodeLensData>(); ICodeLensProvider originalProvider = _symbolsService .GetCodeLensProviders() .FirstOrDefault(provider => provider.ProviderId.Equals(codeLensData.ProviderId, StringComparison.Ordinal)); ScriptFile scriptFile = _workspaceService.GetFile(codeLensData.Uri); return(originalProvider.ResolveCodeLens(request, scriptFile)); }
/// <summary> /// Creates an instance of the CodeLens class. /// </summary> /// <param name="provider"> /// The ICodeLensProvider which created this CodeLens. /// </param> /// <param name="scriptFile"> /// The ScriptFile for which the CodeLens was created. /// </param> /// <param name="scriptExtent"> /// The IScriptExtent for the region which the CodeLens /// pertains. /// </param> /// <param name="command"> /// The ClientCommand to execute when this CodeLens is clicked. /// If null, this CodeLens will be resolved by the editor when it /// gets displayed. /// </param> public CodeLens( ICodeLensProvider provider, ScriptFile scriptFile, IScriptExtent scriptExtent, ClientCommand command) { Validate.IsNotNull(nameof(provider), provider); Validate.IsNotNull(nameof(scriptFile), scriptFile); Validate.IsNotNull(nameof(scriptExtent), scriptExtent); this.Provider = provider; this.File = scriptFile; this.ScriptExtent = scriptExtent; this.Command = command; }
public Task <CodeLens> Handle(CodeLens request, CancellationToken cancellationToken) { // TODO: Catch deserializtion exception on bad object CodeLensData codeLensData = request.Data.ToObject <CodeLensData>(); ICodeLensProvider originalProvider = _providers.FirstOrDefault( provider => provider.ProviderId.Equals(codeLensData.ProviderId)); ScriptFile scriptFile = _workspaceService.GetFile( codeLensData.Uri); var resolvedCodeLens = originalProvider.ResolveCodeLens(request, scriptFile); return(Task.FromResult(resolvedCodeLens)); }
/// <summary> /// Constructs an instance of the SymbolsService class and uses /// the given Runspace to execute language service operations. /// </summary> /// <param name="factory">An ILoggerFactory implementation used for writing log messages.</param> /// <param name="runspaceContext"></param> /// <param name="executionService"></param> /// <param name="workspaceService"></param> /// <param name="configurationService"></param> public SymbolsService( ILoggerFactory factory, IRunspaceContext runspaceContext, IInternalPowerShellExecutionService executionService, WorkspaceService workspaceService, ConfigurationService configurationService) { _logger = factory.CreateLogger <SymbolsService>(); _runspaceContext = runspaceContext; _executionService = executionService; _workspaceService = workspaceService; _codeLensProviders = new ConcurrentDictionary <string, ICodeLensProvider>(); ICodeLensProvider[] codeLensProviders = new ICodeLensProvider[] { new ReferencesCodeLensProvider(_workspaceService, this), new PesterCodeLensProvider(configurationService) }; foreach (ICodeLensProvider codeLensProvider in codeLensProviders) { _codeLensProviders.TryAdd(codeLensProvider.ProviderId, codeLensProvider); } _documentSymbolProviders = new ConcurrentDictionary <string, IDocumentSymbolProvider>(); IDocumentSymbolProvider[] documentSymbolProviders = new IDocumentSymbolProvider[] { new ScriptDocumentSymbolProvider(), new PsdDocumentSymbolProvider(), new PesterDocumentSymbolProvider(), }; foreach (IDocumentSymbolProvider documentSymbolProvider in documentSymbolProviders) { _documentSymbolProviders.TryAdd(documentSymbolProvider.ProviderId, documentSymbolProvider); } }
public bool TryResgisterCodeLensProvider(ICodeLensProvider codeLensProvider) { return(_codeLensProviders.TryAdd(codeLensProvider.ProviderId, codeLensProvider)); }
public bool TryRegisterCodeLensProvider(ICodeLensProvider codeLensProvider) => _codeLensProviders.TryAdd(codeLensProvider.ProviderId, codeLensProvider);