コード例 #1
0
 void textView_VisualLineConstructionStarting(object sender, VisualLineConstructionStartEventArgs e)
 {
     IHighlighter highlighter = ((TextView)sender).Services.GetService(typeof(IHighlighter)) as IHighlighter;
     if (highlighter != null)
     {
         // Force update of highlighting state up to the position where we start generating visual lines.
         // This is necessary in case the document gets modified above the FirstLineInView so that the highlighting state changes.
         // We need to detect this case and issue a redraw (through TextViewDocumentHighligher.OnHighlightStateChanged)
         // before the visual line construction reuses existing lines that were built using the invalid highlighting state.
         lineNumberBeingColorized = e.FirstLineInView.LineNumber - 1;
         highlighter.GetSpanStack(lineNumberBeingColorized);
         lineNumberBeingColorized = 0;
     }
 }
コード例 #2
0
 void textView_VisualLineConstructionStarting(object sender, VisualLineConstructionStartEventArgs e)
 {
     if (highlighter != null) {
         // Force update of highlighting state up to the position where we start generating visual lines.
         // This is necessary in case the document gets modified above the FirstLineInView so that the highlighting state changes.
         // We need to detect this case and issue a redraw (through OnHighlightStateChanged)
         // before the visual line construction reuses existing lines that were built using the invalid highlighting state.
         lineNumberBeingColorized = e.FirstLineInView.LineNumber - 1;
         if (!isInHighlightingGroup) {
             // avoid opening group twice if there was an exception during the previous visual line construction
             // (not ideal, but better than throwing InvalidOperationException "group already open"
             // without any way of recovering)
             highlighter.BeginHighlighting();
             isInHighlightingGroup = true;
         }
         highlighter.UpdateHighlightingState(lineNumberBeingColorized);
         lineNumberBeingColorized = 0;
     }
 }