diff --git a/src/ce_common.pas b/src/ce_common.pas index eb64cd4a..dabc51e0 100644 --- a/src/ce_common.pas +++ b/src/ce_common.pas @@ -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} diff --git a/src/ce_editor.pas b/src/ce_editor.pas index 3d01d58a..41d031a7 100644 --- a/src/ce_editor.pas +++ b/src/ce_editor.pas @@ -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]); diff --git a/src/ce_synmemo.pas b/src/ce_synmemo.pas index 329e1989..64751295 100644 --- a/src/ce_synmemo.pas +++ b/src/ce_synmemo.pas @@ -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;