Quantcast
Channel: Visual Studio Integrate forum
Viewing all articles
Browse latest Browse all 4410

Language Service with Custom Colorable Items

$
0
0

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


Viewing all articles
Browse latest Browse all 4410

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>