1
- using System ;
1
+ using System ;
2
2
using System . Collections ;
3
3
using System . Collections . Generic ;
4
4
using System . IO ;
@@ -8,12 +8,25 @@ namespace Flow.Launcher.Plugin.Explorer.Search
8
8
{
9
9
public static class EnvironmentVariables
10
10
{
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
+
11
24
internal static bool IsEnvironmentVariableSearch ( string search )
12
25
{
13
26
return search . StartsWith ( "%" )
14
27
&& search != "%%"
15
- && ! search . Contains ( "\\ " ) &&
16
- LoadEnvironmentStringPaths ( ) . Count > 0 ;
28
+ && ! search . Contains ( "\\ " )
29
+ && EnvStringPaths . Count > 0 ;
17
30
}
18
31
19
32
internal static Dictionary < string , string > LoadEnvironmentStringPaths ( )
@@ -44,15 +57,14 @@ internal static Dictionary<string, string> LoadEnvironmentStringPaths()
44
57
45
58
internal static string TranslateEnvironmentVariablePath ( string environmentVariablePath )
46
59
{
47
- var envStringPaths = LoadEnvironmentStringPaths ( ) ;
48
60
var splitSearch = environmentVariablePath . Substring ( 1 ) . Split ( "%" ) ;
49
61
var exactEnvStringPath = splitSearch [ 0 ] ;
50
62
51
63
// 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 ) )
53
65
{
54
66
var queryPartToReplace = $ "%{ exactEnvStringPath } %";
55
- var expandedPath = envStringPaths [ exactEnvStringPath ] ;
67
+ var expandedPath = EnvStringPaths [ exactEnvStringPath ] ;
56
68
// replace the %envstring% part of the query with its expanded equivalent
57
69
return environmentVariablePath . Replace ( queryPartToReplace , expandedPath ) ;
58
70
}
@@ -64,17 +76,16 @@ internal static List<Result> GetEnvironmentStringPathSuggestions(string querySea
64
76
{
65
77
var results = new List < Result > ( ) ;
66
78
67
- var environmentVariables = LoadEnvironmentStringPaths ( ) ;
68
79
var search = querySearch ;
69
80
70
81
if ( querySearch . EndsWith ( "%" ) && search . Length > 1 )
71
82
{
72
83
// query starts and ends with a %, find an exact match from env-string paths
73
84
search = querySearch . Substring ( 1 , search . Length - 2 ) ;
74
85
75
- if ( environmentVariables . ContainsKey ( search ) )
86
+ if ( EnvStringPaths . ContainsKey ( search ) )
76
87
{
77
- var expandedPath = environmentVariables [ search ] ;
88
+ var expandedPath = EnvStringPaths [ search ] ;
78
89
79
90
results . Add ( ResultManager . CreateFolderResult ( $ "%{ search } %", expandedPath , expandedPath , query ) ) ;
80
91
@@ -91,7 +102,7 @@ internal static List<Result> GetEnvironmentStringPathSuggestions(string querySea
91
102
search = search . Substring ( 1 ) ;
92
103
}
93
104
94
- foreach ( var p in environmentVariables )
105
+ foreach ( var p in EnvStringPaths )
95
106
{
96
107
if ( p . Key . StartsWith ( search , StringComparison . InvariantCultureIgnoreCase ) )
97
108
{
0 commit comments