gpt4 book ai didi

c# - AvalonEdit - 规则集跨度

转载 作者:行者123 更新时间:2023-11-30 22:43:21 25 4
gpt4 key购买 nike

如何检查某个位置的单词是否在 xshd-ruleset 的 Span[i] 中?

谢谢!

最佳答案

有两种可能的方式从高亮引擎获取信息:

突出显示引擎仅在每行的开头存储“跨度堆栈”。您可以使用 DocumentHighlighter.GetSpanStack 方法来检索它。

var documentHighlighter = textEditor.TextArea.GetService(typeof(IHighlighter)) as DocumentHighlighter;
bool isInComment = documentHighlighter.GetSpanStack(1)
.Any(s => s.SpanColor != null && s.SpanColor.Name == "Comment");

如果第 1 行的结尾(= 第 2 行的开头)在多行注释中,这将返回 true。

要在行内获得更详细的结果,您必须运行荧光笔。

int off = document.GetOffset(7, 22);
HighlightedLine result = documentHighlighter.HighlightLine(7);
bool isInComment = result.Sections.Any(s => s.Offset <= off
&& s.Offset+s.Length >= off
&& s.Color.Name == "Comment");

当然,只有在这些颜色被命名的情况下,按颜色识别跨度/部分才可靠。并非所有内置突出显示都已更新为使用命名颜色,因此请先检查 .xshd 文件。

关于c# - AvalonEdit - 规则集跨度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4005364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com