diff --git a/Editor/Completion/XmlSchemaCompletionBuilder.cs b/Editor/Completion/XmlSchemaCompletionBuilder.cs index 0a0ba9b..7c752f4 100644 --- a/Editor/Completion/XmlSchemaCompletionBuilder.cs +++ b/Editor/Completion/XmlSchemaCompletionBuilder.cs @@ -32,6 +32,7 @@ using Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion.Data; using Microsoft.VisualStudio.Language.Intellisense.AsyncCompletion; +using Microsoft.VisualStudio.Text.Adornments; namespace MonoDevelop.Xml.Editor.Completion { @@ -43,6 +44,8 @@ class XmlSchemaCompletionBuilder readonly XmlNamespacePrefixMap nsMap; readonly IAsyncCompletionSource source; + public bool IncludeBracket { get; set; } + public XmlSchemaCompletionBuilder (IAsyncCompletionSource source, XmlNamespacePrefixMap nsMap) { this.nsMap = nsMap; @@ -120,7 +123,7 @@ public XmlSchemaCompletionBuilder AddElement (string name, string prefix, string if (!names.Add (name)) return this; - var item = new CompletionItem (name, source, XmlImages.Element); + var item = CreateItem (name, XmlImages.Element); item.AddDocumentation (documentation); items.Add (item); return this; @@ -139,7 +142,7 @@ public XmlSchemaCompletionBuilder AddElement (string name, string prefix, XmlSch if (!names.Add (name)) return this; - var item = new CompletionItem (name, source, XmlImages.Element); + var item = CreateItem (name, XmlImages.Element); if (annotation is not null) { item.AddDocumentation (annotation); } @@ -148,6 +151,22 @@ public XmlSchemaCompletionBuilder AddElement (string name, string prefix, XmlSch } public ImmutableArray GetItems () => ImmutableArray.Empty.AddRange (items); + + CompletionItem CreateItem(string name, ImageElement image) + { + var item = new CompletionItem( + displayText: name, + source: source, + icon: image, + filters: [], + suffix: string.Empty, + insertText: IncludeBracket ? "<" + name : name, + sortText: name, + filterText: name, + attributeIcons: []) + .AddKind(XmlCompletionItemKind.Element); + return item; + } } }