2015-11-18 3 views
0

Я пытаюсь реализовать автозаполнение значков Material Design для Google в веб-Essentials.Содержимое элемента веб-Essentials HTML autocompletion

Этот значок шрифта использует содержимое элемента вместо атрибута класса для определения значка следующим образом: <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

Нашел ответ, мне нужно было предоставить элемент для провайдера.

Итак, вместо [HtmlCompletionProvider(CompletionTypes.Children)] Мне пришлось ввести [HtmlCompletionProvider(CompletionTypes.Children, "*")], чтобы применить моего провайдера ко всем элементам HTML.

Смежные вопросы