11use std:: { borrow:: Cow , collections:: HashMap , ffi:: OsString , mem} ;
22
33use yazi_config:: { OPEN , open:: Opener } ;
4+ use yazi_proxy:: options:: ProcessExecOpt ;
45use yazi_shared:: url:: Url ;
56
67use super :: Tasks ;
78
89impl Tasks {
9- pub fn process_from_files ( & self , hovered : Url , targets : Vec < ( Url , Cow < str > ) > ) {
10+ pub fn process_from_files ( & self , cwd : Url , hovered : Url , targets : Vec < ( Url , Cow < str > ) > ) {
1011 let mut openers = HashMap :: new ( ) ;
1112 for ( url, mime) in targets {
1213 if let Some ( opener) = OPEN . openers ( & url, mime) . and_then ( |o| o. first ( ) . copied ( ) ) {
@@ -15,27 +16,38 @@ impl Tasks {
1516 }
1617 for ( opener, args) in openers {
1718 self . process_from_opener (
19+ cwd. clone ( ) ,
1820 Cow :: Borrowed ( opener) ,
1921 args. into_iter ( ) . map ( |u| u. into_path ( ) . into_os_string ( ) ) . collect ( ) ,
2022 ) ;
2123 }
2224 }
2325
24- pub fn process_from_opener ( & self , opener : Cow < ' static , Opener > , mut args : Vec < OsString > ) {
26+ pub fn process_from_opener (
27+ & self ,
28+ cwd : Url ,
29+ opener : Cow < ' static , Opener > ,
30+ mut args : Vec < OsString > ,
31+ ) {
2532 if opener. spread {
26- self . scheduler . process_open ( opener, args, None ) ;
33+ self . scheduler . process_open ( ProcessExecOpt { cwd , opener, args, done : None } ) ;
2734 return ;
2835 }
2936 if args. is_empty ( ) {
3037 return ;
3138 }
3239 if args. len ( ) == 2 {
33- self . scheduler . process_open ( opener, args, None ) ;
40+ self . scheduler . process_open ( ProcessExecOpt { cwd , opener, args, done : None } ) ;
3441 return ;
3542 }
3643 let hovered = mem:: take ( & mut args[ 0 ] ) ;
3744 for target in args. into_iter ( ) . skip ( 1 ) {
38- self . scheduler . process_open ( opener. clone ( ) , vec ! [ hovered. clone( ) , target] , None ) ;
45+ self . scheduler . process_open ( ProcessExecOpt {
46+ cwd : cwd. clone ( ) ,
47+ opener : opener. clone ( ) ,
48+ args : vec ! [ hovered. clone( ) , target] ,
49+ done : None ,
50+ } ) ;
3951 }
4052 }
4153}
0 commit comments