2012-11-18 31 views
1

對於AvalonEdit,我在xshd-File中定義了「註釋」。現在,在我的程序中,我想確定一個給定的偏移量是位於評論的內部還是外部。AvalonEdit:確定您是否在評論

我沒有在網絡上找到一些代碼,即:
http://community.sharpdevelop.net/forums/t/12793.aspx

不過,我不知道如何從我的AvalonEdit-對象獲得必要的對象(如CurrentContext)。

我希望以前有人創建過這樣的功能。你可以請張貼一些代碼或指向正確的方向嗎? (文檔等)

回答

3

我不確定在該示例中「當前上下文」是什麼,但它僅用於訪問IHighlighter服務容器。 您可以從文本編輯得到直接:

bool IsInComment(int line, int column) 
{ 
    IHighlighter highlighter = textEditor.TextArea.GetService(typeof(IHighlighter)) as IHighlighter; 
    if (highlighter == null) 
     return false; 
    int off = textEditor.Document.GetOffset(line, column); 
    HighlightedLine result = highlighter.HighlightLine(document.GetLineByNumber(line)); 
    return result.Sections.Any(s => s.Offset <= off && s.Offset+s.Length >= off && s.Color.Name == "Comment"); 
} 
+0

的「GetService的」雙組分失蹤在我的解決方案。謝謝!一個小錯誤:確定「結果」的行只需要linenumber而不是line的參數作爲HighlightLine的參數 –