Как изменить шрифт редактора из надстройки Visual Studio?

Я хотел бы иметь возможность изменять шрифт редактора в Visual Studio 2012 с помощью сочетания клавиш. Поскольку макросы были удалены, я понимаю, что остается только возможность написать надстройку.

Итак, чтобы прояснить, я хочу написать надстройку, которая устанавливает для шрифта редактора один определенный шрифт. Я не хочу, чтобы он открывал какие-либо диалоговые окна, так как если бы он это сделал, я мог бы также использовать Инструменты → Параметры.

У меня уже есть надстройка, которая добавляет команду Visual Studio, поэтому я уже знаю, как это сделать. Я также знаю, как назначить ему сочетание клавиш, так что этот вопрос не касается ни того, ни другого.

Какие команды есть в API надстройки Visual Studio для изменения шрифта текстового редактора?


person Timwi    schedule 25.11.2012    source источник
comment
Команды не были указаны в документации API надстроек Visual Studio?   -  person Robert Harvey    schedule 25.11.2012
comment
@RobertHarvey: Нет, не было. Более того, указанную документацию тоже было очень сложно найти. (Попробуйте поискать в Google «документацию по API надстройки Visual Studio» - ничего важного не появится.)   -  person Timwi    schedule 25.11.2012


Ответы (2)


Вот ответ:

private void setFont(string fontFamily, int fontSize)
{
    foreach (Property prop in _applicationObject.Properties["FontsAndColors", "TextEditor"])
    {
        if (prop.Name == "FontFamily")
            prop.Value = fontFamily;
        else if (prop.Name == "FontSize")
            prop.Value = fontSize;
    }
}

Предполагается, что _applicationObject содержит объект DTE2 для среды хоста.

person Timwi    schedule 25.11.2012
comment
@ Роберт Харви: С большим терпением. - person Timwi; 25.11.2012

+1 Тимви. В качестве бонуса к его ответу мне пригодились следующие вопросы для изменения свойств в Инструменты -> Параметры:

_DTE2.Properties["TextEditor", "General"].Item("DetectUTF8WithoutSignature").Value = true;
_DTE2.Properties["Environment", "Documents"].Item("CheckLineEndingsOnLoad").Value = true;
person ceztko    schedule 22.06.2013