Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
 /// <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));
        }
Beispiel #4
0
        /// <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;
        }
Beispiel #5
0
        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));
        }
Beispiel #6
0
        /// <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);
            }
        }
Beispiel #7
0
 public bool TryResgisterCodeLensProvider(ICodeLensProvider codeLensProvider)
 {
     return(_codeLensProviders.TryAdd(codeLensProvider.ProviderId, codeLensProvider));
 }
Beispiel #8
0
 public bool TryRegisterCodeLensProvider(ICodeLensProvider codeLensProvider) => _codeLensProviders.TryAdd(codeLensProvider.ProviderId, codeLensProvider);