mirror of https://gitlab.com/basile.b/dexed.git
added support for multi-lines strings folding
This commit is contained in:
parent
81ac108cd9
commit
e506bf0dc5
|
@ -85,7 +85,7 @@ type
|
||||||
|
|
||||||
TRangeKind = (rkNone, rkString1, rkString2, rkTokString, rkBlockCom1, rkBlockCom2, rkBlockDoc1, rkBlockDoc2, rkAsm);
|
TRangeKind = (rkNone, rkString1, rkString2, rkTokString, rkBlockCom1, rkBlockCom2, rkBlockDoc1, rkBlockDoc2, rkAsm);
|
||||||
|
|
||||||
TFoldKind = (fkBrackets, fkComments1, fkComments2);
|
TFoldKind = (fkBrackets, fkComments1, fkComments2, fkStrings);
|
||||||
TFoldKinds = set of TFoldKind;
|
TFoldKinds = set of TFoldKind;
|
||||||
|
|
||||||
TSynD2Syn = class (TSynCustomFoldHighlighter)
|
TSynD2Syn = class (TSynCustomFoldHighlighter)
|
||||||
|
@ -608,7 +608,12 @@ begin
|
||||||
(readPrevPrev = '\') then
|
(readPrevPrev = '\') then
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
if (readCurr = #10) then fRange := rkString1
|
if (readCurr = #10) then
|
||||||
|
begin
|
||||||
|
fRange := rkString1;
|
||||||
|
if fkStrings in fFoldKinds then
|
||||||
|
StartCodeFoldBlock(nil);
|
||||||
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
readNext;
|
readNext;
|
||||||
|
@ -637,6 +642,8 @@ begin
|
||||||
if (readCurr = '"') then
|
if (readCurr = '"') then
|
||||||
begin
|
begin
|
||||||
fTokKind := tkStrng;
|
fTokKind := tkStrng;
|
||||||
|
if fkStrings in fFoldKinds then
|
||||||
|
EndCodeFoldBlock;
|
||||||
fRange := rkNone;
|
fRange := rkNone;
|
||||||
readNext;
|
readNext;
|
||||||
// check postfix
|
// check postfix
|
||||||
|
@ -652,7 +659,12 @@ begin
|
||||||
begin
|
begin
|
||||||
// go to end of string/eol
|
// go to end of string/eol
|
||||||
while ((readNext <> '`') and (not (readCurr = #10))) do (*!*);
|
while ((readNext <> '`') and (not (readCurr = #10))) do (*!*);
|
||||||
if (readCurr = #10) then fRange := rkString2
|
if (readCurr = #10) then
|
||||||
|
begin
|
||||||
|
fRange := rkString2;
|
||||||
|
if fkStrings in fFoldKinds then
|
||||||
|
StartCodeFoldBlock(nil);
|
||||||
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
readNext;
|
readNext;
|
||||||
|
@ -674,6 +686,8 @@ begin
|
||||||
if (readCurr = '`') then
|
if (readCurr = '`') then
|
||||||
begin
|
begin
|
||||||
fTokKind := tkStrng;
|
fTokKind := tkStrng;
|
||||||
|
if fkStrings in fFoldKinds then
|
||||||
|
EndCodeFoldBlock;
|
||||||
fRange := rkNone;
|
fRange := rkNone;
|
||||||
readNext;
|
readNext;
|
||||||
// check postfix
|
// check postfix
|
||||||
|
@ -688,7 +702,13 @@ begin
|
||||||
begin
|
begin
|
||||||
// go to end of string/eol
|
// go to end of string/eol
|
||||||
while ((readNext <> '}') and (not (readCurr = #10))) do (*!*);
|
while ((readNext <> '}') and (not (readCurr = #10))) do (*!*);
|
||||||
if (readCurr = #10) then fRange := rkTokString else readNext;
|
if (readCurr = #10) then
|
||||||
|
begin
|
||||||
|
fRange := rkTokString;
|
||||||
|
if fkStrings in fFoldKinds then
|
||||||
|
StartCodeFoldBlock(nil);
|
||||||
|
end
|
||||||
|
else readNext;
|
||||||
fTokKind := tkStrng;
|
fTokKind := tkStrng;
|
||||||
exit;
|
exit;
|
||||||
end else Dec(fTokStop);
|
end else Dec(fTokStop);
|
||||||
|
@ -703,6 +723,8 @@ begin
|
||||||
if (readCurr = '}') then
|
if (readCurr = '}') then
|
||||||
begin
|
begin
|
||||||
fTokKind := tkStrng;
|
fTokKind := tkStrng;
|
||||||
|
if fkStrings in fFoldKinds then
|
||||||
|
EndCodeFoldBlock;
|
||||||
fRange := rkNone;
|
fRange := rkNone;
|
||||||
readNext;
|
readNext;
|
||||||
exit;
|
exit;
|
||||||
|
|
Loading…
Reference in New Issue