检测光标在 Scintilla NET 中的注释或字符串上

Detect cursor is over comment or string in Scintilla NET

Scintilla.NET 中是否有任何内置函数来检测光标是否在注释或字符串上?我想避免在用户输入评论或字符串时自动完成工作。

我知道我可以向后扫描整个文本,搜索 //、/* */ 和成对的 " ",但我几乎可以肯定必须有一个内置函数可以做到这一点。

谢谢!

如果您使用的是词法分析器,您可以获取当前插入符号位置的样式编号,并检查它是否与字符串或注释相对应。用于检索样式编号的 Scintilla API 是:

Scintilla.NET documentation 指出已经有一些方便 API 检测评论:

  • ScintillaNET.Scintilla.PositionIsOnComment(System.Int32)
  • ScintillaNET.Scintilla.PositionIsOnComment(System.Int32,ScintillaNET.Lexer)

但是对于字符串似乎没有任何等价物 - 所以看起来您必须通过使用上述 Scintilla 消息和 ScintillaNET.Scintilla.SendMessageDirect() 方法之一来自己滚动。