diff options
Diffstat (limited to 'extension/src')
-rw-r--r-- | extension/src/activation/environmentSetup.ts | 33 | ||||
-rw-r--r-- | extension/src/continueIdeClient.ts | 18 |
2 files changed, 33 insertions, 18 deletions
diff --git a/extension/src/activation/environmentSetup.ts b/extension/src/activation/environmentSetup.ts index bc071461..593b727e 100644 --- a/extension/src/activation/environmentSetup.ts +++ b/extension/src/activation/environmentSetup.ts @@ -161,6 +161,21 @@ function writeEnvFile(path: string, key: string, value: string) { fs.writeFileSync(path, newEnvFile); } +async function checkServerRunning(serverUrl: string): Promise<boolean> { + // Check if already running by calling /health + try { + const response = await fetch(serverUrl + "/health"); + if (response.status === 200) { + console.log("Continue python server already running"); + return true; + } else { + return false; + } + } catch (e) { + return false; + } +} + export async function startContinuePythonServer() { await setupPythonEnv(); @@ -172,14 +187,7 @@ export async function startContinuePythonServer() { console.log("Starting Continue python server..."); - // Check if already running by calling /health - try { - const response = await fetch(serverUrl + "/health"); - if (response.status === 200) { - console.log("Continue python server already running"); - return; - } - } catch (e) {} + if (await checkServerRunning(serverUrl)) return; let activateCmd = ". env/bin/activate"; let pythonCmd = "python3"; @@ -193,7 +201,7 @@ export async function startContinuePythonServer() { "scripts" )} && ${activateCmd} && cd .. && ${pythonCmd} -m scripts.run_continue_server`; - return new Promise((resolve, reject) => { + return new Promise(async (resolve, reject) => { try { const child = spawn(command, { shell: true, @@ -213,7 +221,12 @@ export async function startContinuePythonServer() { }); } catch (e) { console.log("Failed to start Continue python server", e); - reject(); + // If failed, check if it's because the server is already running (might have happened just after we checked above) + if (await checkServerRunning(serverUrl)) { + resolve(null); + } else { + reject(); + } } }); } diff --git a/extension/src/continueIdeClient.ts b/extension/src/continueIdeClient.ts index b4937ac4..3b5de93f 100644 --- a/extension/src/continueIdeClient.ts +++ b/extension/src/continueIdeClient.ts @@ -158,15 +158,17 @@ class IdeProtocolClient { }); editor.setDecorations(decorationType, [range]); - // Listen for changes to cursor position - const cursorDisposable = vscode.window.onDidChangeTextEditorSelection( - (event) => { - if (event.textEditor.document.uri.fsPath === rangeInFile.filepath) { - cursorDisposable.dispose(); - editor.setDecorations(decorationType, []); + // Listen for changes to cursor position and then remove the decoration (but keep for at least 2 seconds) + setTimeout(() => { + const cursorDisposable = vscode.window.onDidChangeTextEditorSelection( + (event) => { + if (event.textEditor.document.uri.fsPath === rangeInFile.filepath) { + cursorDisposable.dispose(); + editor.setDecorations(decorationType, []); + } } - } - ); + ); + }, 2000); } } |