Change:
Testing I'd love it if these were clickable and brought me to the file it's talking about. ! Should be able to use a link provider, right?

Discussion:
*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as path from 'path'; <del> import { TabInputText, Uri, window, workspace } from 'vscode'; </del> <ins> import { CancellationToken, DocumentLink, DocumentLinkProvider, l10n, Range, TabInputText, TextDocument, Uri, window, workspace } from 'vscode'; </ins> import { IIPCHandler, IIPCServer } from './ipc/ipcServer'; import { ITerminalEnvironmentProvider } from './terminal'; import { EmptyDisposable, IDisposable } from './util'; <ins> import { Model } from './model'; import { Repository } from './repository'; </ins> interface GitEditorRequest { commitMessagePath?: string;

this.disposable.dispose(); } } <ins> export class GitEditorDocumentLinkProvider implements DocumentLinkProvider { private readonly _regex = /^#s+(modified|new file|deleted|renamed|copied|type change):s+(?<file1>.*?)(?:s+->s+(?<file2>.*))*$/gm; constructor(private readonly _model: Model) { } provideDocumentLinks(document: TextDocument, token: CancellationToken): DocumentLink[] { if (token.isCancellationRequested) { return []; } const repository = this._model.getRepository(document.uri); if (!repository) { return []; } const links: DocumentLink[] = []; for (const match of document.getText().matchAll(this._regex)) { if (!match.groups) { continue; } const { file1, file2 } = match.groups; if (file1) { links.push(this._createDocumentLink(repository, document, match, file1)); } if (file2) { links.push(this._createDocumentLink(repository, document, match, file2)); } } return links; } private _createDocumentLink(repository: Repository, document: TextDocument, match: RegExpExecArray, file: string): DocumentLink { const startIndex = match[0].indexOf(file); const startPosition = document.positionAt(match.index + startIndex); const endPosition = document.positionAt(match.index + startIndex + file.length); const documentLink = new DocumentLink( new Range(startPosition, endPosition), Uri.file(path.join(repository.root, file))); documentLink.tooltip = l10n.t('Open File'); return documentLink; } } </ins>

*  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ <del> import { env, ExtensionContext, workspace, window, Disposable, commands, Uri, version as vscodeVersion, WorkspaceFolder, LogOutputChannel, l10n, LogLevel } from 'vscode'; </del> <ins> import { env, ExtensionContext, workspace, window, Disposable, commands, Uri, version as vscodeVersion, WorkspaceFolder, LogOutputChannel, l10n, LogLevel, languages } from 'vscode'; </ins> import { findGit, Git, IGit } from './git'; import { Model } from './model'; import { CommandCenter } from './commands';

import { registerAPICommands } from './api/api1'; import { TerminalEnvironmentManager, TerminalShellExecutionManager } from './terminal'; import { createIPCServer, IPCServer } from './ipc/ipcServer'; <del> import { GitEditor } from './gitEditor'; </del> <ins> import { GitEditor, GitEditorDocumentLinkProvider } from './gitEditor'; </ins> import { GitPostCommitCommandsProvider } from './postCommitCommands'; import { GitEditSessionIdentityProvider } from './editSessionIdentityProvider'; import { GitCommitInputBoxCodeActionsProvider, GitCommitInputBoxDiagnosticsManager } from './diagnostics';

const codeActionsProvider = new GitCommitInputBoxCodeActionsProvider(diagnosticsManager); disposables.push(codeActionsProvider); <ins> const gitEditorDocumentLinkProvider = languages.registerDocumentLinkProvider('git-commit', new GitEditorDocumentLinkProvider(model)); disposables.push(gitEditorDocumentLinkProvider); </ins> checkGitVersion(info); commands.executeCommand('setContext', 'gitVersion2.35', git.compareGitVersionTo('2.35') >= 0);