From 1ba8c054f20a8aaf941c2b5018fdd91a7296c0b5 Mon Sep 17 00:00:00 2001 From: Benjamin Schaaf Date: Wed, 28 Feb 2024 18:24:53 +1100 Subject: [PATCH] Fix usage of sublime.score_selector (#2427) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ST 4173 tweaks how selector scoring works resulting in LSP no longer functioning. As per the comment there seems to be a misunderstanding of how `sublime.score_selector` works. The entire selector must always match for a non-zero score, so if the goal is to check if it's not empty and matches then checking for `>= 8` is simply wrong. --------- Co-authored-by: Benjamin Schaaf Co-authored-by: Rafał Chłodnicki --- plugin/core/types.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/plugin/core/types.py b/plugin/core/types.py index 91b7d16df..8ae09bfb1 100644 --- a/plugin/core/types.py +++ b/plugin/core/types.py @@ -840,11 +840,10 @@ def match_view(self, view: sublime.View, scheme: str) -> bool: syntax = view.syntax() if not syntax: return False - # Every part of a x.y.z scope seems to contribute 8. - # An empty selector result in a score of 1. - # A non-matching non-empty selector results in a score of 0. - # We want to match at least one part of an x.y.z, and we don't want to match on empty selectors. - return scheme in self.schemes and sublime.score_selector(syntax.scope, self.selector) >= 8 + selector = self.selector.strip() + if not selector: + return False + return scheme in self.schemes and sublime.score_selector(syntax.scope, selector) > 0 def map_client_path_to_server_uri(self, path: str) -> str: if self.path_maps: