summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--continuedev/src/continuedev/core/lsp.py13
-rw-r--r--continuedev/src/continuedev/core/sdk.py5
-rw-r--r--continuedev/src/continuedev/libs/lspclient/lsp_endpoint.py2
3 files changed, 13 insertions, 7 deletions
diff --git a/continuedev/src/continuedev/core/lsp.py b/continuedev/src/continuedev/core/lsp.py
index 0f4d5a86..86923fb7 100644
--- a/continuedev/src/continuedev/core/lsp.py
+++ b/continuedev/src/continuedev/core/lsp.py
@@ -1,3 +1,4 @@
+import asyncio
import os
import socket
import subprocess
@@ -57,7 +58,7 @@ class SocketFileWrapper:
return self.sockfile.close()
-def create_json_rpc_endpoint(use_subprocess: Optional[str] = None):
+async def create_json_rpc_endpoint(use_subprocess: Optional[str] = None):
if use_subprocess is None:
try:
threading.Thread(
@@ -67,6 +68,8 @@ def create_json_rpc_endpoint(use_subprocess: Optional[str] = None):
except Exception as e:
logger.warning("Could not start TCP server: %s", e)
+ await asyncio.sleep(2)
+
# Connect to the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", 8080))
@@ -100,8 +103,10 @@ def uri_to_filename(uri: str) -> str:
return uri
-def create_lsp_client(workspace_dir: str, use_subprocess: Optional[str] = None):
- json_rpc_endpoint, process = create_json_rpc_endpoint(use_subprocess=use_subprocess)
+async def create_lsp_client(workspace_dir: str, use_subprocess: Optional[str] = None):
+ json_rpc_endpoint, process = await create_json_rpc_endpoint(
+ use_subprocess=use_subprocess
+ )
lsp_endpoint = LspEndpoint(json_rpc_endpoint)
lsp_client = LspClient(lsp_endpoint)
capabilities = {
@@ -282,7 +287,7 @@ class ContinueLSPClient(BaseModel):
return original_dict
async def start(self):
- self.lsp_client, self.lsp_process = create_lsp_client(
+ self.lsp_client, self.lsp_process = await create_lsp_client(
self.workspace_dir, use_subprocess=self.use_subprocess
)
diff --git a/continuedev/src/continuedev/core/sdk.py b/continuedev/src/continuedev/core/sdk.py
index ddcf6e55..658848c8 100644
--- a/continuedev/src/continuedev/core/sdk.py
+++ b/continuedev/src/continuedev/core/sdk.py
@@ -97,11 +97,10 @@ class ContinueSDK(AbstractContinueSDK):
try:
sdk.lsp = ContinueLSPClient(
workspace_dir=sdk.ide.workspace_directory,
- # use_subprocess="python3.10 -m pylsp",
)
await sdk.lsp.start()
- except:
- logger.warning("Failed to start LSP client", exc_info=True)
+ except Exception as e:
+ logger.warning(f"Failed to start LSP client: {e}", exc_info=True)
sdk.lsp = None
# create_async_task(
diff --git a/continuedev/src/continuedev/libs/lspclient/lsp_endpoint.py b/continuedev/src/continuedev/libs/lspclient/lsp_endpoint.py
index 14d2ca07..9b37a06d 100644
--- a/continuedev/src/continuedev/libs/lspclient/lsp_endpoint.py
+++ b/continuedev/src/continuedev/libs/lspclient/lsp_endpoint.py
@@ -1,6 +1,7 @@
from __future__ import print_function
import threading
+import time
class LspEndpoint(threading.Thread):
@@ -27,6 +28,7 @@ class LspEndpoint(threading.Thread):
def run(self):
while not self.shutdown_flag:
+ time.sleep(0.1)
jsonrpc_message = self.json_rpc_endpoint.recv_response()
if jsonrpc_message is None: