mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-15 02:48:35 -05:00
Adding completion extension loading and execution logic (#833)
* Adding ICompletionExtension interface * Adding extension loading and execution logic * Fixing compilation error in VS 2017 * Using MEF for completion extension discovery * using await on GetCompletionItems * Adding an integration test for completion extension and update the completion extension interface * Update the completion extension test * Fix issues based on review comments * Remove try/cache based on review comments, fix a integration test. * More changes based on review comments * Fixing SendResult logic for completion extension loading * Only load completion extension from the assembly passed in, add more comments in the test * Adding right assert messages in the test. * More fixes based on review comments * Dropping ICompletionExtensionProvider, load assembly only if it's loaded at the first time or updated since last load. * Fix based on the latest review comments * Adding missing TSQL functions in default completion list * Update jsonrpc documentation for completion/extLoad
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
|
||||
using System.Diagnostics;
|
||||
using Microsoft.SqlTools.Hosting.Protocol.Contracts;
|
||||
using Microsoft.SqlTools.ServiceLayer.LanguageServices.Completion.Extension;
|
||||
using Microsoft.SqlTools.ServiceLayer.Workspace.Contracts;
|
||||
|
||||
namespace Microsoft.SqlTools.ServiceLayer.LanguageServices.Contracts
|
||||
@@ -23,6 +24,13 @@ namespace Microsoft.SqlTools.ServiceLayer.LanguageServices.Contracts
|
||||
RequestType<CompletionItem, CompletionItem>.Create("completionItem/resolve");
|
||||
}
|
||||
|
||||
public class CompletionExtLoadRequest
|
||||
{
|
||||
public static readonly
|
||||
RequestType<CompletionExtensionParams, bool> Type =
|
||||
RequestType<CompletionExtensionParams, bool>.Create("completion/extLoad");
|
||||
}
|
||||
|
||||
public enum CompletionItemKind
|
||||
{
|
||||
Text = 1,
|
||||
@@ -45,6 +53,19 @@ namespace Microsoft.SqlTools.ServiceLayer.LanguageServices.Contracts
|
||||
Reference = 18
|
||||
}
|
||||
|
||||
public class Command
|
||||
{
|
||||
/// <summary>
|
||||
/// The identifier of the actual command handler, like `vsintellicode.completionItemSelected`.
|
||||
/// </summary>
|
||||
public string CommandStr { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Arguments that the command handler should be invoked with.
|
||||
/// </summary>
|
||||
public object[] Arguments { get; set; }
|
||||
}
|
||||
|
||||
[DebuggerDisplay("Kind = {Kind.ToString()}, Label = {Label}, Detail = {Detail}")]
|
||||
public class CompletionItem
|
||||
{
|
||||
@@ -74,5 +95,15 @@ namespace Microsoft.SqlTools.ServiceLayer.LanguageServices.Contracts
|
||||
/// resolve request.
|
||||
/// </summary>
|
||||
public object Data { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Exposing a command field for a completion item for passing telemetry
|
||||
/// </summary>
|
||||
public Command Command { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether this completion item is preselected or not
|
||||
/// </summary>
|
||||
public bool? Preselect { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user