mirror of
https://github.com/andrepimenta/claude-code-chat.git
synced 2025-12-08 20:09:42 +00:00
Save message in text box
This commit is contained in:
@@ -127,6 +127,7 @@ class ClaudeChatProvider {
|
||||
private _currentClaudeProcess: cp.ChildProcess | undefined;
|
||||
private _selectedModel: string = 'default'; // Default model
|
||||
private _isProcessing: boolean | undefined;
|
||||
private _draftMessage: string = '';
|
||||
|
||||
constructor(
|
||||
private readonly _extensionUri: vscode.Uri,
|
||||
@@ -236,6 +237,14 @@ class ClaudeChatProvider {
|
||||
|
||||
// Send current settings to webview
|
||||
this._sendCurrentSettings();
|
||||
|
||||
// Send saved draft message if any
|
||||
if (this._draftMessage) {
|
||||
this._postMessage({
|
||||
type: 'restoreInputText',
|
||||
data: this._draftMessage
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private _handleWebviewMessage(message: any) {
|
||||
@@ -324,6 +333,9 @@ class ClaudeChatProvider {
|
||||
case 'enableYoloMode':
|
||||
this._enableYoloMode();
|
||||
return;
|
||||
case 'saveInputText':
|
||||
this._saveInputText(message.text);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -430,6 +442,9 @@ class ClaudeChatProvider {
|
||||
|
||||
this._isProcessing = true;
|
||||
|
||||
// Clear draft message since we're sending it
|
||||
this._draftMessage = '';
|
||||
|
||||
// Show original user input in chat and save to conversation (without mode prefixes)
|
||||
this._sendAndSaveMessage({
|
||||
type: 'userInput',
|
||||
@@ -2149,6 +2164,10 @@ class ClaudeChatProvider {
|
||||
}
|
||||
}
|
||||
|
||||
private _saveInputText(text: string): void {
|
||||
this._draftMessage = text || '';
|
||||
}
|
||||
|
||||
private async _updateSettings(settings: { [key: string]: any }): Promise<void> {
|
||||
const config = vscode.workspace.getConfiguration('claudeCodeChat');
|
||||
|
||||
|
||||
22
src/ui.ts
22
src/ui.ts
@@ -1543,6 +1543,18 @@ const html = `<!DOCTYPE html>
|
||||
|
||||
messageInput.addEventListener('input', adjustTextareaHeight);
|
||||
|
||||
// Save input text as user types (debounced)
|
||||
let saveInputTimeout;
|
||||
messageInput.addEventListener('input', () => {
|
||||
clearTimeout(saveInputTimeout);
|
||||
saveInputTimeout = setTimeout(() => {
|
||||
vscode.postMessage({
|
||||
type: 'saveInputText',
|
||||
text: messageInput.value
|
||||
});
|
||||
}, 500); // Save after 500ms of no typing
|
||||
});
|
||||
|
||||
messageInput.addEventListener('keydown', (e) => {
|
||||
if (e.key === 'Enter' && !e.shiftKey) {
|
||||
e.preventDefault();
|
||||
@@ -2490,6 +2502,16 @@ const html = `<!DOCTYPE html>
|
||||
updateStatusWithTotals();
|
||||
break;
|
||||
|
||||
case 'restoreInputText':
|
||||
const inputField = document.getElementById('messageInput');
|
||||
if (inputField && message.data) {
|
||||
inputField.value = message.data;
|
||||
// Auto-resize the textarea
|
||||
inputField.style.height = 'auto';
|
||||
inputField.style.height = Math.min(inputField.scrollHeight, 200) + 'px';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'output':
|
||||
if (message.data.trim()) {
|
||||
let displayData = message.data;
|
||||
|
||||
Reference in New Issue
Block a user