@@ -61,24 +61,26 @@ public List<Result> Query(Query query)
6161
6262 if ( basedir != null )
6363 {
64- var autocomplete = Directory . GetFileSystemEntries ( basedir ) .
65- Select ( o => dir + Path . GetFileName ( o ) ) .
66- Where ( o => o . StartsWith ( cmd , StringComparison . OrdinalIgnoreCase ) &&
67- ! results . Any ( p => o . Equals ( p . Title , StringComparison . OrdinalIgnoreCase ) ) &&
68- ! results . Any ( p => o . Equals ( p . Title , StringComparison . OrdinalIgnoreCase ) ) ) . ToList ( ) ;
64+ var autocomplete =
65+ Directory . GetFileSystemEntries ( basedir )
66+ . Select ( o => dir + Path . GetFileName ( o ) )
67+ . Where ( o => o . StartsWith ( cmd , StringComparison . OrdinalIgnoreCase ) &&
68+ ! results . Any ( p => o . Equals ( p . Title , StringComparison . OrdinalIgnoreCase ) ) &&
69+ ! results . Any ( p => o . Equals ( p . Title , StringComparison . OrdinalIgnoreCase ) ) ) . ToList ( ) ;
70+
6971 autocomplete . Sort ( ) ;
72+
7073 results . AddRange ( autocomplete . ConvertAll ( m => new Result
7174 {
7275 Title = m ,
7376 IcoPath = Image ,
7477 Action = c =>
7578 {
76- var runAsAdministrator = (
79+ var runAsAdministrator =
7780 c . SpecialKeyState . CtrlPressed &&
7881 c . SpecialKeyState . ShiftPressed &&
7982 ! c . SpecialKeyState . AltPressed &&
80- ! c . SpecialKeyState . WinPressed
81- ) ;
83+ ! c . SpecialKeyState . WinPressed ;
8284
8385 Execute ( Process . Start , PrepareProcessStartInfo ( m , runAsAdministrator ) ) ;
8486 return true ;
@@ -113,12 +115,11 @@ private List<Result> GetHistoryCmds(string cmd, Result result)
113115 IcoPath = Image ,
114116 Action = c =>
115117 {
116- var runAsAdministrator = (
118+ var runAsAdministrator =
117119 c . SpecialKeyState . CtrlPressed &&
118120 c . SpecialKeyState . ShiftPressed &&
119121 ! c . SpecialKeyState . AltPressed &&
120- ! c . SpecialKeyState . WinPressed
121- ) ;
122+ ! c . SpecialKeyState . WinPressed ;
122123
123124 Execute ( Process . Start , PrepareProcessStartInfo ( m . Key , runAsAdministrator ) ) ;
124125 return true ;
@@ -143,12 +144,11 @@ private Result GetCurrentCmd(string cmd)
143144 IcoPath = Image ,
144145 Action = c =>
145146 {
146- var runAsAdministrator = (
147+ var runAsAdministrator =
147148 c . SpecialKeyState . CtrlPressed &&
148149 c . SpecialKeyState . ShiftPressed &&
149150 ! c . SpecialKeyState . AltPressed &&
150- ! c . SpecialKeyState . WinPressed
151- ) ;
151+ ! c . SpecialKeyState . WinPressed ;
152152
153153 Execute ( Process . Start , PrepareProcessStartInfo ( cmd , runAsAdministrator ) ) ;
154154 return true ;
@@ -168,12 +168,11 @@ private List<Result> ResultsFromlHistory()
168168 IcoPath = Image ,
169169 Action = c =>
170170 {
171- var runAsAdministrator = (
171+ var runAsAdministrator =
172172 c . SpecialKeyState . CtrlPressed &&
173173 c . SpecialKeyState . ShiftPressed &&
174174 ! c . SpecialKeyState . AltPressed &&
175- ! c . SpecialKeyState . WinPressed
176- ) ;
175+ ! c . SpecialKeyState . WinPressed ;
177176
178177 Execute ( Process . Start , PrepareProcessStartInfo ( m . Key , runAsAdministrator ) ) ;
179178 return true ;
@@ -203,8 +202,21 @@ private ProcessStartInfo PrepareProcessStartInfo(string command, bool runAsAdmin
203202 case Shell . Cmd :
204203 {
205204 info . FileName = "cmd.exe" ;
206- info . ArgumentList . Add ( _settings . LeaveShellOpen ? "/k" : "/c" ) ;
207- info . ArgumentList . Add ( command ) ;
205+ info . Arguments = $ "{ ( _settings . LeaveShellOpen ? "/k" : "/c" ) } { command } ";
206+
207+ //// Use info.Arguments instead of info.ArgumentList to enable users better control over the arguments they are writing.
208+ //// Previous code using ArgumentList, commands needed to be seperated correctly:
209+ //// Incorrect:
210+ // info.ArgumentList.Add(_settings.LeaveShellOpen ? "/k" : "/c");
211+ // info.ArgumentList.Add(command); //<== info.ArgumentList.Add("mkdir \"c:\\test new\"");
212+
213+ //// Correct version should be:
214+ //info.ArgumentList.Add(_settings.LeaveShellOpen ? "/k" : "/c");
215+ //info.ArgumentList.Add("mkdir");
216+ //info.ArgumentList.Add(@"c:\test new");
217+
218+ //https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.processstartinfo.argumentlist?view=net-6.0#remarks
219+
208220 break ;
209221 }
210222
@@ -366,7 +378,7 @@ public List<Result> LoadContextMenus(Result selectedResult)
366378 Title = context . API . GetTranslation ( "flowlauncher_plugin_cmd_run_as_different_user" ) ,
367379 Action = c =>
368380 {
369- Task . Run ( ( ) => Execute ( ShellCommand . RunAsDifferentUser , PrepareProcessStartInfo ( selectedResult . Title ) ) ) ;
381+ Task . Run ( ( ) => Execute ( ShellCommand . RunAsDifferentUser , PrepareProcessStartInfo ( selectedResult . Title ) ) ) ;
370382 return true ;
371383 } ,
372384 IcoPath = "Images/user.png"
@@ -396,4 +408,4 @@ public List<Result> LoadContextMenus(Result selectedResult)
396408 return resultlist ;
397409 }
398410 }
399- }
411+ }
0 commit comments