SynEdit, Pas Highlighter: show ^x as string / fix pointer()^

git-svn-id: trunk@47518 -
This commit is contained in:
martin 2015-01-25 15:20:40 +00:00
parent e12b90ee3d
commit 367f996fb8
2 changed files with 31 additions and 9 deletions

View File

@ -86,7 +86,8 @@ type
// Also included after class modifiers "sealed" and "abstract" // Also included after class modifiers "sealed" and "abstract"
rsAtClass, rsAtClass,
rsAfterClass, rsAfterClass,
rsAfterIdentifier, rsAfterIdentifierOrValue, // anywhere where a ^ deref can happen "foo^", "foo^^", "foo()^", "foo[]^"
rsAfterIdentifierOrValueAdd,
rsAtClosingBracket, // ')' rsAtClosingBracket, // ')'
rsAtCaseLabel, rsAtCaseLabel,
@ -2757,7 +2758,7 @@ begin
) and ) and
(fRange * [rsInTypeBlock, rsAfterEqual] = [rsAfterEqual]) (fRange * [rsInTypeBlock, rsAfterEqual] = [rsAfterEqual])
)) and )) and
not(rsAfterIdentifier in fRange) not(rsAfterIdentifierOrValue in fRange)
then begin then begin
if Run<fLineLen then begin if Run<fLineLen then begin
if (Run+1 < fLineLen) and (fLine[Run] = '{') and (fLine[Run+1] = '$') then begin if (Run+1 < fLineLen) and (fLine[Run] = '{') and (fLine[Run+1] = '$') then begin
@ -2768,7 +2769,9 @@ begin
inc(Run); inc(Run);
end; end;
fTokenID := tkString; fTokenID := tkString;
end; end
else
fRange := fRange + [rsAfterIdentifierOrValueAdd];
end; end;
procedure TSynPasSyn.NullProc; procedure TSynPasSyn.NullProc;
@ -2876,6 +2879,7 @@ procedure TSynPasSyn.RoundCloseProc;
begin begin
inc(Run); inc(Run);
fTokenID := tkSymbol; fTokenID := tkSymbol;
fRange := fRange + [rsAfterIdentifierOrValueAdd];
PasCodeFoldRange.DecBracketNestLevel; PasCodeFoldRange.DecBracketNestLevel;
if (PasCodeFoldRange.BracketNestLevel = 0) then begin if (PasCodeFoldRange.BracketNestLevel = 0) then begin
if (fRange * [rsAfterClass] <> []) then if (fRange * [rsAfterClass] <> []) then
@ -2895,6 +2899,7 @@ procedure TSynPasSyn.SquareCloseProc;
begin begin
inc(Run); inc(Run);
fTokenID := tkSymbol; fTokenID := tkSymbol;
fRange := fRange + [rsAfterIdentifierOrValueAdd];
PasCodeFoldRange.DecBracketNestLevel; PasCodeFoldRange.DecBracketNestLevel;
end; end;
@ -3071,8 +3076,8 @@ begin
fRange := fRange - [rsAfterClass]; fRange := fRange - [rsAfterClass];
fRange := fRange - fRange := fRange -
(FOldRange * [rsAfterEqualOrColon, rsAtPropertyOrReadWrite, rsAfterClassField]) - (FOldRange * [rsAfterEqualOrColon, rsAtPropertyOrReadWrite, rsAfterClassField, rsAfterIdentifierOrValue]) -
[rsAtClosingBracket, rsAfterIdentifier]; [rsAtClosingBracket];
if rsAtClass in fRange then begin if rsAtClass in fRange then begin
if FOldRange * [rsAtClass, rsAfterClass] <> [] then if FOldRange * [rsAtClass, rsAfterClass] <> [] then
@ -3087,8 +3092,8 @@ begin
fRange := fRange + [rsAfterClass]; fRange := fRange + [rsAfterClass];
end; end;
if FTokenID = tkIdentifier then if (FTokenID = tkIdentifier) or (rsAfterIdentifierOrValueAdd in fRange) then
fRange := fRange + [rsAfterIdentifier]; fRange := fRange + [rsAfterIdentifierOrValue] - [rsAfterIdentifierOrValueAdd];
end end
end; end;
if FAtLineStart and not(FTokenID in [tkSpace, tkComment, tkIDEDirective]) then if FAtLineStart and not(FTokenID in [tkSpace, tkComment, tkIDEDirective]) then

View File

@ -1101,7 +1101,11 @@ begin
'c:=p ^;', 'c:=p ^;',
'c:=p(**)^;', 'c:=p(**)^;',
'c:=p{} ^;', 'c:=p{} ^;',
'c:=p^+^i''e''^a#13^x;', //20 'i:=f(1)^;', // 20
'i:=f[1]^;',
'i:=f^^;',
'c:=p^+^i''e''^a#13^x;',
'c:=x=^a and ^a=k and(^a^a=z);',
'end;', 'end;',
'' ''
]); ]);
@ -1140,10 +1144,23 @@ begin
CheckTokensForLine('c:=p{} ^;', 19, CheckTokensForLine('c:=p{} ^;', 19,
[tkIdentifier, tkSymbol, tkIdentifier, tkComment, tkSpace, tkSymbol, tkSymbol]); [tkIdentifier, tkSymbol, tkIdentifier, tkComment, tkSpace, tkSymbol, tkSymbol]);
CheckTokensForLine('c:=p^+^i''e''^a#13^x;', 20, CheckTokensForLine('c:=p(1)^;', 20,
[tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkNumber, tkSymbol, tkSymbol]);
CheckTokensForLine('c:=p[1]^;', 21,
[tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkNumber, tkSymbol, tkSymbol]);
CheckTokensForLine('c:=p^^;', 22,
[tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkSymbol, tkSymbol]);
CheckTokensForLine('c:=p^+^i''e''^a#13^x;', 23,
[tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkSymbol, // c:=p^+ [tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkSymbol, // c:=p^+
tkString, tkString, tkString, tkString, tkString, tkSymbol // ^i'e'^a#13^x; tkString, tkString, tkString, tkString, tkString, tkSymbol // ^i'e'^a#13^x;
]); ]);
CheckTokensForLine('c:=x=^a and ^a=k and(^a^a=z);', 24,
[tkIdentifier, tkSymbol, tkIdentifier, tkSymbol, tkString, tkSpace, // c:=x=^a
tkKey, tkSpace, tkString, tkSymbol, tkIdentifier, tkSpace, // and ^a=k
tkKey, tkSymbol, tkString, tkString, tkSymbol, tkIdentifier, // and(^a^a=z
tkSymbol, tkSymbol // );'
]);
end; end;