import sublime from .settings import ride_settings from .utils import selector_is_active UNLOAD_MESSAGE = """ R-IDE: LSP is not installed. Please install it via Package Control. """ try: import LSP # noqa LSP_FOUND = True except Exception: print(UNLOAD_MESSAGE) LSP_FOUND = False if LSP_FOUND and sublime.version() > "4000": from LSP.plugin.core.sessions import AbstractPlugin class LspRLangPlugin(AbstractPlugin): @classmethod def name(cls): return "rlang" @classmethod def configuration(cls): basename = "LSP-rlang.sublime-settings" filepath = "Packages/R-IDE/{}".format(basename) return sublime.load_settings(basename), filepath @classmethod def additional_variables(cls): r_binary_lsp = ride_settings.get("r_binary_lsp", None) if not r_binary_lsp: r_binary_lsp = ride_settings.r_binary() return {"r_binary_lsp": r_binary_lsp} def plugin_loaded(): pass elif LSP_FOUND: from LSP.plugin.core.handlers import LanguageHandler from LSP.plugin.core.settings import ClientConfig class LspRLangPlugin(LanguageHandler): @property def name(self): return "rlang" def __init__(self): path = ride_settings.get("r_binary_lsp", None) if not path: path = ride_settings.r_binary() self._config = ClientConfig( name=self.name, binary_args=[ path, "--slave", "-e", "languageserver::run()" ], tcp_port=None, scopes=["source.r", "text.html.markdown.rmarkdown"], syntaxes=[ "Packages/R/R.sublime-syntax", "Packages/R-IDE/R Markdown.sublime-syntax" ], languageId='r', languages=[], enabled=False, init_options=dict(), settings={ "diagnostics": ride_settings.get("diagnostics", True), "debug": ride_settings.get("lsp_debug", False) }, env=ride_settings.ride_env() ) @property def config(self): return self._config def on_start(self, window): return selector_is_active(window=window) def plugin_loaded(): pass else: class LspRLangPlugin(): pass def plugin_loaded(): sublime.message_dialog(UNLOAD_MESSAGE)