|
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