IVsExpansionSession Interface

Represents the state of a newly inserted code snippet that is being edited by the user.

Namespace:  Microsoft.VisualStudio.TextManager.Interop
Assembly:  Microsoft.VisualStudio.TextManager.Interop.8.0 (in Microsoft.VisualStudio.TextManager.Interop.8.0.dll)

public interface IVsExpansionSession

The IVsExpansionSession type exposes the following members.

Public methodEndCurrentExpansionCalled to indicate the end of the current code snippet insertion process.
Public methodGetDeclarationNodeRetrieves the declaration node for the specified field.
Public methodGetEndSpanReturns the position at which the edit caret is to be placed when the code snippet is committed to the source buffer.
Public methodGetFieldSpanRetrieves the span (the position and extent) of the specified field.
Public methodGetFieldValueRetrieves the value of the specified field.
Public methodGetHeaderNodeReturns a node from the code snippet <Header> tag.
Public methodGetSnippetNodeReturns a node from the code snippet <Snippet> tag.
Public methodGetSnippetSpanGets the span of the code snippet.
Public methodGoToNextExpansionFieldMove the highlight to the next field in order.
Public methodGoToPreviousExpansionFieldMove the highlight to the previous field in order.
Public methodSetEndSpanSets the position where the edit caret should be placed when the code snippet is committed to the source buffer.
Public methodSetFieldDefaultSets the default value for the specified field.

This interface provides a number of useful methods to support the special code snippet edit mode as well as gaining access to the code snippet XML elements.

Code Snippet Edit Mode

After a code snippet has been inserted into the source document, a special edit mode is enabled that supports tabbing between multiple fields of the code snippet as well as selecting from lists of values associated with fields. The special edit mode is ended when the user types Enter or ESC. If this special edit mode is supported, it must be implemented by the language service that supports the code snippet. Otherwise, the language service should call the EndCurrentExpansion method on this interface to indicate that the code snippet has been accepted and nothing further needs to be done to the snippet.

Notes to Implementers

This interface is implemented by the same entity that implements the IVsExpansion interface (which in turn is implemented on an IVsTextBuffer object).

Notes to Callers

This interface is returned from the following methods:

The IVsExpansionSession interface is used to implement the snippet special edit mode and is passed to the OnBeforeInsertion and OnAfterInsertion methods in the IVsExpansionClient interface.

Community Additions