/// <inheritdoc/> public async Task <ITextView> OpenFile( IPullRequestSession session, string relativePath, bool workingDirectory) { Guard.ArgumentNotNull(session, nameof(session)); Guard.ArgumentNotEmptyString(relativePath, nameof(relativePath)); try { var fullPath = GetAbsolutePath(session.LocalRepository, relativePath); string fileName; string commitSha; if (workingDirectory) { fileName = fullPath; commitSha = null; } else { var file = await session.GetFile(relativePath); fileName = await pullRequestService.ExtractToTempFile( session.LocalRepository, session.PullRequest, file.RelativePath, file.CommitSha, pullRequestService.GetEncoding(session.LocalRepository, file.RelativePath)); commitSha = file.CommitSha; } IVsTextView textView; IWpfTextView wpfTextView; using (workingDirectory ? null : OpenInProvisionalTab()) { var readOnly = !workingDirectory; textView = OpenDocument(fileName, readOnly, out wpfTextView); if (!workingDirectory) { AddBufferTag(wpfTextView.TextBuffer, session, fullPath, commitSha, null); EnableNavigateToEditor(textView, session); } } if (workingDirectory) { await usageTracker.IncrementCounter(x => x.NumberOfPRDetailsOpenFileInSolution); } else { await usageTracker.IncrementCounter(x => x.NumberOfPRDetailsViewFile); } return(wpfTextView); } catch (Exception e) { ShowErrorInStatusBar("Error opening file", e); return(null); } }
/// <inheritdoc/> public async Task OpenFile( IPullRequestSession session, string relativePath, bool workingDirectory) { Guard.ArgumentNotNull(session, nameof(session)); Guard.ArgumentNotEmptyString(relativePath, nameof(relativePath)); try { var fullPath = Path.Combine(session.LocalRepository.LocalPath, relativePath); string fileName; string commitSha; if (workingDirectory) { fileName = fullPath; commitSha = null; } else { var file = await session.GetFile(relativePath); fileName = await pullRequestService.ExtractToTempFile( session.LocalRepository, session.PullRequest, file.RelativePath, file.CommitSha, pullRequestService.GetEncoding(session.LocalRepository, file.RelativePath)); commitSha = file.CommitSha; } using (workingDirectory ? null : OpenInProvisionalTab()) { var window = VisualStudio.Services.Dte.ItemOperations.OpenFile(fileName); window.Document.ReadOnly = !workingDirectory; var buffer = GetBufferAt(fileName); if (!workingDirectory) { AddBufferTag(buffer, session, fullPath, commitSha, null); var textView = FindActiveView(); var file = await session.GetFile(relativePath); EnableNavigateToEditor(textView, session, file); } } if (workingDirectory) { await usageTracker.IncrementCounter(x => x.NumberOfPRDetailsOpenFileInSolution); } else { await usageTracker.IncrementCounter(x => x.NumberOfPRDetailsViewFile); } } catch (Exception e) { ShowErrorInStatusBar("Error opening file", e); } }