// 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.
// 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.
namespaceMicrosoft.VisualStudio.Text.Tagging
{
usingMicrosoft.VisualStudio.Text.Adornments;
/// <summary>
/// Represents a structural code block, which is used for vertical structural line adornments.
/// </summary>
internalinterfaceIBlockTag2:ITag
{
/// <summary>
/// Gets the span of the structural block.
/// </summary>
SnapshotSpanSpan{get;}
/// <summary>
/// Gets the level of nested-ness of the structural block.
/// </summary>
intLevel{get;}
/// <summary>
/// Gets the span of the statement that control the structral block.
/// </summary>
/// <remarks>
/// <para>
/// For example, in the following snippet of code,
/// <code>
/// if (condition1 &&
/// condition2) // comment
/// {
/// something;
/// }
/// </code>
/// this.StatementSpan would extend from the start of the "if" to the end of comment.
/// this.Span would extend from before the "{" to the end of the "}".
/// </para>
/// </remarks>
SnapshotSpanStatementSpan{get;}
/// <summary>
/// Gets the hierarchical parent of the structural block.
/// </summary>
IBlockTag2Parent{get;}
/// <summary>
/// Determines the semantic type of the structural block.
/// <remarks>
/// See <see cref="PredefinedStructureTypes2"/> for the canonical types.
/// Use <see cref="PredefinedStructureTypes2.NonStructural"/> for blocks that will not have any visible affordance
/// (but will be used for outlining).
/// </remarks>
/// </summary>
stringType{get;}
/// <summary>
/// Determines whether a block can be collapsed.
/// </summary>
boolIsCollapsible{get;}
/// <summary>
/// Determines whether a block is collapsed by default.
/// </summary>
boolIsDefaultCollapsed{get;}
/// <summary>
/// Determines whether a block is an implementation block.
/// </summary>
/// <remarks>
/// Implementation blocks are the blocks of code following a method definition.
/// They are used for commands such as the Visual Studio Collapse to Definition command,
/// which hides the implementation block and leaves only the method definition exposed.
/// </remarks>
boolIsImplementation{get;}
/// <summary>
/// Gets the data object for the collapsed UI. If the default is set, returns null.
/// </summary>
objectCollapsedForm{get;}
/// <summary>
/// Gets the data object for the collapsed UI tooltip. If the default is set, returns null.
// 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.
namespaceMicrosoft.VisualStudio.Text.Adornments
namespaceMicrosoft.CodeAnalysis.Structure
{
/// <summary>
/// Enumerates the predefined structural block types.
/// </summary>
internalstaticclassPredefinedStructureTypes2
internalstaticclassBlockTypes
{
/// <summary>
/// Represents structural blocks, with vertical line adornments displayed.
/// </summary>
publicconststringStructural="Structural";
/// <summary>
/// Represents non-structural blocks, with no vertical line adornments
/// displayed, only expand and collapse.
/// </summary>
publicconststringNonStructural="Nonstructural";
publicconststringPropertyBlock="PropertyBlock";
publicconststringAccessorBlock="AccessorBlock";
publicconststringAnonymousMethodBlock="AnonymousMethodBlock";// i.e. lambda bodies