summaryrefslogtreecommitdiff
path: root/extension/src
diff options
context:
space:
mode:
Diffstat (limited to 'extension/src')
-rw-r--r--extension/src/continueIdeClient.ts39
1 files changed, 38 insertions, 1 deletions
diff --git a/extension/src/continueIdeClient.ts b/extension/src/continueIdeClient.ts
index a5a1c5dc..25287d32 100644
--- a/extension/src/continueIdeClient.ts
+++ b/extension/src/continueIdeClient.ts
@@ -96,6 +96,12 @@ class IdeProtocolClient {
fileEdit,
});
break;
+ case "highlightCode":
+ this.highlightCode(data.rangeInFile, data.color);
+ break;
+ case "runCommand":
+ this.runCommand(data.command);
+ break;
case "saveFile":
this.saveFile(data.filepath);
break;
@@ -117,6 +123,28 @@ class IdeProtocolClient {
// ------------------------------------ //
// On message handlers
+ async highlightCode(rangeInFile: RangeInFile, color: string) {
+ const range = new vscode.Range(
+ rangeInFile.range.start.line,
+ rangeInFile.range.start.character,
+ rangeInFile.range.end.line,
+ rangeInFile.range.end.character
+ );
+ const editor = await openEditorAndRevealRange(
+ rangeInFile.filepath,
+ range,
+ vscode.ViewColumn.One
+ );
+ if (editor) {
+ editor.setDecorations(
+ vscode.window.createTextEditorDecorationType({
+ backgroundColor: color,
+ }),
+ [range]
+ );
+ }
+ }
+
showSuggestion(edit: FileEdit) {
// showSuggestion already exists
showSuggestion(
@@ -289,7 +317,16 @@ class IdeProtocolClient {
}
runCommand(command: string) {
- vscode.window.terminals[0].sendText(command, true);
+ if (vscode.window.terminals.length === 0) {
+ const terminal = vscode.window.createTerminal();
+ terminal.show();
+ terminal.sendText("bash", true);
+ terminal.sendText(command, true);
+ return;
+ }
+ const terminal = vscode.window.terminals[0];
+ terminal.show();
+ terminal.sendText(command, true);
// But need to know when it's done executing...
}
}