@@ -370,6 +370,12 @@ pub struct Daemon {
370
370
pub tcp_port : u64 ,
371
371
}
372
372
373
+ #[ derive( Clone , Debug , Deserialize , Serialize ) ]
374
+ pub struct Search {
375
+ /// The list of enabled filter modes, in order of priority.
376
+ pub filters : Vec < FilterMode > ,
377
+ }
378
+
373
379
impl Default for Preview {
374
380
fn default ( ) -> Self {
375
381
Self {
@@ -400,6 +406,20 @@ impl Default for Daemon {
400
406
}
401
407
}
402
408
409
+ impl Default for Search {
410
+ fn default ( ) -> Self {
411
+ Self {
412
+ filters : vec ! [
413
+ FilterMode :: Global ,
414
+ FilterMode :: Host ,
415
+ FilterMode :: Session ,
416
+ FilterMode :: Workspace ,
417
+ FilterMode :: Directory ,
418
+ ] ,
419
+ }
420
+ }
421
+ }
422
+
403
423
// The preview height strategy also takes max_preview_height into account.
404
424
#[ derive( Clone , Debug , Deserialize , Copy , PartialEq , Eq , ValueEnum , Serialize ) ]
405
425
pub enum PreviewStrategy {
@@ -430,7 +450,7 @@ pub struct Settings {
430
450
pub key_path : String ,
431
451
pub session_path : String ,
432
452
pub search_mode : SearchMode ,
433
- pub filter_mode : FilterMode ,
453
+ pub filter_mode : Option < FilterMode > ,
434
454
pub filter_mode_shell_up_key_binding : Option < FilterMode > ,
435
455
pub search_mode_shell_up_key_binding : Option < SearchMode > ,
436
456
pub shell_up_key_binding : bool ,
@@ -486,6 +506,9 @@ pub struct Settings {
486
506
#[ serde( default ) ]
487
507
pub daemon : Daemon ,
488
508
509
+ #[ serde( default ) ]
510
+ pub search : Search ,
511
+
489
512
#[ serde( default ) ]
490
513
pub theme : Theme ,
491
514
}
@@ -688,6 +711,13 @@ impl Settings {
688
711
None
689
712
}
690
713
714
+ pub fn default_filter_mode ( & self ) -> FilterMode {
715
+ self . filter_mode
716
+ . filter ( |x| self . search . filters . contains ( x) )
717
+ . or ( self . search . filters . first ( ) . copied ( ) )
718
+ . unwrap_or ( FilterMode :: Global )
719
+ }
720
+
691
721
#[ cfg( not( feature = "check-update" ) ) ]
692
722
pub async fn needs_update ( & self ) -> Option < Version > {
693
723
None
@@ -715,7 +745,7 @@ impl Settings {
715
745
. set_default ( "sync_address" , "https://api.atuin.sh" ) ?
716
746
. set_default ( "sync_frequency" , "10m" ) ?
717
747
. set_default ( "search_mode" , "fuzzy" ) ?
718
- . set_default ( "filter_mode" , "global" ) ?
748
+ . set_default ( "filter_mode" , None :: < String > ) ?
719
749
. set_default ( "style" , "compact" ) ?
720
750
. set_default ( "inline_height" , 40 ) ?
721
751
. set_default ( "show_preview" , true ) ?
@@ -758,6 +788,10 @@ impl Settings {
758
788
. set_default ( "daemon.socket_path" , socket_path. to_str ( ) ) ?
759
789
. set_default ( "daemon.systemd_socket" , false ) ?
760
790
. set_default ( "daemon.tcp_port" , 8889 ) ?
791
+ . set_default (
792
+ "search.filters" ,
793
+ vec ! [ "global" , "host" , "session" , "workspace" , "directory" ] ,
794
+ ) ?
761
795
. set_default ( "theme.name" , "default" ) ?
762
796
. set_default ( "theme.debug" , None :: < bool > ) ?
763
797
. set_default (
0 commit comments