Some files can contain blocks of code from more than one language, for example, an ASP.NET file can contain code blocks from VBScript or JScript. These types of files are handled by displaying the file in a primary buffer and putting each of the code blocks into a secondary buffer. The secondary buffer can then be handed to a language service for formatting and display without regard to how the code block is contained in the primary file.
In order for this two buffer system to work, a way must be made available to map positions from one buffer to the other and that is where the text buffer coordinator, as represented by the IVsTextBufferCoordinator interface comes in. This interface manages two buffers in terms of a list of spans describing the locations associated with a particular code block.
Notes to Implementers
Visual Studio implements this interface.
Notes to Callers
An instance of this interface can be obtained by calling the CoCreateInstance function with the GUID of the VsTextBufferCoordinatorClass type as the CLSID.