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'])