检测光标位于 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 中的注释或字符串上方的主要内容,如果未能解决你的问题,请参考以下文章

Scintilla.NET 基于正则表达式的语法高亮

Scintilla.NET 加载缓慢

如何从 Scintilla 获取有关插入符号移动的通知

如何在 Scintilla.net 中突出显示对括号?

删除 Scintilla JavaScript 词法分析器中的青色突出显示

Scintilla.NET Autocomplete 自动选择第一个元素 (C#)