summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/Protocol.h
diff options
context:
space:
mode:
authorIlya Biryukov <ibiryukov@google.com>2019-01-03 13:37:12 +0000
committerIlya Biryukov <ibiryukov@google.com>2019-01-03 13:37:12 +0000
commitb0826bdffe48b91d9d1dad7437e2266635c5b7dd (patch)
tree17e6ba52dd1cab4ad09a4b0d1ebc130884876af2 /clang-tools-extra/clangd/Protocol.h
parent22fa465a8c6ca9b4940d62dba5958580322abc4f (diff)
downloadbcm5719-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.h25
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,
OpenPOWER on IntegriCloud