Skip to content

Commit 983f0aa

Browse files
Use a static dictionary for environment vars
1 parent 6efa9d1 commit 983f0aa

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

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

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections;
33
using System.Collections.Generic;
44
using System.IO;
@@ -8,12 +8,25 @@ namespace Flow.Launcher.Plugin.Explorer.Search
88
{
99
public static class EnvironmentVariables
1010
{
11+
private static Dictionary<string, string> _envStringPaths = null;
12+
private static Dictionary<string, string> EnvStringPaths
13+
{
14+
get
15+
{
16+
if (_envStringPaths == null)
17+
{
18+
_envStringPaths = LoadEnvironmentStringPaths();
19+
}
20+
return _envStringPaths;
21+
}
22+
}
23+
1124
internal static bool IsEnvironmentVariableSearch(string search)
1225
{
1326
return search.StartsWith("%")
1427
&& search != "%%"
15-
&& !search.Contains("\\") &&
16-
LoadEnvironmentStringPaths().Count > 0;
28+
&& !search.Contains("\\")
29+
&& EnvStringPaths.Count > 0;
1730
}
1831

1932
internal static Dictionary<string, string> LoadEnvironmentStringPaths()
@@ -44,15 +57,14 @@ internal static Dictionary<string, string> LoadEnvironmentStringPaths()
4457

4558
internal static string TranslateEnvironmentVariablePath(string environmentVariablePath)
4659
{
47-
var envStringPaths = LoadEnvironmentStringPaths();
4860
var splitSearch = environmentVariablePath.Substring(1).Split("%");
4961
var exactEnvStringPath = splitSearch[0];
5062

5163
// if there are more than 2 % characters in the query, don't bother
52-
if (splitSearch.Length == 2 && envStringPaths.ContainsKey(exactEnvStringPath))
64+
if (splitSearch.Length == 2 && EnvStringPaths.ContainsKey(exactEnvStringPath))
5365
{
5466
var queryPartToReplace = $"%{exactEnvStringPath}%";
55-
var expandedPath = envStringPaths[exactEnvStringPath];
67+
var expandedPath = EnvStringPaths[exactEnvStringPath];
5668
// replace the %envstring% part of the query with its expanded equivalent
5769
return environmentVariablePath.Replace(queryPartToReplace, expandedPath);
5870
}
@@ -64,17 +76,16 @@ internal static List<Result> GetEnvironmentStringPathSuggestions(string querySea
6476
{
6577
var results = new List<Result>();
6678

67-
var environmentVariables = LoadEnvironmentStringPaths();
6879
var search = querySearch;
6980

7081
if (querySearch.EndsWith("%") && search.Length > 1)
7182
{
7283
// query starts and ends with a %, find an exact match from env-string paths
7384
search = querySearch.Substring(1, search.Length - 2);
7485

75-
if (environmentVariables.ContainsKey(search))
86+
if (EnvStringPaths.ContainsKey(search))
7687
{
77-
var expandedPath = environmentVariables[search];
88+
var expandedPath = EnvStringPaths[search];
7889

7990
results.Add(ResultManager.CreateFolderResult($"%{search}%", expandedPath, expandedPath, query));
8091

@@ -91,7 +102,7 @@ internal static List<Result> GetEnvironmentStringPathSuggestions(string querySea
91102
search = search.Substring(1);
92103
}
93104

94-
foreach (var p in environmentVariables)
105+
foreach (var p in EnvStringPaths)
95106
{
96107
if (p.Key.StartsWith(search, StringComparison.InvariantCultureIgnoreCase))
97108
{

0 commit comments

Comments
 (0)