Web Essentials元素内容HTML自动完成

时间:2015-11-18 06:40:26

标签: c# visual-studio-2015 material-design web-essentials

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

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

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

由于我无法找到有关这些集会的文件,因此我们非常感谢您向我指明正确方向的任何帮助。

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) {  };
            }
        }

    }
}

1 个答案:

答案 0 :(得分:0)

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

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