from __future__ import annotations from shutil import which from LSP.plugin import AbstractPlugin from LSP.plugin import ClientConfig from LSP.plugin import WorkspaceFolder import sublime class ScryerProlog(AbstractPlugin): @classmethod def name(cls) -> str: return "prolog" @classmethod def can_start( cls, window: sublime.Window, initiating_view: sublime.View, workspace_folders: list[WorkspaceFolder], configuration: ClientConfig, ) -> str | None: command = configuration.command[0] if configuration.command else "scryer-prolog" binary = sublime.expand_variables(command, {"packages": sublime.packages_path()}) if which(binary): return None return ( f'Could not find "{command}" on your PATH. LSP-prolog requires a build of scryer-prolog with ' '"--lsp" support (see https://github.com/mthom/scryer-prolog). Install it, or set the "command" ' "setting in LSP-prolog.sublime-settings to the full path of the binary." )