diff options
-rw-r--r-- | continuedev/src/continuedev/server/ide.py | 7 | ||||
-rw-r--r-- | extension/package.json | 10 | ||||
-rw-r--r-- | extension/src/commands.ts | 12 | ||||
-rw-r--r-- | extension/src/continueIdeClient.ts | 4 |
4 files changed, 33 insertions, 0 deletions
diff --git a/continuedev/src/continuedev/server/ide.py b/continuedev/src/continuedev/server/ide.py index d16bd449..1d51758e 100644 --- a/continuedev/src/continuedev/server/ide.py +++ b/continuedev/src/continuedev/server/ide.py @@ -150,6 +150,8 @@ class IdeProtocolServer(AbstractIdeProtocolServer): self.onAcceptRejectSuggestion(data["accepted"]) elif message_type == "acceptRejectDiff": self.onAcceptRejectDiff(data["accepted"]) + elif message_type == "mainUserInput": + self.onMainUserInput(data["input"]) elif message_type in ["highlightedCode", "openFiles", "readFile", "editFile", "workspaceDirectory", "getUserSecret", "runCommand", "uniqueId"]: self.sub_queue.post(message_type, data) else: @@ -255,6 +257,11 @@ class IdeProtocolServer(AbstractIdeProtocolServer): asyncio.create_task( session.autopilot.handle_highlighted_code(range_in_files)) + def onMainUserInput(self, input: str): + for _, session in self.session_manager.sessions.items(): + asyncio.create_task( + session.autopilot.accept_user_input(input)) + # Request information. Session doesn't matter. async def getOpenFiles(self) -> List[str]: resp = await self._send_and_receive_json({}, OpenFilesResponse, "openFiles") diff --git a/extension/package.json b/extension/package.json index 30690397..79681f6b 100644 --- a/extension/package.json +++ b/extension/package.json @@ -106,6 +106,11 @@ "command": "continue.rejectAllSuggestions", "category": "Continue", "title": "Reject All Suggestions" + }, + { + "command": "continue.quickTextEntry", + "category": "Continue", + "title": "Quick Text Entry" } ], "keybindings": [ @@ -138,6 +143,11 @@ "command": "continue.rejectDiff", "mac": "shift+cmd+backspace", "key": "shift+ctrl+backspace" + }, + { + "command": "continue.quickTextEntry", + "mac": "cmd+h", + "key": "ctrl+h" } ], "menus": { diff --git a/extension/src/commands.ts b/extension/src/commands.ts index 4414a171..ffb67ab5 100644 --- a/extension/src/commands.ts +++ b/extension/src/commands.ts @@ -17,6 +17,7 @@ import { acceptDiffCommand, rejectDiffCommand } from "./diffs"; import * as bridge from "./bridge"; import { debugPanelWebview } from "./debugPanel"; import { sendTelemetryEvent, TelemetryEvent } from "./telemetry"; +import { ideProtocolClient } from "./activation/activate"; // Copy everything over from extension.ts const commandsMap: { [command: string]: (...args: any) => any } = { @@ -63,6 +64,17 @@ const commandsMap: { [command: string]: (...args: any) => any } = { type: "focusContinueInput", }); }, + "continue.quickTextEntry": async () => { + const text = await vscode.window.showInputBox({ + placeHolder: + "Ask a question, give instructions, or enter a slash command", + title: "Continue Quick Input", + }); + if (text) { + ideProtocolClient.sendMainUserInput(text); + } + vscode.commands.executeCommand("continue.continueGUIView.focus"); + }, }; const textEditorCommandsMap: { [command: string]: (...args: any) => {} } = { diff --git a/extension/src/continueIdeClient.ts b/extension/src/continueIdeClient.ts index 3615ab92..9b16a7a2 100644 --- a/extension/src/continueIdeClient.ts +++ b/extension/src/continueIdeClient.ts @@ -427,6 +427,10 @@ class IdeProtocolClient { sendAcceptRejectDiff(accepted: boolean) { this.messenger?.send("acceptRejectDiff", { accepted }); } + + sendMainUserInput(input: string) { + this.messenger?.send("mainUserInput", { input }); + } } export default IdeProtocolClient; |