IVsExpansionEnumeration Interface
Represents a list of code snippets for a particular language service.
Assembly: Microsoft.VisualStudio.TextManager.Interop.8.0 (in Microsoft.VisualStudio.TextManager.Interop.8.0.dll)
| Name | Description | |
|---|---|---|
![]() | GetCount(UInt32) | Returns the number of objects represented in this enumeration. |
![]() | Next(UInt32, IntPtr[], UInt32) | Returns the specified number of objects from the enumeration. |
![]() | Reset() | Resets the enumeration to the beginning. |
Code snippets are pieces of code that can be inserted using the Code Snippets Manager. Each snippet is associated with a particular coding language. This interface provides a way to examine the information associated with code snippets for a particular coding language.
Notes to Implementers:
This interface is implemented by the expansion manager, which is represented by the IVsExpansionManager interface. Visual Studio typically implements the expansion manager.
Notes to Callers:
To obtain this interface, call the EnumerateExpansions method in the IVsExpansionManager interface. See the Example in this topic.
This example shows a method that retrieves an array of VsExpansion structures each of which describes one code snippet for the specified language.
using System; using System.Collections; using System.Runtime.InteropServices; using Microsoft.VisualStudio; using Microsoft.VisualStudio.TextManager.Interop; using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider; namespace MyPackage { public class MyReadSnippets { private IOleServiceProvider serviceProvider; public MyReadSnippets(IOleServiceProvider serviceProvider) { this.serviceProvider = serviceProvider; } private object GetService(Guid serviceGuid, Guid interfaceGuid) { IntPtr pUnknown = IntPtr.Zero; object unknown = null; int hr = this.serviceProvider.QueryService(ref serviceGuid, ref interfaceGuid, out pUnknown); if (ErrorHandler.Succeeded(hr)) { unknown = Marshal.GetObjectForIUnknown(pUnknown); } return unknown; } private void GetSnippets(Guid languageGuid,ref ArrayList expansionsList) { IVsTextManager textManager; textmanager = (IVsTextManager)this.GetService(typeof(SVsTextManager).GUID, typeof(IVsTextManager).GUID); if (textManager != null) { IVsTextManager2 textManager2 = (IVsTextManager2)textManager; if (textManager2 != null) { IVsExpansionManager expansionManager = null; textManager2.GetExpansionManager(out expansionManager); if (expansionManager != null) { // Tell the environment to fetch all of our snippets. IVsExpansionEnumeration expansionEnumerator = null; expansionManager.EnumerateExpansions(languageGuid, 0, // return all info null, // return all types 0, // return all types 0, // do not return NULL type 0, // do not return duplicates out expansionEnumerator); if (expansionEnumerator != null) { // Cache our expansions in an array of // VSExpansion structures. uint count = 0; uint fetched = 0; VsExpansion expansionInfo = new VsExpansion(); IntPtr[] pExpansionInfo = new IntPtr[1]; // Allocate enough memory for one VSExpansion structure. // This memory is filled in by the Next method. pExpansionInfo[0] = Marshal.AllocCoTaskMem(Marshal.SizeOf(expansionInfo)); expansionEnumerator.GetCount(out count); for (uint i = 0; i < count; i++) { expansionEnumerator.Next(1, pExpansionInfo, out fetched); if (fetched > 0) { // Convert the returned blob of data into a // structure that can be read in managed code. expansionInfo = (VsExpansion) Marshal.PtrToStructure(pExpansionInfo[0], typeof(VsExpansion)); if (!String.IsNullOrEmpty(expansionInfo.shortcut)) { expansionsList.Add(expansionInfo); } } } Marshal.FreeCoTaskMem(pExpansionInfo[0]); } } } } } } }
