diff --git a/src/handler/loadHandlers.ts b/src/handler/loadHandlers.ts index ff090af..fb59c5a 100644 --- a/src/handler/loadHandlers.ts +++ b/src/handler/loadHandlers.ts @@ -6,7 +6,7 @@ import { doCommit } from './doCommit'; import { historyMessages } from './historyMessages'; import { regCommandList } from './regCommandList'; import { regContextList } from './regContextList'; -import { sendMessage, stopDevChat } from './sendMessage'; +import { sendMessage, stopDevChat, regeneration } from './sendMessage'; import { blockApply } from './showDiff'; import { showDiff } from './showDiff'; import { addConext } from './addContext'; @@ -64,4 +64,6 @@ messageHandler.registerHandler('addRefCommandContext', addRefCommandContext); messageHandler.registerHandler('contextDetail', contextDetail); // Debug handler messageHandler.registerHandler('listAllMessages', listAllMessages); - +// regeneration +// 应答与sendMessage相同 +messageHandler.registerHandler('regeneration', regeneration); diff --git a/src/handler/sendMessage.ts b/src/handler/sendMessage.ts index 95e8aa4..1a6811c 100644 --- a/src/handler/sendMessage.ts +++ b/src/handler/sendMessage.ts @@ -10,6 +10,7 @@ import messageHistory from '../util/messageHistory'; import CustomCommands from '../command/customCommand'; import { regInMessage, regOutMessage } from '../util/reg_messages'; +let _lastMessage: any = undefined; // Add this function to messageHandler.ts @@ -77,6 +78,8 @@ regOutMessage({ command: 'receiveMessagePartial', text: 'xxxx', user: 'xxx', dat // { command: 'receiveMessage', text: 'xxxx', hash: 'xxx', user: 'xxx', date: 'xxx'} // { command: 'receiveMessagePartial', text: 'xxxx', user: 'xxx', date: 'xxx'} export async function sendMessage(message: any, panel: vscode.WebviewPanel|vscode.WebviewView): Promise { + _lastMessage = message; + const newText2 = await CommandManager.getInstance().processText(message.text); const parsedMessage = parseMessage(newText2); const chatOptions: any = {}; @@ -131,6 +134,15 @@ export async function sendMessage(message: any, panel: vscode.WebviewPanel|vscod return; } +// regeneration last message again +regInMessage({command: 'regeneration'}); +export async function regeneration(message: any, panel: vscode.WebviewPanel|vscode.WebviewView): Promise { + // call sendMessage to send last message again + if (_lastMessage) { + sendMessage(_lastMessage, panel); + } +} + regInMessage({command: 'stopDevChat'}); export async function stopDevChat(message: any, panel: vscode.WebviewPanel|vscode.WebviewView): Promise { logger.channel()?.info(`Stopping devchat`);