提交 87a2fa27 编写于 作者: C CyrusNajmabadi

Object creation providers don't need ot compute insertion text after the fact.

上级 d6ddfe77
......@@ -21,17 +21,6 @@ namespace Microsoft.CodeAnalysis.CSharp.Completion.Providers
{
internal partial class ObjectCreationCompletionProvider : AbstractObjectCreationCompletionProvider
{
protected override string GetInsertionText(ISymbol symbol, AbstractSyntaxContext context, char ch)
{
if (symbol is IAliasSymbol)
{
return ((IAliasSymbol)symbol).Name;
}
var displayService = context.GetLanguageService<ISymbolDisplayService>();
return displayService.ToMinimalDisplayString(context.SemanticModel, context.Position, symbol);
}
internal override bool IsInsertionTrigger(SourceText text, int characterPosition, OptionSet options)
{
return CompletionUtilities.IsTriggerAfterSpaceOrStartOfWordCharacter(text, characterPosition, options);
......
......@@ -32,7 +32,8 @@ protected override bool IsInstrinsic(ISymbol s)
return ts != null && ts.IsIntrinsicType();
}
protected override string GetInsertionText(ISymbol symbol, AbstractSyntaxContext context, char ch)
protected override string GetInsertionText(
CompletionItem item, ISymbol symbol, AbstractSyntaxContext context, char ch)
{
return GetInsertionText(symbol, context);
}
......
......@@ -10,9 +10,9 @@
using Microsoft.CodeAnalysis.Recommendations;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.Shared.Extensions.ContextQuery;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Utilities;
using Microsoft.CodeAnalysis.Shared.Utilities;
using System;
namespace Microsoft.CodeAnalysis.Completion.Providers
{
......@@ -122,11 +122,20 @@ protected override Task<IEnumerable<ISymbol>> GetPreselectedSymbolsWorker(Abstra
return Task.FromResult(SpecializedCollections.SingletonEnumerable((ISymbol)type));
}
protected override ValueTuple<string, string> GetDisplayAndInsertionText(ISymbol symbol, AbstractSyntaxContext context)
protected override ValueTuple<string, string> GetDisplayAndInsertionText(
ISymbol symbol, AbstractSyntaxContext context)
{
var displayService = context.GetLanguageService<ISymbolDisplayService>();
var displayString = displayService.ToMinimalDisplayString(context.SemanticModel, context.Position, symbol);
return ValueTuple.Create(displayString, displayString);
}
protected override string GetInsertionText(
CompletionItem item, ISymbol symbol, AbstractSyntaxContext context, char ch)
{
// The insertion text we put in the completion item is already the right text
// to insert.
return SymbolCompletionItem.GetInsertionText(item);
}
}
}
......@@ -344,7 +344,7 @@ private Task<AbstractSyntaxContext> GetOrCreateContext(Document document, int po
var symbols = await SymbolCompletionItem.GetSymbolsAsync(selectedItem, document, cancellationToken).ConfigureAwait(false);
if (symbols.Length > 0)
{
insertionText = GetInsertionText(symbols[0], context, ch.Value);
insertionText = GetInsertionText(selectedItem, symbols[0], context, ch.Value);
}
else
{
......@@ -355,6 +355,6 @@ private Task<AbstractSyntaxContext> GetOrCreateContext(Document document, int po
return new TextChange(selectedItem.Span, insertionText);
}
protected abstract string GetInsertionText(ISymbol symbol, AbstractSyntaxContext context, char ch);
protected abstract string GetInsertionText(CompletionItem item, ISymbol symbol, AbstractSyntaxContext context, char ch);
}
}
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports System.Collections.Immutable
Imports System.Threading
Imports Microsoft.CodeAnalysis.Completion
Imports Microsoft.CodeAnalysis.Completion.Providers
......@@ -136,9 +135,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
Return Task.FromResult(Of TextChange?)(New TextChange(selectedItem.Span, insertionText))
End Function
Protected Overrides Function GetInsertionText(symbol As ISymbol, context As AbstractSyntaxContext, ch As Char) As String
Protected Overrides Function GetInsertionText(
item As CompletionItem, symbol As ISymbol, context As AbstractSyntaxContext, ch As Char) As String
Return CompletionUtilities.GetInsertionTextAtInsertionTime(symbol, context, ch)
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
......@@ -9,7 +9,6 @@ Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
Imports Microsoft.CodeAnalysis.VisualBasic.Extensions.ContextQuery
Imports Microsoft.CodeAnalysis.Options
Imports Microsoft.CodeAnalysis.Shared.Extensions.ContextQuery
Imports System.Collections.Immutable
Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
Partial Friend Class HandlesClauseCompletionProvider
......@@ -148,9 +147,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
Return CompletionItemRules.Default
End Function
Protected Overrides Function GetInsertionText(symbol As ISymbol, context As AbstractSyntaxContext, ch As Char) As String
Protected Overrides Function GetInsertionText(
item As CompletionItem, symbol As ISymbol, context As AbstractSyntaxContext, ch As Char) As String
Return CompletionUtilities.GetInsertionTextAtInsertionTime(symbol, context, ch)
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
......@@ -295,9 +295,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
Return Await MyBase.GetTextChangeAsync(document, selectedItem, ch, cancellationToken).ConfigureAwait(False)
End Function
Protected Overrides Function GetInsertionText(symbol As ISymbol, context As AbstractSyntaxContext, ch As Char) As String
Protected Overrides Function GetInsertionText(
item As CompletionItem, symbol As ISymbol, context As AbstractSyntaxContext, ch As Char) As String
Return CompletionUtilities.GetInsertionTextAtInsertionTime(symbol, context, ch)
End Function
End Class
End Namespace
End Namespace
\ No newline at end of file
......@@ -14,10 +14,6 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
Partial Friend Class ObjectCreationCompletionProvider
Inherits AbstractObjectCreationCompletionProvider
Protected Overrides Function GetInsertionText(symbol As ISymbol, context As AbstractSyntaxContext, ch As Char) As String
Return CompletionUtilities.GetInsertionTextAtInsertionTime(symbol, context, ch)
End Function
Friend Overrides Function IsInsertionTrigger(text As SourceText, characterPosition As Integer, options As OptionSet) As Boolean
Return CompletionUtilities.IsTriggerAfterSpaceOrStartOfWordCharacter(text, characterPosition, options)
End Function
......
......@@ -15,7 +15,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
Partial Friend Class SymbolCompletionProvider
Inherits AbstractRecommendationServiceBasedCompletionProvider
Protected Overrides Function GetInsertionText(symbol As ISymbol, context As AbstractSyntaxContext, ch As Char) As String
Protected Overrides Function GetInsertionText(item As CompletionItem, symbol As ISymbol, context As AbstractSyntaxContext, ch As Char) As String
Return CompletionUtilities.GetInsertionTextAtInsertionTime(symbol, context, ch)
End Function
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册