IVsExpansionClient Interface


Allows a VSPackage to participate in the code snippet insertion process.

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

public interface IVsExpansionClient


Called to signal the end of the code snippet insertion and editing phase.

System_CAPS_pubmethodFormatSpan(IVsTextLines, TextSpan[])

Called to format the specified span in the specified text buffer.

System_CAPS_pubmethodGetExpansionFunction(IXMLDOMNode, String, IVsExpansionFunction)

Called to obtain an expansion function for the specified code snippet.

System_CAPS_pubmethodIsValidKind(IVsTextLines, TextSpan[], String, Int32)

Called to verify that the specified location can accept the specified kind of snippet.

System_CAPS_pubmethodIsValidType(IVsTextLines, TextSpan[], String[], Int32, Int32)

Called to verify that the specified location can accept the specified types of code snippets.


Called after the code snippet has been inserted and formatted.


Called before the code snippet has been inserted.

System_CAPS_pubmethodOnItemChosen(String, String)

Called when a code snippet name has been selected from an IntelliSense menu.

System_CAPS_pubmethodPositionCaretForEditing(IVsTextLines, TextSpan[])

Called to position the edit caret in the specified place in a code snippet after it has been inserted and formatted.

This interface is used by clients of the code snippet manager to:

  • Receive before and after notifications during the insertion process.

  • Format the code snippet after it is inserted.

  • Verify that the snippet can be inserted at a given location.

  • Initiate a code snippet insertion in response to an IntelliSense menu selection of a code snippet.

  • Position the edit caret after a code snippet has been inserted.

Notes to Implementers:

This interface is implemented by a VSPackage that supports insertion of code snippets. If you support the use of the InvokeInsertionUI method in the IVsExpansionManager interface (typically through a custom menu action that your VSPackage installs), then you must implement the IVsExpansionClient interface and the OnItemChosen method. Otherwise, you do not need to implement the IVsExpansionClient interface unless you need to verify the placement of code snippets or you support automatic formatting of source code.


If you implement the IVsExpansionClient interface to support the OnItemChosen method, your class implementation should obtain and store the IVsExpansion interface from the IVsTextBuffer object before the InvokeInsertionUI method is called as the IVsExpansion interface is needed to complete the implementation of the OnItemChosen interface.

Notes to Callers:

This interface is instantiated and passed to the InvokeInsertionUI method in the IVsExpansionManager interface. This interface is also instantiated and passed to the methods in the IVsExpansion interface.

Return to top