// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
usingSystem.Threading;
usingMicrosoft.CodeAnalysis.Formatting;
namespaceMicrosoft.CodeAnalysis.Editor
{
internalinterfaceIBlankLineIndentationService
{
/// <summary>
/// Determines indentation for a blank line (i.e. after hitting enter at the end of a line,
/// or after moving to a blank line).
///
/// Specifically, this function operates as if the line specified by <paramref name="lineNumber"/>
/// is blank. The actual contents of the line do not matter. All indentation information is
/// determined from the previous lines in the document.
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
usingSystem.Threading;
usingSystem.Threading.Tasks;
usingMicrosoft.CodeAnalysis.Formatting;
usingMicrosoft.CodeAnalysis.Host;
namespaceMicrosoft.CodeAnalysis.Indentation
{
/// <summary>
/// An indentation result represents where the indent should be placed. It conveys this through
/// a pair of values. A position in the existing document where the indent should be relative,
/// and the number of columns after that the indent should be placed at.
///
/// This pairing provides flexibility to the implementor to compute the indentation results in
/// a variety of ways. For example, one implementation may wish to express indentation of a
/// newline as being four columns past the start of the first token on a previous line. Another
/// may wish to simply express the indentation as an absolute amount from the start of the
/// current line. With this tuple, both forms can be expressed, and the implementor does not
/// have to convert from one to the other.
/// </summary>
internalstructIndentationResult
{
/// <summary>
/// The base position in the document that the indent should be relative to. This position
/// can occur on any line (including the current line, or a previous line).
/// </summary>
publicintBasePosition{get;}
/// <summary>
/// The number of columns the indent should be at relative to the BasePosition's column.