mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-14 05:49:01 +02:00
fix for #14775. Improved support for non-english compiler messages. ParseFPCMessage usage is removed
git-svn-id: trunk@22095 -
This commit is contained in:
parent
484862674f
commit
35755d6e3d
23
ide/main.pp
23
ide/main.pp
@ -11344,6 +11344,15 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function GetFPCMessage(ALine: TLazMessageLine; var FileName: String; var CaretPos: TPoint; var ErrType: TFPCErrorType): Boolean;
|
||||||
|
begin
|
||||||
|
FileName:=ALine.Filename;
|
||||||
|
CaretPos.x:=ALine.Column;
|
||||||
|
CaretPos.y:=ALine.LineNumber;
|
||||||
|
ErrType:=FPCErrorTypeNameToType(ALine.Parts.Values['Type']);
|
||||||
|
Result:=True;
|
||||||
|
end;
|
||||||
|
|
||||||
function TMainIDE.DoJumpToCompilerMessage(Index:integer;
|
function TMainIDE.DoJumpToCompilerMessage(Index:integer;
|
||||||
FocusEditor: boolean): boolean;
|
FocusEditor: boolean): boolean;
|
||||||
var MaxMessages: integer;
|
var MaxMessages: integer;
|
||||||
@ -11353,7 +11362,7 @@ var MaxMessages: integer;
|
|||||||
MsgType: TFPCErrorType;
|
MsgType: TFPCErrorType;
|
||||||
SrcEdit: TSourceEditor;
|
SrcEdit: TSourceEditor;
|
||||||
OpenFlags: TOpenFlags;
|
OpenFlags: TOpenFlags;
|
||||||
CurMsg, CurDir: string;
|
CurDir: string;
|
||||||
NewFilename: String;
|
NewFilename: String;
|
||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
@ -11364,8 +11373,8 @@ begin
|
|||||||
// search relevant message (first error, first fatal)
|
// search relevant message (first error, first fatal)
|
||||||
Index:=0;
|
Index:=0;
|
||||||
while (Index<MaxMessages) do begin
|
while (Index<MaxMessages) do begin
|
||||||
CurMsg:=MessagesView.VisibleItems[Index].Msg;
|
// ParseFPCMessage doesn't support multilingual messages, by GetFPCMessage
|
||||||
if ParseFPCMessage(CurMsg,Filename,LogCaretXY,MsgType) then
|
if GetFPCMessage(MessagesView.VisibleItems[Index],Filename,LogCaretXY,MsgType) then
|
||||||
begin
|
begin
|
||||||
if MsgType in [etError,etFatal,etPanic] then break;
|
if MsgType in [etError,etFatal,etPanic] then break;
|
||||||
end;
|
end;
|
||||||
@ -11379,9 +11388,9 @@ begin
|
|||||||
if MessagesView.ExecuteMsgLinePlugin(imqfoJump) then exit;
|
if MessagesView.ExecuteMsgLinePlugin(imqfoJump) then exit;
|
||||||
|
|
||||||
// default: jump to source position
|
// default: jump to source position
|
||||||
MessagesView.GetVisibleMessageAt(Index,CurMsg,CurDir);
|
if GetFPCMessage(MessagesView.VisibleItems[Index],Filename,LogCaretXY,MsgType)
|
||||||
if ParseFPCMessage(CurMsg,Filename,LogCaretXY,MsgType)
|
|
||||||
then begin
|
then begin
|
||||||
|
CurDir:=MessagesView.VisibleItems[Index].Directory;
|
||||||
if (not FilenameIsAbsolute(Filename)) and (CurDir<>'') then begin
|
if (not FilenameIsAbsolute(Filename)) and (CurDir<>'') then begin
|
||||||
// the directory was just hidden, re-append it
|
// the directory was just hidden, re-append it
|
||||||
NewFilename:=AppendPathDelim(CurDir)+Filename;
|
NewFilename:=AppendPathDelim(CurDir)+Filename;
|
||||||
@ -11441,7 +11450,6 @@ procedure TMainIDE.DoJumpToNextError(DirectionDown: boolean);
|
|||||||
var
|
var
|
||||||
Index: integer;
|
Index: integer;
|
||||||
MaxMessages: integer;
|
MaxMessages: integer;
|
||||||
CurMsg: String;
|
|
||||||
Filename: string;
|
Filename: string;
|
||||||
LogCaretXY: TPoint;
|
LogCaretXY: TPoint;
|
||||||
MsgType: TFPCErrorType;
|
MsgType: TFPCErrorType;
|
||||||
@ -11471,8 +11479,7 @@ begin
|
|||||||
if(Index=OldIndex) or (RoundCount>1) then exit;
|
if(Index=OldIndex) or (RoundCount>1) then exit;
|
||||||
|
|
||||||
// check if it is an error
|
// check if it is an error
|
||||||
CurMsg:=MessagesView.VisibleItems[Index].Msg;
|
if GetFPCMessage(MessagesView.VisibleItems[Index],Filename,LogCaretXY,MsgType) then
|
||||||
if (ParseFPCMessage(CurMsg,Filename,LogCaretXY,MsgType)) then
|
|
||||||
begin
|
begin
|
||||||
if MsgType in [etError,etFatal,etPanic] then break;
|
if MsgType in [etError,etFatal,etPanic] then break;
|
||||||
end;
|
end;
|
||||||
|
@ -552,9 +552,9 @@ var i, j, FilenameEndPos: integer;
|
|||||||
fLastMessageType:=omtFPC;
|
fLastMessageType:=omtFPC;
|
||||||
if CompStr('Panic',s,p) then
|
if CompStr('Panic',s,p) then
|
||||||
fLastErrorType:=etPanic
|
fLastErrorType:=etPanic
|
||||||
else if CompStr('Fatal: ',s,p) then
|
else if CompStr('Fatal: ',s,p) or CompStr(FErrorNames[etFatal], s, p) then
|
||||||
fLastErrorType:=etFatal
|
fLastErrorType:=etFatal
|
||||||
else if CompStr('Error: ',s,p) then
|
else if CompStr('Error: ',s,p) or CompStr(FErrorNames[etError], s, p) then
|
||||||
fLastErrorType:=etError
|
fLastErrorType:=etError
|
||||||
else if CompStr('Closing script ppas.sh',s,p) then begin
|
else if CompStr('Closing script ppas.sh',s,p) then begin
|
||||||
// linker error
|
// linker error
|
||||||
@ -565,7 +565,7 @@ var i, j, FilenameEndPos: integer;
|
|||||||
CurrentMessageParts.Values['Stage']:='Linker'
|
CurrentMessageParts.Values['Stage']:='Linker'
|
||||||
else
|
else
|
||||||
CurrentMessageParts.Values['Stage']:='FPC';
|
CurrentMessageParts.Values['Stage']:='FPC';
|
||||||
CurrentMessageParts.Values['Type']:=FErrorNames[fLastErrorType];
|
CurrentMessageParts.Values['Type']:=FPCErrorTypeNames[fLastErrorType];
|
||||||
|
|
||||||
NewLine:=copy(s,p,length(s));
|
NewLine:=copy(s,p,length(s));
|
||||||
if fLastErrorType in [etPanic,etFatal] then begin
|
if fLastErrorType in [etPanic,etFatal] then begin
|
||||||
@ -599,11 +599,11 @@ var i, j, FilenameEndPos: integer;
|
|||||||
function CheckForNoteMessages(p: integer): boolean;
|
function CheckForNoteMessages(p: integer): boolean;
|
||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
if CompStr('Note: ',s,p) then begin
|
if CompStr('Note: ',s,p) or CompStr(FErrorNames[etNote], s, p) then begin
|
||||||
DoAddFilteredLine(copy(s,p,length(s)));
|
DoAddFilteredLine(copy(s,p,length(s)));
|
||||||
fLastErrorType:=etNote;
|
fLastErrorType:=etNote;
|
||||||
CurrentMessageParts.Values['Stage']:='FPC';
|
CurrentMessageParts.Values['Stage']:='FPC';
|
||||||
CurrentMessageParts.Values['Type']:=FErrorNames[fLastErrorType];
|
CurrentMessageParts.Values['Type']:=FPCErrorTypeNames[fLastErrorType];
|
||||||
Result:=true;
|
Result:=true;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
@ -879,7 +879,7 @@ begin
|
|||||||
fLastErrorType:=MsgType;
|
fLastErrorType:=MsgType;
|
||||||
fLastMessageType:=omtFPC;
|
fLastMessageType:=omtFPC;
|
||||||
CurrentMessageParts.Values['Stage']:='FPC';
|
CurrentMessageParts.Values['Stage']:='FPC';
|
||||||
CurrentMessageParts.Values['Type']:=FErrorNames[fLastErrorType];
|
CurrentMessageParts.Values['Type']:=FPCErrorTypeNames[fLastErrorType];
|
||||||
CurrentMessageParts.Values['Line']:=
|
CurrentMessageParts.Values['Line']:=
|
||||||
copy(s,LineNumberStartPos,LineNumberEndPos-LineNumberStartPos);
|
copy(s,LineNumberStartPos,LineNumberEndPos-LineNumberStartPos);
|
||||||
CurrentMessageParts.Values['Column']:=
|
CurrentMessageParts.Values['Column']:=
|
||||||
|
Loading…
Reference in New Issue
Block a user