检测光标位于 Scintilla NET 中的注释或字符串上方
Posted
技术标签:
【中文标题】检测光标位于 Scintilla NET 中的注释或字符串上方【英文标题】:Detect cursor is over comment or string in Scintilla NET 【发布时间】:2016-08-02 11:11:42 【问题描述】:Scintilla.NET 中是否有任何内置函数来检测光标是否位于注释或字符串上?当用户键入 cmets 或字符串时,我想避免自动完成工作。
我知道我可以向后扫描整个文本,搜索 //、/* */ 和成对的 " " 但我几乎可以肯定必须有一个内置函数来做到这一点。
谢谢!
【问题讨论】:
【参考方案1】:如果您使用的是词法分析器,则可以在当前插入符号位置获取样式编号,并检查它是否与字符串或注释对应。用于检索样式编号的 Scintilla API 是:
SCI_GETSTYLEAT(int pos)Scintilla.NET documentation 指出已经有一些方便的 API 用于检测 cmets:
ScintillaNET.Scintilla.PositionIsOnComment(System.Int32)
ScintillaNET.Scintilla.PositionIsOnComment(System.Int32,ScintillaNET.Lexer)
但似乎没有任何等效的字符串 - 所以看起来你必须通过使用上述 Scintilla 消息和 ScintillaNET.Scintilla.SendMessageDirect()
方法之一来滚动你自己的。
【讨论】:
我正在使用词法分析器,所以第一个答案有效,因此我没有尝试第二个答案。谢谢! :)以上是关于检测光标位于 Scintilla NET 中的注释或字符串上方的主要内容,如果未能解决你的问题,请参考以下文章