提交 ab000877 编写于 作者: C Cyrus Najmabadi

Simplify

上级 473bb070
......@@ -29,26 +29,25 @@ internal abstract class AbstractKeywordHighlighter : IHighlighter
public void AddHighlights(
SyntaxNode root, int position, List<TextSpan> highlights, CancellationToken cancellationToken)
{
using var highlightsListPooledObject = s_textSpanListPool.GetPooledObject();
using var tokensListPooledObject = s_tokenListPool.GetPooledObject();
var tempHighlights = highlightsListPooledObject.Object;
var touchingTokens = tokensListPooledObject.Object;
AddTouchingTokens(root, position, touchingTokens);
foreach (var token in touchingTokens)
using (s_textSpanListPool.GetPooledObject(out var tempHighlights))
using (s_tokenListPool.GetPooledObject(out var touchingTokens))
{
for (var parent = token.Parent; parent != null; parent = parent.Parent)
AddTouchingTokens(root, position, touchingTokens);
foreach (var token in touchingTokens)
{
if (IsHighlightableNode(parent))
for (var parent = token.Parent; parent != null; parent = parent.Parent)
{
tempHighlights.Clear();
AddHighlightsForNode(parent, tempHighlights, cancellationToken);
if (AnyIntersects(position, tempHighlights))
if (IsHighlightableNode(parent))
{
highlights.AddRange(tempHighlights);
return;
tempHighlights.Clear();
AddHighlightsForNode(parent, tempHighlights, cancellationToken);
if (AnyIntersects(position, tempHighlights))
{
highlights.AddRange(tempHighlights);
return;
}
}
}
}
......
......@@ -46,6 +46,13 @@ public static PooledObject<List<TItem>> GetPooledObject<TItem>(this ObjectPool<L
return PooledObject<List<TItem>>.Create(pool);
}
public static PooledObject<List<TItem>> GetPooledObject<TItem>(this ObjectPool<List<TItem>> pool, out List<TItem> list)
{
var pooledObject = PooledObject<List<TItem>>.Create(pool);
list = pooledObject.Object;
return pooledObject;
}
public static PooledObject<T> GetPooledObject<T>(this ObjectPool<T> pool) where T : class
{
return new PooledObject<T>(pool, p => p.Allocate(), (p, o) => p.Free(o));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册