8000 ✨ feat: 允许将当前 commit message 作为 subject 默认内容 (#100) · RedJue/git-commit-plugin@609cb67 · GitHub
[go: up one dir, main page]

Skip to content

Commit 609cb67

Browse files
authored
✨ feat: 允许将当前 commit message 作为 subject 默认内容 (#100)
* ✨ feat: 允许将当前 commit message 作为 subject 默认内容 * 🐞 fix: typo * 🦄 refactor: 在点击 icon 时将 message 填入 subject
1 parent 799bc28 commit 609cb67
Expand file tree

10 files changed

+48
-15
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,12 @@ The plugin will automatically switch the language description based on the `vsco
126126
"GitCommitPlugin.MaxSubjectCharacters": 20
127127
}
128128
```
129+
- `GitCommitPlugin.FillSubjectWithCurrent`: whether to fill the subject with the current commit message, default `false`.
130+
```json
131+
{
132+
"GitCommitPlugin.FillSubjectWithCurrent": false
133+
}
134+
```
129135
- `GitCommitPlugin.Template`: customize the git commit template.
130136
```json5
131137
{

package-lock.json

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@
6464
"default": 20,
6565
"markdownDescription": "%extension.configuration.GitCommitPlugin.GitCommitPlugin.MaxSubjectCharacters%"
6666
},
67+
"GitCommitPlugin.FillSubjectWithCurrent": {
68+
"type": "boolean",
69+
"default": false,
70+
"markdownDescription": "%extension.configuration.GitCommitPlugin.GitCommitPlugin.FillSubjectWithCurrent%"
71+
},
6772
"GitCommitPlugin.Templates": {
6873
"type": "array",
6974
"default": [],
@@ -117,4 +122,4 @@
117122
"vsce": "^1.95.0",
118123
"vscode-nls-i18n": "^0.2.4"
119124
}
120-
}
125+
}

package.nls.ja.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"extension.configuration.GitCommitPlugin.ShowEmoji.markdownDescription": "絵文字アイコンを表示するかどうか制御します。",
77
"extension.configuration.GitCommitPlugin.CustomCommitType.markdownDescription": "独自の`Git Commit Type`を構成します。",
88
"extension.configuration.GitCommitPlugin.GitCommitPlugin.MaxSubjectCharacters": "有効な **Subject** の文字数を制御します。デフォルト値 `20`",
9+
"extension.configuration.GitCommitPlugin.GitCommitPlugin.FillSubjectWithCurrent": "現在のコミットメッセージを **Subject** に自動的に入力するかどうかを制御します。デフォルト値 `false`",
910
"extension.configuration.GitCommitPlugin.GitCommitPlugin.Templates": "コミットテンプレートを構成します。Angularコミットテンプレートを参照。",
1011
"extension.commitInputType.detail": "コミットメッセージを入力",
1112
"extension.commitDetailType.scope.description": "範囲",
@@ -31,4 +32,4 @@
3132
"extension.commitType.ci.detail": "CI用の設定やスクリプトに関する設定(スコープ例: Travis, Circle, k8s, Docker)",
3233
"extension.commitType.chore.detail": "その他の変更(ソースやテストの変更を含まない)",
3334
"extension.commitType.revert.detail": "以前のコミットへ戻す"
34-
}
35+
}

package.nls.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"extension.configuration.GitCommitPlugin.ShowEmoji.markdownDescription": "Show or not show `Emoji` icons",
77
"extension.configuration.GitCommitPlugin.CustomCommitType.markdownDescription": "Add custom `Git Commit Type`",
88
"extension.configuration.GitCommitPlugin.GitCommitPlugin.MaxSubjectCharacters": "Set the valid length of **Subject**, default `20` characters",
9+
"extension.configuration.GitCommitPlugin.GitCommitPlugin.FillSubjectWithCurrent": "Set whether to fill in the current commit message of **Subject**, default `false`",
910
"extension.configuration.GitCommitPlugin.GitCommitPlugin.Templates": "Commit template, you can refer to Angular template settings",
1011
"extension.commitInputType.detail": "Input Commit Message",
1112
"extension.commitDetailType.scope.description": "Scope of Modification",
@@ -22,7 +23,7 @@
2223
"extension.commitType.init.detail": "Project initialization",
2324
"extension.commitType.feat.detail": "Adding new features",
2425
"extension.commitType.fix.detail": "Fixing bugs",
25-
"extension.commitType.docs.detail": "Modify documenation only",
26+
"extension.commitType.docs.detail": "Modify documentation only",
2627
"extension.commitType.style.detail": "Only the spaces, formatting indentation, commas, etc. were changed, not the code logic",
2728
"extension.commitType.refactor.detail": "Code refactoring, no new features added or bugs fixed",
2829
"extension.commitType.perf.detail": "Optimization-related, such as improving performance, experience",
@@ -31,4 +32,4 @@
3132
"extension.commitType.ci.detail": "CI configuration related e.g. changes to k8s, docker configuration files",
3233
"extension.commitType.chore.detail": "Changed the build process, or added dependencies, tools, etc.",
3334
"extension.commitType.revert.detail": "Rollback to the previous version"
34-
}
35+
}

package.nls.zh-cn.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"extension.configuration.GitCommitPlugin.ShowEmoji.markdownDescription": "是否展现 `Emoji` 图标",
77
"extension.configuration.GitCommitPlugin.CustomCommitType.markdownDescription": "自定义添加 `Git Commit Type`",
88
"extension.configuration.GitCommitPlugin.GitCommitPlugin.MaxSubjectCharacters": "设置 **Subject** 的有效长度,默认 `20` 字符",
9+
"extension.configuration.GitCommitPlugin.GitCommitPlugin.FillSubjectWithCurrent": "设置 **Subject** 是否填充当前 Commit Message,默认 `false`",
910
"extension.configuration.GitCommitPlugin.GitCommitPlugin.Templates": "提交模板设置,可以参考 Angular 模板设置",
1011
"extension.commitInputType.detail": "请输入提交信息",
1112
"extension.commitDetailType.scope.description": "修改范围",
@@ -31,4 +32,4 @@
3132
"extension.commitType.ci.detail": "ci配置相关 例如对 k8s,docker的配置文件的修改",
3233
"extension.commitType.chore.detail": "改变构建流程、或者增加依赖库、工具等",
3334
"extension.commitType.revert.detail": "回滚到上一个版本"
34-
}
35+
}

package.nls.zh-hk.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"extension.configuration.GitCommitPlugin.ShowEmoji.markdownDescription": "是否展現 `Emoji` 圖標",
77
"extension.configuration.GitCommitPlugin.CustomCommitType.markdownDescription": "自定義增添 `Git Commit Type`",
88
"extension.configuration.GitCommitPlugin.GitCommitPlugin.MaxSubjectCharacters": "設定 **Subject** 的有效長度,默認 `20` 字符",
9+
"extension.configuration.GitCommitPlugin.GitCommitPlugin.FillSubjectWithCurrent": "是否填充 **Subject** 的當前 Commit Message,默認 `false`",
910
"extension.configuration.GitCommitPlugin.GitCommitPlugin.Templates": "提交模板設定,可以參考 Angular 模板設定",
1011
"extension.commitInputType.detail": "請輸入提交信息",
1112
"extension.commitDetailType.scope.description": "修改範圍",
@@ -31,4 +32,4 @@
3132
"extension.commitType.ci.detail": "ci配置相關 例如對 k8s,docker的配置文件的修改",
3233
"extension.commitType.chore.detail": "改變構建流程、或者增加依賴庫、工具等",
3334
"extension.commitType.revert.detail": "回滾到上一個版本"
34-
}
35+
}

package.nls.zh-tw.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"extension.configuration.GitCommitPlugin.ShowEmoji.markdownDescription": "是否展現 `Emoji` 圖標",
77
"extension.configuration.GitCommitPlugin.CustomCommitType.markdownDescription": "自定義增添 `Git Commit Type`",
88
"extension.configuration.GitCommitPlugin.GitCommitPlugin.MaxSubjectCharacters": "設定 **Subject** 的有效長度,默認 `20` 字符",
9+
"extension.configuration.GitCommitPlugin.GitCommitPlugin.FillSubjectWithCurrent": "是否填充 **Subject** 的當前 Commit Message,默認 `false`",
910
"extension.configuration.GitCommitPlugin.GitCommitPlugin.Templates": "提交模板設定,可以參考 Angular 模板設定",
1011
"extension.commitInputType.detail": "請輸入提交信息",
1112
"extension.commitDetailType.scope.description": "修改範圍",
@@ -31,4 +32,4 @@
3132
"extension.commitType.ci.detail": "ci配置相關 例如對 k8s,docker的配置文件的修改",
3233
"extension.commitType.chore.detail": "改變構建流程、或者增加依賴庫、工具等",
3334
"extension.commitType.revert.detail": "回滾到上一個版本"
34-
}
35+
}

src/config/commit-detail.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ export interface CommitDetailType extends QuickPickItem {
1212
export const MaxSubjectCharacters =
1313
workspace.getConfiguration('GitCommitPlugin').get<number>('MaxSubjectCharacters') || 20;
1414

15+
export const FillSubjectWithCurrent = workspace.getConfiguration('GitCommitPlugin').get<boolean>('FillSubjectWithCurrent') || false;
16+
1517
export function GetCommitDetailType() {
1618
const CommitDetailType: Array<CommitDetailType> = [
1719
{

src/extension.ts

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
CommitDetailQuickPickOptions,
99
MaxSubjectCharacters,
1010
CommitDetailType,
11+
FillSubjectWithCurrent,
1112
} from './config/commit-detail';
1213
import GetCommitInputType, { CommitInputType } from './config/commit-input';
1314
import CommitTemplate from './config/template-type';
@@ -105,7 +106,10 @@ export async function activate(context: vscode.ExtensionContext) {
105106
const inputMessageDetail = (_key: string | number) => {
106107
const _detailType = CommitDetailType.find(item => item.key === _key);
107108
CommitInputType.prompt = `${_detailType?.description} 👉 ${_detailType?.detail}`;
108-
CommitInputType.value = message_config[_key] ? message_config[_key] : '';
109+
CommitInputType.value = message_config[_key] || '';
110+
if (_key === 'subject' && FillSubjectWithCurrent) {
111+
CommitInputType.value = message_config[_key] || '';
112+
}
109113
vscode.window.showInputBox(CommitInputType).then(value => {
110114
const _value = value || '';
111115
message_config[_key] = _value;
@@ -125,13 +129,13 @@ export async function activate(context: vscode.ExtensionContext) {
125129
});
126130
};
127131
//是否存在模板 If has template
128-
const existTemplete = () => {
132+
const existTemplate = () => {
129133
return Array.isArray(CommitTemplate) && CommitTemplate.length > 0;
130134
};
131135
//完成输入 Complete input message
132136
const completeInputMessage = (select?: boolean) => {
133137
vscode.commands.executeCommand('workbench.view.scm');
134-
if (existTemplete() && !select) {
138+
if (existTemplate() && !select) {
135139
const defaultTemp = CommitTemplate.find(item => item.default);
136140
if (defaultTemp !== undefined) {
137141
message_config.templateName = defaultTemp.templateName;
@@ -151,8 +155,7 @@ export async function activate(context: vscode.ExtensionContext) {
151155
);
152156
_CommitDetailType.map((item: any) => {
153157
if (item.isEdit) {
154-
item.description = `${item.description} 👍 >> ${
155-
message_config[item.key || '']
158+
item.description = `${item.description} 👍 >> ${message_config[item.key || '']
156159
}`;
157160
}
158161
return item;
@@ -222,6 +225,13 @@ export async function activate(context: vscode.ExtensionContext) {
222225
}
223226
});
224227
};
228+
// 设置 detail 信息
229+
const setMessageInput = (_key: keyof GitMessage, message: string) => {
230+
const _detailType = CommitDetailType.find(item => item.key === _key);
231+
if(!_detailType || message.length <= 0) {return;}
232+
message_config[_key] = message;
233+
_detailType.isEdit = true;
234+
};
225235
//点击图标触发快捷选项 Click the icon to trigger shortcut options
226236
let disposable = vscode.commands.registerCommand(
227237
'extension.showGitCommit',
@@ -233,11 +243,15 @@ export async function activate(context: vscode.ExtensionContext) {
233243
return repo.rootUri.path === uriRoot?.path;
234244
});
235245
}
246+
if (FillSubjectWithCurrent) {
247+
const message = repo.inputBox.value;
248+
setMessageInput('subject', message);
249+
}
236250
startMessageInput();
237251
},
238252
);
239253
context.subscriptions.push(disposable);
240254
}
241255

242256
// this method is called when your extension is deactivated
243-
export function deactivate() {}
257+
export function deactivate() { }

0 commit comments

Comments
 (0)
0