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

Simplify.

上级 8d55b48c
......@@ -15,9 +15,9 @@ private class EmbeddedCompletionContext
{
private readonly RegexEmbeddedCompletionProvider _provider;
private readonly CompletionContext _context;
private readonly HashSet<string> _names = new HashSet<string>();
public readonly List<RegexItem> Items = new List<RegexItem>();
public readonly HashSet<string> Names = new HashSet<string>();
public readonly RegexTree Tree;
public readonly SyntaxToken StringToken;
......@@ -35,10 +35,7 @@ private class EmbeddedCompletionContext
}
public int Position => _context.Position;
public OptionSet Options => _context.Options;
public Document Document => _context.Document;
public CompletionTrigger Trigger => _context.Trigger;
public CancellationToken CancellationToken => _context.CancellationToken;
public void AddIfMissing(
string displayText, string suffix, string description,
......@@ -49,16 +46,39 @@ private class EmbeddedCompletionContext
: Position;
var replacementSpan = TextSpan.FromBounds(replacementStart, Position);
var item = _provider.CreateItem(
var item = CreateItem(
StringToken, displayText, suffix, description,
replacementSpan, positionOffset, insertionText);
AddIfMissing(item);
}
private RegexItem CreateItem(
SyntaxToken stringToken, string displayText,
string suffix, string description,
TextSpan replacementSpan, int? positionOffset, string insertionText)
{
var replacementStart = replacementSpan.Start;
var newPosition = replacementStart + positionOffset;
insertionText = insertionText ?? displayText;
var escapedInsertionText = _provider._language.EscapeText(insertionText, stringToken);
if (escapedInsertionText != insertionText)
{
newPosition += escapedInsertionText.Length - insertionText.Length;
}
return new RegexItem(
displayText, suffix, description,
CompletionChange.Create(
new TextChange(replacementSpan, escapedInsertionText),
newPosition));
}
public void AddIfMissing(RegexItem item)
{
if (this.Names.Add(item.DisplayText))
if (this._names.Add(item.DisplayText))
{
this.Items.Add(item);
}
......
......@@ -403,29 +403,6 @@ private void ProvideEscapeCategoryCompletions(EmbeddedCompletionContext context)
context.AddIfMissing(@"\W", Regex_non_word_character_short, Regex_non_word_character_long, parentOpt);
}
private RegexItem CreateItem(
SyntaxToken stringToken, string displayText,
string suffix, string description,
TextSpan replacementSpan, int? positionOffset, string insertionText)
{
var replacementStart = replacementSpan.Start;
var newPosition = replacementStart + positionOffset;
insertionText = insertionText ?? displayText;
var escapedInsertionText = _language.EscapeText(insertionText, stringToken);
if (escapedInsertionText != insertionText)
{
newPosition += escapedInsertionText.Length - insertionText.Length;
}
return new RegexItem(
displayText, suffix, description,
CompletionChange.Create(
new TextChange(replacementSpan, escapedInsertionText),
newPosition));
}
private (RegexNode parent, RegexToken Token)? FindToken(
RegexNode parent, VirtualChar ch)
{
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册