Reputation: 718
I am listening on TextViewCreated from IWpfTextViewCreationListener
interface.
How can I use the IWpfTextView
I get as a parameter to differentiate between textview belonging to the "code definition window" and the normal text editor?
Thanks!
Upvotes: 2
Views: 282
Reputation: 755357
Here is the basic code to accomplish this.
static bool IsCodeDefWindow(
IWpfTextView textView,
IVsEditorAdaptersFactoryService editorAdaptersFactoryService,
IVsCodeDefView vsCodeDefView)
{
var vsTextView = editorAdaptersFactoryService.GetViewAdapter(textView);
if (vsTextView == null)
{
// Happens for unshimmed IWpfTextView instances
return false;
}
int isCodeDef;
return
ErrorHandler.Succeeded(vsCodeDefView.IsCodeDefView(vsTextView, out isCodeDef)) &&
isCodeDef != 0;
}
The IVsEditorAdaptersFactoryService
is a MEF importable component so it's available via [Import]
on your MEF container.
The IVsCodeDefView
is an older Visual Studio service. If you have an IServiceProvider
it's available via QueryService
(be sure to use SVsServiceProvider
as the service type and IVsServiceProvider
as the interface).
Upvotes: 2