diff options
author | Ilya Biryukov <ibiryukov@google.com> | 2019-01-03 13:37:12 +0000 |
---|---|---|
committer | Ilya Biryukov <ibiryukov@google.com> | 2019-01-03 13:37:12 +0000 |
commit | b0826bdffe48b91d9d1dad7437e2266635c5b7dd (patch) | |
tree | 17e6ba52dd1cab4ad09a4b0d1ebc130884876af2 /clang-tools-extra/clangd/Protocol.h | |
parent | 22fa465a8c6ca9b4940d62dba5958580322abc4f (diff) | |
download | bcm5719-llvm-b0826bdffe48b91d9d1dad7437e2266635c5b7dd.tar.gz bcm5719-llvm-b0826bdffe48b91d9d1dad7437e2266635c5b7dd.zip |
[clangd] Check preceding char when completion triggers on ':' or '>'
Summary:
Only run completion when we were trigerred on '->' and '::', otherwise
send an error code in return.
To avoid automatically invoking completions in cases like 'a >^' or
'a ? b :^'.
Reviewers: hokein
Reviewed By: hokein
Subscribers: ioeric, MaskRay, jkorous, arphaman, kadircet, cfe-commits
Differential Revision: https://reviews.llvm.org/D55994
llvm-svn: 350304
Diffstat (limited to 'clang-tools-extra/clangd/Protocol.h')
-rw-r--r-- | clang-tools-extra/clangd/Protocol.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/Protocol.h b/clang-tools-extra/clangd/Protocol.h index 94838a8575a..17b69bde562 100644 --- a/clang-tools-extra/clangd/Protocol.h +++ b/clang-tools-extra/clangd/Protocol.h @@ -775,6 +775,31 @@ struct TextDocumentPositionParams { }; bool fromJSON(const llvm::json::Value &, TextDocumentPositionParams &); +enum class CompletionTriggerKind { + /// Completion was triggered by typing an identifier (24x7 code + /// complete), manual invocation (e.g Ctrl+Space) or via API. + Invoked = 1, + /// Completion was triggered by a trigger character specified by + /// the `triggerCharacters` properties of the `CompletionRegistrationOptions`. + TriggerCharacter = 2, + /// Completion was re-triggered as the current completion list is incomplete. + TriggerTriggerForIncompleteCompletions = 3 +}; + +struct CompletionContext { + /// How the completion was triggered. + CompletionTriggerKind triggerKind = CompletionTriggerKind::Invoked; + /// The trigger character (a single character) that has trigger code complete. + /// Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter` + std::string triggerCharacter; +}; +bool fromJSON(const llvm::json::Value &, CompletionContext &); + +struct CompletionParams : TextDocumentPositionParams { + CompletionContext context; +}; +bool fromJSON(const llvm::json::Value &, CompletionParams &); + enum class MarkupKind { PlainText, Markdown, |