我正在编写一个Visual Studio扩展程序,它为某种内容类型提供智能感知。 我现在面临的问题是Visual Studio在用户输入字符时在空行上提供的“自动缩进”效果。完成(智能感知)会话时的智能缩进效果
在这里完成会话开始在一个空行(超过虚拟空间):
通知的其他线路的标签的符号和与在其上插入符的线没有标签。
现在,当使用开始打字,VS自动且正确地添加必要的制表符到该行:
现在的问题是那些添加了选项卡显然成为所述用户输入的一部分,并作为一个结果CurrentSession.SelectedCompletionSet.SelectBestMatch()
或者Filter()
方法在这里找不到以“C”开头的当前项目(思考用户输入了\ t \ tC)。
如果我在其他任何不需要自动缩进的地方开始会话,一切正常。
有什么想法?
编辑(详细信息):我使用的代码流非常相似:
在Lua和Clojure中你不会面临这个问题,因为他们从不在虚拟空间提供智能(这意味着他们唉ys从一组特定字符开始),并且如果在字符虚拟空间已经变成真实空间之后开始。
另一方面OOK有同样的问题。
谢谢你的回答。调用StartSesion()实际上是在按键按下之后**发生的。我首先调用'Next.Exec(pguidCmdGroup,nCmdID,nCmdexecopt,pvaIn,pvaOut)',然后检查'VSConstants.VSStd2KCmdID.AUTOCOMPLETE',但它再次发生。 VS会在会话开始后和第一次按下按钮(在Next.Exec(...)之后再次添加这些额外的选项卡) –
另外'AugmentCompletionSession()'在会话开始时只被调用一次。当时的插页就在虚拟空间上。搜索单词范围没有意义。 –
另:另请参阅我在编辑 –