IWpfTextView.TextViewLines
es la colección de líneas visibles. En algunos casos, la primera y la última línea pueden estar ocultas o parcialmente visibles (pero la segunda y la penúltima línea deben estar siempre visibles). Para obtener la colección de líneas totalmente visibles, puede usar IWpfTextView.TextViewLines.FirstVisibleLine
y IWpfTextView.TextViewLines.LastVisibleLine
, o filtrar la colección por ITextViewLine.VisibilityState == VisibilityState.FullyVisible
.
A Span
es una estructura para envolver una posición de inicio y una longitud pero no retiene el texto real. Hay muchos tipos de tramas en VS Editor para diferentes propósitos, por ejemplo, SnapshotSpan
es un intervalo de ITextSnapshot
, que almacena una posición de inicio, una longitud y la instantánea a la que pertenece.
Editar:
En este momento me perdí la pregunta del título.
A Point
se refiere a una posición y Span
se refiere a un rango. La mayoría de las API VS Editor que toman uno como parámetro tienen sobrecarga para el otro.
ITrackingPoint
y ITrackingSpan
están fuera de ITextBuffer
. "Seguimiento" significa que se compensan/crecen/disminuyen a medida que cambia el búfer de texto. Son instantáneas agnósticas.
SnapshotPoint
y SnapshotSpan
están fuera de ITextSnapshot
. Están vinculados al ITextSnapshot
y son inmutables.
ITextViewLine
tiene una línea formateada para su visualización. Por lo general, no es necesario cambiarlo, solo se obtiene información visual del mismo como Height
o VisibilityState
.
Muy bien, para mi propia actualización. – Chris
Se olvidó de actualizar realmente. 1. TextViews no se piensa en líneas. Esto se debe a esquematizar, ajustar palabras, etc. que difiere el TextBuffer del búfer visual. 2. SnapshotSpan vs SnapshotPoint - Span representa una cadena de caracteres. Punto, un personaje. 3. TrackingPoint vs TrackingSpan. Similar a otro punto y rango, excepto que se usa para determinar la posición en ViewPort. Creo que estoy en lo cierto. O al menos parece moverse de esa manera. – Chris