From ef8f2a461ed825d2c38453930f5d810228255195 Mon Sep 17 00:00:00 2001 From: "bobo.yang" Date: Thu, 4 May 2023 07:27:26 +0800 Subject: [PATCH] support commitmsg code block --- .../commitMessageCommandInstructions.txt | 1 + {src => instructions}/commonInstructions.txt | 0 src/commitMessageCommand.ts | 6 +++++- src/extension.ts | 7 ++++--- src/extensionContext.ts | 15 +++++++++++++++ src/messageHandler.ts | 2 +- 6 files changed, 26 insertions(+), 5 deletions(-) rename {src => instructions}/commitMessageCommandInstructions.txt (89%) rename {src => instructions}/commonInstructions.txt (100%) create mode 100644 src/extensionContext.ts diff --git a/src/commitMessageCommandInstructions.txt b/instructions/commitMessageCommandInstructions.txt similarity index 89% rename from src/commitMessageCommandInstructions.txt rename to instructions/commitMessageCommandInstructions.txt index 13b7626..a933188 100644 --- a/src/commitMessageCommandInstructions.txt +++ b/instructions/commitMessageCommandInstructions.txt @@ -5,5 +5,6 @@ As a software developer assistant, your task is to provide clear and concise res 3. Enclose messages in code blocks using triple backticks (```). 4. Utilize the , if provided, to create the summary. 5. Utilize the previous messages, if provided in the end of this prompt, to create the summary. Note that not all previous messages are necessarily relevant. +6. Please output commit message in a markdown code block, flag as commitmsg type. If you need more information, feel free to ask. \ No newline at end of file diff --git a/src/commonInstructions.txt b/instructions/commonInstructions.txt similarity index 100% rename from src/commonInstructions.txt rename to instructions/commonInstructions.txt diff --git a/src/commitMessageCommand.ts b/src/commitMessageCommand.ts index 6e92d70..92942d2 100644 --- a/src/commitMessageCommand.ts +++ b/src/commitMessageCommand.ts @@ -7,6 +7,7 @@ import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; import { promisify } from 'util'; +import ExtensionContextHolder from './extensionContext'; const mkdirAsync = promisify(fs.mkdir); const execAsync = promisify(exec); @@ -53,6 +54,9 @@ export const commitMessageCommand: Command = { const diff_file = path.join(tempDir, 'diff_output.txt'); await writeDiffFile(diff_file); - return `[instruction|./commonInstructions.txt] [instruction|./commitMessageCommandInstructions.txt] [context|${diff_file}] Write a commit message`; + const commonInstructions = vscode.Uri.joinPath(ExtensionContextHolder.context?.extensionUri as vscode.Uri, 'instructions/commonInstructions.txt'); + const commitMsgInstructions = vscode.Uri.joinPath(ExtensionContextHolder.context?.extensionUri as vscode.Uri, 'instructions/commitMessageCommandInstructions.txt'); + + return `[instruction|${commonInstructions.path}] [instruction|${commitMsgInstructions.path}] [context|${diff_file}] Write a commit message`; }, }; diff --git a/src/extension.ts b/src/extension.ts index 4a2732b..9c7b205 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,11 +1,12 @@ -const vscode = require('vscode'); +import * as vscode from 'vscode'; const ChatPanel = require('./chatPanel').default; const sendFileSelectMessage = require('./messageHandler').sendFileSelectMessage; const sendCodeSelectMessage = require('./messageHandler').sendCodeSelectMessage; const askAI = require('./messageHandler').askAI; +import ExtensionContextHolder from './extensionContext'; - -function activate(context: { extensionUri: any; subscriptions: any[]; }) { +function activate(context: vscode.ExtensionContext) { + ExtensionContextHolder.context = context; let disposable = vscode.commands.registerCommand('devchat.openChatPanel', () => { if (vscode.workspace.workspaceFolders) { ChatPanel.createOrShow(context.extensionUri); diff --git a/src/extensionContext.ts b/src/extensionContext.ts new file mode 100644 index 0000000..d10fb0d --- /dev/null +++ b/src/extensionContext.ts @@ -0,0 +1,15 @@ +import * as vscode from 'vscode'; + +class ExtensionContextHolder { + private static _context: vscode.ExtensionContext | undefined; + + static set context(context: vscode.ExtensionContext | undefined) { + this._context = context; + } + + static get context(): vscode.ExtensionContext | undefined { + return this._context; + } +} + +export default ExtensionContextHolder; diff --git a/src/messageHandler.ts b/src/messageHandler.ts index d54445c..32100da 100644 --- a/src/messageHandler.ts +++ b/src/messageHandler.ts @@ -97,7 +97,7 @@ async function handleMessage( chatOptions.context = parsedMessage.context; } if (parsedMessage.instruction.length > 0) { - chatOptions.instruction = parsedMessage.instruction; + chatOptions.header = parsedMessage.instruction; } if (parsedMessage.reference.length > 0) { chatOptions.reference = parsedMessage.reference;