@@ -13,6 +13,7 @@ use lsp_types::{ClientCapabilities, NumberOrString};
1313use ra_cargo_watch:: { CheckOptions , CheckTask } ;
1414use ra_ide:: { Canceled , FeatureFlags , FileId , LibraryData , SourceRootId } ;
1515use ra_prof:: profile;
16+ use ra_project_model:: WorkspaceError ;
1617use ra_vfs:: { VfsTask , Watch } ;
1718use relative_path:: RelativePathBuf ;
1819use rustc_hash:: FxHashSet ;
@@ -62,6 +63,22 @@ pub fn main_loop(
6263
6364 let mut loop_state = LoopState :: default ( ) ;
6465 let mut world_state = {
66+ let feature_flags = {
67+ let mut ff = FeatureFlags :: default ( ) ;
68+ for ( flag, value) in config. feature_flags {
69+ if ff. set ( flag. as_str ( ) , value) . is_err ( ) {
70+ log:: error!( "unknown feature flag: {:?}" , flag) ;
71+ show_message (
72+ req:: MessageType :: Error ,
73+ format ! ( "unknown feature flag: {:?}" , flag) ,
74+ & connection. sender ,
75+ ) ;
76+ }
77+ }
78+ ff
79+ } ;
80+ log:: info!( "feature_flags: {:#?}" , feature_flags) ;
81+
6582 // FIXME: support dynamic workspace loading.
6683 let workspaces = {
6784 let mut loaded_workspaces = Vec :: new ( ) ;
@@ -75,7 +92,11 @@ pub fn main_loop(
7592 Ok ( workspace) => loaded_workspaces. push ( workspace) ,
7693 Err ( e) => {
7794 log:: error!( "loading workspace failed: {}" , e) ;
78-
95+ if let WorkspaceError :: CargoTomlNotFound ( _) = e {
96+ if !feature_flags. get ( "notifications.cargo-toml-not-found" ) {
97+ continue ;
98+ }
99+ }
79100 show_message (
80101 req:: MessageType :: Error ,
81102 format ! ( "rust-analyzer failed to load workspace: {}" , e) ,
@@ -136,22 +157,6 @@ pub fn main_loop(
136157 }
137158 } ;
138159
139- let feature_flags = {
140- let mut ff = FeatureFlags :: default ( ) ;
141- for ( flag, value) in config. feature_flags {
142- if ff. set ( flag. as_str ( ) , value) . is_err ( ) {
143- log:: error!( "unknown feature flag: {:?}" , flag) ;
144- show_message (
145- req:: MessageType :: Error ,
146- format ! ( "unknown feature flag: {:?}" , flag) ,
147- & connection. sender ,
148- ) ;
149- }
150- }
151- ff
152- } ;
153- log:: info!( "feature_flags: {:#?}" , feature_flags) ;
154-
155160 WorldState :: new (
156161 ws_roots,
157162 workspaces,
0 commit comments