@@ -305,50 +305,24 @@ impl GlobalState {
305305 let files_config = self . config . files ( ) ;
306306 let project_folders = ProjectFolders :: new ( & self . workspaces , & files_config. exclude ) ;
307307
308- let standalone_server_name =
309- format ! ( "rust-analyzer-proc-macro-srv{}" , std:: env:: consts:: EXE_SUFFIX ) ;
310-
311308 if self . proc_macro_clients . is_empty ( ) {
312309 if let Some ( ( path, path_manually_set) ) = self . config . proc_macro_srv ( ) {
313310 tracing:: info!( "Spawning proc-macro servers" ) ;
314311 self . proc_macro_clients = self
315312 . workspaces
316313 . iter ( )
317314 . map ( |ws| {
318- let ( path, args) = if path_manually_set {
315+ let ( path, args) : ( _ , & [ _ ] ) = if path_manually_set {
319316 tracing:: debug!(
320317 "Pro-macro server path explicitly set: {}" ,
321318 path. display( )
322319 ) ;
323- ( path. clone ( ) , vec ! [ ] )
320+ ( path. clone ( ) , & [ ] )
324321 } else {
325- let mut sysroot_server = None ;
326- if let ProjectWorkspace :: Cargo { sysroot, .. }
327- | ProjectWorkspace :: Json { sysroot, .. } = ws
328- {
329- if let Some ( sysroot) = sysroot. as_ref ( ) {
330- let server_path = sysroot
331- . root ( )
332- . join ( "libexec" )
333- . join ( & standalone_server_name) ;
334- if std:: fs:: metadata ( & server_path) . is_ok ( ) {
335- tracing:: debug!(
336- "Sysroot proc-macro server exists at {}" ,
337- server_path. display( )
338- ) ;
339- sysroot_server = Some ( server_path) ;
340- } else {
341- tracing:: debug!(
342- "Sysroot proc-macro server does not exist at {}" ,
343- server_path. display( )
344- ) ;
345- }
346- }
322+ match ws. find_sysroot_proc_macro_srv ( ) {
323+ Some ( server_path) => ( server_path, & [ ] ) ,
324+ None => ( path. clone ( ) , & [ "proc-macro" ] ) ,
347325 }
348- sysroot_server. map_or_else (
349- || ( path. clone ( ) , vec ! [ "proc-macro" . to_owned( ) ] ) ,
350- |path| ( path, vec ! [ ] ) ,
351- )
352326 } ;
353327
354328 tracing:: info!( ?args, "Using proc-macro server at {}" , path. display( ) , ) ;
0 commit comments