public RazorFormattingPass(
            RazorDocumentMappingService documentMappingService,
            FilePathNormalizer filePathNormalizer,
            ClientNotifierServiceBase server,
            ILoggerFactory loggerFactory)
            : base(documentMappingService, filePathNormalizer, server)
        {
            if (loggerFactory is null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _logger = loggerFactory.CreateLogger <RazorFormattingPass>();
        }
示例#2
0
 public FoldingRangeEndpoint(
     RazorDocumentMappingService documentMappingService,
     ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
     DocumentResolver documentResolver,
     ClientNotifierServiceBase languageServer,
     DocumentVersionCache documentVersionCache,
     IEnumerable <RazorFoldingRangeProvider> foldingRangeProviders,
     ILoggerFactory loggerFactory)
 {
     _documentMappingService           = documentMappingService ?? throw new ArgumentNullException(nameof(documentMappingService));
     _languageServer                   = languageServer ?? throw new ArgumentNullException(nameof(languageServer));
     _projectSnapshotManagerDispatcher = projectSnapshotManagerDispatcher ?? throw new ArgumentNullException(nameof(projectSnapshotManagerDispatcher));
     _documentResolver                 = documentResolver ?? throw new ArgumentNullException(nameof(documentResolver));
     _documentVersionCache             = documentVersionCache ?? throw new ArgumentNullException(nameof(documentVersionCache));
     _foldingRangeProviders            = foldingRangeProviders ?? throw new ArgumentNullException(nameof(foldingRangeProviders));
     _logger = loggerFactory.CreateLogger <FoldingRangeEndpoint>();
 }
 public CodeActionEndpoint(
     RazorDocumentMappingService documentMappingService,
     IEnumerable <RazorCodeActionProvider> razorCodeActionProviders,
     IEnumerable <CSharpCodeActionProvider> csharpCodeActionProviders,
     ForegroundDispatcher foregroundDispatcher,
     DocumentResolver documentResolver,
     IClientLanguageServer languageServer,
     LanguageServerFeatureOptions languageServerFeatureOptions)
 {
     _documentMappingService       = documentMappingService ?? throw new ArgumentNullException(nameof(documentMappingService));
     _razorCodeActionProviders     = razorCodeActionProviders ?? throw new ArgumentNullException(nameof(razorCodeActionProviders));
     _csharpCodeActionProviders    = csharpCodeActionProviders ?? throw new ArgumentNullException(nameof(csharpCodeActionProviders));
     _foregroundDispatcher         = foregroundDispatcher ?? throw new ArgumentNullException(nameof(foregroundDispatcher));
     _documentResolver             = documentResolver ?? throw new ArgumentNullException(nameof(documentResolver));
     _languageServer               = languageServer ?? throw new ArgumentNullException(nameof(languageServer));
     _languageServerFeatureOptions = languageServerFeatureOptions ?? throw new ArgumentNullException(nameof(languageServerFeatureOptions));
 }
示例#4
0
 public TextDocumentTextPresentationEndpoint(
     ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
     DocumentResolver documentResolver,
     RazorDocumentMappingService razorDocumentMappingService,
     ClientNotifierServiceBase languageServer,
     DocumentVersionCache documentVersionCache,
     LanguageServerFeatureOptions languageServerFeatureOptions,
     ILoggerFactory loggerFactory)
     : base(projectSnapshotManagerDispatcher,
            documentResolver,
            razorDocumentMappingService,
            languageServer,
            documentVersionCache,
            languageServerFeatureOptions,
            loggerFactory.CreateLogger <TextDocumentTextPresentationEndpoint>())
 {
 }
示例#5
0
    public InlineCompletionEndpoint(
        ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
        DocumentResolver documentResolver,
        RazorDocumentMappingService documentMappingService,
        ClientNotifierServiceBase languageServer,
        AdhocWorkspaceFactory adhocWorkspaceFactory,
        ILoggerFactory loggerFactory)
    {
        if (projectSnapshotManagerDispatcher is null)
        {
            throw new ArgumentNullException(nameof(projectSnapshotManagerDispatcher));
        }

        if (documentResolver is null)
        {
            throw new ArgumentNullException(nameof(documentResolver));
        }

        if (documentMappingService is null)
        {
            throw new ArgumentNullException(nameof(documentMappingService));
        }

        if (languageServer is null)
        {
            throw new ArgumentNullException(nameof(languageServer));
        }

        if (adhocWorkspaceFactory is null)
        {
            throw new ArgumentNullException(nameof(adhocWorkspaceFactory));
        }

        if (loggerFactory is null)
        {
            throw new ArgumentNullException(nameof(loggerFactory));
        }

        _projectSnapshotManagerDispatcher = projectSnapshotManagerDispatcher;
        _documentResolver       = documentResolver;
        _documentMappingService = documentMappingService;
        _languageServer         = languageServer;
        _adhocWorkspaceFactory  = adhocWorkspaceFactory;
        _logger = loggerFactory.CreateLogger <InlineCompletionEndpoint>();
    }
        public RazorFormattingEndpoint(
            ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
            DocumentResolver documentResolver,
            RazorFormattingService razorFormattingService,
            RazorDocumentMappingService razorDocumentMappingService,
            IOptionsMonitor <RazorLSPOptions> optionsMonitor,
            ILoggerFactory loggerFactory)
        {
            if (projectSnapshotManagerDispatcher is null)
            {
                throw new ArgumentNullException(nameof(projectSnapshotManagerDispatcher));
            }

            if (documentResolver is null)
            {
                throw new ArgumentNullException(nameof(documentResolver));
            }

            if (razorFormattingService is null)
            {
                throw new ArgumentNullException(nameof(razorFormattingService));
            }

            if (razorDocumentMappingService is null)
            {
                throw new ArgumentNullException(nameof(razorDocumentMappingService));
            }

            if (optionsMonitor is null)
            {
                throw new ArgumentNullException(nameof(optionsMonitor));
            }

            if (loggerFactory is null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _projectSnapshotManagerDispatcher = projectSnapshotManagerDispatcher;
            _documentResolver            = documentResolver;
            _razorFormattingService      = razorFormattingService;
            _razorDocumentMappingService = razorDocumentMappingService;
            _optionsMonitor = optionsMonitor;
            _logger         = loggerFactory.CreateLogger <RazorFormattingEndpoint>();
        }
        public RazorDefinitionEndpoint(
            ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
            DocumentResolver documentResolver,
            RazorComponentSearchEngine componentSearchEngine,
            RazorDocumentMappingService documentMappingService,
            ILoggerFactory loggerFactory)
        {
            if (loggerFactory is null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _projectSnapshotManagerDispatcher = projectSnapshotManagerDispatcher ?? throw new ArgumentNullException(nameof(projectSnapshotManagerDispatcher));
            _documentResolver       = documentResolver ?? throw new ArgumentNullException(nameof(documentResolver));
            _componentSearchEngine  = componentSearchEngine ?? throw new ArgumentNullException(nameof(componentSearchEngine));
            _documentMappingService = documentMappingService ?? throw new ArgumentNullException(nameof(documentMappingService));
            _logger = loggerFactory.CreateLogger <RazorDefinitionEndpoint>();
        }
        public CodeActionEndpoint(
            RazorDocumentMappingService documentMappingService,
            IEnumerable <RazorCodeActionProvider> razorCodeActionProviders,
            IEnumerable <CSharpCodeActionProvider> csharpCodeActionProviders,
            ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
            DocumentResolver documentResolver,
            ClientNotifierServiceBase languageServer,
            LanguageServerFeatureOptions languageServerFeatureOptions)
        {
            _documentMappingService           = documentMappingService ?? throw new ArgumentNullException(nameof(documentMappingService));
            _razorCodeActionProviders         = razorCodeActionProviders ?? throw new ArgumentNullException(nameof(razorCodeActionProviders));
            _csharpCodeActionProviders        = csharpCodeActionProviders ?? throw new ArgumentNullException(nameof(csharpCodeActionProviders));
            _projectSnapshotManagerDispatcher = projectSnapshotManagerDispatcher ?? throw new ArgumentNullException(nameof(projectSnapshotManagerDispatcher));
            _documentResolver             = documentResolver ?? throw new ArgumentNullException(nameof(documentResolver));
            _languageServer               = languageServer ?? throw new ArgumentNullException(nameof(languageServer));
            _languageServerFeatureOptions = languageServerFeatureOptions ?? throw new ArgumentNullException(nameof(languageServerFeatureOptions));

            _allAvailableCodeActionNames = GetAllAvailableCodeActionNames();
        }
        public DefaultRazorSemanticTokensInfoService(
            ClientNotifierServiceBase languageServer,
            RazorDocumentMappingService documentMappingService,
            ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
            DocumentResolver documentResolver,
            DocumentVersionCache documentVersionCache,
            ILoggerFactory loggerFactory)
        {
            _languageServer                   = languageServer ?? throw new ArgumentNullException(nameof(languageServer));
            _documentMappingService           = documentMappingService ?? throw new ArgumentNullException(nameof(documentMappingService));
            _projectSnapshotManagerDispatcher = projectSnapshotManagerDispatcher ?? throw new ArgumentNullException(nameof(projectSnapshotManagerDispatcher));
            _documentResolver                 = documentResolver ?? throw new ArgumentNullException(nameof(documentResolver));
            _documentVersionCache             = documentVersionCache ?? throw new ArgumentNullException(nameof(documentVersionCache));

            if (loggerFactory is null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _logger = loggerFactory.CreateLogger <DefaultRazorSemanticTokensInfoService>();
        }
示例#10
0
        public FormattingPassBase(
            RazorDocumentMappingService documentMappingService,
            FilePathNormalizer filePathNormalizer,
            ClientNotifierServiceBase server)
        {
            if (documentMappingService is null)
            {
                throw new ArgumentNullException(nameof(documentMappingService));
            }

            if (filePathNormalizer is null)
            {
                throw new ArgumentNullException(nameof(filePathNormalizer));
            }

            if (server is null)
            {
                throw new ArgumentNullException(nameof(server));
            }

            DocumentMappingService = documentMappingService;
        }
        public RazorDiagnosticsEndpoint(
            ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
            DocumentResolver documentResolver,
            DocumentVersionCache documentVersionCache,
            RazorDocumentMappingService documentMappingService,
            ILoggerFactory loggerFactory)
        {
            if (projectSnapshotManagerDispatcher == null)
            {
                throw new ArgumentNullException(nameof(projectSnapshotManagerDispatcher));
            }

            if (documentResolver == null)
            {
                throw new ArgumentNullException(nameof(documentResolver));
            }

            if (documentVersionCache == null)
            {
                throw new ArgumentNullException(nameof(documentVersionCache));
            }

            if (documentMappingService == null)
            {
                throw new ArgumentNullException(nameof(documentMappingService));
            }

            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _projectSnapshotManagerDispatcher = projectSnapshotManagerDispatcher;
            _documentResolver       = documentResolver;
            _documentVersionCache   = documentVersionCache;
            _documentMappingService = documentMappingService;
            _logger = loggerFactory.CreateLogger <RazorDiagnosticsEndpoint>();
        }
        public WrapWithTagEndpoint(
            ClientNotifierServiceBase languageServer,
            ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
            DocumentResolver documentResolver,
            RazorDocumentMappingService razorDocumentMappingService,
            ILoggerFactory loggerFactory)
        {
            if (languageServer is null)
            {
                throw new ArgumentNullException(nameof(languageServer));
            }

            if (projectSnapshotManagerDispatcher is null)
            {
                throw new ArgumentNullException(nameof(projectSnapshotManagerDispatcher));
            }

            if (documentResolver is null)
            {
                throw new ArgumentNullException(nameof(documentResolver));
            }

            if (razorDocumentMappingService is null)
            {
                throw new ArgumentNullException(nameof(razorDocumentMappingService));
            }

            if (loggerFactory is null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _languageServer = languageServer;
            _projectSnapshotManagerDispatcher = projectSnapshotManagerDispatcher;
            _documentResolver            = documentResolver;
            _razorDocumentMappingService = razorDocumentMappingService;
            _logger = loggerFactory.CreateLogger <WrapWithTagEndpoint>();
        }
        public DefaultRazorFormattingService(
            RazorDocumentMappingService documentMappingService,
            FilePathNormalizer filePathNormalizer,
            ILanguageServer server,
            IOptionsMonitor <RazorLSPOptions> optionsMonitor,
            ILoggerFactory loggerFactory)
        {
            if (documentMappingService is null)
            {
                throw new ArgumentNullException(nameof(documentMappingService));
            }

            if (filePathNormalizer is null)
            {
                throw new ArgumentNullException(nameof(filePathNormalizer));
            }

            if (server is null)
            {
                throw new ArgumentNullException(nameof(server));
            }

            if (optionsMonitor is null)
            {
                throw new ArgumentNullException(nameof(optionsMonitor));
            }

            if (loggerFactory is null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _server          = server;
            _csharpFormatter = new CSharpFormatter(documentMappingService, server, filePathNormalizer);
            _htmlFormatter   = new HtmlFormatter(server, filePathNormalizer);
            _optionsMonitor  = optionsMonitor;
            _logger          = loggerFactory.CreateLogger <DefaultRazorFormattingService>();
        }
        public CSharpFormatter(
            RazorDocumentMappingService documentMappingService,
            IClientLanguageServer languageServer,
            FilePathNormalizer filePathNormalizer)
        {
            if (documentMappingService is null)
            {
                throw new ArgumentNullException(nameof(documentMappingService));
            }

            if (languageServer is null)
            {
                throw new ArgumentNullException(nameof(languageServer));
            }

            if (filePathNormalizer is null)
            {
                throw new ArgumentNullException(nameof(filePathNormalizer));
            }

            _documentMappingService = documentMappingService;
            _server             = languageServer;
            _filePathNormalizer = filePathNormalizer;

            try
            {
                var type = typeof(CSharpFormattingOptions).Assembly.GetType("Microsoft.CodeAnalysis.CSharp.Indentation.CSharpIndentationService", throwOnError: true);
                _indentationService = Activator.CreateInstance(type);
                var indentationService = type.GetInterface("IIndentationService");
                _getIndentationMethod = indentationService.GetMethod("GetIndentation");
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException(
                          "Error occured when creating an instance of Roslyn's IIndentationService. Roslyn may have changed in an unexpected way.",
                          ex);
            }
        }
示例#15
0
        public TextDocumentUriPresentationEndpoint(
            ProjectSnapshotManagerDispatcher projectSnapshotManagerDispatcher,
            DocumentResolver documentResolver,
            RazorDocumentMappingService razorDocumentMappingService,
            RazorComponentSearchEngine razorComponentSearchEngine,
            ClientNotifierServiceBase languageServer,
            DocumentVersionCache documentVersionCache,
            LanguageServerFeatureOptions languageServerFeatureOptions,
            ILoggerFactory loggerFactory)
            : base(projectSnapshotManagerDispatcher,
                   documentResolver,
                   razorDocumentMappingService,
                   languageServer,
                   documentVersionCache,
                   languageServerFeatureOptions,
                   loggerFactory.CreateLogger <TextDocumentUriPresentationEndpoint>())
        {
            if (razorComponentSearchEngine is null)
            {
                throw new ArgumentNullException(nameof(razorComponentSearchEngine));
            }

            _razorComponentSearchEngine = razorComponentSearchEngine;
        }
示例#16
0
        public CSharpFormatter(
            RazorDocumentMappingService documentMappingService,
            ClientNotifierServiceBase languageServer,
            FilePathNormalizer filePathNormalizer)
        {
            if (documentMappingService is null)
            {
                throw new ArgumentNullException(nameof(documentMappingService));
            }

            if (languageServer is null)
            {
                throw new ArgumentNullException(nameof(languageServer));
            }

            if (filePathNormalizer is null)
            {
                throw new ArgumentNullException(nameof(filePathNormalizer));
            }

            _documentMappingService = documentMappingService;
            _server             = languageServer;
            _filePathNormalizer = filePathNormalizer;
        }
        public FormattingPassBase(
            RazorDocumentMappingService documentMappingService,
            FilePathNormalizer filePathNormalizer,
            ILanguageServer server)
        {
            if (documentMappingService is null)
            {
                throw new ArgumentNullException(nameof(documentMappingService));
            }

            if (filePathNormalizer is null)
            {
                throw new ArgumentNullException(nameof(filePathNormalizer));
            }

            if (server is null)
            {
                throw new ArgumentNullException(nameof(server));
            }

            _documentMappingService = documentMappingService;
            CSharpFormatter         = new CSharpFormatter(documentMappingService, server, filePathNormalizer);
            HtmlFormatter           = new HtmlFormatter(server, filePathNormalizer);
        }
        internal static async Task <Range?> TryGetPropertyRangeAsync(RazorCodeDocument codeDocument, string propertyName, RazorDocumentMappingService documentMappingService, ILogger logger, CancellationToken cancellationToken)
        {
            // Parse the C# file and find the property that matches the name.
            // We don't worry about parameter attributes here for two main reasons:
            //   1. We don't have symbolic information, so the best we could do would be checking for any
            //      attribute named Parameter, regardless of which namespace. It also means we would have
            //      to do more checks for all of the various ways that the attribute could be specified
            //      (eg fully qualified, aliased, etc.)
            //   2. Since C# doesn't allow multiple properties with the same name, and we're doing a case
            //      sensitive search, we know the property we find is the one the user is trying to encode in a
            //      tag helper attribute. If they don't have the [Parameter] attribute then the Razor compiler
            //      will error, but allowing them to Go To Def on that property regardless, actually helps
            //      them fix the error.
            var csharpText = codeDocument.GetCSharpSourceText();
            var syntaxTree = CSharpSyntaxTree.ParseText(csharpText, cancellationToken: cancellationToken);
            var root       = await syntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);

            // Since we know how the compiler generates the C# source we can be a little specific here, and avoid
            // long tree walks. If the compiler ever changes how they generate their code, the tests for this will break
            // so we'll know about it.
            if (root is CompilationUnitSyntax compilationUnit &&
                compilationUnit.Members[0] is NamespaceDeclarationSyntax namespaceDeclaration &&
                namespaceDeclaration.Members[0] is ClassDeclarationSyntax classDeclaration)
            {
                var property = classDeclaration
                               .Members
                               .OfType <PropertyDeclarationSyntax>()
                               .Where(p => p.Identifier.ValueText.Equals(propertyName, StringComparison.Ordinal))
                               .FirstOrDefault();

                if (property is null)
                {
                    // The property probably exists in a partial class
                    logger.LogInformation("Could not find property in the generated source. Comes from partial?");
                    return(null);
                }

                var range = property.Identifier.Span.AsRange(csharpText);
                if (documentMappingService.TryMapFromProjectedDocumentRange(codeDocument, range, out var originalRange))
                {
                    return(originalRange);
                }

                logger.LogInformation("Property found but couldn't map its location.");
            }

            logger.LogInformation("Generated C# was not in expected shape (CompilationUnit -> Namespace -> Class)");

            return(null);
        }
 protected CSharpFormattingPassBase(RazorDocumentMappingService documentMappingService, FilePathNormalizer filePathNormalizer, ClientNotifierServiceBase server)
     : base(documentMappingService, filePathNormalizer, server)
 {
     CSharpFormatter = new CSharpFormatter(documentMappingService, server, filePathNormalizer);
 }