summaryrefslogtreecommitdiffhomepage
path: root/sdks
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-11-06 13:03:02 -0500
committerDax Raad <[email protected]>2025-11-06 13:03:12 -0500
commit1ea3a8eb9beeb7d510fd29164ea741acec1ee04d (patch)
tree22c35a0003c6c2cfb998431f8e5180879cbab9d3 /sdks
parent8729edc5e059a9a29346044b016a6e05d9aca835 (diff)
downloadopencode-1ea3a8eb9beeb7d510fd29164ea741acec1ee04d.tar.gz
opencode-1ea3a8eb9beeb7d510fd29164ea741acec1ee04d.zip
big format
Diffstat (limited to 'sdks')
-rw-r--r--sdks/vscode/src/extension.ts135
-rw-r--r--sdks/vscode/sst-env.d.ts2
2 files changed, 78 insertions, 59 deletions
diff --git a/sdks/vscode/src/extension.ts b/sdks/vscode/src/extension.ts
index 77c70513f..2f90229d5 100644
--- a/sdks/vscode/src/extension.ts
+++ b/sdks/vscode/src/extension.ts
@@ -1,46 +1,59 @@
// This method is called when your extension is deactivated
export function deactivate() {}
-import * as vscode from "vscode";
+import * as vscode from "vscode"
-const TERMINAL_NAME = "opencode";
+const TERMINAL_NAME = "opencode"
export function activate(context: vscode.ExtensionContext) {
- let openNewTerminalDisposable = vscode.commands.registerCommand("opencode.openNewTerminal", async () => {
- await openTerminal();
- });
-
- let openTerminalDisposable = vscode.commands.registerCommand("opencode.openTerminal", async () => {
- // An opencode terminal already exists => focus it
- const existingTerminal = vscode.window.terminals.find((t) => t.name === TERMINAL_NAME);
- if (existingTerminal) {
- existingTerminal.show();
- return;
- }
+ let openNewTerminalDisposable = vscode.commands.registerCommand(
+ "opencode.openNewTerminal",
+ async () => {
+ await openTerminal()
+ },
+ )
+
+ let openTerminalDisposable = vscode.commands.registerCommand(
+ "opencode.openTerminal",
+ async () => {
+ // An opencode terminal already exists => focus it
+ const existingTerminal = vscode.window.terminals.find((t) => t.name === TERMINAL_NAME)
+ if (existingTerminal) {
+ existingTerminal.show()
+ return
+ }
- await openTerminal();
- });
+ await openTerminal()
+ },
+ )
- let addFilepathDisposable = vscode.commands.registerCommand("opencode.addFilepathToTerminal", async () => {
- const fileRef = getActiveFile();
- if (!fileRef) {return;}
+ let addFilepathDisposable = vscode.commands.registerCommand(
+ "opencode.addFilepathToTerminal",
+ async () => {
+ const fileRef = getActiveFile()
+ if (!fileRef) {
+ return
+ }
- const terminal = vscode.window.activeTerminal;
- if (!terminal) {return;}
+ const terminal = vscode.window.activeTerminal
+ if (!terminal) {
+ return
+ }
- if (terminal.name === TERMINAL_NAME) {
- // @ts-ignore
- const port = terminal.creationOptions.env?.["_EXTENSION_OPENCODE_PORT"];
- port ? await appendPrompt(parseInt(port), fileRef) : terminal.sendText(fileRef);
- terminal.show();
- }
- });
+ if (terminal.name === TERMINAL_NAME) {
+ // @ts-ignore
+ const port = terminal.creationOptions.env?.["_EXTENSION_OPENCODE_PORT"]
+ port ? await appendPrompt(parseInt(port), fileRef) : terminal.sendText(fileRef)
+ terminal.show()
+ }
+ },
+ )
- context.subscriptions.push(openTerminalDisposable, addFilepathDisposable);
+ context.subscriptions.push(openTerminalDisposable, addFilepathDisposable)
async function openTerminal() {
// Create a new terminal in split screen
- const port = Math.floor(Math.random() * (65535 - 16384 + 1)) + 16384;
+ const port = Math.floor(Math.random() * (65535 - 16384 + 1)) + 16384
const terminal = vscode.window.createTerminal({
name: TERMINAL_NAME,
iconPath: {
@@ -55,32 +68,34 @@ export function activate(context: vscode.ExtensionContext) {
_EXTENSION_OPENCODE_PORT: port.toString(),
OPENCODE_CALLER: "vscode",
},
- });
+ })
- terminal.show();
- terminal.sendText(`opencode --port ${port}`);
+ terminal.show()
+ terminal.sendText(`opencode --port ${port}`)
- const fileRef = getActiveFile();
- if (!fileRef) {return;}
+ const fileRef = getActiveFile()
+ if (!fileRef) {
+ return
+ }
// Wait for the terminal to be ready
- let tries = 10;
- let connected = false;
+ let tries = 10
+ let connected = false
do {
- await new Promise((resolve) => setTimeout(resolve, 200));
+ await new Promise((resolve) => setTimeout(resolve, 200))
try {
- await fetch(`http://localhost:${port}/app`);
- connected = true;
- break;
+ await fetch(`http://localhost:${port}/app`)
+ connected = true
+ break
} catch (e) {}
- tries--;
- } while (tries > 0);
+ tries--
+ } while (tries > 0)
// If connected, append the prompt to the terminal
if (connected) {
- await appendPrompt(port, `In ${fileRef}`);
- terminal.show();
+ await appendPrompt(port, `In ${fileRef}`)
+ terminal.show()
}
}
@@ -91,37 +106,41 @@ export function activate(context: vscode.ExtensionContext) {
"Content-Type": "application/json",
},
body: JSON.stringify({ text }),
- });
+ })
}
function getActiveFile() {
- const activeEditor = vscode.window.activeTextEditor;
- if (!activeEditor) {return;}
+ const activeEditor = vscode.window.activeTextEditor
+ if (!activeEditor) {
+ return
+ }
- const document = activeEditor.document;
- const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri);
- if (!workspaceFolder) {return;}
+ const document = activeEditor.document
+ const workspaceFolder = vscode.workspace.getWorkspaceFolder(document.uri)
+ if (!workspaceFolder) {
+ return
+ }
// Get the relative path from workspace root
- const relativePath = vscode.workspace.asRelativePath(document.uri);
- let filepathWithAt = `@${relativePath}`;
+ const relativePath = vscode.workspace.asRelativePath(document.uri)
+ let filepathWithAt = `@${relativePath}`
// Check if there's a selection and add line numbers
- const selection = activeEditor.selection;
+ const selection = activeEditor.selection
if (!selection.isEmpty) {
// Convert to 1-based line numbers
- const startLine = selection.start.line + 1;
- const endLine = selection.end.line + 1;
+ const startLine = selection.start.line + 1
+ const endLine = selection.end.line + 1
if (startLine === endLine) {
// Single line selection
- filepathWithAt += `#L${startLine}`;
+ filepathWithAt += `#L${startLine}`
} else {
// Multi-line selection
- filepathWithAt += `#L${startLine}-${endLine}`;
+ filepathWithAt += `#L${startLine}-${endLine}`
}
}
- return filepathWithAt;
+ return filepathWithAt
}
}
diff --git a/sdks/vscode/sst-env.d.ts b/sdks/vscode/sst-env.d.ts
index b6a7e9066..0397645b5 100644
--- a/sdks/vscode/sst-env.d.ts
+++ b/sdks/vscode/sst-env.d.ts
@@ -6,4 +6,4 @@
/// <reference path="../../sst-env.d.ts" />
import "sst"
-export {} \ No newline at end of file
+export {}