|
2 | 2 | use std::{mem, sync::Arc}; |
3 | 3 |
|
4 | 4 | use base_db::{CrateGraph, SourceRoot, VfsPath}; |
5 | | -use flycheck::FlycheckHandle; |
| 5 | +use flycheck::{FlycheckConfig, FlycheckHandle}; |
6 | 6 | use ide::AnalysisChange; |
7 | 7 | use project_model::{ProcMacroClient, ProjectWorkspace}; |
8 | 8 | use vfs::{file_set::FileSetConfig, AbsPath, AbsPathBuf, ChangeKind}; |
@@ -244,13 +244,17 @@ impl GlobalState { |
244 | 244 | .iter() |
245 | 245 | // FIXME: Figure out the multi-workspace situation |
246 | 246 | .find_map(|w| match w { |
247 | | - ProjectWorkspace::Cargo { cargo, sysroot: _ } => Some(cargo), |
248 | | - ProjectWorkspace::Json { .. } => None, |
249 | | - }) |
250 | | - .map(move |cargo| { |
251 | | - let cargo_project_root = cargo.workspace_root().to_path_buf(); |
252 | | - FlycheckHandle::spawn(sender, config, cargo_project_root.into()) |
| 247 | + ProjectWorkspace::Cargo { cargo, sysroot: _ } => Some(cargo.workspace_root()), |
| 248 | + ProjectWorkspace::Json { project, .. } => { |
| 249 | + // Enable flychecks for json projects if a custom flycheck command was supplied |
| 250 | + // in the workspace configuration. |
| 251 | + match config { |
| 252 | + FlycheckConfig::CustomCommand { .. } => project.path(), |
| 253 | + _ => None, |
| 254 | + } |
| 255 | + } |
253 | 256 | }) |
| 257 | + .map(move |root| FlycheckHandle::spawn(sender, config, root.to_path_buf().into())) |
254 | 258 | } |
255 | 259 | } |
256 | 260 |
|
|
0 commit comments