/// <summary> /// Start continuous background compilation on a newly opened file /// </summary> public void OpenSourceFile(string fileName, string sourceText) { ITextDocument initialTextDocumentLines = new ReadOnlyTextDocument(fileName, compilationProject.Encoding, compilationProject.ColumnsLayout, sourceText); FileCompiler fileCompiler = new FileCompiler(initialTextDocumentLines, compilationProject.SourceFileProvider, compilationProject, compilationProject.CompilationOptions, false, compilationProject); fileCompiler.CompilationResultsForProgram.UpdateTokensLines(); lock (OpenedFileCompilers) { OpenedFileCompilers.Add(fileName, fileCompiler); } fileCompiler.CompilationResultsForProgram.SetOwnerThread(Thread.CurrentThread); fileCompiler.StartContinuousBackgroundCompilation(200, 500, 1000, 3000); }
/// <summary> /// Start continuous background compilation on a newly opened file /// </summary> public void OpenSourceFile(Uri fileUri, string sourceText) { string fileName = Path.GetFileName(fileUri.LocalPath); ITextDocument initialTextDocumentLines = new ReadOnlyTextDocument(fileName, TypeCobolConfiguration.Format.Encoding, TypeCobolConfiguration.Format.ColumnsLayout, sourceText); var fileCompiler = new FileCompiler(initialTextDocumentLines, CompilationProject.SourceFileProvider, CompilationProject, CompilationProject.CompilationOptions, CustomSymbols, false, CompilationProject); fileCompiler.CompilationResultsForProgram.UpdateTokensLines(); lock (OpenedFileCompiler) { if (OpenedFileCompiler.ContainsKey(fileUri)) { CloseSourceFile(fileUri); //Close and remove the previous opened file. } OpenedFileCompiler.Add(fileUri, fileCompiler); fileCompiler.CompilationResultsForProgram.ProgramClassChanged += ProgramClassChanged; } fileCompiler.CompilationResultsForProgram.SetOwnerThread(Thread.CurrentThread); fileCompiler.StartContinuousBackgroundCompilation(200, 500, 1000, 3000); //TODO: create a better refresh compilation }