Using different websockets lib; bug fix stdin/stdout; cleanup
This commit is contained in:
@@ -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__()
|
||||
|
||||
|
@@ -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"]
|
||||
|
@@ -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)
|
||||
|
||||
|
@@ -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)
|
Reference in New Issue
Block a user