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 "clangcompletionchunkstotextconverter.h"
|
||||||
|
|
||||||
|
#include <QtGlobal>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
@@ -70,6 +72,11 @@ void CompletionChunksToTextConverter::setAddSpaces(bool addSpaces)
|
|||||||
m_addSpaces = addSpaces;
|
m_addSpaces = addSpaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CompletionChunksToTextConverter::setHonorVerticalSpace(bool honor)
|
||||||
|
{
|
||||||
|
m_honorVerticalSpace = honor;
|
||||||
|
}
|
||||||
|
|
||||||
void CompletionChunksToTextConverter::setAddExtraVerticalSpaceBetweenBraces(
|
void CompletionChunksToTextConverter::setAddExtraVerticalSpaceBetweenBraces(
|
||||||
bool addExtraVerticalSpaceBetweenBraces)
|
bool addExtraVerticalSpaceBetweenBraces)
|
||||||
{
|
{
|
||||||
@@ -145,6 +152,8 @@ QString CompletionChunksToTextConverter::convertToName(
|
|||||||
{
|
{
|
||||||
CompletionChunksToTextConverter converter;
|
CompletionChunksToTextConverter converter;
|
||||||
|
|
||||||
|
converter.setHonorVerticalSpace(false);
|
||||||
|
|
||||||
converter.parseChunks(codeCompletionChunks);
|
converter.parseChunks(codeCompletionChunks);
|
||||||
|
|
||||||
return converter.text();
|
return converter.text();
|
||||||
@@ -183,6 +192,10 @@ void CompletionChunksToTextConverter::parse(
|
|||||||
parsePlaceHolder(codeCompletionChunk); break;
|
parsePlaceHolder(codeCompletionChunk); break;
|
||||||
case CodeCompletionChunk::LeftParen: parseLeftParen(codeCompletionChunk); break;
|
case CodeCompletionChunk::LeftParen: parseLeftParen(codeCompletionChunk); break;
|
||||||
case CodeCompletionChunk::LeftBrace: parseLeftBrace(codeCompletionChunk); break;
|
case CodeCompletionChunk::LeftBrace: parseLeftBrace(codeCompletionChunk); break;
|
||||||
|
case CodeCompletionChunk::VerticalSpace:
|
||||||
|
if (!m_honorVerticalSpace)
|
||||||
|
break;
|
||||||
|
Q_FALLTHROUGH();
|
||||||
default: parseText(codeCompletionChunk.text); break;
|
default: parseText(codeCompletionChunk.text); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -50,6 +50,7 @@ public:
|
|||||||
void setAddPlaceHolderPositions(bool addPlaceHolderPositions);
|
void setAddPlaceHolderPositions(bool addPlaceHolderPositions);
|
||||||
void setAddResultType(bool addResultType);
|
void setAddResultType(bool addResultType);
|
||||||
void setAddSpaces(bool addSpaces);
|
void setAddSpaces(bool addSpaces);
|
||||||
|
void setHonorVerticalSpace(bool honor);
|
||||||
void setAddExtraVerticalSpaceBetweenBraces(bool addExtraVerticalSpaceBetweenBraces);
|
void setAddExtraVerticalSpaceBetweenBraces(bool addExtraVerticalSpaceBetweenBraces);
|
||||||
void setEmphasizeOptional(bool emphasizeOptional); // Only for Html format
|
void setEmphasizeOptional(bool emphasizeOptional); // Only for Html format
|
||||||
void setAddOptional(bool addOptional);
|
void setAddOptional(bool addOptional);
|
||||||
@@ -103,6 +104,7 @@ private:
|
|||||||
bool m_addPlaceHolderPositions = false;
|
bool m_addPlaceHolderPositions = false;
|
||||||
bool m_addResultType = false;
|
bool m_addResultType = false;
|
||||||
bool m_addSpaces = false;
|
bool m_addSpaces = false;
|
||||||
|
bool m_honorVerticalSpace = true;
|
||||||
bool m_addExtraVerticalSpaceBetweenBraces = false;
|
bool m_addExtraVerticalSpaceBetweenBraces = false;
|
||||||
bool m_emphasizeOptional = false;
|
bool m_emphasizeOptional = false;
|
||||||
bool m_addOptional = false;
|
bool m_addOptional = false;
|
||||||
|
@@ -256,7 +256,7 @@ TEST_F(CompletionChunksToTextConverter, Enumeration)
|
|||||||
ASSERT_THAT(converter.text(), QStringLiteral("Class"));
|
ASSERT_THAT(converter.text(), QStringLiteral("Class"));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CompletionChunksToTextConverter, Switch)
|
TEST_F(CompletionChunksToTextConverter, SwitchAsKeyword)
|
||||||
{
|
{
|
||||||
CodeCompletionChunks completionChunks({switchName,
|
CodeCompletionChunks completionChunks({switchName,
|
||||||
leftParen,
|
leftParen,
|
||||||
@@ -273,6 +273,22 @@ TEST_F(CompletionChunksToTextConverter, Switch)
|
|||||||
ASSERT_THAT(converter.placeholderPositions().at(0), 8);
|
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)
|
TEST_F(CompletionChunksToTextConverter, For)
|
||||||
{
|
{
|
||||||
CodeCompletionChunks completionChunks({forName,
|
CodeCompletionChunks completionChunks({forName,
|
||||||
|
Reference in New Issue
Block a user