I'm having a problem when I try to create custom ColorableItems where they do not show up under Fonts and Colors and do not color the token they are assigned too. If I change my custom ColorableItems to entries that are already under Fonts and Colors, like Keyword, they will color the token correctly. I thought that I only had to create ColorableItem with my custom color information for it to be added to Fonts and Colors under Options. What am I missing?
ColorableItem Class:
public class LuaColorableItem : ColorableItem { public static List<LuaColorableItem> ColorableItems = new List<LuaColorableItem>(); public static void CreateColor(string Name, COLORINDEX Foreground, COLORINDEX Background) { LuaColorableItem.CreateColor(Name, Foreground, Background, false, false); }
public static void CreateColor(string Name, COLORINDEX Foreground, COLORINDEX Background, bool Bold, bool Strikethrough) { FONTFLAGS FontFlag = FONTFLAGS.FF_DEFAULT; if (Bold) { FontFlag = FONTFLAGS.FF_BOLD; } if (Strikethrough) { FontFlag = FONTFLAGS.FF_STRIKETHROUGH; }
LuaColorableItem.ColorableItems.Add(new LuaColorableItem(Name, Name, Foreground, Background, Color.Empty, Color.Empty, FontFlag)); }
public LuaColorableItem(string Name, string DisplayName, COLORINDEX ForeColor, COLORINDEX BackColor, Color HiForeColor, Color HiBackColor, FONTFLAGS FontFlags) : base(Name, DisplayName, ForeColor, BackColor, HiForeColor, HiBackColor, FontFlags) { } }
GetColorableItem and GetItemCount under LanguageService:
public override int GetColorableItem(int Index, out IVsColorableItem Item)
{
if (LuaColorableItem.ColorableItems != null && Index >= 0 && Index < LuaColorableItem.ColorableItems.Count)
{
Item = LuaColorableItem.ColorableItems[Index];
return VSConstants.S_OK;
}
else
{
Item = null;
return VSConstants.E_INVALIDARG;
}
}
public override int GetItemCount(out int Count)
{
Count = 0;
if (LuaColorableItem.ColorableItems != null)
{
if (LuaColorableItem.ColorableItems.Count > 0)
{
// The first color is a placeholder and is never counted.
Count = LuaColorableItem.ColorableItems.Count - 1;
}
}
return VSConstants.S_OK;
}
Creating ColorableItems:
LuaColorableItem.CreateColor("Text", COLORINDEX.CI_SYSPLAINTEXT_FG, COLORINDEX.CI_USERTEXT_BK);
LuaColorableItem.CreateColor("Lua - Keyword", COLORINDEX.CI_BLUE, COLORINDEX.CI_USERTEXT_BK);
LuaColorableItem.CreateColor("Lua - Comment", COLORINDEX.CI_DARKGREEN, COLORINDEX.CI_USERTEXT_BK);
LuaColorableItem.CreateColor("Lua - Identifier", COLORINDEX.CI_SYSPLAINTEXT_FG, COLORINDEX.CI_USERTEXT_BK);
LuaColorableItem.CreateColor("Lua - String", COLORINDEX.CI_RED, COLORINDEX.CI_USERTEXT_BK);
LuaColorableItem.CreateColor("Lua - Number", COLORINDEX.CI_SYSPLAINTEXT_FG, COLORINDEX.CI_USERTEXT_BK);
LuaColorableItem.CreateColor("Lua - Error", COLORINDEX.CI_RED, COLORINDEX.CI_USERTEXT_BK);
LuaColorableItem.CreateColor("Lua - Custom Functions", COLORINDEX.CI_RED, COLORINDEX.CI_USERTEXT_BK);