"Can't set data buffer before setting document buffer." 对于 IVsTextLines
"Can't set data buffer before setting document buffer." for IVsTextLines
在我的 VSIX 项目中,此错误显示在行中:
(AdapterService as IVsEditorAdaptersFactoryService).SetDataBuffer(textLines, projBuffer as IProjectionBuffer);
其中 textLines
是使用我的包的 CreateInstance
方法创建的
Type textLinesType = typeof(IVsTextLines);
Guid riid = textLinesType.GUID;
Guid clsid = typeof(VsTextBufferClass).GUID;
IVsTextLines textLines = (_package as Package).CreateInstance(ref clsid, ref riid, textLinesType) as IVsTextLines;
DocumentTextBuffer
属性 究竟是什么?如何在新实例化的 IVsTextLines
上设置它?
我想要做的是创建一个 IVsTextLines
将其作为缓冲区传递给 IVsCodeWindow
.
我把textLines
的初始化改成了
textLines = AdapterService.CreateVsTextBufferAdapter(serviceProvider as IOleServiceProvider,
(contentTypeRegistry as IContentTypeRegistryService).GetContentType("csharp")) as IVsTextLines;
然后使用 IVsTextBuffer.InitializeContent 方法将文档和数据文本缓冲区初始化为单个 space 字符。之后我就能够成功使用 SetBuffer
方法。
我还没有完成我的扩展,所以我不确定 Document Buffer 的内容有多相关。
在我的 VSIX 项目中,此错误显示在行中:
(AdapterService as IVsEditorAdaptersFactoryService).SetDataBuffer(textLines, projBuffer as IProjectionBuffer);
其中 textLines
是使用我的包的 CreateInstance
方法创建的
Type textLinesType = typeof(IVsTextLines);
Guid riid = textLinesType.GUID;
Guid clsid = typeof(VsTextBufferClass).GUID;
IVsTextLines textLines = (_package as Package).CreateInstance(ref clsid, ref riid, textLinesType) as IVsTextLines;
DocumentTextBuffer
属性 究竟是什么?如何在新实例化的 IVsTextLines
上设置它?
我想要做的是创建一个 IVsTextLines
将其作为缓冲区传递给 IVsCodeWindow
.
我把textLines
的初始化改成了
textLines = AdapterService.CreateVsTextBufferAdapter(serviceProvider as IOleServiceProvider,
(contentTypeRegistry as IContentTypeRegistryService).GetContentType("csharp")) as IVsTextLines;
然后使用 IVsTextBuffer.InitializeContent 方法将文档和数据文本缓冲区初始化为单个 space 字符。之后我就能够成功使用 SetBuffer
方法。
我还没有完成我的扩展,所以我不确定 Document Buffer 的内容有多相关。