Есть ли способ скрыть код в расширении VS2010 MEF? - PullRequest
2 голосов
/ 31 марта 2012

Я работаю над расширением редактора VS2010, используя MEF. Теперь я хочу скрыть код по мере необходимости, то есть сделать определенные строки кода невидимыми. Вот пример: Скрытие регионов в Visual Studio

Через MEF я могу получить доступ к TextView, TextBuffer и т. Д. Но я не нашел способа скрыть код или изменить цвет или шрифты отображаемого кода. Я думаю, видимость, шрифты и цвет связаны между собой. Я не уверен, может ли VSPackage сделать это, даже если это возможно, это слишком много для моего требования Я тоже думал об объекте DTE, пока не знаю.

Может быть, я только что получил некоторую надежду от http://msdn.microsoft.com/en-us/library/bb165040.aspx. Однако возможно ли использовать это в компоненте MEF? Это говорит о необходимости вызова QueryService для SVsTextManager. Что это значит?

1 Ответ

2 голосов
/ 06 апреля 2012

Это то, с чего я начал с расширения #regions:

http://msdn.microsoft.com/en-us/library/dd885121.aspx

В руководстве показано, как выделить текст, и много кода для начала работы.

В основном вам нужно создать Tagger . Тегер просматривает весь код в файле и помечает метаданные как интервалы текста. Затем вы можете указать VS отформатировать тегированный текст так, как вы хотите. Если вам нужна большая мощность, вы можете использовать классификации (для этого тоже могут быть учебники), которые позволяют изменять размер текста, цвет переднего плана, цвет фона и т. Д. Теггер назначает классификации в методе GetTags, что-то вроде этого:

new TagSpan<YourTag>(snapshot, new YourTag(
    ClassificationTypeRegistryService.GetClassificationType("yourClassificationName")));

Я сомневаюсь, что вы на самом деле хотите полностью скрыть код. Если вы редактируете файл, вы должны знать, что для работы с ним необходим код (возможно, вы вводите код, конфликтующий со скрытым кодом и т. Д.). В случае расширения #regions вам все равно нужно убедиться, что вы, например, не удалили строку #endregion и не поместили недопустимый код в область. Вот почему он делает код маленьким и легким, а не полностью скрывает его.

...