|
1 | | -use std::{path::PathBuf, sync::Arc}; |
| 1 | +use std::{path::PathBuf, str::FromStr, sync::Arc}; |
2 | 2 |
|
3 | | -use emmylua_code_analysis::{load_configs, load_workspace_files, EmmyLuaAnalysis, Emmyrc, LuaFileInfo}; |
| 3 | +use emmylua_code_analysis::{ |
| 4 | + load_configs, load_workspace_files, EmmyLuaAnalysis, Emmyrc, LuaFileInfo, |
| 5 | +}; |
4 | 6 |
|
5 | 7 | #[allow(unused)] |
6 | 8 | pub fn load_workspace(workspace_folders: Vec<&str>) -> Option<EmmyLuaAnalysis> { |
7 | 9 | let mut analysis = EmmyLuaAnalysis::new(); |
8 | 10 | analysis.init_std_lib(false); |
9 | 11 |
|
10 | | - let paths = workspace_folders |
| 12 | + let mut workspace_folders = workspace_folders |
11 | 13 | .iter() |
12 | 14 | .map(|s| PathBuf::from(s)) |
13 | 15 | .collect::<Vec<_>>(); |
14 | | - for path in &paths { |
| 16 | + for path in &workspace_folders { |
15 | 17 | analysis.add_workspace_root(path.clone()); |
16 | 18 | } |
17 | 19 |
|
18 | | - let main_path = paths.get(0)?.clone(); |
| 20 | + let main_path = workspace_folders.get(0)?.clone(); |
19 | 21 | let config_files = vec![ |
20 | 22 | main_path.join(".luarc.json"), |
21 | 23 | main_path.join(".emmyrc.json"), |
22 | 24 | ]; |
23 | | - let emmyrc = Arc::new(load_configs(config_files, None)); |
| 25 | + let mut emmyrc = load_configs(config_files, None); |
| 26 | + emmyrc.pre_process_emmyrc(&main_path); |
| 27 | + let emmyrc = Arc::new(emmyrc); |
| 28 | + |
| 29 | + for root in &emmyrc.workspace.workspace_roots { |
| 30 | + analysis.add_workspace_root(PathBuf::from_str(root).unwrap()); |
| 31 | + } |
| 32 | + |
| 33 | + for lib in &emmyrc.workspace.library { |
| 34 | + analysis.add_workspace_root(PathBuf::from_str(lib).unwrap()); |
| 35 | + workspace_folders.push(PathBuf::from_str(lib).unwrap()); |
| 36 | + } |
| 37 | + |
24 | 38 | analysis.update_config(emmyrc); |
25 | 39 |
|
26 | | - let file_infos = collect_files(&paths, &analysis.emmyrc); |
| 40 | + let file_infos = collect_files(&workspace_folders, &analysis.emmyrc); |
27 | 41 | let files = file_infos |
28 | 42 | .into_iter() |
29 | 43 | .map(|file| file.into_tuple()) |
|
0 commit comments