예제 #1
0
        public void ObjectChanged()
        {
            object o = model.CurrentObject;

            if (o != null && tracking != null)
            {
                Tracking.Pair span = null;
                if (o is AST)
                {
                    AST        ast   = (AST)o;
                    FindSpan   fs    = new FindSpan(tracking);
                    ASTVisitor visit = new ASTVisitor(fs.Visitor);
                    ast.visit(visit);
                    span = fs.pair;
                }
                if (span != null)
                {
                    rtb.SelectionLength = 0;
                    rtb.SelectionStart  = span.begin;
                    rtb.SelectionLength = span.end - span.begin;
                    rtb.HideSelection   = false;
                }
                else
                {
                    rtb.HideSelection = true;
                }
            }
            else
            {
                rtb.HideSelection = true;
            }
        }
예제 #2
0
 public void Visitor(AST ast)
 {
     Tracking.Pair pair = tracking.Span(ast);
     if (pair != null && pair.begin <= lo && pair.end >= hi)
     {
         this.FoundObject = ast;
     }
 }
예제 #3
0
 public void Visitor(AST ast)
 {
     Tracking.Pair span = tracking.Span(ast);
     if (span != null)
     {
         if (pair == null)
         {
             pair = span;
         }
         else
         {
             if (pair.begin > span.begin)
             {
                 pair.begin = span.begin;
             }
             if (pair.end < span.end)
             {
                 pair.end = span.end;
             }
         }
     }
 }