From 6bf08e0f14877ecca722c9e32a1b0a5fae58d15c Mon Sep 17 00:00:00 2001 From: Regen Date: Wed, 29 Apr 2020 15:24:13 +0900 Subject: [PATCH] Fix error without completion context --- src/cmake_language_server/server.py | 2 +- tests/test_server.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/cmake_language_server/server.py b/src/cmake_language_server/server.py index efa8177..989c191 100644 --- a/src/cmake_language_server/server.py +++ b/src/cmake_language_server/server.py @@ -42,7 +42,7 @@ class CMakeLanguageServer(LanguageServer): @self.feature(COMPLETION, trigger_characters=['{', '(']) def completions(params: CompletionParams): - if (params.context.triggerKind == + if (hasattr(params, 'context') and params.context.triggerKind == CompletionTriggerKind.TriggerCharacter): token = '' trigger = params.context.triggerCharacter diff --git a/tests/test_server.py b/tests/test_server.py index 22863df..fb91545 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -63,6 +63,23 @@ def test_completions_invoked(client_server, datadir): assert '' in item.documentation +def test_completions_no_context(client_server, datadir): + client, server = client_server + _init(client, datadir) + path = datadir / 'CMakeLists.txt' + _open(client, path, 'projec') + params = CompletionParams(TextDocumentIdentifier(path.as_uri()), + Position(0, 6), + CompletionContext(CompletionTriggerKind.Invoked)) + # some clients do not send context + del params.context + response = client.lsp.send_request(COMPLETION, + params).result(timeout=CALL_TIMEOUT) + item = next(filter(lambda x: x.label == 'project', response.items), None) + assert item is not None + assert '' in item.documentation + + def test_completions_triggercharacter_variable(client_server, datadir): client, server = client_server _init(client, datadir)