如何解决“无法在设置文档缓冲区之前设置数据缓冲区”用于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方法将“文档和数据”文本缓冲区初始化为单个空格字符。之后,我能够成功使用SetBuffer
方法。
我还没有完成扩展名的确定,因此我不确定文档缓冲区的内容有多相关。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。