mirror of https://gitlab.com/basile.b/dexed.git
fix column index in comments
This commit is contained in:
parent
6ec8fe614f
commit
8d3b427bcf
|
@ -72,6 +72,8 @@ type
|
||||||
fAbsoluteIndex: Integer;
|
fAbsoluteIndex: Integer;
|
||||||
fReaderHead: PChar;
|
fReaderHead: PChar;
|
||||||
fPreviousLineColum: Integer;
|
fPreviousLineColum: Integer;
|
||||||
|
fBegColumnIndex: Integer;
|
||||||
|
fBegLineIndex: Integer;
|
||||||
function getColAndLine: TPoint;
|
function getColAndLine: TPoint;
|
||||||
public
|
public
|
||||||
constructor Create(const aText: PChar; const aColAndLine: TPoint);
|
constructor Create(const aText: PChar; const aColAndLine: TPoint);
|
||||||
|
@ -79,11 +81,14 @@ type
|
||||||
//
|
//
|
||||||
function Next: PChar;
|
function Next: PChar;
|
||||||
function previous: PChar;
|
function previous: PChar;
|
||||||
|
procedure saveBeginning;
|
||||||
//
|
//
|
||||||
property AbsoluteIndex: Integer read fAbsoluteIndex;
|
property AbsoluteIndex: Integer read fAbsoluteIndex;
|
||||||
property LineIndex: Integer read fLineIndex;
|
property LineIndex: Integer read fLineIndex;
|
||||||
property ColumnIndex: Integer read fColumnIndex;
|
property ColumnIndex: Integer read fColumnIndex;
|
||||||
property LineAnColumn: TPoint read getColAndLine;
|
property LineAnColumn: TPoint read getColAndLine;
|
||||||
|
property SavedLine: Integer read fBegLineIndex;
|
||||||
|
property SavedColumn: Integer read fBegColumnIndex;
|
||||||
//
|
//
|
||||||
property head: PChar read fReaderHead;
|
property head: PChar read fReaderHead;
|
||||||
end;
|
end;
|
||||||
|
@ -252,6 +257,13 @@ begin
|
||||||
end;
|
end;
|
||||||
exit(fReaderHead);
|
exit(fReaderHead);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TReaderHead.saveBeginning;
|
||||||
|
begin
|
||||||
|
fBegColumnIndex:= fColumnIndex;
|
||||||
|
fBegLineIndex:= fLineIndex;
|
||||||
|
end;
|
||||||
|
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION TD2Dictionary ---------------------------------------------------------}
|
{$REGION TD2Dictionary ---------------------------------------------------------}
|
||||||
|
@ -387,8 +399,8 @@ var
|
||||||
begin
|
begin
|
||||||
ptk := new(PLexToken);
|
ptk := new(PLexToken);
|
||||||
ptk^.kind := aTk;
|
ptk^.kind := aTk;
|
||||||
ptk^.position := reader.LineAnColumn;
|
ptk^.position.X := reader.SavedColumn;
|
||||||
ptk^.position.X -= length(identifier);
|
ptk^.position.Y := reader.SavedLine;
|
||||||
ptk^.Data := identifier;
|
ptk^.Data := identifier;
|
||||||
aList.Add(ptk);
|
aList.Add(ptk);
|
||||||
end;
|
end;
|
||||||
|
@ -433,17 +445,18 @@ begin
|
||||||
begin
|
begin
|
||||||
if (reader.Next^ = '/') then
|
if (reader.Next^ = '/') then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
if isOutOfBound then
|
if isOutOfBound then
|
||||||
exit;
|
exit;
|
||||||
while (reader.head^ <> #10) do
|
while (reader.head^ <> #10) do
|
||||||
begin
|
begin
|
||||||
reader.Next;
|
|
||||||
identifier += reader.head^;
|
identifier += reader.head^;
|
||||||
|
reader.Next;
|
||||||
if isOutOfBound then
|
if isOutOfBound then
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
reader.Next;
|
|
||||||
addToken(ltkComment);
|
addToken(ltkComment);
|
||||||
|
reader.Next;
|
||||||
if callBackDoStop then
|
if callBackDoStop then
|
||||||
exit;
|
exit;
|
||||||
continue;
|
continue;
|
||||||
|
@ -457,13 +470,17 @@ begin
|
||||||
begin
|
begin
|
||||||
if (reader.Next^ = '*') then
|
if (reader.Next^ = '*') then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
if isOutOfBound then
|
if isOutOfBound then
|
||||||
exit;
|
exit;
|
||||||
while (reader.head^ <> '*') or (reader.Next^ <> '/') do
|
while (reader.head^ <> '*') or (reader.Next^ <> '/') do
|
||||||
|
begin
|
||||||
|
identifier += reader.head^;
|
||||||
if isOutOfBound then
|
if isOutOfBound then
|
||||||
exit;
|
exit;
|
||||||
reader.Next;
|
end;
|
||||||
addToken(ltkComment);
|
addToken(ltkComment);
|
||||||
|
reader.Next;
|
||||||
if callBackDoStop then
|
if callBackDoStop then
|
||||||
exit;
|
exit;
|
||||||
continue;
|
continue;
|
||||||
|
@ -477,6 +494,7 @@ begin
|
||||||
begin
|
begin
|
||||||
if (reader.Next^ = '+') then
|
if (reader.Next^ = '+') then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
nestedCom := 1;
|
nestedCom := 1;
|
||||||
if isOutOfBound then
|
if isOutOfBound then
|
||||||
exit;
|
exit;
|
||||||
|
@ -500,8 +518,8 @@ begin
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
until nestedCom = 0;
|
until nestedCom = 0;
|
||||||
reader.Next;
|
|
||||||
addToken(ltkComment);
|
addToken(ltkComment);
|
||||||
|
reader.Next;
|
||||||
if callBackDoStop then
|
if callBackDoStop then
|
||||||
exit;
|
exit;
|
||||||
continue;
|
continue;
|
||||||
|
@ -520,6 +538,7 @@ begin
|
||||||
end;
|
end;
|
||||||
if (reader.head^ = '"') then
|
if (reader.head^ = '"') then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
reader.Next;
|
reader.Next;
|
||||||
if isOutOfBound then
|
if isOutOfBound then
|
||||||
exit;
|
exit;
|
||||||
|
@ -580,6 +599,7 @@ begin
|
||||||
if (reader.head^ = '`') then
|
if (reader.head^ = '`') then
|
||||||
begin
|
begin
|
||||||
reader.Next;
|
reader.Next;
|
||||||
|
reader.saveBeginning;
|
||||||
if isOutOfBound then
|
if isOutOfBound then
|
||||||
exit;
|
exit;
|
||||||
while (reader.head^ <> '`') do
|
while (reader.head^ <> '`') do
|
||||||
|
@ -602,6 +622,7 @@ begin
|
||||||
// token string
|
// token string
|
||||||
if (reader.head^ = 'q') and (reader.Next^ = '{') then
|
if (reader.head^ = 'q') and (reader.Next^ = '{') then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
reader.Next;
|
reader.Next;
|
||||||
if isOutOfBound then
|
if isOutOfBound then
|
||||||
exit;
|
exit;
|
||||||
|
@ -618,6 +639,7 @@ begin
|
||||||
if (reader.head^ = #39) then
|
if (reader.head^ = #39) then
|
||||||
begin
|
begin
|
||||||
reader.Next;
|
reader.Next;
|
||||||
|
reader.saveBeginning;
|
||||||
if isOutOfBound then
|
if isOutOfBound then
|
||||||
exit;
|
exit;
|
||||||
while true do
|
while true do
|
||||||
|
@ -652,6 +674,7 @@ begin
|
||||||
// check negative float '-0.'
|
// check negative float '-0.'
|
||||||
if (reader.head^ = '-') then
|
if (reader.head^ = '-') then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
identifier += reader.head^;
|
identifier += reader.head^;
|
||||||
if reader.Next^ = '0' then
|
if reader.Next^ = '0' then
|
||||||
begin
|
begin
|
||||||
|
@ -678,6 +701,7 @@ begin
|
||||||
// binary/hex numbr/float
|
// binary/hex numbr/float
|
||||||
if (reader.head^ = '0') then
|
if (reader.head^ = '0') then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
identifier += reader.head^;
|
identifier += reader.head^;
|
||||||
if (reader.Next^ in ['b', 'B']) then
|
if (reader.Next^ in ['b', 'B']) then
|
||||||
begin
|
begin
|
||||||
|
@ -733,6 +757,7 @@ begin
|
||||||
// check negative float/int '-xxx'
|
// check negative float/int '-xxx'
|
||||||
if (reader.head^ = '-') then
|
if (reader.head^ = '-') then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
identifier += reader.head^;
|
identifier += reader.head^;
|
||||||
if not isNumber(reader.Next^) then
|
if not isNumber(reader.Next^) then
|
||||||
begin
|
begin
|
||||||
|
@ -744,6 +769,7 @@ begin
|
||||||
// numbers
|
// numbers
|
||||||
if isNumber(reader.head^) then
|
if isNumber(reader.head^) then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
identifier += reader.head^;
|
identifier += reader.head^;
|
||||||
while isNumber(reader.Next^) or (reader.head^ = '_') do
|
while isNumber(reader.Next^) or (reader.head^ = '_') do
|
||||||
begin
|
begin
|
||||||
|
@ -760,6 +786,7 @@ begin
|
||||||
// symbChars
|
// symbChars
|
||||||
if isSymbol(reader.head^) then
|
if isSymbol(reader.head^) then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
identifier += reader.head^;
|
identifier += reader.head^;
|
||||||
reader.Next;
|
reader.Next;
|
||||||
addToken(ltkSymbol);
|
addToken(ltkSymbol);
|
||||||
|
@ -773,6 +800,7 @@ begin
|
||||||
// operators
|
// operators
|
||||||
if isOperator1(reader.head^) then
|
if isOperator1(reader.head^) then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
identifier += reader.head^;
|
identifier += reader.head^;
|
||||||
while isOperator1(reader.Next^) do
|
while isOperator1(reader.Next^) do
|
||||||
begin
|
begin
|
||||||
|
@ -876,6 +904,7 @@ begin
|
||||||
// identifier accum
|
// identifier accum
|
||||||
if isFirstIdentifier(reader.head^) then
|
if isFirstIdentifier(reader.head^) then
|
||||||
begin
|
begin
|
||||||
|
reader.saveBeginning;
|
||||||
while isIdentifier(reader.head^) do
|
while isIdentifier(reader.head^) do
|
||||||
begin
|
begin
|
||||||
identifier += reader.head^;
|
identifier += reader.head^;
|
||||||
|
|
Loading…
Reference in New Issue