Выделите текст из надстройки Visual Studio 2008 - PullRequest
2 голосов
/ 02 декабря 2009

Я пишу еще один инструмент покрытия кода для .NET с интеграцией Visual Studio 2008.
Все идет хорошо, кроме одного: я не могу найти способ выделить некоторые фрагменты кода.

Мне нужно сообщить пользователю о закрытых и непокрытых блоках.
Вы можете увидеть пример нужной мне функции на следующем снимке экрана (из набора инструментов для покрытия кода VS):

Coverage Example

Может ли кто-нибудь предоставить мне фрагмент кода, который выделяет текст в окне просмотра кода?
Также приветствуются ссылки на соответствующие статьи MSDN, связанные с VS2008!

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 29 декабря 2009

Я нашел ответ, см. Код ниже:

// retrieving IVsTextManager and highlight id
DTE2 applicationObject = ...; // get it during addin init
Microsoft.VisualStudio.OLE.Interop.IServiceProvider serviceProvider = (Microsoft.VisualStudio.OLE.Interop.IServiceProvider)applicationObject;
Guid SID = typeof(SVsTextManager).GUID;
Guid IID = typeof(IVsTextManager).GUID;
IntPtr output;
serviceProvider.QueryService(ref SID, ref IID, out output);
IVsTextManager textManager = (IVsTextManager)Marshal.GetObjectForIUnknown(output);
int highlightID;
Guid highlightGuid = ...; // your highlighted text style guid
textManager.GetRegisteredMarkerTypeID(ref highlightGuid, out highlightID);

// highlighting text block in the active view
IVsTextView view;
int result = textManager.GetActiveView(0, null, out view);
IVsTextLines buffer;
view.GetBuffer(out buffer);
buffer.CreateLineMarker(highlightID, startLine, startColumn, endLine, endColumn, null, null);

Больше примеров можно найти в MetaScroll Visual Studio Addin .

0 голосов
/ 19 сентября 2010
...