From 2d36887b2670b0d46e4dddbed6b4c35af74af02b Mon Sep 17 00:00:00 2001 From: Regen Date: Wed, 29 Apr 2020 19:25:51 +0900 Subject: [PATCH] Support no TriggerCharacter --- src/cmake_language_server/server.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/cmake_language_server/server.py b/src/cmake_language_server/server.py index b588541..e8b6309 100644 --- a/src/cmake_language_server/server.py +++ b/src/cmake_language_server/server.py @@ -40,17 +40,26 @@ class CMakeLanguageServer(LanguageServer): self._api = API(cmake, Path(builddir)) self._api.parse_doc() - @self.feature(COMPLETION, trigger_characters=['{', '(']) + trigger_characters = ['{', '('] + + @self.feature(COMPLETION, trigger_characters=trigger_characters) def completions(params: CompletionParams): if (hasattr(params, 'context') and params.context.triggerKind == CompletionTriggerKind.TriggerCharacter): token = '' trigger = params.context.triggerCharacter else: - word = self._cursor_word(params.textDocument.uri, - params.position, False) - token = '' if word is None else word[0] - trigger = None + line = self._cursor_line(params.textDocument.uri, + params.position) + idx = params.position.character - 1 + if 0 <= idx < len(line) and line[idx] in trigger_characters: + token = '' + trigger = line[idx] + else: + word = self._cursor_word(params.textDocument.uri, + params.position, False) + token = '' if word is None else word[0] + trigger = None items: List[CompletionItem] = []