Using different websockets lib; bug fix stdin/stdout; cleanup

This commit is contained in:
2024-09-20 00:52:04 -05:00
parent 3681cc35b8
commit 38ec21d871
77 changed files with 5863 additions and 15578 deletions

View File

@@ -7,7 +7,7 @@ import threading
from libs.dto.lsp_messages import get_message_str
from libs.dto.lsp_message_structs import LSPResponseTypes, ClientRequest, ClientNotification
from .lsp_controller_stdin_stdout import LSPControllerSTDInSTDOut
# from .lsp_controller_websocket import LSPControllerWebsocket
from .lsp_controller_websocket import LSPControllerWebsocket
@@ -20,8 +20,8 @@ def _log_list():
class LSPController(LSPControllerSTDInSTDOut):
# class LSPController(LSPControllerWebsocket):
# class LSPController(LSPControllerSTDInSTDOut):
class LSPController(LSPControllerWebsocket):
def __init__(self):
super(LSPController).__init__()

View File

@@ -73,16 +73,29 @@ class LSPControllerEvents:
params["textDocument"]["version"] = data["version"]
contentChanges = params["contentChanges"][0]
start = contentChanges["range"]["start"]
end = contentChanges["range"]["end"]
contentChanges["text"] = data["text"]
start["line"] = data["line"]
start["character"] = 0
end["line"] = data["line"]
end["character"] = data["column"]
GLib.idle_add( self.send_notification, method, params )
# def _lsp_did_change(self, data: dict):
# method = data["method"]
# params = didchange_notification_range["params"]
# params["textDocument"]["uri"] = data["uri"]
# params["textDocument"]["languageId"] = data["language_id"]
# params["textDocument"]["version"] = data["version"]
# contentChanges = params["contentChanges"][0]
# start = contentChanges["range"]["start"]
# end = contentChanges["range"]["end"]
# contentChanges["text"] = data["text"]
# start["line"] = data["line"]
# start["character"] = 0
# end["line"] = data["line"]
# end["character"] = data["column"]
# GLib.idle_add( self.send_notification, method, params )
def _lsp_definition(self, data: dict):
method = data["method"]
params = definition_request["params"]

View File

@@ -114,4 +114,4 @@ class LSPControllerSTDInSTDOut(LSPControllerBase):
if not lsp_response: return
GLib.idle_add(self.handle_lsp_response, lsp_response)
GLib.idle_add(self._monitor_lsp_response)

View File

@@ -1,17 +1,16 @@
# Python imports
import subprocess
import asyncio
# Lib imports
from gi.repository import GLib
# Application imports
from libs import websockets
# from libs import websockets
from libs.websocket_client import WebsocketClient
from libs.dto.lsp_messages import LEN_HEADER, TYPE_HEADER, get_message_str, get_message_obj
from .lsp_controller_base import LSPControllerBase
from libs.dto.lsp_message_structs import \
LSPResponseTypes, ClientRequest, ClientNotification, LSPResponseRequest, LSPResponseNotification
from .lsp_controller_base import LSPControllerBase
@@ -24,16 +23,7 @@ class LSPControllerWebsocket(LSPControllerBase):
message = f"Content-Length: {message_size}\r\n\r\n{message_str}"
self.log_list.add_log_entry("Client", data)
uri = "ws://localhost:4114"
async def do_message(message_str):
async with websockets.connect(uri) as websocket:
await websocket.send(message_str)
response = await websocket.recv()
GLib.idle_add(self._monitor_lsp_response, response)
asyncio.get_event_loop().run_until_complete( do_message(message_str) )
self.ws_client.send(message_str)
def start_lsp(self):
if not self._start_command: return
@@ -57,6 +47,9 @@ class LSPControllerWebsocket(LSPControllerBase):
return
self.ws_client = WebsocketClient()
self.ws_client.set_callback(self._monitor_lsp_response)
self.ws_client.start_client()
return self.lsp_process.pid
def stop_lsp(self):
@@ -64,6 +57,7 @@ class LSPControllerWebsocket(LSPControllerBase):
self._lsp_pid = -1
self._message_id = 0
self.ws_client.close_client()
self.lsp_process.terminate()
def _monitor_lsp_response(self, data: None or {}):
@@ -82,16 +76,5 @@ class LSPControllerWebsocket(LSPControllerBase):
response_id = -1
print()
print()
print()
print()
print()
print(f"Response: {lsp_response}")
print()
print()
print()
print()
if not lsp_response: return
self.handle_lsp_response(lsp_response)