mirror of https://gitlab.com/basile.b/dexed.git
fixup for #24
This commit is contained in:
parent
798fff06ba
commit
2f780638a4
|
@ -457,7 +457,6 @@ begin
|
||||||
next;
|
next;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//TODO-cD2Syn: nested comments with multiple nesting on the same line.
|
|
||||||
procedure TSynD2Syn.next;
|
procedure TSynD2Syn.next;
|
||||||
var
|
var
|
||||||
reader: PChar = nil;
|
reader: PChar = nil;
|
||||||
|
@ -592,41 +591,78 @@ begin
|
||||||
begin
|
begin
|
||||||
fTokKind := tkCommt;
|
fTokKind := tkCommt;
|
||||||
if readDelim(reader, fTokStop, '+') then
|
if readDelim(reader, fTokStop, '+') then
|
||||||
if readDelim(reader, fTokStop, '/') then exit
|
if readDelim(reader, fTokStop, '/') then
|
||||||
else fTokKind := tkDDocs;
|
exit
|
||||||
if readUntil(reader, fTokStop, '+/') then exit;
|
else
|
||||||
|
fTokKind := tkDDocs;
|
||||||
inc(fCurrRange.nestedCommentsCount);
|
inc(fCurrRange.nestedCommentsCount);
|
||||||
|
while (reader^ <> #10) and (fCurrRange.nestedCommentsCount > 0) do
|
||||||
|
begin
|
||||||
|
if readUntilAmong(reader, fTokStop, ['+', '/']) then
|
||||||
|
begin
|
||||||
|
if readDelim(reader, fTokStop, ['+', '/']) then
|
||||||
|
begin
|
||||||
|
if ((reader-1)^ = '/') and (reader^ = '+') then
|
||||||
|
begin
|
||||||
|
inc(fCurrRange.nestedCommentsCount);
|
||||||
|
readerNext;
|
||||||
|
continue;
|
||||||
|
end;
|
||||||
|
if ((reader-1)^ = '+') and (reader^ = '/') then
|
||||||
|
begin
|
||||||
|
dec(fCurrRange.nestedCommentsCount);
|
||||||
|
readerNext;
|
||||||
|
continue;
|
||||||
|
end;
|
||||||
|
end else readerNext;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if (fCurrRange.nestedCommentsCount > 0) then
|
||||||
|
begin
|
||||||
if fTokKind = tkDDocs then
|
if fTokKind = tkDDocs then
|
||||||
fCurrRange.rangeKinds += [rkBlockDoc2]
|
fCurrRange.rangeKinds += [rkBlockDoc2]
|
||||||
else
|
else
|
||||||
fCurrRange.rangeKinds += [rkBlockCom2];
|
fCurrRange.rangeKinds += [rkBlockCom2];
|
||||||
readLine(reader, fTokStop);
|
|
||||||
if (fTokKind = tkCommt) then
|
if (fTokKind = tkCommt) then
|
||||||
StartCodeFoldBlock(nil, fkComments2 in fFoldKinds)
|
StartCodeFoldBlock(nil, fkComments2 in fFoldKinds)
|
||||||
else if (fTokKind = tkDDocs) then
|
else if (fTokKind = tkDDocs) then
|
||||||
StartCodeFoldBlock(nil, fkDDoc in fFoldKinds);
|
StartCodeFoldBlock(nil, fkDDoc in fFoldKinds);
|
||||||
|
end;
|
||||||
exit;
|
exit;
|
||||||
end else readerReset;
|
end else readerReset;
|
||||||
if (rkBlockCom2 in fCurrRange.rangeKinds) or (rkBlockDoc2 in fCurrRange.rangeKinds) then
|
if (rkBlockCom2 in fCurrRange.rangeKinds) or (rkBlockDoc2 in fCurrRange.rangeKinds) then
|
||||||
begin
|
begin
|
||||||
if (rkBlockDoc2 in fCurrRange.rangeKinds) then fTokKind := tkDDocs
|
if (rkBlockDoc2 in fCurrRange.rangeKinds) then fTokKind := tkDDocs
|
||||||
else fTokKind := tkCommt;
|
else fTokKind := tkCommt;
|
||||||
if readUntil(reader, fTokStop, '/+') then
|
while (reader^ <> #10) and (fCurrRange.nestedCommentsCount > 0) do
|
||||||
inc(fCurrRange.nestedCommentsCount)
|
begin
|
||||||
else readerReset;
|
if readUntilAmong(reader, fTokStop, ['+', '/']) then
|
||||||
if readUntil(reader, fTokStop, '+/') then
|
begin
|
||||||
|
if readDelim(reader, fTokStop, ['+', '/']) then
|
||||||
|
begin
|
||||||
|
if ((reader-1)^ = '/') and (reader^ = '+') then
|
||||||
|
begin
|
||||||
|
inc(fCurrRange.nestedCommentsCount);
|
||||||
|
readerNext;
|
||||||
|
continue;
|
||||||
|
end;
|
||||||
|
if ((reader-1)^ = '+') and (reader^ = '/') then
|
||||||
begin
|
begin
|
||||||
dec(fCurrRange.nestedCommentsCount);
|
dec(fCurrRange.nestedCommentsCount);
|
||||||
if fCurrRange.nestedCommentsCount <> 0 then
|
readerNext;
|
||||||
exit;
|
continue;
|
||||||
|
end;
|
||||||
|
end else readerNext;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if fCurrRange.nestedCommentsCount = 0 then
|
||||||
|
begin
|
||||||
if (fTokKind = tkCommt) then
|
if (fTokKind = tkCommt) then
|
||||||
EndCodeFoldBlock(fkComments2 in fFoldKinds)
|
EndCodeFoldBlock(fkComments2 in fFoldKinds)
|
||||||
else if (fTokKind = tkDDocs) then
|
else if (fTokKind = tkDDocs) then
|
||||||
EndCodeFoldBlock(fkDDoc in fFoldKinds);
|
EndCodeFoldBlock(fkDDoc in fFoldKinds);
|
||||||
fCurrRange.rangeKinds -= [rkBlockDoc2, rkBlockCom2];
|
fCurrRange.rangeKinds -= [rkBlockDoc2, rkBlockCom2];
|
||||||
exit;
|
|
||||||
end;
|
end;
|
||||||
readLine(reader, fTokStop);
|
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -819,6 +855,8 @@ begin
|
||||||
if not isOperator1(reader^) then exit;
|
if not isOperator1(reader^) then exit;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
if isWhite(reader^) then
|
||||||
|
exit;
|
||||||
fTokKind := tkIdent; // invalid op not colorized.
|
fTokKind := tkIdent; // invalid op not colorized.
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
|
@ -456,12 +456,12 @@ begin
|
||||||
begin
|
begin
|
||||||
if isOutOfBound then
|
if isOutOfBound then
|
||||||
exit;
|
exit;
|
||||||
if (reader.previous^ = '/') and (reader.next^ = '+') then
|
if ((reader.head-1)^ = '/') and (reader.head^ = '+') then
|
||||||
begin
|
begin
|
||||||
nestedCom += 1;
|
nestedCom += 1;
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
if (reader.previous^ = '+') and (reader.next^ = '/') then
|
if ((reader.head-1)^ = '+') and (reader.head^ = '/') then
|
||||||
begin
|
begin
|
||||||
nestedCom -= 1;
|
nestedCom -= 1;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue