File: DocumentationComments\OmniSharpDocumentationCommentOptionsWrapper.cs
Web Access
Project: src\src\Features\ExternalAccess\OmniSharp\Microsoft.CodeAnalysis.ExternalAccess.OmniSharp.csproj (Microsoft.CodeAnalysis.ExternalAccess.OmniSharp)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.DocumentationComments;
using Microsoft.CodeAnalysis.ExternalAccess.OmniSharp.Options;
using Microsoft.CodeAnalysis.Formatting;
 
namespace Microsoft.CodeAnalysis.ExternalAccess.OmniSharp.DocumentationComments;
 
internal readonly struct OmniSharpDocumentationCommentOptionsWrapper
{
    internal readonly DocumentationCommentOptions UnderlyingObject;
 
    internal OmniSharpDocumentationCommentOptionsWrapper(DocumentationCommentOptions underlyingObject)
        => UnderlyingObject = underlyingObject;
 
    public OmniSharpDocumentationCommentOptionsWrapper(
        bool autoXmlDocCommentGeneration,
        OmniSharpLineFormattingOptions lineFormattingOptions)
        : this(new DocumentationCommentOptions()
        {
            LineFormatting = new LineFormattingOptions()
            {
                UseTabs = lineFormattingOptions.UseTabs,
                TabSize = lineFormattingOptions.TabSize,
                IndentationSize = lineFormattingOptions.IndentationSize,
                NewLine = lineFormattingOptions.NewLine,
            },
            AutoXmlDocCommentGeneration = autoXmlDocCommentGeneration
        })
    {
    }
 
    public static async ValueTask<OmniSharpDocumentationCommentOptionsWrapper> FromDocumentAsync(
        Document document,
        bool autoXmlDocCommentGeneration,
        CancellationToken cancellationToken)
    {
        var formattingOptions = await document.GetSyntaxFormattingOptionsAsync(cancellationToken).ConfigureAwait(false);
 
        return new(new() { LineFormatting = formattingOptions.LineFormatting, AutoXmlDocCommentGeneration = autoXmlDocCommentGeneration });
    }
}