<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>TodoPlugin/todo4.todo</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -67,7 +67,7 @@ namespace ToDo
             public ErrorInformation Info { get; set; }
         }
 
-        // Mostly stolen from DynamicParserLanguageServiceItem
+        // Mostly from DynamicParserLanguageServiceItem
         class ToDoErrorReporter : ErrorReporter
         {
             public ToDoErrorReporter() 
@@ -108,28 +108,26 @@ namespace ToDo
 
             public ToDoLanguageServiceItem(BufferView b, ISquiggleProviderFactory squiggleProviderFactory)
             {
+                this.bufferView = b;
+                this.uri = this.bufferView.Buffer.Uri;
+                this.squiggleProviderFactory = squiggleProviderFactory;
+                this.squiggles = new List&lt;ISquiggleAdornment&gt;();
+                this.textBuffer = this.bufferView.TextBuffer;
+                this.reparseTimer = new Timer(Reparse, null, Timeout.Infinite, Timeout.Infinite);
+
                 // Described in MGrammar in a Nutshell (http://msdn.microsoft.com/en-us/library/dd129870.aspx)
                 // and in PDC 2008 talk &quot;Building Textual DSLs with the &quot;Oslo&quot; Modeling Language&quot; (32:00 mark).
                 //
-                parser = null;
-                Assembly assembly = Assembly.GetExecutingAssembly();
-                using (Stream stream = assembly.GetManifestResourceStream(&quot;ToDo.mgx&quot;))
+                this.parser = null;
+                using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(&quot;ToDo.mgx&quot;))
                 {
                     // Load image and instantiate a corresponding dynamic parser
-                    parser = Microsoft.M.Grammar.MGrammarCompiler.LoadParserFromMgx(stream, &quot;ToDo.Tasks4&quot;);
+                    this.parser = Microsoft.M.Grammar.MGrammarCompiler.LoadParserFromMgx(stream, &quot;ToDo.Tasks4&quot;);
                 }
 
-                this.squiggleProviderFactory = squiggleProviderFactory;
-                this.squiggles = new List&lt;ISquiggleAdornment&gt;();
-
-                reparseTimer = new Timer(Reparse, null, Timeout.Infinite, Timeout.Infinite);
-
-                this.bufferView = b;
                 this.classifier = new ParserClassifier(parser, bufferView.Buffer.TextBuffer);
-                this.textBuffer = bufferView.TextBuffer;
-                this.bufferView.EditorInitialized += OnBufferViewEditorInitialized;
-                this.uri = this.bufferView.Buffer.Uri;
 
+                this.bufferView.EditorInitialized += OnBufferViewEditorInitialized;
                 this.textBuffer.Changed += (ignore1, ignore2) =&gt; { lock (l) { bufferDirty = true; } };
             }
 
@@ -159,7 +157,7 @@ namespace ToDo
                 }
             }
 
-            // Stolen from DynamicParserLanguageServiceItem
+            // From DynamicParserLanguageServiceItem
             void CleanupOldToolTipPopups()
             {
                 if (this.bufferView.TextEditor != null)
@@ -175,7 +173,7 @@ namespace ToDo
 
             }
 
-            // Mostly stolen from DynamicParserLanguageServiceItem
+            // Mostly from DynamicParserLanguageServiceItem
             void ProcessSquiggles(ToDoErrorReporter reporter)
             {
                 if (this.squiggleProvider == null)
@@ -202,7 +200,7 @@ namespace ToDo
                 }
             }
 
-            // Stolen from DynamicParserLanguageServiceItem
+            // From DynamicParserLanguageServiceItem
             SnapshotSpan GetCurrentSpan(ITextSnapshot snapshot, SourceSpan span)
             {
                 ITextSnapshot currentSnapshot = this.bufferView.TextBuffer.CurrentSnapshot;
@@ -247,7 +245,9 @@ namespace ToDo
 
             public void Dispose()
             {
-                reparseTimer.Dispose();
+                if(reparseTimer != null)
+                    reparseTimer.Dispose();
+
                 GC.SuppressFinalize(this);
             }
         }</diff>
      <filename>TodoPlugin/ToDoMode.cs</filename>
    </modified>
    <modified>
      <diff>@@ -56,7 +56,6 @@
     &lt;Reference Include=&quot;$(MBinaries32Path)\Intellipad\Microsoft.Intellipad.Core.dll&quot; /&gt;
     &lt;Reference Include=&quot;$(MBinaries32Path)\Intellipad\Microsoft.VisualStudio.Platform.Editor.dll&quot; /&gt;
     &lt;Reference Include=&quot;$(MBinaries32Path)\Microsoft.M.Grammar.dll&quot; /&gt;
