forked from qt-creator/qt-creator
Clang: Avoid multi-line display name for completion items
These come directly from clang. If converting for display in the completion list widget, skip new line chunks. Fixes: QTCREATORBUG-21600 Change-Id: I83749ed73fa68658ec073d97177768f59a87cebf Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -25,6 +25,8 @@
|
||||
|
||||
#include "clangcompletionchunkstotextconverter.h"
|
||||
|
||||
#include <QtGlobal>
|
||||
|
||||
#include <algorithm>
|
||||
#include <functional>
|
||||
|
||||
@@ -70,6 +72,11 @@ void CompletionChunksToTextConverter::setAddSpaces(bool addSpaces)
|
||||
m_addSpaces = addSpaces;
|
||||
}
|
||||
|
||||
void CompletionChunksToTextConverter::setHonorVerticalSpace(bool honor)
|
||||
{
|
||||
m_honorVerticalSpace = honor;
|
||||
}
|
||||
|
||||
void CompletionChunksToTextConverter::setAddExtraVerticalSpaceBetweenBraces(
|
||||
bool addExtraVerticalSpaceBetweenBraces)
|
||||
{
|
||||
@@ -145,6 +152,8 @@ QString CompletionChunksToTextConverter::convertToName(
|
||||
{
|
||||
CompletionChunksToTextConverter converter;
|
||||
|
||||
converter.setHonorVerticalSpace(false);
|
||||
|
||||
converter.parseChunks(codeCompletionChunks);
|
||||
|
||||
return converter.text();
|
||||
@@ -183,6 +192,10 @@ void CompletionChunksToTextConverter::parse(
|
||||
parsePlaceHolder(codeCompletionChunk); break;
|
||||
case CodeCompletionChunk::LeftParen: parseLeftParen(codeCompletionChunk); break;
|
||||
case CodeCompletionChunk::LeftBrace: parseLeftBrace(codeCompletionChunk); break;
|
||||
case CodeCompletionChunk::VerticalSpace:
|
||||
if (!m_honorVerticalSpace)
|
||||
break;
|
||||
Q_FALLTHROUGH();
|
||||
default: parseText(codeCompletionChunk.text); break;
|
||||
}
|
||||
}
|
||||
|
@@ -50,6 +50,7 @@ public:
|
||||
void setAddPlaceHolderPositions(bool addPlaceHolderPositions);
|
||||
void setAddResultType(bool addResultType);
|
||||
void setAddSpaces(bool addSpaces);
|
||||
void setHonorVerticalSpace(bool honor);
|
||||
void setAddExtraVerticalSpaceBetweenBraces(bool addExtraVerticalSpaceBetweenBraces);
|
||||
void setEmphasizeOptional(bool emphasizeOptional); // Only for Html format
|
||||
void setAddOptional(bool addOptional);
|
||||
@@ -103,6 +104,7 @@ private:
|
||||
bool m_addPlaceHolderPositions = false;
|
||||
bool m_addResultType = false;
|
||||
bool m_addSpaces = false;
|
||||
bool m_honorVerticalSpace = true;
|
||||
bool m_addExtraVerticalSpaceBetweenBraces = false;
|
||||
bool m_emphasizeOptional = false;
|
||||
bool m_addOptional = false;
|
||||
|
@@ -256,7 +256,7 @@ TEST_F(CompletionChunksToTextConverter, Enumeration)
|
||||
ASSERT_THAT(converter.text(), QStringLiteral("Class"));
|
||||
}
|
||||
|
||||
TEST_F(CompletionChunksToTextConverter, Switch)
|
||||
TEST_F(CompletionChunksToTextConverter, SwitchAsKeyword)
|
||||
{
|
||||
CodeCompletionChunks completionChunks({switchName,
|
||||
leftParen,
|
||||
@@ -273,6 +273,22 @@ TEST_F(CompletionChunksToTextConverter, Switch)
|
||||
ASSERT_THAT(converter.placeholderPositions().at(0), 8);
|
||||
}
|
||||
|
||||
TEST_F(CompletionChunksToTextConverter, SwitchAsName)
|
||||
{
|
||||
CodeCompletionChunks completionChunks({switchName,
|
||||
leftParen,
|
||||
condition,
|
||||
rightParen,
|
||||
leftBrace,
|
||||
verticalSpace,
|
||||
rightBrace});
|
||||
|
||||
const QString text = ClangCodeModel::Internal::CompletionChunksToTextConverter::convertToName(
|
||||
completionChunks);
|
||||
|
||||
ASSERT_THAT(text, QStringLiteral("switch(){}"));
|
||||
}
|
||||
|
||||
TEST_F(CompletionChunksToTextConverter, For)
|
||||
{
|
||||
CodeCompletionChunks completionChunks({forName,
|
||||
|
Reference in New Issue
Block a user