diff --git a/uppsrc/ide/Build.cpp b/uppsrc/ide/Build.cpp index 18190387c..92fc94da1 100644 --- a/uppsrc/ide/Build.cpp +++ b/uppsrc/ide/Build.cpp @@ -43,11 +43,7 @@ void Ide::BeginBuilding(bool sync_files, bool clear_console) SetIdeState(BUILDING); console.Kill(); console.ClearError(); - error_cache.Clear(); - error.Clear(); - SyncErrorsMessage(); - error_count = 0; - warning_count = 0; + ClearErrorsPane(); if(clear_console) console.Clear(); build_time = GetTickCount(); diff --git a/uppsrc/ide/Errors.cpp b/uppsrc/ide/Errors.cpp index b90cf56a4..0979882e2 100644 --- a/uppsrc/ide/Errors.cpp +++ b/uppsrc/ide/Errors.cpp @@ -328,6 +328,17 @@ bool Ide::FindLineError(int l) { return false; } +void Ide::ClearErrorsPane() +{ + linking = false; + linking_line.Clear(); + error_cache.Clear(); + error.Clear(); + SyncErrorsMessage(); + error_count = 0; + warning_count = 0; +} + void Ide::PutLinking() { linking = true; diff --git a/uppsrc/ide/icon.ico b/uppsrc/ide/icon.ico index 1aa7661cb..174c09f2f 100644 Binary files a/uppsrc/ide/icon.ico and b/uppsrc/ide/icon.ico differ diff --git a/uppsrc/ide/ide.h b/uppsrc/ide/ide.h index f19892de7..53c09ed9b 100644 --- a/uppsrc/ide/ide.h +++ b/uppsrc/ide/ide.h @@ -937,6 +937,7 @@ public: void GotoDirDiffLeft(int line, DirDiffDlg *df); void GotoDirDiffRight(int line, DirDiffDlg *df); void DoDirDiff(); + void AsErrors(); void HelpMenu(Bar& menu); void About(); @@ -1009,6 +1010,7 @@ public: void CopyFound(bool all); void FFoundMenu(Bar& bar); void SelError(); + void ClearErrorsPane(); WString FormatErrorLine(const String& text, int& linecy); WString FormatErrorLineEP(const String& text, const char *ep, int& linecy); diff --git a/uppsrc/ide/ide.key b/uppsrc/ide/ide.key index 05ca48362..8a6b8dd08 100644 --- a/uppsrc/ide/ide.key +++ b/uppsrc/ide/ide.key @@ -91,6 +91,7 @@ KEY(CALC, "Calculator", K_CTRL_E) KEY(QTF, "QTF designer", K_ALT_Q) KEY(XML, "XML view", K_ALT_X) KEY(JSON, "JSON view", K_ALT_N) +KEY(ASERRORS, "Interpret text as error list", 0) KEY(ASSIST, "Assist", ' '|K_CTRL) KEY(ABBR, "Complete abbreviation", K_CTRL_PERIOD) KEY(GO_TO_LINE, "Go to line..", K_CTRL|K_SHIFT_G) diff --git a/uppsrc/ide/idebar.cpp b/uppsrc/ide/idebar.cpp index 3da55758b..bac4fce23 100644 --- a/uppsrc/ide/idebar.cpp +++ b/uppsrc/ide/idebar.cpp @@ -647,6 +647,7 @@ void Ide::BrowseMenu(Bar& menu) menu.AddMenu(AK_QTF, IdeCommonImg::Qtf(), THISBACK(Qtf)); menu.AddMenu(!designer, AK_XML, IdeCommonImg::xml(), THISBACK(Xml)); menu.AddMenu(!designer, AK_JSON, IdeCommonImg::json(), THISBACK(Json)); + menu.AddMenu(!designer, AK_ASERRORS, IdeImg::errors(), THISBACK(AsErrors)); menu.AddMenu(AK_DIRDIFF, DiffImg::DirDiff(), THISBACK(DoDirDiff)); } } diff --git a/uppsrc/ide/idetool.cpp b/uppsrc/ide/idetool.cpp index d5c86acf9..bd9785626 100644 --- a/uppsrc/ide/idetool.cpp +++ b/uppsrc/ide/idetool.cpp @@ -508,6 +508,17 @@ void Ide::DoDirDiff() dlg.SetFocus(); } +void Ide::AsErrors() +{ + ClearErrorsPane(); + SetBottom(BERRORS); + String s = editor.IsSelection() ? editor.GetSelection() : editor.Get(); + StringStream ss(s); + while(!ss.IsEof()) + ConsoleLine(ss.GetLine(), true); + SetErrorEditor(); +} + void Ide::LaunchAndroidSDKManager(const AndroidSDK& androidSDK) { One host = CreateHost(false);