示例#1
0
        private void WriteSignatureParts(
            IFastJsonWriter writer,
            SignatureHelpItemData item,
            SignatureHelpItemsData items,
            out SignatureHelpParameterData?selectedParameter
            )
        {
            selectedParameter = null;
            writer.WritePropertyStartArray("parts");
            writer.WriteTaggedTexts(item.PrefixDisplayParts);
            var parameterIndex = 0;

            foreach (var parameter in item.Parameters)
            {
                if (parameterIndex > 0)
                {
                    writer.WriteTaggedTexts(item.SeparatorDisplayParts);
                }
                var selected = items.ArgumentIndex == parameterIndex;
                writer.WriteTaggedTexts(parameter.PrefixDisplayParts, selected);
                writer.WriteTaggedTexts(parameter.DisplayParts, selected);
                writer.WriteTaggedTexts(parameter.SuffixDisplayParts, selected);
                if (selected)
                {
                    selectedParameter = parameter;
                }
                parameterIndex += 1;
            }
            writer.WriteTaggedTexts(item.SuffixDisplayParts);
            writer.WriteEndArray();
        }
示例#2
0
        private Task SendSignatureHelpAsync([CanBeNull] SignatureHelpItemsData items, ICommandResultSender sender, CancellationToken cancellationToken)
        {
            var writer = sender.StartJsonMessage("signatures");

            if (items == null)
            {
                return(sender.SendJsonMessageAsync(cancellationToken));
            }

            var selectedItemIndex = items.SelectedItemIndex;

            writer.WritePropertyName("span");
            writer.WriteSpan(items.ApplicableSpan);
            writer.WritePropertyStartArray("signatures");
            var itemIndex = 0;

            foreach (var item in items.Items)
            {
                writer.WriteStartObject();
                if (selectedItemIndex == null && items.ArgumentCount <= item.ParameterCount)
                {
                    selectedItemIndex = itemIndex;
                }
                if (itemIndex == selectedItemIndex)
                {
                    writer.WriteProperty("selected", true);
                }
                writer.WritePropertyStartArray("parts");
                writer.WriteTaggedTexts(item.PrefixDisplayParts);
                var parameterIndex = 0;
                foreach (var parameter in item.Parameters)
                {
                    if (parameterIndex > 0)
                    {
                        writer.WriteTaggedTexts(item.SeparatorDisplayParts);
                    }
                    var selected = items.ArgumentIndex == parameterIndex;
                    writer.WriteTaggedTexts(parameter.PrefixDisplayParts, selected);
                    writer.WriteTaggedTexts(parameter.DisplayParts, selected);
                    writer.WriteTaggedTexts(parameter.SuffixDisplayParts, selected);
                    parameterIndex += 1;
                }
                writer.WriteTaggedTexts(item.SuffixDisplayParts);
                writer.WriteEndArray();
                writer.WriteEndObject();
                itemIndex += 1;
            }
            writer.WriteEndArray();
            return(sender.SendJsonMessageAsync(cancellationToken));
        }
 public CurrentSignatureHelp(ISignatureHelpProviderWrapper provider, SignatureHelpItemsData items)
 {
     Provider = provider;
     Items    = items;
 }