public DocumentId AddDocument(Project project, AvalonStudio.Projects.ISourceFile file) { var id = DocumentId.CreateNewId(project.Id); OnDocumentAdded(DocumentInfo.Create(id, file.Name, filePath: file.FilePath, loader: new FileTextLoader(file, System.Text.Encoding.UTF8))); return(id); }
public DocumentId GetDocumentId(AvalonStudio.Projects.ISourceFile file) { var ids = CurrentSolution.GetDocumentIdsWithFilePath(file.Location); if (ids.Length != 1) { throw new NotImplementedException(); } return(ids.First()); }
public void CloseDocument(AvalonStudio.Projects.ISourceFile file) { var documentId = GetDocumentId(file); var textContainer = _openDocumentTextLoaders[documentId]; var doc = GetDocument(file); var text = doc.GetTextAsync(CancellationToken.None).WaitAndGetResult_CanCallOnBackground(CancellationToken.None); var version = doc.GetTextVersionAsync(CancellationToken.None).WaitAndGetResult_CanCallOnBackground(CancellationToken.None); _openDocumentTextLoaders.Remove(documentId); _diagnosticsUpdatedNotifiers.TryRemove(documentId, out Action <DiagnosticsUpdatedArgs> value); textContainer.Dispose(); OnDocumentClosed(documentId, TextLoader.From(TextAndVersion.Create(text, version, doc.FilePath))); }
public void OpenDocument(AvalonStudio.Projects.ISourceFile file, AvalonEditTextContainer textContainer, Action <DiagnosticsUpdatedArgs> onDiagnosticsUpdated, Action <SourceText> onTextUpdated = null) { var documentId = GetDocumentId(file); var document = GetDocument(file); OnDocumentOpened(documentId, textContainer); OnDocumentContextUpdated(documentId); _diagnosticsUpdatedNotifiers[documentId] = onDiagnosticsUpdated; _openDocumentTextLoaders.Add(documentId, textContainer); if (onTextUpdated != null) { ApplyingTextChange += (d, s) => { if (documentId == d) { onTextUpdated(s); } }; } }
public Document GetDocument(AvalonStudio.Projects.ISourceFile file) { var documentId = GetDocumentId(file); return(CurrentSolution.GetDocument(documentId)); }