SynEdit: Pas-HL, improved highlighting of index, read, write in properties

git-svn-id: trunk@27978 -
This commit is contained in:
martin 2010-10-30 16:00:13 +00:00
parent 5f8d11d5c2
commit cb4992b88a

View File

@ -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