public void FixtureSetup() { ProjectContentRegistry r = new ProjectContentRegistry(); msc = r.Mscorlib; swf = r.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms"); DefaultProjectContent dpc = new DefaultProjectContent(); dpc.ReferencedContents.Add(msc); DefaultCompilationUnit cu = new DefaultCompilationUnit(dpc); dummyClass = new DefaultClass(cu, "DummyClass"); cu.Classes.Add(dummyClass); methodForGenericCalls = new DefaultMethod(dummyClass, "DummyMethod"); dummyClass.Methods.Add(methodForGenericCalls); }
public void FixtureSetup() { var r = new ProjectContentRegistry(); msc = r.Mscorlib; swf = r.GetProjectContentForReference("System.Windows.Forms", typeof(Form).Module.FullyQualifiedName); var dpc = new DefaultProjectContent(); dpc.ReferencedContents.Add(msc); var cu = new DefaultCompilationUnit(dpc); dummyClass = new DefaultClass(cu, "DummyClass"); cu.Classes.Add(dummyClass); methodForGenericCalls = new DefaultMethod(dummyClass, "DummyMethod"); dummyClass.Methods.Add(methodForGenericCalls); }
public void SetupIntellisense(TextEditorControl control) { _control = control; control.SetHighlighting((SupportedLanguage == SupportedLanguage.CSharp) ? "C#" : "VBNET"); control.ShowEOLMarkers = false; control.ShowInvalidLines = false; HostCallbackImplementation.Register(this); CodeCompletionKeyHandler.Attach(this, control); ToolTipProvider.Attach(this, control); ProjectContentRegistry = new ProjectContentRegistry(); // Default .NET 2.0 registry // Persistence lets SharpDevelop.Dom create a cache file on disk so that // future starts are faster. // It also caches XML documentation files in an on-disk hash table, thus // reducing memory usage. try { if (Settings.Default.CacheFiles) { var persistencePath = Path.Combine(Path.GetTempPath(), ReflexilPersistence); var persistenceCheck = Path.Combine(persistencePath, ReflexilPersistenceCheck); Directory.CreateDirectory(persistencePath); // Check write/access to directory File.WriteAllText(persistenceCheck, @"Using cache!"); // Check write file rights File.ReadAllText(persistenceCheck); // Check read file rights ProjectContentRegistry.ActivatePersistence(persistencePath); } } // ReSharper disable once EmptyGeneralCatchClause catch (Exception) { // don't use cache file } ProjectContent = new DefaultProjectContent { Language = LanguageProperties }; ParseInformation = new ParseInformation(new DefaultCompilationUnit(ProjectContent)); }
public void CodeGeneratorMethods() { ProjectContentRegistry registry = new ProjectContentRegistry(); IProjectContent mscorlibProjectContent = registry.Mscorlib; IClass collectionClass = mscorlibProjectContent.GetClass("System.Collections.ObjectModel.Collection", 1); DefaultProjectContent projectContent = new DefaultProjectContent(); DefaultCompilationUnit unit = new DefaultCompilationUnit(projectContent); DefaultClass c = new DefaultClass(unit, "MyCollection"); c.BaseTypes.Add(new DefaultReturnType(collectionClass)); MockProject project = new MockProject(); ProjectService.CurrentProject = project; OverrideMethodsCodeGenerator codeGenerator = new OverrideMethodsCodeGenerator(); codeGenerator.Initialize(c); List <string> methods = new List <string>(); foreach (object o in codeGenerator.Content) { methods.Add(o.ToString()); } List <string> expectedMethods = new List <string>(); expectedMethods.Add("ClearItems"); expectedMethods.Add("Equals"); expectedMethods.Add("Finalize"); expectedMethods.Add("GetHashCode"); expectedMethods.Add("InsertItem"); expectedMethods.Add("RemoveItem"); expectedMethods.Add("SetItem"); expectedMethods.Add("ToString"); Assert.AreEqual(expectedMethods.ToArray(), methods.ToArray()); }
public Solution(Uri location, MappingRegistry registry) : base(Path.GetFileName(location.LocalPath), location, true) { FRegistry = registry; Mapper = new ModelMapper(this, registry); // Do not allow rename on add. Rename triggers save/delete in case of PersistentIDContainer. Projects = new EditableIDList <IProject>("Projects", false); Add(Projects); ProjectContentRegistry = new ProjectContentRegistry(); var tempPath = Shell.TempPath.ConcatPath("ProjectContentRegistry"); if (!Directory.Exists(tempPath)) { Directory.CreateDirectory(tempPath); } ProjectContentRegistry.ActivatePersistence(tempPath); Projects.Added += Projects_Added; Projects.Removed += Projects_Removed; }
public static ProjectContentRegistry GetRegistryForReference(ReferenceProjectItem item) { if (item is ProjectReferenceProjectItem || item.Project == null) { return(defaultProjectContentRegistry); } foreach (ProjectContentRegistryDescriptor registry in registries) { if (registry.UseRegistryForProject(item.Project)) { ProjectContentRegistry r = registry.Registry; if (r != null) { return(r); } else { return(defaultProjectContentRegistry); // fallback when registry class not found } } } return(defaultProjectContentRegistry); }
public void CodeGeneratorProperties() { ProjectContentRegistry registry = new ProjectContentRegistry(); IProjectContent mscorlibProjectContent = registry.Mscorlib; IClass exceptionClass = mscorlibProjectContent.GetClass("System.Exception", 0); DefaultProjectContent projectContent = new DefaultProjectContent(); DefaultCompilationUnit unit = new DefaultCompilationUnit(projectContent); DefaultClass c = new DefaultClass(unit, "MyException"); c.BaseTypes.Add(new DefaultReturnType(exceptionClass)); MockProject project = new MockProject(); ProjectService.CurrentProject = project; OverridePropertiesCodeGenerator codeGenerator = new OverridePropertiesCodeGenerator(); codeGenerator.Initialize(c); List <string> properties = new List <string>(); foreach (object o in codeGenerator.Content) { properties.Add(o.ToString()); } List <string> expectedProperties = new List <string>(); expectedProperties.Add("Data"); expectedProperties.Add("HelpLink"); expectedProperties.Add("Message"); expectedProperties.Add("Source"); expectedProperties.Add("StackTrace"); Assert.AreEqual(expectedProperties.ToArray(), properties.ToArray()); }
void ParserThread() { //BeginInvoke(new MethodInvoker(delegate { parserThreadLabel.Text = "Loading mscorlib..."; })); m_projectcontent.AddReferencedContent(ProjectContentRegistry.Mscorlib); // do one initial parser step to enable code-completion while other // references are loading ParseStep(); foreach (string assemblyName in GetReferences(false)) { string assemblyNameCopy = assemblyName; // copy for anonymous method //BeginInvoke(new MethodInvoker(delegate { parserThreadLabel.Text = "Loading " + assemblyNameCopy + "..."; })); IProjectContent referenceProjectContent = ProjectContentRegistry.GetProjectContentForReference(assemblyName, assemblyName); ProjectContent.AddReferencedContent(referenceProjectContent); if (referenceProjectContent is ReflectionProjectContent) { (referenceProjectContent as ReflectionProjectContent).InitializeReferences(); } } if (SupportedLanguage == ESupportedLanguage.VisualBasic) { ProjectContent.DefaultImports = new DefaultUsing(ProjectContent); ProjectContent.DefaultImports.Usings.Add("System"); ProjectContent.DefaultImports.Usings.Add("System.Text"); ProjectContent.DefaultImports.Usings.Add("Microsoft.VisualBasic"); } //BeginInvoke(new MethodInvoker(delegate { parserThreadLabel.Text = "Ready"; })); // Parse the current file every 2 seconds while (!IsDisposed) { ParseStep(); Thread.Sleep(2000); } }
static void UnloadReferencedContent(HashSet <IProject> projectsToRefresh, HashSet <IProjectContent> unloadedReferenceContents, ProjectContentRegistry referencedContentRegistry, IProjectContent referencedContent) { LoggingService.Debug("Unload referenced content " + referencedContent); List <RegistryContentPair> otherContentsToUnload = new List <RegistryContentPair>(); foreach (ProjectContentRegistryDescriptor registry in registries) { if (registry.IsRegistryLoaded) { foreach (IProjectContent pc in registry.Registry.GetLoadedProjectContents()) { if (pc.ReferencedContents.Contains(referencedContent)) { if (unloadedReferenceContents.Add(pc)) { LoggingService.Debug("Mark dependent content for unloading " + pc); otherContentsToUnload.Add(new RegistryContentPair(registry.Registry, pc)); } } } } } foreach (IProjectContent pc in ParserService.AllProjectContents) { IProject project = (IProject)pc.Project; if (projectsToRefresh.Contains(project)) { continue; } if (pc.ReferencedContents.Remove(referencedContent)) { LoggingService.Debug("UnloadReferencedContent: Mark project for reparsing " + project.Name); projectsToRefresh.Add(project); } } foreach (RegistryContentPair pair in otherContentsToUnload) { UnloadReferencedContent(projectsToRefresh, unloadedReferenceContents, pair.Key, pair.Value); } referencedContentRegistry.UnloadProjectContent(referencedContent); }
public ReflectionLayerTests() { mscorlib = new ProjectContentRegistry().Mscorlib; }
public void Init() { _projectContentRegistry = new ProjectContentRegistry(); ef = new CSharpExpressionFinder(null); }
public PDDLTabItem(string moduleName) { InitializeComponent(); AddEventHandlerForButtons(); toolStripContainer1.Visible = false; textEditorControl = new SharpDevelopTextAreaControl(); textEditorControl.Dock = DockStyle.Fill; textEditorControl.ContextMenuStrip = EditorContextMenuStrip; textEditorControl.BorderStyle = BorderStyle.Fixed3D; textEditorControl.Visible = true; splitContainer1.Panel2.Controls.Add(textEditorControl); TabText = "Document " + counter; counter++; textEditorControl.FileNameChanged += _EditorControl_FileNameChanged; textEditorControl.TextChanged += textEditorControl_TextChanged; textEditorControl.Tag = this; Padding = new Padding(2, 2, 2, 2); DockableAreas = DockAreas.Document; secondaryViewContentCollection = new SecondaryViewContentCollection(this); InitFiles(); file = FileService.CreateUntitledOpenedFile(TabText, new byte[] { }); file.CurrentView = this; textEditorControl.FileName = file.FileName; files.Clear(); files.Add(file); SetSyntaxLanguage(moduleName); textEditorControl.Document.FoldingManager.FoldingStrategy = new FoldingStrategy(); // Highlight the matching bracket or not... textEditorControl.ShowMatchingBracket = true; textEditorControl.BracketMatchingStyle = BracketMatchingStyle.Before; HostCallbackImplementation.Register(this); CodeCompletionKeyHandler.Attach(this, textEditorControl); ToolTipProvider.Attach(this, textEditorControl); pcRegistry = new ProjectContentRegistry(); // Default .NET 2.0 registry // Persistence lets SharpDevelop.Dom create a cache file on disk so that // future starts are faster. // It also caches XML documentation files in an on-disk hash table, thus // reducing memory usage. pcRegistry.ActivatePersistence(Path.Combine(Path.GetTempPath(), "CSharpCodeCompletion")); myProjectContent = new DefaultProjectContent(); myProjectContent.Language = LanguageProperties.CSharp; TreeView_Structure.HideSelection = false; splitContainer1.SplitterDistance = 100; TreeView_Structure.ExpandAll(); ProblemsNode.ExpandAll(); }