public void DocumentChanged(string documentFilePath, SourceText sourceText, long textVersion) { if (documentFilePath == null) { throw new ArgumentNullException(nameof(documentFilePath)); } if (sourceText == null) { throw new ArgumentNullException(nameof(sourceText)); } _threadManager.AssertForegroundThread(); var oldWorkspaceSnapshot = WorkspaceSnapshot; var newVersion = WorkspaceSnapshot.Version.GetNewerVersion(); Debug.Assert(WorkspaceSnapshot.Documents.ContainsKey(documentFilePath)); var docVersion = WorkspaceSnapshot.Documents[documentFilePath].DocumentVersion.GetNewerVersion(); var docSnapshot = new DocumentSnapshot(documentFilePath, textVersion, docVersion, sourceText); var newDocs = WorkspaceSnapshot.Documents.SetItem(documentFilePath, docSnapshot); WorkspaceSnapshot = new WorkspaceSnapshot(newVersion, newDocs); NotifyListeners(new WorkspaceSnapshotChangeEventArgs(oldWorkspaceSnapshot, WorkspaceSnapshot, ProjectChangeKind.DocumentChanged)); }
public void DocumentAdded(string documentFilePath, TextLoader textLoader) { if (documentFilePath == null) { throw new ArgumentNullException(nameof(documentFilePath)); } if (textLoader == null) { throw new ArgumentNullException(nameof(textLoader)); } _threadManager.AssertForegroundThread(); var oldWorkspaceSnapshot = WorkspaceSnapshot; var newVersion = WorkspaceSnapshot.Version.GetNewerVersion(); var docSnapshot = new DocumentSnapshot(documentFilePath, 0, VersionStamp.Default, textLoader); var newDocs = WorkspaceSnapshot.Documents.SetItem(documentFilePath, docSnapshot); WorkspaceSnapshot = new WorkspaceSnapshot(newVersion, newDocs); NotifyListeners(new WorkspaceSnapshotChangeEventArgs(oldWorkspaceSnapshot, WorkspaceSnapshot, ProjectChangeKind.DocumentAdded)); NotifyListeners(new WorkspaceSnapshotChangeEventArgs(oldWorkspaceSnapshot, WorkspaceSnapshot, ProjectChangeKind.DocumentChanged)); }
public void DocumentOpened(string documentFilePath, long textVersion, SourceText sourceText) { if (documentFilePath == null) { throw new ArgumentNullException(nameof(documentFilePath)); } if (sourceText == null) { throw new ArgumentNullException(nameof(sourceText)); } _threadManager.AssertForegroundThread(); var oldWorkspaceSnapshot = WorkspaceSnapshot; _openFiles.Add(documentFilePath); var stamp = VersionStamp.Default; var docSnapshot = new DocumentSnapshot(documentFilePath, textVersion, stamp, sourceText); var newDocs = WorkspaceSnapshot.Documents.SetItem(documentFilePath, docSnapshot); var newVersion = WorkspaceSnapshot.Version.GetNewerVersion(); WorkspaceSnapshot = new WorkspaceSnapshot(newVersion, newDocs); NotifyListeners(new WorkspaceSnapshotChangeEventArgs(oldWorkspaceSnapshot, WorkspaceSnapshot, documentFilePath, ProjectChangeKind.DocumentChanged)); }
public WorkspaceSnapshotChangeEventArgs(WorkspaceSnapshot older, WorkspaceSnapshot newer, ProjectChangeKind kind) { if (older == null && newer == null) { throw new ArgumentException("Both projects cannot be null."); } Older = older; Newer = newer; Kind = kind; }
public void DocumentClosed(string documentFilePath, TextLoader textLoader) { _threadManager.AssertForegroundThread(); _openFiles.Remove(documentFilePath); var oldWorkspaceSnapshot = WorkspaceSnapshot; var oldDocSnapshot = WorkspaceSnapshot.Documents[documentFilePath]; var newDocSnapshot = new DocumentSnapshot(documentFilePath, -1, oldDocSnapshot.DocumentVersion.GetNewerVersion(), textLoader); var newDocs = WorkspaceSnapshot.Documents.SetItem(documentFilePath, newDocSnapshot); var newVersion = WorkspaceSnapshot.Version.GetNewerVersion(); WorkspaceSnapshot = new WorkspaceSnapshot(newVersion, newDocs); NotifyListeners(new WorkspaceSnapshotChangeEventArgs(oldWorkspaceSnapshot, WorkspaceSnapshot, documentFilePath, ProjectChangeKind.DocumentChanged)); }
public void DocumentRemoved(string documentFilePath) { if (documentFilePath == null) { throw new ArgumentNullException(nameof(documentFilePath)); } _threadManager.AssertForegroundThread(); var oldWorkspaceSnapshot = WorkspaceSnapshot; var newDocs = WorkspaceSnapshot.Documents.Remove(documentFilePath); var newVersion = WorkspaceSnapshot.Version.GetNewerVersion(); WorkspaceSnapshot = new WorkspaceSnapshot(newVersion, newDocs); NotifyListeners(new WorkspaceSnapshotChangeEventArgs(oldWorkspaceSnapshot, WorkspaceSnapshot, ProjectChangeKind.DocumentRemoved)); NotifyListeners(new WorkspaceSnapshotChangeEventArgs(oldWorkspaceSnapshot, WorkspaceSnapshot, ProjectChangeKind.DocumentChanged)); }