@@ -20,8 +20,8 @@ use crate::{
2020pub use client_config:: { ClientConfig , get_client_config} ;
2121use codestyle:: load_editorconfig;
2222use collect_files:: collect_files;
23- use emmylua_code_analysis:: { EmmyLuaAnalysis , Emmyrc , uri_to_file_path} ;
24- use lsp_types:: InitializeParams ;
23+ use emmylua_code_analysis:: { EmmyLuaAnalysis , Emmyrc , file_path_to_uri , uri_to_file_path} ;
24+ use lsp_types:: { InitializeParams , Uri } ;
2525use tokio:: sync:: RwLock ;
2626
2727pub async fn initialized_handler (
@@ -150,18 +150,25 @@ pub async fn init_analysis(
150150 ) ;
151151
152152 // load files
153- let files = collect_files ( & workspace_folders, & emmyrc) ;
154- let files: Vec < ( PathBuf , Option < String > ) > =
155- files. into_iter ( ) . map ( |file| file. into_tuple ( ) ) . collect ( ) ;
153+ let files: Vec < emmylua_code_analysis:: LuaFileInfo > = collect_files ( & workspace_folders, & emmyrc) ;
154+ let files: Vec < ( Uri , Option < String > ) > = files
155+ . into_iter ( )
156+ . filter_map ( |file| {
157+ let ( path, text) = file. into_tuple ( ) ;
158+ let uri = file_path_to_uri ( & path) ?;
159+ Some ( ( uri, text) )
160+ } )
161+ . collect ( ) ;
156162 let file_count = files. len ( ) ;
157163 if file_count != 0 {
158- status_bar. update_progress_task (
159- ProgressTask :: LoadWorkspace ,
160- None ,
161- Some ( format ! ( "Indexing {} files" , file_count) ) ,
162- ) ;
163-
164- mut_analysis. update_files_by_path ( files) ;
164+ mut_analysis. update_files_by_uri_with_progress ( files, |idx, total_count| {
165+ let percentage = ( idx as u32 ) * 100 / ( total_count as u32 ) + 1 ;
166+ status_bar. update_progress_task (
167+ ProgressTask :: LoadWorkspace ,
168+ Some ( percentage. clamp ( 0 , 100 ) ) ,
169+ Some ( format ! ( "Indexing {} files" , total_count) ) ,
170+ ) ;
171+ } ) ;
165172 }
166173
167174 status_bar. update_progress_task (
0 commit comments