diff --git a/src/utils/magitUtils.ts b/src/utils/magitUtils.ts index 1830cdc..77cf061 100644 --- a/src/utils/magitUtils.ts +++ b/src/utils/magitUtils.ts @@ -150,8 +150,29 @@ export default class MagitUtils { public static async chooseRef(repository: MagitRepository, prompt: string, showCurrent = false, showHEAD = false, allowFreeform = true, remoteOnly = false): Promise { + const getCursorCommitHash: () => PickMenuItem | undefined = () => { + const activeEditor = vscode.window.activeTextEditor; + if (activeEditor === undefined) { + return; + } + const document = activeEditor.document; + const selection = activeEditor.selection; + const hashWordRange = document.getWordRangeAtPosition(selection.active, /[0-9a-z]{7}/); + if (hashWordRange === undefined) { + return; + } + const hash = document.getText(hashWordRange); + return { label: hash, meta: hash }; + }; + const refs: PickMenuItem[] = []; + const cursorCommitHash = getCursorCommitHash(); + + if (cursorCommitHash) { + refs.push(cursorCommitHash); + } + if (showCurrent && repository.HEAD?.name) { refs.push({ label: repository.HEAD.name,