diff --git a/.vscode/settings.json b/.vscode/settings.json index 8b59aeb..83605a7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -42,6 +42,10 @@ "vscodeGitCommit.defaultVariablesValues": { "scope": "😉" }, + "vscodeGitCommit.variablesDisplayTitles": { + "prefix": "Here is a title in config for testing purpose", + "scope": "The scope represent a global one word link to changes" + }, "workbench.colorCustomizations": { "activityBar.activeBackground": "#e36b61", "activityBar.activeBorder": "#136c1a", diff --git a/package.json b/package.json index 1b7991d..c9bdf0d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vscode-git-commit", "displayName": "VSCode Git Commit Message", "description": "Harmonize your git commit message with your colleagues", - "version": "3.0.2", + "version": "3.0.3", "engines": { "vscode": "^1.42.0" }, @@ -117,6 +117,18 @@ } ] } + }, + "vscodeGitCommit.variablesDisplayTitles": { + "type": "object", + "markdownDescription": "Define titles displayed optionnaly on variables inputs", + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + } + ] + } } } }, @@ -158,8 +170,8 @@ "extension:build": "yarn md:concatenate && tsc -p ./", "extension:lint": "eslint src --ext ts --fix", "extension:pack": "vsce package", - "extension:rm": "rm -f ./vscode-git-commit-3.0.0.vsix", - "extension:install": "code --install-extension vscode-git-commit-3.0.2.vsix", + "extension:rm": "rm -f ./vscode-git-commit-3.0.2.vsix", + "extension:install": "code --install-extension vscode-git-commit-3.0.3.vsix", "extension:pretest": "npm run extension:compile && npm run lint", "extension:local": "yarn extension:rm && yarn extension:build && yarn extension:pack && yarn extension:install" }, diff --git a/src/scripts/run.ts b/src/scripts/run.ts index ffcee94..6485f42 100644 --- a/src/scripts/run.ts +++ b/src/scripts/run.ts @@ -5,6 +5,7 @@ import { setGitMessage } from '../utils/git'; import { getDefaultVariablesValues, getTemplate, + getVariableDisplayTitles, getVariables, } from '../utils/settings'; import { @@ -21,8 +22,13 @@ export const execute = async (repo: Repository) => { const variablesReplacement: TVariable[] = []; + const variablesDisplayTitles = getVariableDisplayTitles(); + for (let i = 0; i < variables.length; i++) { const v = variables[i]; + + const title = variablesDisplayTitles[v]; + const variablesSettings = getVariables(); const variableValue = variablesSettings[v]; let result = { @@ -31,10 +37,14 @@ export const execute = async (repo: Repository) => { }; if (!variableValue) { const defaultValuesSettings = getDefaultVariablesValues(); - const defaultValue = defaultValuesSettings[v]; + const defaultValue: string | undefined = defaultValuesSettings[v]; result.value = await useQuickText({ - value: defaultValue, + title, + prompt: !!defaultValue + ? `The default value is: "${defaultValue}"` + : undefined, + value: defaultValue ?? '', ignoreFocusOut: true, placeHolder: `Please type the value for <${v}>`, }); @@ -42,6 +52,7 @@ export const execute = async (repo: Repository) => { const choices: IQuickPickSettings[] = parseVariable(repo, v); result.value = await useQuickPick( { + title, ignoreFocusOut: true, placeHolder: `Please select a value for <${v}>`, }, diff --git a/src/typings/settings.d.ts b/src/typings/settings.d.ts index 3550a1e..b1e6feb 100644 --- a/src/typings/settings.d.ts +++ b/src/typings/settings.d.ts @@ -11,3 +11,9 @@ type ISettingDefaultVariablesValue = string; type ISettingDefaultVariablesValues = { [key: string]: ISettingDefaultVariablesValue; }; + +type ISettingVariablesDisplayTitle = string | undefined; + +type ISettingVariablesDisplayTitles = { + [key: string]: ISettingVariablesDisplayTitle; +}; diff --git a/src/utils/actions.ts b/src/utils/actions.ts index dc791f4..93120b7 100644 --- a/src/utils/actions.ts +++ b/src/utils/actions.ts @@ -19,9 +19,9 @@ export const useQuickText = async ( params: InputBoxOptions ): Promise => { const message = await window.showInputBox(params); - if (!message) { + if (message === undefined) { konsole.error('Message is cancel'); - throw new Error('Empty'); + throw new Error('Canceled'); } return message; }; diff --git a/src/utils/settings.ts b/src/utils/settings.ts index a60e989..e186d47 100644 --- a/src/utils/settings.ts +++ b/src/utils/settings.ts @@ -3,6 +3,8 @@ import { EXTENSION_NAME } from '../config/const'; import { ISettingDefaultVariablesValues, ISettingVariables, + ISettingVariablesDisplayTitle, + ISettingVariablesDisplayTitles, } from '../typings/settings'; export const getMode = (): string | undefined => { @@ -32,3 +34,10 @@ export const getDefaultVariablesValues = (): ISettingDefaultVariablesValues => { .get('defaultVariablesValues'); return variables as ISettingDefaultVariablesValues; }; + +export const getVariableDisplayTitles = (): ISettingVariablesDisplayTitles => { + let variables: ISettingVariablesDisplayTitles | undefined = workspace + .getConfiguration(EXTENSION_NAME) + .get('variablesDisplayTitles'); + return variables as ISettingVariablesDisplayTitles; +};