private void CaptureProjectDocumentsAsLatest(ProjectSnapshot projectSnapshot) { foreach (var documentPath in projectSnapshot.DocumentFilePaths) { if (DocumentLookup.ContainsKey(documentPath)) { var document = projectSnapshot.GetDocument(documentPath); MarkAsLatestVersion(document); } } }
public OmniSharpDocumentSnapshot GetDocument(string filePath) { var documentSnapshot = InternalProjectSnapshot.GetDocument(filePath); if (documentSnapshot == null) { return(null); } var internalDocumentSnapshot = new OmniSharpDocumentSnapshot(documentSnapshot); return(internalDocumentSnapshot); }
internal DocumentCollectionViewModel(ProjectSnapshotManager projectManager, ProjectSnapshot project, Action <Exception> errorHandler) { _projectManager = projectManager; _project = project; _errorHandler = errorHandler; Documents = new ObservableCollection <DocumentItemViewModel>(); foreach (var filePath in project.DocumentFilePaths) { Documents.Add(new DocumentItemViewModel(projectManager, project.GetDocument(filePath), _errorHandler)); } }
internal void OnChange(ProjectChangeEventArgs e) { switch (e.Kind) { case ProjectChangeKind.DocumentAdded: { _project = _projectManager.GetLoadedProject(e.ProjectFilePath); Documents.Add(new DocumentItemViewModel(_projectManager, _project.GetDocument(e.DocumentFilePath), _errorHandler)); break; } case ProjectChangeKind.DocumentRemoved: { _project = _projectManager.GetLoadedProject(e.ProjectFilePath); for (var i = Documents.Count - 1; i >= 0; i--) { if (Documents[i].FilePath == e.DocumentFilePath) { Documents.RemoveAt(i); break; } } break; } case ProjectChangeKind.DocumentChanged: { _project = _projectManager.GetLoadedProject(e.ProjectFilePath); for (var i = Documents.Count - 1; i >= 0; i--) { if (Documents[i].FilePath == e.DocumentFilePath) { Documents[i] = new DocumentItemViewModel(_projectManager, _project.GetDocument(e.DocumentFilePath), _errorHandler); break; } } break; } } }
public ProjectRazorJson(string serializedFilePath, ProjectSnapshot project) { SerializedFilePath = serializedFilePath; FilePath = project.FilePath; Configuration = project.Configuration; RootNamespace = project.RootNamespace; ProjectWorkspaceState = project.ProjectWorkspaceState; var documents = new List <DocumentSnapshotHandle>(); foreach (var documentFilePath in project.DocumentFilePaths) { var document = project.GetDocument(documentFilePath); var documentHandle = new DocumentSnapshotHandle(document.FilePath, document.TargetPath, document.FileKind); documents.Add(documentHandle); } Documents = documents; }
// Internal for testing internal void TryMigrateDocumentsFromRemovedProject(ProjectSnapshot project) { _foregroundDispatcher.AssertForegroundThread(); var miscellaneousProject = _projectResolver.GetMiscellaneousProject(); foreach (var documentFilePath in project.DocumentFilePaths) { var documentSnapshot = (DefaultDocumentSnapshot)project.GetDocument(documentFilePath); if (!_projectResolver.TryResolvePotentialProject(documentFilePath, out var toProject)) { // This is the common case. It'd be rare for a project to be nested but we need to protect against it anyhow. toProject = miscellaneousProject; } var textLoader = new DocumentSnapshotTextLoader(documentSnapshot); var defaultToProject = (DefaultProjectSnapshot)toProject; _logger.LogInformation($"Migrating '{documentFilePath}' from the '{project.FilePath}' project to '{toProject.FilePath}' project."); _projectSnapshotManagerAccessor.Instance.DocumentAdded(defaultToProject.HostProject, documentSnapshot.State.HostDocument, textLoader); } }
static bool IsDocumentInProject(ProjectSnapshot projectSnapshot, string documentFilePath) => projectSnapshot.GetDocument(documentFilePath) != null;