From 9004306d5d698203a7dc8dd22562e50f340fd0f2 Mon Sep 17 00:00:00 2001 From: Andy Stewart Date: Mon, 24 Apr 2023 12:17:09 +0800 Subject: [PATCH] Improve sorting of completion candidates based on numeric values. --- core/handler/completion.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/core/handler/completion.py b/core/handler/completion.py index d532c72422..79a963ea3b 100644 --- a/core/handler/completion.py +++ b/core/handler/completion.py @@ -28,13 +28,24 @@ def process_request(self, lsp_server, position, char, prefix) -> dict: self.position = position self.prefix = prefix return dict(position=position, context=context) + + def parse_sort_value(self, sort_text): + if sort_text == "": + return sort_text + else: + sort_text = ''.join(c for c in sort_text if c.isdigit() or c == '.') + + if sort_text.endswith("."): + sort_text = sort_text[:-1] + + return sort_text def compare_candidates(self, x, y): prefix = self.prefix.lower() x_label : str = x["label"].lower() y_label : str = y["label"].lower() - x_sort_text : str = x["sortText"] - y_sort_text : str = y["sortText"] + x_sort_text : str = self.parse_sort_value(x["sortText"]) + y_sort_text : str = self.parse_sort_value(y["sortText"]) x_include_prefix = x_label.startswith(prefix) y_include_prefix = y_label.startswith(prefix)