0

Visual Studio の LanguageService に取り組んでおり、Visual Studio 2013 のカスタム カラーに問題があります。最近、Visual Studio 2010 から 2013 に移行しましたが、に設定RequestStockColorsするとfalse、構文の強調表示がすべて失われます。

私の LanguageService は と を実装GetColorableItemしてGetItemCountいます。私は9つのカスタムカラーを使用しています。GetColorableItem言語サービスをデバッグすると、それが数回呼び出されていることに気付きましたが、GetItemCountヒットすることはありません。

Visual Studio でデバッグするときは、次のコマンド ライン引数を使用しています。

/ranu /rootsuffix Exp

更新:最初の 5 つの色 (標準のトークンの色と重複する色) の名前を、標準の名前 (「キーワード」、「識別子」など) に一致するように変更し、それらの色が表示されるようになりましたが、私の余分な色の種類が表示されます。さらに、Visual Studio の [フォントと色] 構成にそれらのいずれも表示されません。それらをそこにインストールするにはどうすればよいですか?

4

2 に答える 2

3

最近、カスタムの ColorableItems が構文の強調表示に表示されないという同様の問題に遭遇しました。フォントと色のキャッシュをクリアすることでこれを修正できました。

vs パッケージの Initialize メソッドに一時的に以下を含めました。

IVsFontAndColorCacheManager mgr = this.GetService(typeof(SVsFontAndColorCacheManager)) as IVsFontAndColorCacheManager;
mgr.ClearAllCaches();

これは私のために物事を修正しました。この修正では、6 つの既定値を含める必要はなく、追加の ClassificationFormatDefinition クラスも必要ありません。

注: GetItemCount() が呼び出されることもありませんが、キャッシュをクリアすることで主な問題が解決したことにも言及する価値があります。

クレジット: また、このスレッドhttp://www.databaseforum.info/8/1217583.aspxでの Ed Dore のコメントも、私の修正を見つけるのに役立ちました。

于 2015-03-16T00:29:34.587 に答える
0

ClassificationFormatDefinitionカスタム カラーごとに のインスタンスを作成し、それらをEditorFormatDefinitionタイプとしてエクスポートする必要があることがわかりました。これを行うと、フォントと色のページに表示され、構文の強調表示にも表示されました。

デフォルトの 6 を超える色ごとに、次のようにクラス定義を追加しました。

[Export(typeof(EditorFormatDefinition))]
[ClassificationType(ClassificationTypeNames = "<name of color>")]
[Name("<name of color>")]
[UserVisible(true)]
[Order(Before = Priority.Default)]
internal sealed class ExampleColor: ClassificationFormatDefinition
{
    public ExampleColor()
    {
        this.DisplayName = "<name of color>";
        this.ForegroundColor = System.Windows.Media.Color.FromArgb(0, 0, 128, 128);
    }
}

ただし、私のGetItemCount()方法ではまだヒットが見られません。

于 2015-02-03T19:46:33.103 に答える