Share via


Text Buffer Events in the Legacy API

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

Tasks

How to: Register for Text Buffer Events with the Legacy API

Concepts

Accessing the Text Buffer by Using the Legacy API