Create Visual Studio Theme Specific Syntax Highlighting

后端 未结 4 930
独厮守ぢ
独厮守ぢ 2021-01-04 15:56

I would like to create a Syntax Highlighter in Visual Studio 2012 (and above) that supports different themes (Dark, Light, Blue).

V

4条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-01-04 16:33

    Ok, here's a workaround I've found. It is far from perfect, but it is as good as it gets.

    The trick is to use another base definition when you define your own classification type. This will use their default color for the different themes. The important thing is that you must not define your own color in MyKeywordsFormatDefinition because that disables the default behavior when switching between themes. So try to find a base definition that matches your color. Look for predefined Classificatoin Types here: Microsoft.VisualStudio.Language.StandardClassification.PredefinedClassificationTypeNames

    internal static class Classifications
    {
        // ...
        public const string MyKeyword = "MyKeyword";
        // ...
    }
    
    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = Classifications.MyKeyword)]
    [Name("MyKeywords")]
    [DisplayName("My Keywords")]
    [UserVisible(true)]
    internal sealed class MyKeywordsFormatDefinition: ClassificationFormatDefinition
    {
        // Don't set the color here, as it will disable the default color supporting themes
    }
    
    [Export(typeof(ClassificationTypeDefinition))]
    [Name(Classifications.MyKeyword)]
    [BaseDefinition(PredefinedClassificationTypeNames.Keyword)]
    internal static ClassificationTypeDefinition MyKeywordsTypeDefinition;
    

    I hope it will be useful for some of you. Even maybe help to refine a proper solution when you can actually set your own color without reusing existing color definitions.

提交回复
热议问题