コード例 #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 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();
        }