Text Buffer Events in the Legacy API
Note
This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
The text buffer object emits several different events that allow you to respond to different situations.
When you are using the legacy API, you should implement the following interfaces in order to receive notification of changes to the text buffer. Expose the interfaces to the text buffer using the IConnectionPointContainer
interface on the text buffer to receive notification of line changes from the buffer. For more information, see How to: Register for Text Buffer Events with the Legacy API. In the case of IVsTextStreamEvents
or IVsTextLinesEvents
interfaces, changes are returned in either one- or two-dimensional coordinates, respectively.
Text Buffer Interfaces
Following are the interfaces implemented by the text buffer object.
Interface | Description |
---|---|
IVsCompoundAction | Enables the creation of compound actions (that is, actions that are grouped in a single undo/redo unit). |
IVsPersistDocData | Enables persistence of document data managed by the text buffer. |
IVsTextBuffer | Provides basic services; used by many clients. |
IVsTextLines | Provides read and write capabilities using two-dimensional coordinates. Inherits from IVsTextBuffer . |
IVsTextScanner | Provides fast, stream-oriented, sequential access to text in the buffer. |
IVsTextStream | Provides read and write capabilities using one-dimensional coordinates. Inherits from IVsTextBuffer . |
IVsUserData | Provides access to a generic collection of properties. The most important property is the name, or moniker, of the buffer. You can store your own random data in the buffer with this interface by creating a GUID and using it as a key. |
IConnectionPointContainer | Supports connection points for events. |
Text Buffer Event Interfaces
Following are the interfaces for text buffer event notification.
Interface | Description |
---|---|
IVsTextBufferEvents | Notifies clients when a new language service is associated with a text buffer. |
IVsTextBufferDataEvents | Notifies clients when a text buffer is initialized and when changes are made to data in the text buffer. |
IVsTextStreamEvents | Notifies clients of changes to the underlying text buffer in one-dimensional coordinates. |
IVsTextLinesEvents | Notifies clients of changes to the underlying text buffer in two-dimensional coordinates. |
IVsUserDataEvents | Notifies clients of changes to user data. |
IVsPreliminaryTextChangeCommitEvents | Notifies clients of the last commit gesture to trigger the event and provides the range of text changed. The IVsPreliminaryTextChangeCommitEvents interface is not fired in response to Undo or Redo commands. Events only fire for buffers that have an undo manager. IVsPreliminaryTextChangeCommitEvents is fired prior to other events, such as pretty listing, in order to make sure the other events do not alter the text before the changes are committed. Your VSPackage must monitor either the IVsPreliminaryTextChangeCommitEvents interface or the IVsFinalTextChangeCommitEvents interface, but not both. |
IVsFinalTextChangeCommitEvents | Notifies clients of the last commit gesture to trigger the event and provides the range of text changed. The IVsFinalTextChangeCommitEvents interface is not fired in response to Undo or Redo commands. Events only fire for buffers that have an undo manager. IVsFinalTextChangeCommitEvents is intended for use only by language services or other objects that have complete control over editing. Your VSPackage must monitor either the IVsPreliminaryTextChangeCommitEvents interface or the IVsFinalTextChangeCommitEvents interface, but not both. |
See Also
Accessing the Text Buffer by Using the Legacy API
How to: Register for Text Buffer Events with the Legacy API