Index: /trunk/sources/HeuristicLab.CodeEditor/3.4/CodeEditor.cs
===================================================================
--- /trunk/sources/HeuristicLab.CodeEditor/3.4/CodeEditor.cs	(revision 11835)
+++ /trunk/sources/HeuristicLab.CodeEditor/3.4/CodeEditor.cs	(revision 11836)
@@ -248,4 +248,11 @@
           if (marker.Length != (int)marker.Tag)
             marker.Delete();
+          else {
+            int caretOffset = TextEditor.CaretOffset;
+            var line = Doc.GetLineByOffset(marker.StartOffset);
+            int lineEndOffset = line.EndOffset;
+            if (caretOffset == lineEndOffset) // special case for markers beyond line length
+              marker.Delete();
+          }
         }
         OnTextEditorTextChanged();
Index: /trunk/sources/HeuristicLab.Scripting.Views/3.3/CSharpScriptView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Scripting.Views/3.3/CSharpScriptView.cs	(revision 11835)
+++ /trunk/sources/HeuristicLab.Scripting.Views/3.3/CSharpScriptView.cs	(revision 11836)
@@ -21,4 +21,6 @@
 
 using System;
+using System.Drawing;
+using System.Threading;
 using System.Windows.Forms;
 using HeuristicLab.Common;
@@ -31,4 +33,9 @@
   [Content(typeof(CSharpScript), true)]
   public partial class CSharpScriptView : ScriptView {
+    private const string ScriptExecutionStartedMessage = "Script execution started";
+    private const string ScriptExecutionCanceledMessage = "Script execution canceled";
+    private const string ScriptExecutionSuccessfulMessage = "Script execution successful";
+    private const string ScriptExecutionFailedMessage = "Script execution failed";
+
     protected bool Running { get; set; }
 
@@ -65,4 +72,5 @@
         startStopButton.Image = VSImageLibrary.Stop;
         toolTip.SetToolTip(startStopButton, "Stop (Shift+F5)");
+        UpdateInfoTextLabel(ScriptExecutionStartedMessage, SystemColors.ControlText);
         infoTabControl.SelectedTab = outputTabPage;
       }
@@ -76,8 +84,17 @@
         startStopButton.Image = VSImageLibrary.Play;
         toolTip.SetToolTip(startStopButton, "Run (F5)");
+
+        var ex = e.Value;
+        if (ex == null) {
+          UpdateInfoTextLabel(ScriptExecutionSuccessfulMessage, Color.DarkGreen);
+        } else if (ex is ThreadAbortException) {
+          // the execution was canceled by the user
+          UpdateInfoTextLabel(ScriptExecutionCanceledMessage, Color.DarkOrange);
+        } else {
+          UpdateInfoTextLabel(ScriptExecutionFailedMessage, Color.DarkRed);
+          PluginInfrastructure.ErrorHandling.ShowErrorDialog(this, ex);
+        }
+
         Running = false;
-        var ex = e.Value;
-        if (ex != null)
-          PluginInfrastructure.ErrorHandling.ShowErrorDialog(this, ex);
       }
     }
Index: /trunk/sources/HeuristicLab.Scripting.Views/3.3/ScriptView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Scripting.Views/3.3/ScriptView.Designer.cs	(revision 11835)
+++ /trunk/sources/HeuristicLab.Scripting.Views/3.3/ScriptView.Designer.cs	(revision 11836)
@@ -50,5 +50,5 @@
     private void InitializeComponent() {
       this.components = new System.ComponentModel.Container();
-      this.compilationLabel = new System.Windows.Forms.Label();
+      this.infoTextLabel = new System.Windows.Forms.Label();
       this.imageList = new System.Windows.Forms.ImageList(this.components);
       this.compileButton = new System.Windows.Forms.Button();
@@ -87,13 +87,13 @@
       this.infoLabel.Location = new System.Drawing.Point(816, 4);
       // 
-      // compilationLabel
-      // 
-      this.compilationLabel.AutoSize = true;
-      this.compilationLabel.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
-      this.compilationLabel.Location = new System.Drawing.Point(66, 32);
-      this.compilationLabel.Name = "compilationLabel";
-      this.compilationLabel.Size = new System.Drawing.Size(69, 13);
-      this.compilationLabel.TabIndex = 3;
-      this.compilationLabel.Text = "Not compiled";
+      // infoTextLabel
+      // 
+      this.infoTextLabel.AutoSize = true;
+      this.infoTextLabel.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
+      this.infoTextLabel.Location = new System.Drawing.Point(66, 32);
+      this.infoTextLabel.Name = "infoTextLabel";
+      this.infoTextLabel.Size = new System.Drawing.Size(69, 13);
+      this.infoTextLabel.TabIndex = 3;
+      this.infoTextLabel.Text = "Not compiled";
       // 
       // imageList
@@ -217,14 +217,14 @@
       this.codeEditor.TabIndex = 0;
       this.codeEditor.UserCode = "";
-      this.codeEditor.AssembliesLoaded += new System.EventHandler<EventArgs<IEnumerable<Assembly>>>(this.codeEditor_AssembliesLoaded);
-      this.codeEditor.AssembliesLoading += new System.EventHandler<EventArgs<IEnumerable<Assembly>>>(this.codeEditor_AssembliesLoading);
-      this.codeEditor.AssembliesUnloaded += new System.EventHandler<EventArgs<IEnumerable<Assembly>>>(this.codeEditor_AssembliesUnloaded);
-      this.codeEditor.AssembliesUnloading += new System.EventHandler<EventArgs<IEnumerable<Assembly>>>(this.codeEditor_AssembliesUnloading);
       this.codeEditor.TextEditorTextChanged += new System.EventHandler(this.codeEditor_TextEditorTextChanged);
+      this.codeEditor.AssembliesLoading += new System.EventHandler<HeuristicLab.Common.EventArgs<System.Collections.Generic.IEnumerable<System.Reflection.Assembly>>>(this.codeEditor_AssembliesLoading);
+      this.codeEditor.AssembliesLoaded += new System.EventHandler<HeuristicLab.Common.EventArgs<System.Collections.Generic.IEnumerable<System.Reflection.Assembly>>>(this.codeEditor_AssembliesLoaded);
+      this.codeEditor.AssembliesUnloading += new System.EventHandler<HeuristicLab.Common.EventArgs<System.Collections.Generic.IEnumerable<System.Reflection.Assembly>>>(this.codeEditor_AssembliesUnloading);
+      this.codeEditor.AssembliesUnloaded += new System.EventHandler<HeuristicLab.Common.EventArgs<System.Collections.Generic.IEnumerable<System.Reflection.Assembly>>>(this.codeEditor_AssembliesUnloaded);
       // 
       // splitContainer1
       // 
-      this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-            | System.Windows.Forms.AnchorStyles.Left)
+      this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.splitContainer1.Location = new System.Drawing.Point(0, 56);
@@ -248,8 +248,8 @@
       this.Controls.Add(this.splitContainer1);
       this.Controls.Add(this.compileButton);
