forked from qt-creator/qt-creator
C++: Add support for prefixes in switch header/source
Task-number: QTCREATORBUG-11031 Change-Id: I93cce0ebf46984eb06094e1f1519717be2bbaa79 Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This commit is contained in:
committed by
Petar Perisin
parent
4eff289e03
commit
1fd576c1f6
@@ -106,6 +106,17 @@ const QStringList &CppToolsPlugin::sourceSearchPaths()
|
||||
return m_instance->m_fileSettings->sourceSearchPaths;
|
||||
}
|
||||
|
||||
const QStringList &CppToolsPlugin::headerPrefixes()
|
||||
{
|
||||
return m_instance->m_fileSettings->headerPrefixes;
|
||||
}
|
||||
|
||||
const QStringList &CppToolsPlugin::sourcePrefixes()
|
||||
{
|
||||
return m_instance->m_fileSettings->sourcePrefixes;
|
||||
}
|
||||
|
||||
|
||||
bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error)
|
||||
{
|
||||
Q_UNUSED(arguments)
|
||||
@@ -256,6 +267,28 @@ static QStringList baseNameWithAllSuffixes(const QString &baseName, const QStrin
|
||||
return result;
|
||||
}
|
||||
|
||||
static QStringList baseNamesWithAllPrefixes(const QStringList &baseNames, bool isHeader)
|
||||
{
|
||||
QStringList result;
|
||||
const QStringList &sourcePrefixes = m_instance->sourcePrefixes();
|
||||
const QStringList &headerPrefixes = m_instance->headerPrefixes();
|
||||
|
||||
foreach (const QString &name, baseNames) {
|
||||
foreach (const QString &prefix, isHeader ? headerPrefixes : sourcePrefixes) {
|
||||
if (name.startsWith(prefix)) {
|
||||
QString nameWithoutPrefix = name.mid(prefix.size());
|
||||
result += nameWithoutPrefix;
|
||||
foreach (const QString &prefix, isHeader ? sourcePrefixes : headerPrefixes)
|
||||
result += prefix + nameWithoutPrefix;
|
||||
}
|
||||
}
|
||||
foreach (const QString &prefix, isHeader ? sourcePrefixes : headerPrefixes)
|
||||
result += prefix + name;
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static QStringList baseDirWithAllDirectories(const QDir &baseDir, const QStringList &directories)
|
||||
{
|
||||
QStringList result;
|
||||
@@ -346,6 +379,8 @@ QString correspondingHeaderOrSource(const QString &fileName, bool *wasHeader)
|
||||
: m_instance->headerSearchPaths();
|
||||
candidateDirs += baseDirWithAllDirectories(absoluteDir, searchPaths);
|
||||
|
||||
candidateFileNames += baseNamesWithAllPrefixes(candidateFileNames, isHeader);
|
||||
|
||||
// Try to find a file in the same or sibling directories first
|
||||
foreach (const QString &candidateDir, candidateDirs) {
|
||||
foreach (const QString &candidateFileName, candidateFileNames) {
|
||||
|
||||
Reference in New Issue
Block a user