コード例 #1
0
        public static void SetAnalyzingOptions(ClassificationData option)
        {
            var classificationTypes = new Dictionary <string, IClassificationType>(Names.All.Count);

            foreach (var languageClassifications in ClassificationManager.GetClassifications().Values)
            {
                foreach (var classification in languageClassifications)
                {
                    classificationTypes.Add(classification.Classification, classification);
                }
            }

            var classifications = new Dictionary <IClassificationType, ClassificationOption>(classificationTypes.Count);

            foreach (var language in option.Languages)
            {
                foreach (var classification in language.Classifications)
                {
                    if (classificationTypes.TryGetValue(classification.Name, out var type))
                    {
                        classifications.Add(type, new ClassificationOption(
                                                classification.IsDisabled,
                                                classification.IsDisabledInXml,
                                                classification.IsDisabledInEditor,
                                                classification.IsDisabledInQuickInfo));
                    }
                }
            }
            Instance.ClassificationChanged?.Invoke(new ClassificationsChangedEventArgs(classifications));
        }
コード例 #2
0
        public static TextFormattingRunProperties GetDefaultFormatting(string classificationName)
        {
            var classificationFormatMap = ServicesProvider.Instance.FormatMapService.GetClassificationFormatMap(category: "text");

            if (ClassificationManager.TryGetDefaultNonIdentifierClassification(classificationName, out var defaultClassification))
            {
                return(GetDefaultFormatting(classificationFormatMap, defaultClassification));
            }
            return(GetDefaultFormatting(classificationFormatMap, ClassificationManager.DefaultIdentifierClassification));
        }
コード例 #3
0
        public static void SetFormattingOptions(ClassificationData option)
        {
            var classificationTypes     = ClassificationManager.GetClassifications();
            var classificationFormatMap = ServicesProvider.Instance.FormatMapService.GetClassificationFormatMap(category: "text");

            var classificationsMap = new Dictionary <string, IClassificationType>(23);

            foreach (var classifications in classificationTypes.Values)
            {
                foreach (var item in classifications)
                {
                    classificationsMap.Add(item.Classification, item);
                }
            }

            var defaultIdentifierFormatting =
                GetDefaultFormatting(classificationFormatMap, ClassificationManager.DefaultIdentifierClassification);

            classificationFormatMap.BeginBatchUpdate();
            foreach (var language in option.Languages)
            {
                // TODO: do need to write in a log if the classification after preparing still not exists?
                if (!classificationTypes.ContainsKey(language.Name))
                {
                    continue;
                }
                foreach (var classification in language.Classifications)
                {
                    if (classificationsMap.TryGetValue(classification.Name, out var classificationType))
                    {
                        var defaultFormatting = defaultIdentifierFormatting;
                        if (ClassificationManager.TryGetDefaultNonIdentifierClassification(
                                classification.Name, out var defaultClassification))
                        {
                            defaultFormatting = GetDefaultFormatting(classificationFormatMap, defaultClassification);
                        }

                        var formatting = classificationFormatMap.GetExplicitTextProperties(classificationType);
                        formatting = Apply(formatting, classification, defaultFormatting);
                        classificationFormatMap.SetExplicitTextProperties(classificationType, formatting);
                    }
                }
            }
            classificationFormatMap.EndBatchUpdate();
        }
