mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-17 02:00:47 +01:00
SynEdit: Pas-HL, improved highlighting of index, read, write in properties
git-svn-id: trunk@27978 -
This commit is contained in:
parent
5f8d11d5c2
commit
cb4992b88a
@ -76,6 +76,7 @@ type
|
|||||||
rsDirective,
|
rsDirective,
|
||||||
rsAsm, // assembler block
|
rsAsm, // assembler block
|
||||||
rsProperty,
|
rsProperty,
|
||||||
|
rsAtPropertyOrReadWrite, // very first word after property (name of the property) or after read write in property
|
||||||
rsInterface,
|
rsInterface,
|
||||||
rsImplementation, // Program or Implementation
|
rsImplementation, // Program or Implementation
|
||||||
// we need to detect
|
// we need to detect
|
||||||
@ -1013,17 +1014,24 @@ end;
|
|||||||
|
|
||||||
function TSynPasSyn.Func28: TtkTokenKind;
|
function TSynPasSyn.Func28: TtkTokenKind;
|
||||||
begin
|
begin
|
||||||
if KeyComp('Is') then Result := tkKey else
|
if KeyComp('Is') then
|
||||||
if KeyComp('Read') then
|
Result := tkKey
|
||||||
begin
|
else
|
||||||
if rsProperty in fRange then Result := tkKey else Result := tkIdentifier;
|
if (fRange * [rsProperty, rsAtPropertyOrReadWrite, rsAfterEqualOrColon] = [rsProperty]) and
|
||||||
end else
|
(PasCodeFoldRange.BracketNestLevel = 0) and
|
||||||
if KeyComp('Case') then begin
|
KeyComp('Read')
|
||||||
if TopPascalCodeFoldBlockType in
|
then begin
|
||||||
[cfbtBeginEnd, cfbtTopBeginEnd, cfbtCase, cfbtTry, cfbtExcept, cfbtRepeat] then
|
Result := tkKey;
|
||||||
StartPascalCodeFoldBlock(cfbtCase);
|
fRange := fRange + [rsAtPropertyOrReadWrite];
|
||||||
Result := tkKey;
|
end
|
||||||
end else Result := tkIdentifier;
|
else if KeyComp('Case') then begin
|
||||||
|
if TopPascalCodeFoldBlockType in
|
||||||
|
[cfbtBeginEnd, cfbtTopBeginEnd, cfbtCase, cfbtTry, cfbtExcept, cfbtRepeat] then
|
||||||
|
StartPascalCodeFoldBlock(cfbtCase);
|
||||||
|
Result := tkKey;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Result := tkIdentifier;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF SYN_LAZARUS}
|
{$IFDEF SYN_LAZARUS}
|
||||||
@ -1204,7 +1212,9 @@ function TSynPasSyn.Func56: TtkTokenKind;
|
|||||||
begin
|
begin
|
||||||
if KeyComp('Index') then
|
if KeyComp('Index') then
|
||||||
begin
|
begin
|
||||||
if (rsProperty in fRange) and (PasCodeFoldRange.BracketNestLevel = 0) then
|
if (fRange * [rsProperty, rsAtPropertyOrReadWrite, rsAfterEqualOrColon] = [rsProperty]) and
|
||||||
|
(PasCodeFoldRange.BracketNestLevel = 0)
|
||||||
|
then
|
||||||
Result := tkKey else Result := tkIdentifier;
|
Result := tkKey else Result := tkIdentifier;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@ -1383,10 +1393,15 @@ end;
|
|||||||
|
|
||||||
function TSynPasSyn.Func75: TtkTokenKind;
|
function TSynPasSyn.Func75: TtkTokenKind;
|
||||||
begin
|
begin
|
||||||
if KeyComp('Write') then
|
if (fRange * [rsProperty, rsAtPropertyOrReadWrite, rsAfterEqualOrColon] = [rsProperty]) and
|
||||||
|
(PasCodeFoldRange.BracketNestLevel = 0) and
|
||||||
|
KeyComp('Write') then
|
||||||
begin
|
begin
|
||||||
if rsProperty in fRange then Result := tkKey else Result := tkIdentifier;
|
Result := tkKey;
|
||||||
end else Result := tkIdentifier;
|
fRange := fRange + [rsAtPropertyOrReadWrite];
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Result := tkIdentifier;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TSynPasSyn.Func76: TtkTokenKind;
|
function TSynPasSyn.Func76: TtkTokenKind;
|
||||||
@ -1847,7 +1862,7 @@ begin
|
|||||||
if KeyComp('Property') then
|
if KeyComp('Property') then
|
||||||
begin
|
begin
|
||||||
Result := tkKey;
|
Result := tkKey;
|
||||||
fRange := fRange + [rsProperty];
|
fRange := fRange + [rsProperty, rsAtPropertyOrReadWrite];
|
||||||
end else Result := tkIdentifier;
|
end else Result := tkIdentifier;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2775,7 +2790,7 @@ end;
|
|||||||
procedure TSynPasSyn.Next;
|
procedure TSynPasSyn.Next;
|
||||||
var
|
var
|
||||||
IsAtCaseLabel: Boolean;
|
IsAtCaseLabel: Boolean;
|
||||||
WasAtEqual: Boolean;
|
WasAtEqualOrColon, WasAtProperty: Boolean;
|
||||||
begin
|
begin
|
||||||
fAsmStart := False;
|
fAsmStart := False;
|
||||||
fTokenPos := Run;
|
fTokenPos := Run;
|
||||||
@ -2798,7 +2813,8 @@ begin
|
|||||||
else if rsSlash in fRange then
|
else if rsSlash in fRange then
|
||||||
SlashContinueProc
|
SlashContinueProc
|
||||||
else begin
|
else begin
|
||||||
WasAtEqual := rsAfterEqualOrColon in fRange;
|
WasAtEqualOrColon := rsAfterEqualOrColon in fRange;
|
||||||
|
WasAtProperty := rsAtPropertyOrReadWrite in fRange;
|
||||||
//if rsAtEqual in fRange then
|
//if rsAtEqual in fRange then
|
||||||
// fRange := fRange + [rsAfterEqualOrColon] - [rsAtEqual]
|
// fRange := fRange + [rsAfterEqualOrColon] - [rsAtEqual]
|
||||||
//else
|
//else
|
||||||
@ -2818,8 +2834,10 @@ begin
|
|||||||
not(rsAtClosingBracket in fRange)
|
not(rsAtClosingBracket in fRange)
|
||||||
then
|
then
|
||||||
fRange := fRange - [rsAfterClass];
|
fRange := fRange - [rsAfterClass];
|
||||||
if WasAtEqual then
|
if WasAtEqualOrColon then
|
||||||
fRange := fRange - [rsAfterEqualOrColon];
|
fRange := fRange - [rsAfterEqualOrColon];
|
||||||
|
if WasAtProperty then
|
||||||
|
fRange := fRange - [rsAtPropertyOrReadWrite];
|
||||||
fRange := fRange - [rsAtClosingBracket];
|
fRange := fRange - [rsAtClosingBracket];
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user