private DocumentSnapshot UpdateDocument(string filePath, SourceText sourceText) { ProjectSnapshotManager.DocumentChanged(HostProject.FilePath, filePath, sourceText); var project = ProjectSnapshotManager.GetLoadedProject(HostProject.FilePath); var document = project.GetDocument(filePath); return(document); }
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; } } }
private void OnSelectedProjectChanged() { if (SelectedProject == null) { ProjectProperties = null; Directives = null; Documents = null; TagHelpers = null; return; } var project = _projectManager.GetLoadedProject(_selectedProject.FilePath); ProjectProperties = new ProjectPropertyCollectionViewModel(project); Directives = new DirectiveCollectionViewModel(project); Documents = new DocumentCollectionViewModel(_projectManager, project, _errorHandler); TagHelpers = new TagHelperCollectionViewModel(project, _errorHandler); }
internal void ProjectManager_Changed(object sender, ProjectChangeEventArgs e) { // Don't do any work if the solution is closing if (e.SolutionIsClosing) { return; } _projectSnapshotManagerDispatcher.AssertDispatcherThread(); if (_projectPath != null && string.Equals(_projectPath, e.ProjectFilePath, StringComparison.OrdinalIgnoreCase)) { // This will be the new snapshot unless the project was removed. _projectSnapshot = _projectManager.GetLoadedProject(e.ProjectFilePath); switch (e.Kind) { case ProjectChangeKind.DocumentAdded: case ProjectChangeKind.DocumentRemoved: case ProjectChangeKind.DocumentChanged: // Nothing to do. break; case ProjectChangeKind.ProjectAdded: case ProjectChangeKind.ProjectChanged: // Just an update _ = OnContextChangedAsync(ContextChangeKind.ProjectChanged); if (e.Older is null || !Enumerable.SequenceEqual(e.Older.TagHelpers, e.Newer.TagHelpers)) { _ = OnContextChangedAsync(ContextChangeKind.TagHelpersChanged); } break; case ProjectChangeKind.ProjectRemoved: // Fall back to ephemeral project _projectSnapshot = _projectManager.GetOrCreateProject(ProjectPath); _ = OnContextChangedAsync(ContextChangeKind.ProjectChanged); break; default: throw new InvalidOperationException($"Unknown ProjectChangeKind {e.Kind}"); } } }