diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin
index e2655ade25..e2977046ef 100644
--- a/AddIns/ICSharpCode.SharpDevelop.addin
+++ b/AddIns/ICSharpCode.SharpDevelop.addin
@@ -512,6 +512,25 @@
tooltip = "Toggle Word Wrap"
class = "ICSharpCode.SharpDevelop.Gui.ToggleeMessageViewWordWrap"/>
+
+
+
+
+
0) {
WorkbenchSingleton.Workbench.GetPad(typeof(ErrorList)).BringPadToFront();
diff --git a/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs b/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs
index c09eca96cb..a4695df376 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompilerMessageView.cs
@@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Gui
/// This class displays the errors and warnings which the compiler outputs and
/// allows the user to jump to the source of the warnig / error
///
- public class CompilerMessageView : AbstractPadContent
+ public class CompilerMessageView : AbstractPadContent, IClipboardHandler
{
static CompilerMessageView instance;
@@ -95,7 +95,8 @@ namespace ICSharpCode.SharpDevelop.Gui
myPanel.SuspendLayout();
textEditorControl.Dock = DockStyle.Fill;
textEditorControl.ReadOnly = true;
-
+ textEditorControl.ContextMenuStrip = MenuService.CreateContextMenu(this, "/SharpDevelop/Pads/CompilerMessageView/ContextMenu");
+
properties = (Properties)PropertyService.Get(OutputWindowOptionsPanel.OutputWindowsProperty, new Properties());
textEditorControl.Font = FontSelectionPanel.ParseFont(properties.Get("DefaultFont", new Font("Courier New", 10).ToString()).ToString());
@@ -340,5 +341,59 @@ namespace ICSharpCode.SharpDevelop.Gui
public event EventHandler MessageCategoryAdded;
public event EventHandler SelectedCategoryIndexChanged;
+ #region ICSharpCode.SharpDevelop.Gui.IClipboardHandler interface implementation
+ public bool EnableCut {
+ get {
+ return false;
+ }
+ }
+
+ public bool EnableCopy {
+ get {
+ return true;
+ }
+ }
+
+ public bool EnablePaste {
+ get {
+ return false;
+ }
+ }
+
+ public bool EnableDelete {
+ get {
+ return false;
+ }
+ }
+
+ public bool EnableSelectAll {
+ get {
+ return true;
+ }
+ }
+
+ public void Cut()
+ {
+ }
+
+ public void Copy()
+ {
+ textEditorControl.Copy();
+ }
+
+ public void Paste()
+ {
+ }
+
+ public void Delete()
+ {
+ }
+
+ public void SelectAll()
+ {
+ textEditorControl.SelectAll();
+ }
+ #endregion
+
}
}
diff --git a/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompulerMessageViewToolbarCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompulerMessageViewToolbarCommands.cs
index 014a632526..e6a79b2bb3 100644
--- a/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompulerMessageViewToolbarCommands.cs
+++ b/src/Main/Base/Project/Src/Gui/Pads/CompilerMessageView/CompulerMessageViewToolbarCommands.cs
@@ -62,7 +62,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
- public class ClearOutputWindow : AbstractComboBoxCommand
+ public class ClearOutputWindow : AbstractCommand
{
public override void Run()
{
diff --git a/src/Main/Base/Project/Src/Project/MSBuildProject.cs b/src/Main/Base/Project/Src/Project/MSBuildProject.cs
index 91d93ce8df..7d3c61b621 100644
--- a/src/Main/Base/Project/Src/Project/MSBuildProject.cs
+++ b/src/Main/Base/Project/Src/Project/MSBuildProject.cs
@@ -264,9 +264,12 @@ namespace ICSharpCode.SharpDevelop.Project
// isDirty = TaskService.Errors != 0;
// }
//
- readonly static Regex normalError = new Regex(@"^(?\S.*)\((?\d+),(?\d+)\):\s+(?\w+)\s+(?[\d\w]+):\s+(?.*)$", RegexOptions.Compiled);
- readonly static Regex generalError = new Regex(@"^(?\S.+)\s+(?[\d\w]+):\s+(?.*)$", RegexOptions.Compiled);
- readonly static Regex projectName = new Regex(@"^Project\s+\""(?[^""]*)\""", RegexOptions.Compiled);
+ readonly static Regex normalError = new Regex(@"(?\S.*)\((?\d+),(?\d+)\):\s+(?\w+)\s+(?[\d\w]+):\s+(?.*)", RegexOptions.Compiled);
+ readonly static Regex compilerError = new Regex(@"(?[^:]*):\s+(?\w+)\s+(?[\d\w]+):\s+(?.*)", RegexOptions.Compiled);
+ readonly static Regex generalError = new Regex(@"(?\S.+)\s+(?[\d\w]+):\s+(?.*)", RegexOptions.Compiled);
+
+ readonly static Regex projectName = new Regex(@"Project\s+\""[^""]*\""[^""]*\""(?[^""]*)\""", RegexOptions.Compiled);
+
static CompilerError GetCompilerError(string line, string workingPath)
{
@@ -281,6 +284,14 @@ namespace ICSharpCode.SharpDevelop.Project
error.ErrorText = match.Result("${message}");
return error;
}
+ match = compilerError.Match(line);
+ if (match.Success) {
+ CompilerError error = new CompilerError();
+ error.IsWarning = match.Result("${error}") == "warning";
+ error.ErrorNumber = match.Result("${number}");
+ error.ErrorText = match.Result("${who}") + ":" + match.Result("${message}");
+ return error;
+ }
match = generalError.Match(line);
if (match.Success) {
@@ -292,7 +303,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
return null;
}
-
+
public static CompilerResults RunMSBuild(string fileName, string target)
{
WorkbenchSingleton.Workbench.GetPad(typeof(CompilerMessageView)).BringPadToFront();
@@ -317,11 +328,9 @@ namespace ICSharpCode.SharpDevelop.Project
string line = reader.ReadLine();
if (line != null) {
TaskService.BuildMessageViewCategory.AppendText(line + Environment.NewLine);
-
Match match = projectName.Match(line);
if (match.Success) {
string name = match.Result("${name}");
-
if (name != null) {
workingDirectory = Path.GetDirectoryName(name);
}
@@ -330,12 +339,33 @@ namespace ICSharpCode.SharpDevelop.Project
if (error != null) {
results.Errors.Add(error);
}
- }
+ }
results.Output.Add(line);
}
System.Windows.Forms.Application.DoEvents();
}
- TaskService.BuildMessageViewCategory.AppendText(reader.ReadToEnd() + Environment.NewLine);
+ while (true) {
+ string line = reader.ReadLine();
+ if (line == null) {
+ break;
+ }
+ TaskService.BuildMessageViewCategory.AppendText(line + Environment.NewLine);
+ Console.WriteLine(line);
+ Match match = projectName.Match(line);
+ if (match.Success) {
+ string name = match.Result("${name}");
+ if (name != null) {
+ workingDirectory = Path.GetDirectoryName(name);
+ }
+ } else {
+ CompilerError error = GetCompilerError(line, workingDirectory);
+ if (error != null) {
+ results.Errors.Add(error);
+ }
+ }
+ results.Output.Add(line);
+ }
+// TaskService.BuildMessageViewCategory.AppendText(reader.ReadToEnd() + Environment.NewLine);
p.WaitForExit();
// AfterBuild();
return results;
diff --git a/src/Main/Base/Project/Src/Services/Tasks/Task.cs b/src/Main/Base/Project/Src/Services/Tasks/Task.cs
index be8f628144..8db2648178 100644
--- a/src/Main/Base/Project/Src/Services/Tasks/Task.cs
+++ b/src/Main/Base/Project/Src/Services/Tasks/Task.cs
@@ -89,19 +89,6 @@ namespace ICSharpCode.Core
this.line = line;
}
- public Task(IProject project, CompilerError error)
- {
- this.project = project;
- type = error.IsWarning ? TaskType.Warning : TaskType.Error;
- column = error.Column - 1;
- line = error.Line - 1;
- description = error.ErrorText + "(" + error.ErrorNumber + ")";
- if (!Path.IsPathRooted(error.FileName)) {
- fileName = Path.Combine(project.Directory, error.FileName);
- } else {
- fileName = error.FileName;
- }
- }
public Task(CompilerError error)
{
type = error.IsWarning ? TaskType.Warning : TaskType.Error;
diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCommand.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCommand.cs
index 787fbba061..2db60b2d40 100644
--- a/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCommand.cs
+++ b/src/Main/Core/Project/Src/AddInTree/AddIn/StandardErbauer/MenuItem/Gui/MenuCommand.cs
@@ -18,7 +18,7 @@ namespace ICSharpCode.Core
{
object caller;
Codon codon;
- IMenuCommand menuCommand = null;
+ ICommand menuCommand = null;
string description = "";
string localizedText = null;
@@ -31,7 +31,7 @@ namespace ICSharpCode.Core
}
}
- public IMenuCommand Command {
+ public ICommand Command {
get {
if (menuCommand == null) {
CreateCommand();
@@ -43,7 +43,7 @@ namespace ICSharpCode.Core
void CreateCommand()
{
try {
- menuCommand = (IMenuCommand)codon.AddIn.CreateObject(codon.Properties["class"]);
+ menuCommand = (ICommand)codon.AddIn.CreateObject(codon.Properties["class"]);
} catch (Exception e) {
MessageService.ShowError(e, "Can't create menu command : " + codon.ID);
}
@@ -113,8 +113,8 @@ namespace ICSharpCode.Core
ConditionFailedAction failedAction = codon.GetFailedAction(caller);
bool isEnabled = failedAction != ConditionFailedAction.Disable;
- if (menuCommand != null) {
- isEnabled &= menuCommand.IsEnabled;
+ if (menuCommand != null && menuCommand is IMenuCommand) {
+ isEnabled &= ((IMenuCommand)menuCommand).IsEnabled;
}
return isEnabled;
}