Browse Source

Fixed ast node script positions.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
3b4abcceb3
  1. 1
      ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpOutputVisitor.cs
  2. 17
      ICSharpCode.NRefactory.CSharp/Refactoring/NodeOutputAction.cs
  3. 3
      ICSharpCode.NRefactory.CSharp/Refactoring/Script.cs

1
ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpOutputVisitor.cs

@ -118,6 +118,7 @@ namespace ICSharpCode.NRefactory.CSharp @@ -118,6 +118,7 @@ namespace ICSharpCode.NRefactory.CSharp
WriteSpecialsUpToNode (node);
containerStack.Push (node);
positionStack.Push (node.FirstChild);
formatter.WriteToken (""); // force indentation, if required
OnOutputStarted (new AstNodeEventArgs (node));
formatter.StartNode (node);
}

17
ICSharpCode.NRefactory.CSharp/Refactoring/NodeOutputAction.cs

@ -62,24 +62,29 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -62,24 +62,29 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
{
public int Offset {
get;
set;
internal set;
}
public int Length {
get {
return EndOffset - Offset;
}
get;
internal set;
}
public int EndOffset {
get;
set;
get {
return Offset + Length;
}
}
public Segment (int offset)
{
this.Offset = offset;
}
public override string ToString ()
{
return string.Format ("[NodeOutput.Segment: Offset={0}, Length={1}, EndOffset={2}]", Offset, Length, EndOffset);
}
}
}

3
ICSharpCode.NRefactory.CSharp/Refactoring/Script.cs

@ -162,7 +162,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -162,7 +162,8 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
result.NodeSegments [e.AstNode] = new NodeOutput.Segment (stringWriter.GetStringBuilder ().Length);
};
visitor.OutputFinished += (sender, e) => {
result.NodeSegments [e.AstNode].EndOffset = stringWriter.GetStringBuilder ().Length;
var nodeSegment = result.NodeSegments [e.AstNode];
nodeSegment.Length = stringWriter.GetStringBuilder ().Length - nodeSegment.Offset;
};
node.AcceptVisitor (visitor, null);
result.Text = stringWriter.ToString ().TrimEnd ();

Loading…
Cancel
Save