Author: mkrueger
Date: 2008-01-24 13:24:33 -0500 (Thu, 24 Jan 2008)
New Revision: 93826
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtendibleTextEditor.cs
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
Log:
* MonoDevelop.SourceEditor/SourceEditorWidget.cs,
MonoDevelop.SourceEditor/ExtendibleTextEditor.cs: Worked on error
underlining.
Modified: trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog
2008-01-24 18:06:18 UTC (rev 93825)
+++ trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog
2008-01-24 18:24:33 UTC (rev 93826)
@@ -1,9 +1,16 @@
-2008-01-23 Mike Krüger <[EMAIL PROTECTED]>
+2008-01-24 Mike Krüger <[EMAIL PROTECTED]>
* MonoDevelop.SourceEditor/SourceEditorWidget.cs,
- MonoDevelop.SourceEditor/ExtendibleTextEditor.cs,
- MonoDevelop.SourceEditor/SourceEditorView.cs: Worked on code
completion.
+ MonoDevelop.SourceEditor/ExtendibleTextEditor.cs: Worked on error
+ underlining.
+2008-01-24 Mike Krüger <[EMAIL PROTECTED]>
+
+ * MonoDevelop.SourceEditor/SourceEditorWidget.cs,
+ MonoDevelop.SourceEditor/ExtendibleTextEditor.cs: Worked on error
+ underlining.
+
+
2008-01-23 Mike Krüger <[EMAIL PROTECTED]>
* MonoDevelop.SourceEditor/SourceEditorWidget.cs,
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtendibleTextEditor.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtendibleTextEditor.cs
2008-01-24 18:06:18 UTC (rev 93825)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtendibleTextEditor.cs
2008-01-24 18:24:33 UTC (rev 93826)
@@ -52,7 +52,6 @@
bool showTipScheduled;
int langTipX, langTipY;
uint tipTimeoutId;
- Dictionary<int, ErrorInfo> errors = new
Dictionary<int,ErrorInfo> ();
public ITextEditorExtension Extension {
get {
@@ -82,8 +81,9 @@
this.PopupMenu += delegate {
this.ShowPopup ();
};
-
}
+
+
protected override bool OnButtonPressEvent (Gdk.EventButton e)
{
if (e.Button == 3) {
Modified:
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
===================================================================
---
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
2008-01-24 18:06:18 UTC (rev 93825)
+++
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs
2008-01-24 18:24:33 UTC (rev 93826)
@@ -154,8 +154,104 @@
UpdateLineCol ();
CaretModeChanged (this, EventArgs.Empty);
};
+
+
IdeApp.ProjectOperations.ParserDatabase.ParseInformationChanged +=
OnParseInformationChanged;
}
+
+#region Error underlining
+ Dictionary<int, Error> errors = new Dictionary<int, Error> ();
+ uint resetTimerId;
+ ICompilationUnitBase lastCu = null;
+ bool resetTimerStarted = false;
+ void OnParseInformationChanged (object sender,
ParseInformationEventArgs args)
+ {
+ if (args == null || this.view.ContentName !=
args.FileName)
+ return;
+
+ lastCu =
args.ParseInformation.MostRecentCompilationUnit;
+ UpdateAutocorTimer ();
+ }
+
+ void UpdateAutocorTimer ()
+ {
+ uint timeout = 900;
+
+ if (resetTimerStarted) {
+ // Reset the timer
+ GLib.Source.Remove (resetTimerId);
+ } else {
+ // Start the timer for the first time
+ resetTimerStarted = true;
+ }
+ resetTimerId = GLib.Timeout.Add (timeout,
AutocorrResetMeth);
+ }
+
+ bool AutocorrResetMeth ()
+ {
+ ResetUnderlineChangement ();
+ if (lastCu != null)
+ ParseCompilationUnit (lastCu);
+ resetTimerStarted = false;
+ return false;
+ }
+
+ void ResetUnderlineChangement ()
+ {
+ if (errors.Count > 0) {
+ foreach (Error error in this.errors.Values) {
+ error.RemoveFromLine ();
+ }
+ errors.Clear ();
+ }
+ }
+ void ParseCompilationUnit (ICompilationUnitBase cu)
+ {
+ // No new errors
+ if (!cu.ErrorsDuringCompile || cu.ErrorInformation ==
null)
+ return;
+
+ // Else we underline the error
+ foreach (ErrorInfo info in cu.ErrorInformation)
+ UnderLineError (info);
+ }
+ class Error
+ {
+ public ErrorInfo info;
+ public LineSegment line;
+ TextMarker marker = new TextMarker ();
+
+ public Error (ErrorInfo info, LineSegment line)
+ {
+ this.info = info;
+ this.line = line;
+ }
+
+ public void AddToLine ()
+ {
+ line.AddMarker (marker);
+ }
+ public void RemoveFromLine ()
+ {
+ line.RemoveMarker (marker);
+ }
+ }
+ void UnderLineError (ErrorInfo info)
+ {
+ // Adjust the line to Gtk line representation
+ info.Line -= 1;
+
+ // If the line is already underlined
+ if (errors.ContainsKey (info.Line))
+ return;
+
+ LineSegment line = this.textEditor.Document.GetLine
(info.Line);
+ Error error = new Error (info, line);
+ errors [info.Line] = error;
+ error.AddToLine ();
+ }
+#endregion
+
public override void Dispose ()
{
isDisposed = true;
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches