2012-11-18 9 views
1

AvalonEdit의 경우 xshd-File에 "Comments"를 정의했습니다. 이제, 내 프로그램에서, 주어진 오프셋이 주석의 내부인지 외부인지를 확인하고 싶습니다. AvalonEdit : 사용자가 주석에 있는지 확인하십시오.

나는 즉, 그물에 몇 가지 코드를 발견했다 :
http://community.sharpdevelop.net/forums/t/12793.aspx

그러나, 나는 나의 AvalonEdit-Object에서 (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"part의 내 솔루션에서 누락되었습니다. 고맙습니다! 작은 실수 : "결과"를 결정하는 라인은 HighlightLine의 인수로서 라인 번호가 아니라 라인 번호 만 필요로합니다. –

관련 문제