Core: Support Env variables for "f" locator

Fixes: QTCREATORBUG-242
Change-Id: Iebcb88be482a3f8f7500629032ee63180997dd0d
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Marcus Tillmanns
2023-01-10 16:05:29 +01:00
parent b16c6495a0
commit c4e9616d27

View File

@@ -14,6 +14,7 @@
#include <coreplugin/vcsmanager.h> #include <coreplugin/vcsmanager.h>
#include <utils/checkablemessagebox.h> #include <utils/checkablemessagebox.h>
#include <utils/environment.h>
#include <utils/filepath.h> #include <utils/filepath.h>
#include <utils/layoutbuilder.h> #include <utils/layoutbuilder.h>
#include <utils/link.h> #include <utils/link.h>
@@ -72,7 +73,11 @@ QList<LocatorFilterEntry> FileSystemFilter::matchesFor(QFutureInterface<LocatorF
const QString &entry) const QString &entry)
{ {
QList<LocatorFilterEntry> entries[int(MatchLevel::Count)]; QList<LocatorFilterEntry> entries[int(MatchLevel::Count)];
const QFileInfo entryInfo(entry);
Environment env = Environment::systemEnvironment();
const QString expandedEntry = env.expandVariables(entry);
const QFileInfo entryInfo(expandedEntry);
const QString entryFileName = entryInfo.fileName(); const QString entryFileName = entryInfo.fileName();
QString directory = entryInfo.path(); QString directory = entryInfo.path();
if (entryInfo.isRelative()) { if (entryInfo.isRelative()) {
@@ -139,10 +144,10 @@ QList<LocatorFilterEntry> FileSystemFilter::matchesFor(QFutureInterface<LocatorF
// "create and open" functionality // "create and open" functionality
const QString fullFilePath = dirInfo.filePath(entryFileName); const QString fullFilePath = dirInfo.filePath(entryFileName);
const bool containsWildcard = entry.contains('?') || entry.contains('*'); const bool containsWildcard = expandedEntry.contains('?') || expandedEntry.contains('*');
if (!containsWildcard && !QFileInfo::exists(fullFilePath) && dirInfo.exists()) { if (!containsWildcard && !QFileInfo::exists(fullFilePath) && dirInfo.exists()) {
LocatorFilterEntry createAndOpen(this, LocatorFilterEntry createAndOpen(this,
tr("Create and Open \"%1\"").arg(entry), tr("Create and Open \"%1\"").arg(expandedEntry),
fullFilePath); fullFilePath);
createAndOpen.filePath = FilePath::fromString(fullFilePath); createAndOpen.filePath = FilePath::fromString(fullFilePath);
createAndOpen.extraInfo = FilePath::fromString(dirInfo.absolutePath()).shortNativePath(); createAndOpen.extraInfo = FilePath::fromString(dirInfo.absolutePath()).shortNativePath();