我正试图在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) { };
}
}
}
}
答案 0 :(得分:0)
找到答案,我需要为提供者提供一个元素。
因此,我必须输入[HtmlCompletionProvider(CompletionTypes.Children)]
而不是[HtmlCompletionProvider(CompletionTypes.Children, "*")]
来将我的提供程序应用于所有HTML元素。