我正在为Visual Studio开发扩展程序,该扩展程序可为自定义语言提供智能感知功能。
到目前为止,我是从此示例开始的,更具体地说是此代码。可悲的是,这个样本(以及我在互联网上看到的所有其他样本)都存在虚拟空间问题。当将光标放置在这样的虚拟空间中时,使用triggerPoint
所获得的session.GetTriggerPoint(snapshot)
会回到光标之前的非虚拟位置(据我所知,SnapshotPoint
只能代表非虚拟位置),这会导致错误定位智能窗口:
我怎样才能解决这个问题?我试图了解它在roslyn扩展中是如何完成的,但是该代码太过复杂了(似乎只是5k LOC和100个用于自动完成的类)。
顺便说一下,我设法在roslyn中找到了负责该代码的代码:
if (this.TextView.Caret.Position.VirtualBufferPosition.IsInVirtualSpace)
{
// Convert any virtual whitespace to real whitespace by doing an empty edit at the caret position.
_editorOperationsFactoryService.GetEditorOperations(TextView).InsertText("");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句