コード例 #4
0
        /// <summary>
        /// Returns the default CoCo settings that are grouped by languages
        /// </summary>
        public static IReadOnlyDictionary <string, IReadOnlyDictionary <string, PresetSettings> > GetDefaultPresets()
        {
            if (!(_defaultPresets is null))
            {
                return(_defaultPresets);
            }

            _defaultPresets = new Dictionary <string, IReadOnlyDictionary <string, PresetSettings> >();

            var defaulltIdentifierFormatting = FormattingService.GetDefaultIdentifierFormatting();

            ClassificationSettings CreateClassification(string name, byte r, byte g, byte b)
            {
                var defaultFormatting = defaulltIdentifierFormatting;

                if (ClassificationManager.TryGetDefaultNonIdentifierClassification(name, out var defaultClassification))
                {
                    defaultFormatting = FormattingService.GetDefaultFormatting(defaultClassification);
                }

                var classification = defaultFormatting.ToDefaultSettings(name);

                classification.Foreground = Color.FromRgb(r, g, b);
                return(classification);
            }

            var presets = new Dictionary <string, PresetSettings>
            {
                ["CoCo light|blue theme"] = new PresetSettings
                {
                    Name            = "CoCo light|blue theme",
                    Classifications = new List <ClassificationSettings>
                    {
                        CreateClassification(CSharpNames.ConstantFieldName, 255, 157, 255),
                        CreateClassification(CSharpNames.EnumFieldName, 0, 193, 193),
                        CreateClassification(CSharpNames.ExtensionMethodName, 233, 122, 0),
                        CreateClassification(CSharpNames.FieldName, 255, 157, 255),
                        CreateClassification(CSharpNames.LabelName, 120, 20, 0),
                        CreateClassification(CSharpNames.LocalMethodName, 187, 20, 0),
                        CreateClassification(CSharpNames.LocalVariableName, 128, 128, 0),
                        CreateClassification(CSharpNames.MethodName, 187, 54, 4),
                        CreateClassification(CSharpNames.ParameterName, 128, 128, 128),
                        CreateClassification(CSharpNames.PropertyName, 255, 0, 255),
                        CreateClassification(CSharpNames.RangeVariableName, 128, 128, 0),
                        CreateClassification(CSharpNames.StaticMethodName, 154, 82, 0),
                        CreateClassification(CSharpNames.ControlFlowName, 255, 54, 157),
                    }
                },

                ["CoCo dark theme"] = new PresetSettings
                {
                    Name            = "CoCo dark theme",
                    Classifications = new List <ClassificationSettings>
                    {
                        CreateClassification(CSharpNames.AliasNamespaceName, 128, 0, 255),
                        CreateClassification(CSharpNames.ConstantFieldName, 174, 0, 174),
                        CreateClassification(CSharpNames.ConstructorName, 255, 0, 0),
                        CreateClassification(CSharpNames.DestructorName, 255, 0, 0),
                        CreateClassification(CSharpNames.EnumFieldName, 0, 193, 193),
                        CreateClassification(CSharpNames.EventName, 200, 0, 128),
                        CreateClassification(CSharpNames.ExtensionMethodName, 224, 118, 0),
                        CreateClassification(CSharpNames.FieldName, 174, 0, 174),
                        CreateClassification(CSharpNames.LabelName, 90, 10, 10),
                        CreateClassification(CSharpNames.LocalMethodName, 150, 10, 10),
                        CreateClassification(CSharpNames.LocalVariableName, 128, 128, 0),
                        CreateClassification(CSharpNames.MethodName, 187, 0, 0),
                        CreateClassification(CSharpNames.NamespaceName, 0, 213, 0),
                        CreateClassification(CSharpNames.ParameterName, 108, 108, 108),
                        CreateClassification(CSharpNames.PropertyName, 255, 0, 255),
                        CreateClassification(CSharpNames.RangeVariableName, 128, 128, 0),
                        CreateClassification(CSharpNames.StaticMethodName, 163, 86, 0),
                        CreateClassification(CSharpNames.ControlFlowName, 255, 54, 157),
                    }
                }
            };

            _defaultPresets[Languages.CSharp] = presets;

            presets = new Dictionary <string, PresetSettings>
            {
                ["CoCo light|blue theme"] = new PresetSettings
                {
                    Name            = "CoCo light|blue theme",
                    Classifications = new List <ClassificationSettings>
                    {
                        CreateClassification(VisualBasicNames.ConstantFieldName, 255, 157, 255),
                        CreateClassification(VisualBasicNames.EnumFieldName, 0, 193, 193),
                        CreateClassification(VisualBasicNames.ExtensionMethodName, 233, 122, 0),
                        CreateClassification(VisualBasicNames.FieldName, 255, 157, 255),
                        CreateClassification(VisualBasicNames.FunctionName, 187, 54, 4),
                        CreateClassification(VisualBasicNames.FunctionVariableName, 128, 64, 0),
                        CreateClassification(VisualBasicNames.LocalVariableName, 128, 128, 0),
                        CreateClassification(VisualBasicNames.ParameterName, 128, 128, 128),
                        CreateClassification(VisualBasicNames.PropertyName, 255, 0, 255),
                        CreateClassification(VisualBasicNames.RangeVariableName, 128, 128, 0),
                        CreateClassification(VisualBasicNames.SharedMethodName, 154, 82, 0),
                        CreateClassification(VisualBasicNames.StaticLocalVariableName, 64, 128, 0),
                        CreateClassification(VisualBasicNames.SubName, 187, 34, 0),
                        CreateClassification(VisualBasicNames.WithEventsPropertyName, 255, 0, 128),
                        CreateClassification(VisualBasicNames.ControlFlowName, 255, 54, 157),
                    }
                },

                ["CoCo dark theme"] = new PresetSettings
                {
                    Name            = "CoCo dark theme",
                    Classifications = new List <ClassificationSettings>
                    {
                        CreateClassification(VisualBasicNames.AliasNamespaceName, 128, 0, 255),
                        CreateClassification(VisualBasicNames.ConstantFieldName, 174, 0, 174),
                        CreateClassification(VisualBasicNames.EnumFieldName, 0, 193, 193),
                        CreateClassification(VisualBasicNames.EventName, 200, 0, 128),
                        CreateClassification(VisualBasicNames.ExtensionMethodName, 224, 118, 0),
                        CreateClassification(VisualBasicNames.FieldName, 174, 0, 174),
                        CreateClassification(VisualBasicNames.FunctionName, 187, 0, 0),
                        CreateClassification(VisualBasicNames.FunctionVariableName, 128, 64, 0),
                        CreateClassification(VisualBasicNames.LocalVariableName, 128, 128, 0),
                        CreateClassification(VisualBasicNames.NamespaceName, 0, 213, 0),
                        CreateClassification(VisualBasicNames.ParameterName, 108, 108, 108),
                        CreateClassification(VisualBasicNames.PropertyName, 255, 0, 255),
                        CreateClassification(VisualBasicNames.RangeVariableName, 128, 128, 0),
                        CreateClassification(VisualBasicNames.SharedMethodName, 163, 86, 0),
                        CreateClassification(VisualBasicNames.StaticLocalVariableName, 64, 128, 0),
                        CreateClassification(VisualBasicNames.SubName, 187, 34, 0),
                        CreateClassification(VisualBasicNames.WithEventsPropertyName, 255, 0, 128),
                        CreateClassification(VisualBasicNames.ControlFlowName, 255, 54, 157),
                    }
                }
            };
            _defaultPresets[Languages.VisualBasic] = presets;

            return(_defaultPresets);
        }