@@ -10,7 +10,7 @@ use gpui::{
1010
1111use crate :: config:: Config ;
1212use crate :: finder:: desktop:: SearchEntries ;
13- use crate :: finder:: { Entry , EntryExecuteResult , Finder } ;
13+ use crate :: finder:: { Entry , EntryExecuteResult , Finder , default_finders } ;
1414use crate :: ui:: actions:: { Close , ExecuteEntry , SelectNextEntry , SelectPrevEntry , ToggleFavorite } ;
1515use crate :: ui:: elements:: { EntryButton , Icon , PowerOptions , Separator , Shortcut , TextInput } ;
1616
@@ -34,6 +34,8 @@ pub struct Waystart {
3434 list_scroll_handle : UniformListScrollHandle ,
3535 search_bar : Entity < TextInput > ,
3636 selected : usize ,
37+
38+ finders : Vec < Box < dyn Finder > > ,
3739 matcher : RefCell < nucleo_matcher:: Matcher > ,
3840}
3941
@@ -51,10 +53,12 @@ impl Waystart {
5153
5254 Self {
5355 focus_handle,
54- entries : cx. global :: < SearchEntries > ( ) . default_entries ( ) . collect ( ) ,
56+ entries : cx. global :: < SearchEntries > ( ) . default_entries ( ) . unwrap ( ) ,
5557 list_scroll_handle : UniformListScrollHandle :: new ( ) ,
5658 search_bar,
5759 selected : 0 ,
60+
61+ finders : default_finders ( ) ,
5862 matcher : RefCell :: new ( nucleo_matcher:: Matcher :: default ( ) ) ,
5963 }
6064 }
@@ -66,21 +70,28 @@ impl Waystart {
6670 }
6771
6872 fn filter_results ( & mut self , cx : & mut Context < Self > ) {
69- if let Some ( entries) = cx. try_global :: < SearchEntries > ( ) {
70- self . entries . clear ( ) ;
71- let search_term = self . search_bar . read ( cx) . content ( ) . trim ( ) ;
73+ self . entries . clear ( ) ;
74+ let search_term = self . search_bar . read ( cx) . content ( ) . trim ( ) ;
7275
73- if search_term. is_empty ( ) {
74- self . entries . extend ( entries. default_entries ( ) ) ;
75- } else {
76- let mut matcher = self . matcher . borrow_mut ( ) ;
77- self . entries
78- . extend ( entries. filtered_entries ( & mut matcher, search_term) ) ;
79- }
80-
81- self . selected = 0 ;
82- cx. notify ( ) ;
76+ if search_term. is_empty ( ) {
77+ self . entries . extend (
78+ self . finders
79+ . iter ( )
80+ . filter_map ( |finder| finder. default_entries ( ) )
81+ . flatten ( ) ,
82+ ) ;
83+ } else {
84+ let mut matcher = self . matcher . borrow_mut ( ) ;
85+ self . entries . extend (
86+ self . finders
87+ . iter ( )
88+ . filter_map ( |finder| finder. filtered_entries ( & mut matcher, search_term) )
89+ . flatten ( ) ,
90+ ) ;
8391 }
92+
93+ self . selected = 0 ;
94+ cx. notify ( ) ;
8495 }
8596
8697 fn on_close ( _: & Close , window : & mut Window , _cx : & mut App ) {
0 commit comments