游戏授权,APP授权,一手资源,专业团队 qq群698886111

ScintillaNET 自动代码折叠

包含的大多数lexer也支持代码折叠(有时称为大纲)。根据所需的控制级别,您可以手动、自动或介于两者之间的任何位置进行处理。下面的配方显示了如何配置lexer以便它自动进行代码折叠的基本方法:

// Set the lexer
scintilla.Lexer = Lexer.Cpp;

// Instruct the lexer to calculate folding
scintilla.SetProperty("fold", "1");
scintilla.SetProperty("fold.compact", "1");

// Configure a margin to display folding symbols
scintilla.Margins[2].Type = MarginType.Symbol;
scintilla.Margins[2].Mask = Marker.MaskFolders;
scintilla.Margins[2].Sensitive = true;
scintilla.Margins[2].Width = 20;

// Set colors for all folding markers
for (int i = 25; i <= 31; i++)
{
    scintilla.Markers[i].SetForeColor(SystemColors.ControlLightLight);
    scintilla.Markers[i].SetBackColor(SystemColors.ControlDark);
}

// Configure folding markers with respective symbols
scintilla.Markers[Marker.Folder].Symbol = MarkerSymbol.BoxPlus;
scintilla.Markers[Marker.FolderOpen].Symbol = MarkerSymbol.BoxMinus;
scintilla.Markers[Marker.FolderEnd].Symbol = MarkerSymbol.BoxPlusConnected;
scintilla.Markers[Marker.FolderMidTail].Symbol = MarkerSymbol.TCorner;
scintilla.Markers[Marker.FolderOpenMid].Symbol = MarkerSymbol.BoxMinusConnected;
scintilla.Markers[Marker.FolderSub].Symbol = MarkerSymbol.VLine;
scintilla.Markers[Marker.FolderTail].Symbol = MarkerSymbol.LCorner;

// Enable automatic folding
scintilla.AutomaticFold = (AutomaticFold.Show | AutomaticFold.Click | AutomaticFold.Change);

默认情况下,除非将lexer配置为,否则lexer不会执行计算折叠点的额外工作。和SetProperty方法将配置值传递给lexer。但是,您可以定制的lexer行为——它们的名称和可能的值——却没有得到很好的记录。也许闪烁星的未来版本会解决这个问题。也就是说,几乎每一个包含在闪烁中的lexer都使用“折叠”"fold.compact"启用折叠属性。将这些设置为 &#34;1&#34;将配置lexer来计算折叠点并设置适当的线标记。

按惯例,页边距2用于折叠符号,但如果配置正确,则任何边距都可以使用。在我们的示例中,边距2配置为Symbol保证金,敏感的我们使用Marker.MaskFolders常量,以遮罩页边距可以显示的可能标记的范围,以仅折叠相关标记。

指定用于折叠的标记是索引25到31,并命名等效常量Marker.Folder*. 启用折叠时,闪烁将自动使用该范围内的标记索引来指示折叠点。您可以根据需要自定义这些标记的外观,但不能更改闪烁体希望用于折叠的标记索引。

为了自定义标记的外观,我们使用一个短循环来更改默认的背景和前景颜色。然后我们使用Marker.Folder*常量为每个标记设置适当的符号。

最后,我们使用AutomaticFold财产。如果我们没有使用自动折叠,我们将需要处理页边距单击事件,并使用folding API来切换行的可见性。

0
广告位招租

评论0

请先

广告位招租
易学手机界面分析工具上线!可用于安卓手机界面,模拟器界面分析,加速自动化开发!查看详情
没有账号? 注册忘记密码?

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码
'); })();