-    &lt;Reference Include=&quot;$(MBinaries32Path)\Microsoft.M.Grammar.dll&quot; /&gt;
     &lt;Reference Include=&quot;$(MBinaries32Path)\System.Dataflow.dll&quot; /&gt;
     &lt;Reference Include=&quot;$(MBinaries32Path)\Xaml.dll&quot; /&gt;
   &lt;/ItemGroup&gt;
@@ -72,6 +71,9 @@
   &lt;ItemGroup&gt;
     &lt;MgCompile Include=&quot;todo4.mg&quot; /&gt;
   &lt;/ItemGroup&gt;
+  &lt;ItemGroup&gt;
+    &lt;None Include=&quot;todo4.todo&quot; /&gt;
+  &lt;/ItemGroup&gt;
   &lt;Import Project=&quot;$(MSBuildToolsPath)\Microsoft.CSharp.targets&quot; /&gt;
   &lt;Import Project=&quot;$(MGrammarTargetsPath)\Microsoft.M.Grammar.targets&quot; /&gt;
   &lt;!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
@@ -84,6 +86,7 @@
   &lt;PropertyGroup&gt;
     &lt;PostBuildEvent&gt;xcopy &quot;$(TargetPath)&quot; &quot;C:\Program Files\Microsoft Oslo SDK 1.0\Bin\Intellipad\Components\ToDo&quot; /S /D /I /Y
 xcopy &quot;$(TargetDir)*.py&quot; &quot;C:\Program Files\Microsoft Oslo SDK 1.0\Bin\Intellipad\Components\ToDo&quot; /S /D /I /Y
+xcopy &quot;$(TargetDir)Microsoft.M.Grammar.dll&quot; &quot;C:\Program Files\Microsoft Oslo SDK 1.0\Bin\Intellipad\Components\ToDo&quot; /S /D /I /Y
 &lt;/PostBuildEvent&gt;
   &lt;/PropertyGroup&gt;
 &lt;/Project&gt;
\ No newline at end of file</diff>
      <filename>TodoPlugin/TodoPlugin.csproj</filename>
    </modified>
    <modified>
      <diff>@@ -2,9 +2,10 @@ task &quot;Make my language parse.&quot; 10-31-2008
 task &quot;Define a second task.&quot; 10-31-2008
 task &quot;&quot; 08-29-3999
 task &quot;foo&quot;
-# uyay!!!
 
-task &quot;foo&quot; bar # task 'Create a task with &quot;quotes&quot;' 10-31-2008
+# task 'Create a task with &quot;quotes&quot;' 10-31-2008
+task &quot;foo&quot; 
+
 # This task has no due date, with good reason!
 # But too bad I can't parse this comment!
 task &quot;Clean out garage.&quot;</diff>
      <filename>todo4.todo</filename>
    </modified>
    <modified>
      <diff>@@ -3,5 +3,8 @@ task &quot;lets make this useful.&quot; 08-28-2008
 # Solved by precedence rules
 task &quot;lets make this useful.&quot; 01-01-2008
 task &quot;Add ability to comment&quot; 08-29-3000
-task
+task &quot;foo&quot;
+
+
+
     </diff>
      <filename>todo5.todo</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>TodoPlugin/todo1.mg</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>80f50c6209e76b30d700e90a5270d1ab106446e4</id>
    </parent>
  </parents>
  <author>
    <name>Justin Bailey</name>
    <email>jgbailey@codeslower.com</email>
  </author>
  <url>http://github.com/m4dc4p/mg-todo/commit/a67ad66316be3bba4af9b4c2667b250e4ca54fcd</url>
  <id>a67ad66316be3bba4af9b4c2667b250e4ca54fcd</id>
  <committed-date>2008-11-12T16:08:13-08:00</committed-date>
  <authored-date>2008-11-12T16:08:13-08:00</authored-date>
  <message>Updates for article.</message>
  <tree>8799a4c20c81b1dd40bf752f116d5f1e7ebaf668</tree>
  <committer>
    <name>Justin Bailey</name>
    <email>jgbailey@codeslower.com</email>
  </committer>
</commit>
