Web Essentials 元素内容 HTML 自动完成

Web Essentials element content HTML autocompletion

我正在尝试为 Web Essentials 中 Google 的 Material 设计图标实现自动完成功能。

此图标字体使用元素内容而不是 class 属性来定义图标,如下所示:<i class="material-icons">add</i>.

我一直在检查 HTML 当前存在的完成 classes 并提出了下面的代码,但由于某些原因这不起作用。

由于我一直无法找到有关这些程序集的文档,如果您能为我指明正确的方向,我们将不胜感激。

using System.Collections.Generic;
using System.Linq;

using Microsoft.Html.Editor.Completion.Def;
using Microsoft.Web.Core.ContentTypes;
using Microsoft.VisualStudio.Utilities;
using Microsoft.Html.Editor.Completion;

namespace MaterialIcons
{
    [HtmlCompletionProvider(CompletionTypes.Children)]
    [ContentType(HtmlContentTypeDefinition.HtmlContentType)]
    class IconCompletion : IHtmlCompletionListProvider
    {
        private static List<string> _icons = new List<string>()
        {
            "info_outline",
            "input",
            "invert_colors"
        };

        public string CompletionType
        {
            get
            {
                return CompletionTypes.Children;
            }
        }

        public IList<HtmlCompletion> GetEntries(HtmlCompletionContext context)
        {
            if (!context.Element.GetAttribute("class").Value.Contains("material-icons"))
            {
                return new List<HtmlCompletion>();
            }
            return CreateCompletionItems(context).ToArray();
        }

        private static IEnumerable<HtmlCompletion> CreateCompletionItems(HtmlCompletionContext context)
        {
            foreach (string item in _icons)
            {
                yield return new SimpleHtmlCompletion(item, context.Session) {  };
            }
        }

    }
}

找到答案,我需要为提供商提供一个元素。

所以我不得不输入 [HtmlCompletionProvider(CompletionTypes.Children, "*")] 而不是 [HtmlCompletionProvider(CompletionTypes.Children)] 以将我的提供程序应用于所有 HTML 元素。