Starts the Marksman Language Server and waits for it to be ready.
(self)
| 236 | return initialize_params |
| 237 | |
| 238 | def _start_server(self) -> None: |
| 239 | """ |
| 240 | Starts the Marksman Language Server and waits for it to be ready. |
| 241 | """ |
| 242 | |
| 243 | def register_capability_handler(_params: dict) -> None: |
| 244 | return |
| 245 | |
| 246 | def window_log_message(msg: dict) -> None: |
| 247 | log.info(f"LSP: window/logMessage: {msg}") |
| 248 | |
| 249 | def do_nothing(_params: dict) -> None: |
| 250 | return |
| 251 | |
| 252 | self.server.on_request("client/registerCapability", register_capability_handler) |
| 253 | self.server.on_notification("window/logMessage", window_log_message) |
| 254 | self.server.on_notification("$/progress", do_nothing) |
| 255 | self.server.on_notification("textDocument/publishDiagnostics", do_nothing) |
| 256 | |
| 257 | log.info("Starting marksman server process") |
| 258 | self.server.start() |
| 259 | initialize_params = self._get_initialize_params(self.repository_root_path) |
| 260 | |
| 261 | log.info("Sending initialize request from LSP client to marksman server and awaiting response") |
| 262 | init_response = self.server.send.initialize(initialize_params) |
| 263 | log.debug(f"Received initialize response from marksman server: {init_response}") |
| 264 | |
| 265 | # Verify server capabilities |
| 266 | assert "textDocumentSync" in init_response["capabilities"] |
| 267 | assert "completionProvider" in init_response["capabilities"] |
| 268 | assert "definitionProvider" in init_response["capabilities"] |
| 269 | |
| 270 | self.server.notify.initialized({}) |
| 271 | |
| 272 | # marksman is typically ready immediately after initialization |
| 273 | log.info("Marksman server initialization complete") |
nothing calls this directly
no test coverage detected