DCD hints loc and decl finder always use system LE ?

This commit is contained in:
Basile Burg 2015-03-17 02:05:54 +01:00
parent a346e6c4ee
commit ac82a0aba8
3 changed files with 44 additions and 30 deletions

View File

@ -207,7 +207,9 @@ type
(**
* Returns the length of the line ending in aFilename;
*)
function getLineEndingLength(const aFilename: string): byte;
//function getLineEndingLength(const aFilename: string): byte;
function getSysLineEndLen: byte;
implementation
@ -756,32 +758,43 @@ begin
aProcess.Options := aProcess.Options + [poNewConsole];
end;
function getLineEndingLength(const aFilename: string): byte;
var
value: char;
le: string;
// TODO-cbugfix: confirm that DCD location info are based on system Line ending and not the one existing in a specific file
//function getLineEndingLength(const aFilename: string): byte;
//var
// value: char;
// le: string;
//begin
// value := #0;
// le := LineEnding;
// result := length(le);
// if not fileExists(aFilename) then
// exit;
// with TMemoryStream.Create do
// try
// LoadFromFile(aFilename);
// while true do
// begin
// if Position = Size then
// exit;
// read(value,1);
// if value = #10 then
// exit(1);
// if value = #13 then
// exit(2);
// end;
// finally
// Free;
// end;
//end;
function getSysLineEndLen: byte;
begin
value := #0;
le := LineEnding;
result := length(le);
if not fileExists(aFilename) then
exit;
with TMemoryStream.Create do
try
LoadFromFile(aFilename);
while true do
begin
if Position = Size then
exit;
read(value,1);
if value = #10 then
exit(1);
if value = #13 then
exit(2);
end;
finally
Free;
end;
{$IFDEF WINDOWS}
exit(2);
{$ELSE}
exit(1);
{$ENDIF}
end;
{$IFDEF WINDOWS}

View File

@ -378,7 +378,8 @@ begin
// note: SelStart only matches srcpos if the target file has the same line ending
// as the operating system: the pos has to be found manually.
sum := 0;
len := getLineEndingLength(fDoc.fileName);
//len := getLineEndingLength(fDoc.fileName);
len := getSysLineEndLen;
for i := 0 to fDoc.Lines.Count-1 do
begin
linelen := length(fDoc.Lines.Strings[i]);

View File

@ -620,9 +620,9 @@ var
i, len: Integer;
begin
result := 0;
len := getLineEndingLength(fFilename);
//len := getLineEndingLength(fFilename);
for i:= 0 to fMousePos.y-2 do
result += length(Lines.Strings[i]) + len;
result += length(Lines.Strings[i]) + getSysLineEndLen;
result += fMousePos.x;
end;
@ -641,7 +641,7 @@ begin
((dy < 0) and (dy > -5) or (dy > 0) and (dy < 5)) then
fCanShowHint:=true;
fOldMousePos := Point(X, Y);
fMousePos := PixelsToRowColumn(fOldMousePos);
fMousePos := PixelsToRowColumn(fOldMousePos, []);
if ssLeft in Shift then
identifierToD2Syn;
end;