Skip to content

Commit

Permalink
Fix usage of sublime.score_selector (#2427)
Browse files Browse the repository at this point in the history
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 <[email protected]>
Co-authored-by: Rafał Chłodnicki <[email protected]>
  • Loading branch information
3 people authored Feb 28, 2024
1 parent 12b3e93 commit 1ba8c05
Showing 1 changed file with 4 additions and 5 deletions.
9 changes: 4 additions & 5 deletions plugin/core/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 1ba8c05

Please sign in to comment.