mirror of https://gitlab.com/basile.b/dexed.git
fix #450 - Token strings cause wrong auto indentation
This commit is contained in:
parent
8f782aa57a
commit
7a2c4ba7b0
|
@ -311,11 +311,18 @@ var
|
||||||
decSet: boolean;
|
decSet: boolean;
|
||||||
expSet: boolean;
|
expSet: boolean;
|
||||||
noComment: boolean;
|
noComment: boolean;
|
||||||
|
tokenStringBraceBalance: integer = 0;
|
||||||
|
inTokenString: boolean = false;
|
||||||
|
|
||||||
procedure addToken(aTk: TLexTokenKind);
|
procedure addToken(aTk: TLexTokenKind);
|
||||||
var
|
var
|
||||||
ptk: PLexToken;
|
ptk: PLexToken;
|
||||||
begin
|
begin
|
||||||
|
if (inTokenString) then
|
||||||
|
begin
|
||||||
|
identifier := '';
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
if (aTk = ltkComment) and (noComment) then
|
if (aTk = ltkComment) and (noComment) then
|
||||||
exit;
|
exit;
|
||||||
ptk := new(PLexToken);
|
ptk := new(PLexToken);
|
||||||
|
@ -565,16 +572,21 @@ begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// token string
|
// token string
|
||||||
if (reader.head^ = 'q') then
|
if reader.head^ = 'q' then
|
||||||
begin
|
begin
|
||||||
if (reader.Next^ = '{') then
|
if (reader.Next^ = '{') then
|
||||||
begin
|
begin
|
||||||
|
if not inTokenString then
|
||||||
|
begin
|
||||||
|
inTokenString:=true;
|
||||||
|
tokenStringBraceBalance := 1;
|
||||||
reader.saveBeginning;
|
reader.saveBeginning;
|
||||||
|
identifier := '';
|
||||||
|
end
|
||||||
|
else tokenStringBraceBalance += 1;
|
||||||
reader.Next;
|
reader.Next;
|
||||||
if isOutOfBound then
|
if isOutOfBound then
|
||||||
exit;
|
exit;
|
||||||
identifier := 'q{';
|
|
||||||
addToken(ltkSymbol);
|
|
||||||
if callBackDoStop then
|
if callBackDoStop then
|
||||||
exit;
|
exit;
|
||||||
continue;
|
continue;
|
||||||
|
@ -843,9 +855,22 @@ begin
|
||||||
begin
|
begin
|
||||||
reader.saveBeginning;
|
reader.saveBeginning;
|
||||||
identifier += reader.head^;
|
identifier += reader.head^;
|
||||||
|
if inTokenString then
|
||||||
|
begin
|
||||||
|
tokenStringBraceBalance -= Byte(reader.head^ = '}');
|
||||||
|
tokenStringBraceBalance += Byte(reader.head^ = '{');
|
||||||
|
if tokenStringBraceBalance = 0 then
|
||||||
|
begin
|
||||||
if (reader.head^ = '}') and ((reader.head + 1)^ in stringPostfixes) and not
|
if (reader.head^ = '}') and ((reader.head + 1)^ in stringPostfixes) and not
|
||||||
isIdentifier((reader.head + 2)^) then
|
isIdentifier((reader.head + 2)^) then
|
||||||
reader.Next;
|
reader.Next;
|
||||||
|
inTokenString:=false;
|
||||||
|
identifier := '(<unsaved token string>)';
|
||||||
|
addToken(ltkString);
|
||||||
|
reader.Next;
|
||||||
|
continue;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
reader.Next;
|
reader.Next;
|
||||||
addToken(ltkSymbol);
|
addToken(ltkSymbol);
|
||||||
if callBackDoStop then
|
if callBackDoStop then
|
||||||
|
|
Loading…
Reference in New Issue