From 336501943ef71a9ec28c0768fdc61c0ca54c24ca Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 15 Jul 2015 16:59:19 +0200 Subject: [PATCH] Clang: Add tooltip for clang snippets Change-Id: Ifccfd72c52910c6e1086d6c782552c60fbb89f5f Reviewed-by: Nikolai Kosjar --- .../clangcompletionassistprocessor.cpp | 10 ++++------ .../completionchunkstotextconverter.cpp | 12 ++++++++++++ .../clangcodemodel/completionchunkstotextconverter.h | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp index 61c893601eb..505b5fcc223 100644 --- a/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp +++ b/src/plugins/clangcodemodel/clangcompletionassistprocessor.cpp @@ -100,14 +100,12 @@ QList toAssistProposalItems(const CodeCompletions &complet item = new ClangAssistProposalItem; items.insert(name, item); item->setText(name); - item->setDetail(ccr.hint().toString()); item->setOrder(ccr.priority()); - const QString snippet = ccr.snippet().toString(); - if (!snippet.isEmpty()) - item->setData(snippet); - else - item->setData(qVariantFromValue(ccr)); + if (ccr.completionKind() == CodeCompletion::KeywordCompletionKind) + item->setDetail(CompletionChunksToTextConverter::convertToToolTip(ccr.chunks())); + + item->setData(QVariant::fromValue(ccr)); } // FIXME: show the effective accessebility instead of availability diff --git a/src/plugins/clangcodemodel/completionchunkstotextconverter.cpp b/src/plugins/clangcodemodel/completionchunkstotextconverter.cpp index 3c7c58c6a3c..92d9c300744 100644 --- a/src/plugins/clangcodemodel/completionchunkstotextconverter.cpp +++ b/src/plugins/clangcodemodel/completionchunkstotextconverter.cpp @@ -114,6 +114,18 @@ QString CompletionChunksToTextConverter::convertToName(const QVector &codeCompletionChunks) +{ + CompletionChunksToTextConverter converter; + converter.setAddPlaceHolderText(true); + converter.setAddSpaces(true); + converter.setAddExtraVerticalSpaceBetweenBraces(true); + + converter.parseChunks(codeCompletionChunks); + + return converter.text(); +} + void CompletionChunksToTextConverter::parse(const ClangBackEnd::CodeCompletionChunk &codeCompletionChunk) { using ClangBackEnd::CodeCompletionChunk; diff --git a/src/plugins/clangcodemodel/completionchunkstotextconverter.h b/src/plugins/clangcodemodel/completionchunkstotextconverter.h index 32a9a040989..6e1e6b290fb 100644 --- a/src/plugins/clangcodemodel/completionchunkstotextconverter.h +++ b/src/plugins/clangcodemodel/completionchunkstotextconverter.h @@ -59,7 +59,7 @@ public: static QString convertToFunctionSignature(const QVector &codeCompletionChunks); static QString convertToName(const QVector &codeCompletionChunks); - + static QString convertToToolTip(const QVector &codeCompletionChunks); private: void parse(const ClangBackEnd::CodeCompletionChunk & codeCompletionChunk); void parseResultType(const Utf8String &text);