SynEdit: fixed highlight of "shortstring" depending on options. issue #0018971

git-svn-id: trunk@30004 -
This commit is contained in:
martin 2011-03-23 13:00:55 +00:00
parent e99faf3fd1
commit c55776f210
2 changed files with 28 additions and 21 deletions

View File

@ -2113,7 +2113,10 @@ end;
function TSynPasSyn.Func167: TtkTokenKind; function TSynPasSyn.Func167: TtkTokenKind;
begin begin
if KeyComp('Shortstring') then Result := tkKey else Result := tkIdentifier; if (FStringKeywordMode in [spsmDefault]) and KeyComp('Shortstring') then
Result := tkKey
else
Result := tkIdentifier;
end; end;
function TSynPasSyn.Func168: TtkTokenKind; function TSynPasSyn.Func168: TtkTokenKind;

View File

@ -396,10 +396,11 @@ begin
SetLines SetLines
([ 'Program A;', ([ 'Program A;',
'var', 'var',
' Foo1: String', ' Foo1: String;',
' Foo2: AnsiString', ' Foo2: AnsiString;',
' Foo3: WideString', ' Foo3: WideString;',
' Foo4: Integer', ' Foo4: Shortstring;',
' Foo5: Integer;',
'', '',
'Procedure b;', 'Procedure b;',
'begin', 'begin',
@ -415,35 +416,38 @@ begin
PushBaseName('spsmDefault'); PushBaseName('spsmDefault');
PasHighLighter.StringKeywordMode := spsmDefault; PasHighLighter.StringKeywordMode := spsmDefault;
CheckTokensForLine('String', 2, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkKey ]); CheckTokensForLine('String', 2, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkKey, tkSymbol ]);
CheckTokensForLine('ansi', 3, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkKey ]); CheckTokensForLine('ansi', 3, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkKey, tkSymbol ]);
CheckTokensForLine('wide', 4, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkKey ]); CheckTokensForLine('wide', 4, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkKey, tkSymbol ]);
CheckTokensForLine('int', 5, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier ]); // selftest CheckTokensForLine('short', 5, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkKey, tkSymbol ]);
CheckTokensForLine('int', 6, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier, tkSymbol ]); // selftest
PopPushBaseName('spsmStringOnly'); PopPushBaseName('spsmStringOnly');
PasHighLighter.StringKeywordMode := spsmStringOnly; PasHighLighter.StringKeywordMode := spsmStringOnly;
CheckTokensForLine('String', 2, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkKey ]); CheckTokensForLine('String', 2, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkKey, tkSymbol ]);
CheckTokensForLine('ansi', 3, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier ]); CheckTokensForLine('ansi', 3, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier, tkSymbol ]);
CheckTokensForLine('wide', 4, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier ]); CheckTokensForLine('wide', 4, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier, tkSymbol ]);
CheckTokensForLine('int', 5, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier ]); // selftest CheckTokensForLine('short', 5, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier, tkSymbol ]);
CheckTokensForLine('int', 6, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier, tkSymbol ]); // selftest
PopPushBaseName('spsmNone'); PopPushBaseName('spsmNone');
PasHighLighter.StringKeywordMode := spsmNone; PasHighLighter.StringKeywordMode := spsmNone;
CheckTokensForLine('String', 2, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier ]); CheckTokensForLine('String', 2, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier, tkSymbol ]);
CheckTokensForLine('ansi', 3, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier ]); CheckTokensForLine('ansi', 3, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier, tkSymbol ]);
CheckTokensForLine('wide', 4, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier ]); CheckTokensForLine('wide', 4, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier, tkSymbol ]);
CheckTokensForLine('int', 5, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier ]); // selftest CheckTokensForLine('short', 5, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier, tkSymbol ]);
CheckTokensForLine('int', 6, [tkSpace, tkIdentifier, tkSymbol, tkSpace, tkIdentifier, tkSymbol ]); // selftest
PopPushBaseName('False'); PopPushBaseName('False');
PasHighLighter.ExtendedKeywordsMode := False; PasHighLighter.ExtendedKeywordsMode := False;
CheckTokensForLine('wide', 10, [tkSpace, tkIdentifier, tkSymbol ]); CheckTokensForLine('continue', 11, [tkSpace, tkIdentifier, tkSymbol ]);
CheckTokensForLine('wide', 11, [tkSpace, tkIdentifier, tkSymbol ]); CheckTokensForLine('exit', 12, [tkSpace, tkIdentifier, tkSymbol ]);
PopPushBaseName('True'); PopPushBaseName('True');
PasHighLighter.ExtendedKeywordsMode := True; PasHighLighter.ExtendedKeywordsMode := True;
CheckTokensForLine('wide', 10, [tkSpace, tkKey, tkSymbol ]); CheckTokensForLine('continue', 11, [tkSpace, tkKey, tkSymbol ]);
CheckTokensForLine('wide', 11, [tkSpace, tkKey, tkSymbol ]); CheckTokensForLine('exit', 12, [tkSpace, tkKey, tkSymbol ]);
end; end;