protected override Workspace CreateWorkspaceImpl()
            {
                if (TestHost == TestHost.InProcess)
                {
                    return(base.CreateWorkspaceImpl());
                }

                var hostServices = s_editorFeaturesOOPComposition.GetHostServices();
                var workspace    = new AdhocWorkspace(hostServices);

                return(workspace);
            }
            public override AdhocWorkspace CreateWorkspace()
            {
                if (TestHost == TestHost.InProcess)
                {
                    return(base.CreateWorkspace());
                }

                var hostServices = s_editorFeaturesOOPComposition.GetHostServices();
                var workspace    = new AdhocWorkspace(hostServices);

                lock (_workspaces)
                    _workspaces.Add(workspace);

                return(workspace);
            }
示例#3
0
    public async Task FormatAsync()
    {
        var hostServices = s_composition.GetHostServices();

        using var workspace = new AdhocWorkspace(hostServices);

        var globalOptions = ((IMefHostExportProvider)hostServices).GetExportedValue <IGlobalOptionService>();

        globalOptions.SetGlobalOption(new OptionKey(RazorLineFormattingOptionsStorage.UseTabs), true);
        globalOptions.SetGlobalOption(new OptionKey(RazorLineFormattingOptionsStorage.TabSize), 10);

        var project = workspace.AddProject("Test", LanguageNames.CSharp);

        var source = @"
class C
   {
void F   () {}
       }
";

        var documentInfo = DocumentInfo.Create(
            DocumentId.CreateNewId(project.Id),
            name: "file.razor.g.cs",
            folders: Array.Empty <string>(),
            sourceCodeKind: SourceCodeKind.Regular,
            loader: TextLoader.From(TextAndVersion.Create(SourceText.From(source), VersionStamp.Create(), "file.razor.g.cs")),
            filePath: "file.razor.g.cs",
            isGenerated: false,
            designTimeOnly: true,
            documentServiceProvider: new TestRazorDocumentServiceProvider());

        var document = workspace.AddDocument(documentInfo);

#pragma warning disable RS0030 // Do not used banned APIs
        var formattedDocument = await Formatter.FormatAsync(document, spans : null, options : null, CancellationToken.None);

#pragma warning restore RS0030 // Do not used banned APIs

        var formattedText = await formattedDocument.GetTextAsync();

        // document options override solution options:
        AssertEx.Equal(@"
class C
{
" + "\t" + @"void F() { }
}
", formattedText.ToString());
    }