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