From ceb8aec7a6a90cc5da7f7fe4e25c2e866cab0cc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Ch=C5=82odnicki?= Date: Fri, 27 Nov 2020 22:05:48 +0100 Subject: [PATCH] Fix crash on trying to start in folder-less workspace (#34) Resolves #29 --- plugin.py | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/plugin.py b/plugin.py index 22c44a0..2952049 100644 --- a/plugin.py +++ b/plugin.py @@ -1,9 +1,13 @@ import os import sublime +from LSP.plugin import ClientConfig +from LSP.plugin import uri_to_filename +from LSP.plugin import WorkspaceFolder from LSP.plugin.core.protocol import Point -from LSP.plugin.core.url import uri_to_filename +from LSP.plugin.core.types import List, Optional from LSP.plugin.core.views import point_to_offset from lsp_utils import NpmClientHandler +from lsp_utils import request_handler def plugin_loaded(): @@ -25,13 +29,21 @@ class LspTypescriptPlugin(NpmClientHandler): def install_in_cache(cls) -> bool: return False - def on_ready(self, api) -> None: - api.on_request('_typescript.rename', self._on_typescript_rename) - - def _on_typescript_rename(self, textDocumentPositionParams, respond): - view = sublime.active_window().open_file( - uri_to_filename(textDocumentPositionParams['textDocument']['uri']) - ) + @classmethod + def is_allowed_to_start( + cls, + window: sublime.Window, + initiating_view: Optional[sublime.View] = None, + workspace_folders: Optional[List[WorkspaceFolder]] = None, + configuration: Optional[ClientConfig] = None + ) -> Optional[str]: + if not workspace_folders: + return 'This server only works when the window workspace includes some folders!' + + @request_handler('_typescript.rename') + def on_typescript_rename(self, textDocumentPositionParams, respond): + filename = uri_to_filename(textDocumentPositionParams['textDocument']['uri']) + view = sublime.active_window().open_file(filename) if view: lsp_point = Point.from_lsp(textDocumentPositionParams['position'])