public override IEnumerable<NewFolding> CreateNewFoldings(TextDocument document, out int firstErrorOffset)
{
var parseResult = ParseResult;
if (parseResult == null)
{
firstErrorOffset = 0;
return Enumerable.Empty<NewFolding>();
}
try
{//parseResult.SourceSnapshot
var timer = Stopwatch.StartNew();
var outlining = new List<OutliningInfo>();
parseResult.GetOutlining(outlining);
TimeSpan = timer.Elapsed;
var result = new List<NewFolding>();
foreach (var o in outlining)
{
var newFolding = new NewFolding
{
DefaultClosed = o.IsDefaultCollapsed,
StartOffset = o.Span.StartPos,
EndOffset = o.Span.EndPos
};
result.Add(newFolding);
}
result.Sort((a, b) => a.StartOffset.CompareTo(b.StartOffset));
firstErrorOffset = 0;
return result;
}
catch (Exception ex)
{
Debug.WriteLine(ex.GetType().Name + ":" + ex.Message);
firstErrorOffset = 0;
return Enumerable.Empty<NewFolding>();
}
}