2010-07-15 43 views

回答

2

我寫了一個快速的小擴展來做到這一點;既然你很可能想修改它,你應該grab the source。最重要的部分是在LayoutChanged代碼:

void ViewLayoutChanged(object sender, TextViewLayoutChangedEventArgs e) 
    { 
     IWpfTextView view = sender as IWpfTextView; 
     var adornmentLayer = view.GetAdornmentLayer("HighlightLines"); 

     foreach (var line in e.NewOrReformattedLines) 
     { 
      if (line.Extent.GetText().StartsWith("logger.", StringComparison.OrdinalIgnoreCase)) 
      { 
       Rectangle rect = new Rectangle() 
        { 
         Width = view.ViewportWidth + view.MaxTextRightCoordinate, 
         Height = line.Height, 
         Fill = Brushes.AliceBlue 
        }; 

       Canvas.SetTop(rect, line.Top); 
       Canvas.SetLeft(rect, 0); 
       adornmentLayer.AddAdornment(line.Extent, null, rect); 
      } 
     } 
    } 

要建立/運行此,你將需要:

  1. Download the VS2010 SDK
  2. 從編輯器擴展模板創建一個新項目(我通常選擇Visual C# - > Extensibility - > Editor Text Adornment)。
  3. 刪除它創建的所有源文件。
  4. 將HighlightMatchingLines.cs添加到項目中。
  5. F5運行/測試。
  6. 如果您想更改畫筆,請更改Fill = Brushes.AliceBlue一行。
  7. 如果要更改匹配的文本,請更改if表達式中的條件。
  8. 如果要更改加載擴展的文件類型,請更改[ContentType]屬性。 this msdn page的「內容類型」部分列出了一些常見的內容。
+0

想寫一個擴展名,但不想進入它。儘管如此,你真棒! – 2010-07-15 07:01:56