Добавление пользовательских определений цвета в окно вывода в расширении Visual Studio - PullRequest
4 голосов
/ 29 ноября 2011

Довольно просто добавить пользовательское определение цвета в категорию «Текстовый редактор» диалогового окна «Шрифты и цвета», используя расширение.Обычно он просто определяет и экспортирует новый тип классификации и определение редактора и украшает его атрибутом UserVisible (true).Вот пример.

public static class OutputClassificationDefinitions
{
    [Export]
    [Name("SomeName")]
    public static readonly ClassificationTypeDefinition BuildHeaderDefinition;

    [Name("SomeName")]
    [UserVisible(true)]
    [Export(typeof(EditorFormatDefinition))]
    [ClassificationType(ClassificationTypeNames = "SomeName")]
    public sealed class BuildHeaderFormat : ClassificationFormatDefinition
    {
        public BuildHeaderFormat()
        {
            ForegroundColor = Properties.Settings.Default.BuildHeaderForerground;
            BackgroundColor = Properties.Settings.Default.BuildHeaderBackground;
        }
    }

«SomeName» отображается в диалоговом окне «F & C» в категории «Текстовый редактор».Если пользователь меняет цвет «SomeName», он запоминается, и карта формата редактора обновляется для использования нового цвета.

Я хочу сделать аналогичную вещь для окна вывода.Вы можете написать классификатор для окна вывода, и он работает просто отлично.Я получил идею из другого поста здесь, в StackOverflow, и он работает блестяще.

Однако новые определения цвета отображаются в категории «Текстовый редактор», а не в категории «Окно вывода», что было бы предпочтительным.Еще более раздражает то, что пользовательские изменения цвета не обновляют formatMap окна вывода, а это означает, что новые цвета не вступают в силу.

Я попытался обновить formatMap самостоятельно следующим образом:

[Import]
internal IClassificationFormatMapService ClassificationFormatMapService;

var formatMap = ClassificationFormatMapService.GetClassificationFormatMap(FontsAndColorsCategory.Outputwindow);
var type = ClassificationRegistry.GetClassificationType("SomeName");
formatMap.AddExplicitTextProperties(type, formatMap.GetExplicitTextProperties(type));

Это не работаетНикаких исключений или ошибок не возникает, просто ничего не происходит.

Есть ли возможность добавить мои пользовательские определения в категорию «Окно вывода» диалога F & C и, что более важно, сделать так, чтобы изменения обновили выводокно

1 Ответ

0 голосов
/ 02 декабря 2011

Что ж, ответ, похоже, заключается в том, что вы не можете делать то, что я хочу делать, согласно Microsoft.Я не совсем убежден, но аргумент, выдвинутый здесь , убедителен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...