// // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. // 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 { public class CompletionRequest { public static readonly RequestType Type = RequestType.Create("textDocument/completion"); } public class CompletionResolveRequest { public static readonly RequestType Type = RequestType.Create("completionItem/resolve"); } public class CompletionExtLoadRequest { public static readonly RequestType Type = RequestType.Create("completion/extLoad"); } public enum CompletionItemKind { Text = 1, Method = 2, Function = 3, Constructor = 4, Field = 5, Variable = 6, Class = 7, Interface = 8, Module = 9, Property = 10, Unit = 11, Value = 12, Enum = 13, Keyword = 14, Snippet = 15, Color = 16, File = 17, Reference = 18 } public class Command { /// /// The identifier of the actual command handler, like `vsintellicode.completionItemSelected`. /// public string CommandStr { get; set; } /// /// Arguments that the command handler should be invoked with. /// public object[] Arguments { get; set; } } [DebuggerDisplay("Kind = {Kind.ToString()}, Label = {Label}, Detail = {Detail}")] public class CompletionItem { public string Label { get; set; } public CompletionItemKind? Kind { get; set; } public string Detail { get; set; } /// /// Gets or sets the documentation string for the completion item. /// public string Documentation { get; set; } public string SortText { get; set; } public string FilterText { get; set; } public string InsertText { get; set; } public TextEdit TextEdit { get; set; } /// /// Gets or sets a custom data field that allows the server to mark /// each completion item with an identifier that will help correlate /// the item to the previous completion request during a completion /// resolve request. /// public object Data { get; set; } /// /// Exposing a command field for a completion item for passing telemetry /// public Command Command { get; set; } /// /// Whether this completion item is preselected or not /// public bool? Preselect { get; set; } } }