-      this.Controls.Add(this.compilationLabel);
+      this.Controls.Add(this.infoTextLabel);
       this.Name = "ScriptView";
       this.Size = new System.Drawing.Size(835, 602);
-      this.Controls.SetChildIndex(this.compilationLabel, 0);
+      this.Controls.SetChildIndex(this.infoTextLabel, 0);
       this.Controls.SetChildIndex(this.compileButton, 0);
       this.Controls.SetChildIndex(this.splitContainer1, 0);
@@ -273,5 +273,5 @@
     #endregion
 
-    protected System.Windows.Forms.Label compilationLabel;
+    protected System.Windows.Forms.Label infoTextLabel;
     protected System.Windows.Forms.Button compileButton;
     protected System.Windows.Forms.ImageList imageList;
Index: /trunk/sources/HeuristicLab.Scripting.Views/3.3/ScriptView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Scripting.Views/3.3/ScriptView.cs	(revision 11835)
+++ /trunk/sources/HeuristicLab.Scripting.Views/3.3/ScriptView.cs	(revision 11836)
@@ -86,6 +86,5 @@
         codeEditor.AddAssembliesAsync(Content.GetAssemblies());
         if (Content.CompileErrors == null) {
-          compilationLabel.ForeColor = SystemColors.ControlDarkDark;
-          compilationLabel.Text = NotCompiledMessage;
+          UpdateInfoTextLabel(NotCompiledMessage, SystemColors.ControlText);
         }
       }
@@ -117,17 +116,14 @@
         Content.Compile();
         outputTextBox.AppendText(CompilationSucceededMessage);
-        compilationLabel.ForeColor = Color.DarkGreen;
-        compilationLabel.Text = CompilationSucceededMessage;
+        UpdateInfoTextLabel(CompilationSucceededMessage, Color.DarkGreen);
         return true;
       } catch (InvalidOperationException) {
         if (Content.CompileErrors.HasErrors) {
           outputTextBox.AppendText(CompilationFailedMessage);
-          compilationLabel.ForeColor = Color.DarkRed;
-          compilationLabel.Text = CompilationFailedMessage;
+          UpdateInfoTextLabel(CompilationFailedMessage, Color.DarkRed);
           return false;
         } else {
           outputTextBox.AppendText(CompilationSucceededMessage);
-          compilationLabel.ForeColor = Color.DarkGreen;
-          compilationLabel.Text = CompilationSucceededMessage;
+          UpdateInfoTextLabel(CompilationSucceededMessage, Color.DarkGreen);
           return true;
         }
@@ -144,6 +140,4 @@
     #region Helpers
     protected virtual void ShowCompilationResults() {
-      if (Content.CompileErrors.Count == 0) return;
-
       var messages = Content.CompileErrors.OfType<CompilerError>()
                                       .OrderBy(x => x.IsWarning)
@@ -169,4 +163,9 @@
     }
 
+    protected virtual void UpdateInfoTextLabel(string message, Color color) {
+      infoTextLabel.Text = message;
+      infoTextLabel.ForeColor = color;
+    }
+
     protected virtual void AdjustErrorListViewColumnSizes() {
       foreach (ColumnHeader ch in errorListView.Columns)
Index: /trunk/sources/HeuristicLab.Scripting/3.3/Scripts/CSharp/CSharpScript.cs
===================================================================
--- /trunk/sources/HeuristicLab.Scripting/3.3/Scripts/CSharp/CSharpScript.cs	(revision 11835)
+++ /trunk/sources/HeuristicLab.Scripting/3.3/Scripts/CSharp/CSharpScript.cs	(revision 11836)
@@ -102,6 +102,4 @@
           OnScriptExecutionStarted();
           compiledScript.Execute(VariableStore);
-        } catch (ThreadAbortException) {
-          // the execution was cancelled by the user
         } catch (Exception e) {
           ex = e;
