gpt4 book ai didi

delphi - SynMultiSyn 荧光笔插入位置

转载 作者:行者123 更新时间:2023-12-03 15:14:33 24 4
gpt4 key购买 nike

我有 SynMultiSyn 荧光笔 (synHTMLcomplex)由 HTML (synHTML) 和 JavaScript (synJScript) 组成如下所示:

synHTML       : TSynHTMLSyn;
synJScript : TSynJScriptSyn;
synHTMLcomplex: TSynMultiSyn;

// HTML complex
with SynHTMLcomplex do begin
DefaultLanguageName:= 'HTML complex';
DefaultFilter := 'HTML complex (*.html; *.htm)|*.html; *.htm';
DefaultHighlighter := synHTML;
with Schemes do begin
Add.Index:= 0;
with Items[0] do begin
Highlighter:= synJScript;
SchemeName := 'JavaScript';
StartExpr := '<script';
EndExpr := '</script>';
with MarkerAttri do
Background:= clNone;
end;
end;
end;

一旦进入 SynEdit 实例,是否有任何方法(属性或方法)知道光标 (CaretY) 是哪个荧光笔(synHTML 或 synJScript)?

有人可以帮忙吗?

最佳答案

这是可能的,但实现起来并不容易。

下面的函数是对 Jan Fiala(PSPad editor 的作者)使用的函数的改编。对我来说它工作得很好。非常感谢简!

function TfrmEditor.GetCurrentHighLighter: TSynCustomHighlighter;
var
i : integer;
seEditor: TSynEdit;

begin
if (sActiveEditor = 'synEditor') then seEditor:= synEditor
else seEditor:= synEditor2;

with seEditor do
if Highlighter is TSynMultiSyn then
begin
i:= (Integer(TSynEditStringList(Lines).Ranges[CaretY - 1]) and $F) - 1;

if (i < 0) then
result:= TSynMultiSyn(Highlighter).DefaultHighLighter
else
result:= TSynMultiSyn(Highlighter).Schemes[i].Highlighter
end
else
result:= Highlighter;
end;

Jan的原函数如下,尽快解释。

"- 这是我返回当前荧光笔的函数:

function TPSSynEdit.GetCurrentHighLighter: TSynCustomHighlighter;
var
i: Integer;
begin
if Highlighter is TSynMultiSyn then
begin
i := (Integer(TSynEditStringList(Lines).Ranges[CaretY - 1]) and $F) - 2;
if (i > TSynMultiSyn(HighLighter).Schemes.Count - 1) or (i < 0) then
Result := TSynMultiSyn(Highlighter).DefaultHighLighter
else
Result := TSynMultiSyn(Highlighter).Schemes[i].Highlighter
end
else
Result := Highlighter;
end;

我在 TSynedit 的后代中有这个函数。您需要更换荧光笔,例如与 Editor.Highlighter 和 Lines 与 Editor.Lines 或将编辑器作为函数参数发送,并在开始后添加如下内容:与编辑一起做开始...”

简·菲亚拉

关于delphi - SynMultiSyn 荧光笔插入位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18884724/

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