Skip to content

Commit 009ee3d

Browse files
Simplify environment variable detection
1 parent 983f0aa commit 009ee3d

File tree

2 files changed

+12
-19
lines changed

2 files changed

+12
-19
lines changed

Plugins/Flow.Launcher.Plugin.Explorer/Search/EnvironmentVariables.cs

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,17 @@ private static Dictionary<string, string> EnvStringPaths
2323

2424
internal static bool IsEnvironmentVariableSearch(string search)
2525
{
26-
return search.StartsWith("%")
26+
return search.StartsWith("%")
2727
&& search != "%%"
28-
&& !search.Contains("\\")
28+
&& !search.Contains('\\')
2929
&& EnvStringPaths.Count > 0;
3030
}
3131

32+
internal static bool BeginsWithEnvironmentVar(string search)
33+
{
34+
return search[0] == '%' && search[1..].Contains("%\\");
35+
}
36+
3237
internal static Dictionary<string, string> LoadEnvironmentStringPaths()
3338
{
3439
var envStringPaths = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
@@ -57,19 +62,7 @@ internal static Dictionary<string, string> LoadEnvironmentStringPaths()
5762

5863
internal static string TranslateEnvironmentVariablePath(string environmentVariablePath)
5964
{
60-
var splitSearch = environmentVariablePath.Substring(1).Split("%");
61-
var exactEnvStringPath = splitSearch[0];
62-
63-
// if there are more than 2 % characters in the query, don't bother
64-
if (splitSearch.Length == 2 && EnvStringPaths.ContainsKey(exactEnvStringPath))
65-
{
66-
var queryPartToReplace = $"%{exactEnvStringPath}%";
67-
var expandedPath = EnvStringPaths[exactEnvStringPath];
68-
// replace the %envstring% part of the query with its expanded equivalent
69-
return environmentVariablePath.Replace(queryPartToReplace, expandedPath);
70-
}
71-
72-
return environmentVariablePath;
65+
return Environment.ExpandEnvironmentVariables(environmentVariablePath);
7366
}
7467

7568
internal static List<Result> GetEnvironmentStringPathSuggestions(string querySearch, Query query, PluginInitContext context)
@@ -86,9 +79,9 @@ internal static List<Result> GetEnvironmentStringPathSuggestions(string querySea
8679
if (EnvStringPaths.ContainsKey(search))
8780
{
8881
var expandedPath = EnvStringPaths[search];
89-
82+
9083
results.Add(ResultManager.CreateFolderResult($"%{search}%", expandedPath, expandedPath, query));
91-
84+
9285
return results;
9386
}
9487
}
@@ -101,7 +94,7 @@ internal static List<Result> GetEnvironmentStringPathSuggestions(string querySea
10194
{
10295
search = search.Substring(1);
10396
}
104-
97+
10598
foreach (var p in EnvStringPaths)
10699
{
107100
if (p.Key.StartsWith(search, StringComparison.InvariantCultureIgnoreCase))

Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ private async Task<List<Result>> PathSearchAsync(Query query, CancellationToken
175175
return EnvironmentVariables.GetEnvironmentStringPathSuggestions(querySearch, query, Context);
176176

177177
// Query is a location path with a full environment variable, eg. %appdata%\somefolder\
178-
var isEnvironmentVariablePath = querySearch[0] == '%' && querySearch[1..].Contains("%\\");
178+
var isEnvironmentVariablePath = EnvironmentVariables.BeginsWithEnvironmentVar(querySearch);
179179

180180
var locationPath = querySearch;
181181

0 commit comments

Comments
 (0)