From 2567110018b04088eba9c6e9bb3e1c7611e128dd Mon Sep 17 00:00:00 2001 From: ryuukk <44361234+ryuukk@users.noreply.github.com> Date: Mon, 27 Feb 2023 23:51:18 +0100 Subject: [PATCH 1/4] also use lsp_label_description here if it's present --- plugin/completion.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/completion.py b/plugin/completion.py index c7b9485ba..87bff2515 100644 --- a/plugin/completion.py +++ b/plugin/completion.py @@ -69,7 +69,7 @@ def format_completion( annotation = lsp_label_description or lsp_detail elif lsp_label.startswith(lsp_filter_text): trigger = lsp_label - annotation = lsp_detail + annotation = lsp_label_description or lsp_detail if lsp_label_detail: details.append(html.escape(lsp_label + lsp_label_detail)) if lsp_label_description: From 7c7c22aa7715d1554a031fa48a13a6abc361e528 Mon Sep 17 00:00:00 2001 From: Rafal Chlodnicki Date: Sat, 25 Mar 2023 00:12:45 +0100 Subject: [PATCH 2/4] avoid duplicated content and add tests --- plugin/completion.py | 8 +++++--- tests/test_completion.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/plugin/completion.py b/plugin/completion.py index b492445ec..79458c5ae 100644 --- a/plugin/completion.py +++ b/plugin/completion.py @@ -76,11 +76,13 @@ def format_completion( annotation = lsp_label_description or lsp_detail elif lsp_label.startswith(lsp_filter_text): trigger = lsp_label - annotation = lsp_label_description or lsp_detail + if lsp_label_description: + annotation = lsp_label_description + details.append(html.escape(lsp_detail)) + else: + annotation = lsp_detail if lsp_label_detail: details.append(html.escape(lsp_label + lsp_label_detail)) - if lsp_label_description: - details.append(html.escape(lsp_label_description)) else: trigger = lsp_filter_text annotation = lsp_detail diff --git a/tests/test_completion.py b/tests/test_completion.py index 50172d616..399d1f824 100644 --- a/tests/test_completion.py +++ b/tests/test_completion.py @@ -973,6 +973,37 @@ def test_label_details_3(self) -> None: annotation='NaiveDateTime' ) + def test_label_details_4(self) -> None: + # More relevant "labelDetails.description" ends up in the annotation rather than "detail". + self._verify_completion( + { + "detail": "Auto-import", + "label": "escape", + "labelDetails": { + "description": "html" + }, + }, + trigger='escape', + annotation='html', + details='Auto-import', + ) + + def test_label_details_5(self) -> None: + # filterText overrides label if doesn't match label+labelDetails.detail + self._verify_completion( + { + "detail": "Auto-import", + "filterText": "escapeNew", + "label": "escape", + "labelDetails": { + "detail": "(str)", + }, + }, + trigger='escapeNew', + annotation='Auto-import', + details='escape(str)', + ) + def test_filter_text_1(self) -> None: self._verify_completion( { From 6b6e2a5fa5eeea41b42ffca30fc2019721ebf484 Mon Sep 17 00:00:00 2001 From: Rafal Chlodnicki Date: Fri, 31 Mar 2023 23:09:04 +0200 Subject: [PATCH 3/4] don't add empty string to details --- plugin/completion.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugin/completion.py b/plugin/completion.py index 79458c5ae..b68bd4bd1 100644 --- a/plugin/completion.py +++ b/plugin/completion.py @@ -78,7 +78,8 @@ def format_completion( trigger = lsp_label if lsp_label_description: annotation = lsp_label_description - details.append(html.escape(lsp_detail)) + if lsp_detail: + details.append(html.escape(lsp_detail)) else: annotation = lsp_detail if lsp_label_detail: From 7fd594604da6317abc2b1c2f3a3d294fe77e9a6d Mon Sep 17 00:00:00 2001 From: Rafal Chlodnicki Date: Fri, 31 Mar 2023 23:23:14 +0200 Subject: [PATCH 4/4] combine elif and else blocks and use common logic --- plugin/completion.py | 18 ++++++++---------- tests/test_completion.py | 4 ++-- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/plugin/completion.py b/plugin/completion.py index b68bd4bd1..87a22dc02 100644 --- a/plugin/completion.py +++ b/plugin/completion.py @@ -74,22 +74,20 @@ def format_completion( # labelDetails.detail is likely a function signature trigger = lsp_label + lsp_label_detail annotation = lsp_label_description or lsp_detail - elif lsp_label.startswith(lsp_filter_text): - trigger = lsp_label + else: + if lsp_label.startswith(lsp_filter_text): + trigger = lsp_label + if lsp_label_detail: + details.append(html.escape(lsp_label + lsp_label_detail)) + else: + trigger = lsp_filter_text + details.append(html.escape(lsp_label + lsp_label_detail)) if lsp_label_description: annotation = lsp_label_description if lsp_detail: details.append(html.escape(lsp_detail)) else: annotation = lsp_detail - if lsp_label_detail: - details.append(html.escape(lsp_label + lsp_label_detail)) - else: - trigger = lsp_filter_text - annotation = lsp_detail - details.append(html.escape(lsp_label + lsp_label_detail)) - if lsp_label_description: - details.append(html.escape(lsp_label_description)) if item.get('deprecated') or CompletionItemTag.Deprecated in item.get('tags', []): annotation = "DEPRECATED - " + annotation if annotation else "DEPRECATED" text_edit = item.get('textEdit', item_defaults.get('editRange')) diff --git a/tests/test_completion.py b/tests/test_completion.py index 399d1f824..06e50f8ca 100644 --- a/tests/test_completion.py +++ b/tests/test_completion.py @@ -708,7 +708,7 @@ def check( ) check( resolve_support=False, - expected_regex=r"^f\(X& x\) \| does things$", + expected_regex=r"^f\(X& x\)$", label="f", label_details={"detail": "(X& x)", "description": "does things"} ) @@ -726,7 +726,7 @@ def check( ) check( resolve_support=True, - expected_regex=r"^More \| f\(X& x\) \| does things$", # noqa: E501 + expected_regex=r"^More \| f\(X& x\)$", # noqa: E501 label="f", label_details={"detail": "(X& x)", "description": "does things"} )