An extensible editor allows integration of extensions that modify the editor's
default behavior and provide customized feedback to users. The editor includes
interfaces through which extensions are connected to the editor and through which
selection services and highlight rendering services are provided. The selection
services interfaces provide a clear separation of a logical selection position
in the document and the visual feedback provided for the selection, allowing extensions
to be designed that provide customized selection feedback. The highlight rendering
services interfaces provide an extension with the ability to augment an existing
selection without modifying the actual document. The editor also includes an event
routing model that works to decrease the occurrence of conflicts between the editor
and extensions and between extensions.