Author: lluis
Date: 2006-07-25 11:57:17 -0400 (Tue, 25 Jul 2006)
New Revision: 62966
Modified:
trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/AssemblyCodeCompletionDatabase.cs
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/CodeCompletionDatabase.cs
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/DefaultParserService.cs
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/IParserService.cs
Log:
2006-07-25 Lluis Sanchez Gual <[EMAIL PROTECTED]>
* MonoDevelop.Projects.Parser/CodeCompletionDatabase.cs:
* MonoDevelop.Projects.Parser/IParserService.cs:
* MonoDevelop.Projects.Parser/DefaultParserService.cs:
Added an UpdateDatabase method to IParserContext. This method
will parse all modified files of the parser context. It does
not use the parsing queue, so it will block until done.
* MonoDevelop.Projects.Parser/AssemblyCodeCompletionDatabase.cs:
Override IsFileModified instead of CheckModifiedFiles.
Modified: trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog 2006-07-25
15:49:45 UTC (rev 62965)
+++ trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog 2006-07-25
15:57:17 UTC (rev 62966)
@@ -1,3 +1,15 @@
+2006-07-25 Lluis Sanchez Gual <[EMAIL PROTECTED]>
+
+ * MonoDevelop.Projects.Parser/CodeCompletionDatabase.cs:
+ * MonoDevelop.Projects.Parser/IParserService.cs:
+ * MonoDevelop.Projects.Parser/DefaultParserService.cs:
+ Added an UpdateDatabase method to IParserContext. This method
+ will parse all modified files of the parser context. It does
+ not use the parsing queue, so it will block until done.
+
+ * MonoDevelop.Projects.Parser/AssemblyCodeCompletionDatabase.cs:
+ Override IsFileModified instead of CheckModifiedFiles.
+
2006-07-25 Lluis Sanchez Gual <[EMAIL PROTECTED]>
* MonoDevelop.Projects/Combine.cs: When disposing the combine, dispose
Modified:
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/AssemblyCodeCompletionDatabase.cs
===================================================================
---
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/AssemblyCodeCompletionDatabase.cs
2006-07-25 15:49:45 UTC (rev 62965)
+++
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/AssemblyCodeCompletionDatabase.cs
2006-07-25 15:57:17 UTC (rev 62966)
@@ -103,22 +103,16 @@
}
}
- public override void CheckModifiedFiles ()
+ protected override bool IsFileModified (FileEntry file)
{
if (!isPackageAssembly)
- base.CheckModifiedFiles ();
- else {
- // Don't check timestamps for packaged
assemblies.
- // Just check if the package has changed.
+ return base.IsFileModified (file);
- foreach (FileEntry file in files.Values) {
- SystemPackage pkg =
Runtime.SystemAssemblyService.GetPackageFromFullName (assemblyName);
- bool versionMismatch = pkg != null &&
packageVersion != pkg.Name + " " + pkg.Version;
- if (!file.DisableParse &&
(versionMismatch || file.LastParseTime == DateTime.MinValue ||
file.ParseErrorRetries > 0)) {
- QueueParseJob (file);
- }
- }
- }
+ // Don't check timestamps for packaged assemblies.
+ // Just check if the package has changed.
+ SystemPackage pkg =
Runtime.SystemAssemblyService.GetPackageFromFullName (assemblyName);
+ bool versionMismatch = pkg != null && packageVersion !=
pkg.Name + " " + pkg.Version;
+ return (!file.DisableParse && (versionMismatch ||
file.LastParseTime == DateTime.MinValue || file.ParseErrorRetries > 0));
}
public static string GetFullAssemblyName (string s)
Modified:
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/CodeCompletionDatabase.cs
===================================================================
---
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/CodeCompletionDatabase.cs
2006-07-25 15:49:45 UTC (rev 62965)
+++
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/CodeCompletionDatabase.cs
2006-07-25 15:57:17 UTC (rev 62966)
@@ -405,22 +405,43 @@
ce.Class = ReadClass (ce);
return ce.Class;
- }
+ }
+ public void UpdateDatabase ()
+ {
+ ArrayList list = GetModifiedFileEntries ();
+ foreach (FileEntry file in list)
+ ParseFile (file.FileName, null);
+ }
+
public virtual void CheckModifiedFiles ()
{
+ ArrayList list = GetModifiedFileEntries ();
+ foreach (FileEntry file in list)
+ QueueParseJob (file);
+ }
+
+ protected ArrayList GetModifiedFileEntries ()
+ {
+ ArrayList list = new ArrayList ();
lock (rwlock)
{
- foreach (FileEntry file in files.Values)
- {
- if (!File.Exists (file.FileName))
continue;
- FileInfo fi = new FileInfo
(file.FileName);
- if ((fi.LastWriteTime >
file.LastParseTime || file.ParseErrorRetries > 0) && !file.DisableParse)
- QueueParseJob (file);
+ foreach (FileEntry file in files.Values) {
+ if (IsFileModified (file))
+ list.Add (file);
}
}
+ return list;
}
+ protected virtual bool IsFileModified (FileEntry file)
+ {
+ if (!File.Exists (file.FileName))
+ return false;
+ FileInfo fi = new FileInfo (file.FileName);
+ return ((fi.LastWriteTime > file.LastParseTime ||
file.ParseErrorRetries > 0) && !file.DisableParse);
+ }
+
protected void QueueParseJob (FileEntry file)
{
// Change date now, to avoid reparsing if
CheckModifiedFiles is called again
Modified:
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/DefaultParserService.cs
===================================================================
---
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/DefaultParserService.cs
2006-07-25 15:49:45 UTC (rev 62965)
+++
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/DefaultParserService.cs
2006-07-25 15:57:17 UTC (rev 62966)
@@ -118,6 +118,11 @@
get { return pdb; }
}
+ public void UpdateDatabase ()
+ {
+ db.UpdateDatabase ();
+ }
+
public IExpressionFinder GetExpressionFinder (string fileName)
{
return pdb.GetExpressionFinder (fileName);
@@ -458,7 +463,10 @@
public IProjectParserContext GetProjectParserContext (Project
project)
{
- return new ProjectParserContext (parserService, this,
GetProjectDatabase (project));
+ CodeCompletionDatabase pdb = GetProjectDatabase
(project);
+ if (pdb == null)
+ throw new InvalidOperationException ("Project
not found in parser database");
+ return new ProjectParserContext (parserService, this,
pdb);
}
public IFileParserContext GetFileParserContext (string file)
Modified:
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/IParserService.cs
===================================================================
---
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/IParserService.cs
2006-07-25 15:49:45 UTC (rev 62965)
+++
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.Parser/IParserService.cs
2006-07-25 15:57:17 UTC (rev 62966)
@@ -90,6 +90,9 @@
IParseInformation ParseFile (string fileName, string
fileContent);
IParseInformation ParseFile (ITextFile file);
+ // Makes sure that all parser information is up to date.
+ void UpdateDatabase ();
+
IExpressionFinder GetExpressionFinder(string fileName);
IParseInformation GetParseInformation (string fileName);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches