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);      }    } | 
