@@ -1227,54 +1227,56 @@ impl Workspace for WorkspaceServer {
12271227 let parse = self . get_parse ( & path) ?;
12281228 let language = self . get_file_source ( & path) ;
12291229 let capabilities = self . features . get_capabilities ( language) ;
1230- let ( diagnostics, errors, skipped_diagnostics) =
1231- if let Some ( lint) = capabilities. analyzer . lint {
1232- let settings = self
1233- . projects
1234- . get_settings_based_on_path ( project_key, & path)
1235- . ok_or_else ( WorkspaceError :: no_project) ?;
1236-
1237- let plugins = self
1238- . get_analyzer_plugins_for_project (
1239- settings. source_path ( ) . unwrap_or_default ( ) . as_path ( ) ,
1240- & settings. get_plugins_for_path ( & path) ,
1241- )
1242- . map_err ( WorkspaceError :: plugin_errors) ?;
1243-
1244- let results = lint ( LintParams {
1245- parse,
1246- settings : & settings,
1247- path : & path,
1248- only,
1249- skip,
1250- language,
1251- categories,
1252- module_graph : self . module_graph . clone ( ) ,
1253- project_layout : self . project_layout . clone ( ) ,
1254- suppression_reason : None ,
1255- enabled_rules,
1256- pull_code_actions,
1257- plugins : if categories. contains ( RuleCategory :: Lint ) {
1258- plugins
1259- } else {
1260- Vec :: new ( )
1261- } ,
1262- } ) ;
1230+ let ( diagnostics, errors, skipped_diagnostics) = if ( categories. is_lint ( )
1231+ || categories. is_assist ( ) )
1232+ && let Some ( lint) = capabilities. analyzer . lint
1233+ {
1234+ let settings = self
1235+ . projects
1236+ . get_settings_based_on_path ( project_key, & path)
1237+ . ok_or_else ( WorkspaceError :: no_project) ?;
12631238
1264- (
1265- results . diagnostics ,
1266- results . errors ,
1267- results . skipped_diagnostics ,
1239+ let plugins = self
1240+ . get_analyzer_plugins_for_project (
1241+ settings . source_path ( ) . unwrap_or_default ( ) . as_path ( ) ,
1242+ & settings . get_plugins_for_path ( & path ) ,
12681243 )
1269- } else {
1270- let parse_diagnostics = parse. into_diagnostics ( ) ;
1271- let errors = parse_diagnostics
1272- . iter ( )
1273- . filter ( |diag| diag. severity ( ) <= Severity :: Error )
1274- . count ( ) ;
1244+ . map_err ( WorkspaceError :: plugin_errors) ?;
1245+
1246+ let results = lint ( LintParams {
1247+ parse,
1248+ settings : & settings,
1249+ path : & path,
1250+ only,
1251+ skip,
1252+ language,
1253+ categories,
1254+ module_graph : self . module_graph . clone ( ) ,
1255+ project_layout : self . project_layout . clone ( ) ,
1256+ suppression_reason : None ,
1257+ enabled_rules,
1258+ pull_code_actions,
1259+ plugins : if categories. is_lint ( ) {
1260+ plugins
1261+ } else {
1262+ Vec :: new ( )
1263+ } ,
1264+ } ) ;
12751265
1276- ( parse_diagnostics, errors, 0 )
1277- } ;
1266+ (
1267+ results. diagnostics ,
1268+ results. errors ,
1269+ results. skipped_diagnostics ,
1270+ )
1271+ } else {
1272+ let parse_diagnostics = parse. into_diagnostics ( ) ;
1273+ let errors = parse_diagnostics
1274+ . iter ( )
1275+ . filter ( |diag| diag. severity ( ) <= Severity :: Error )
1276+ . count ( ) ;
1277+
1278+ ( parse_diagnostics, errors, 0 )
1279+ } ;
12781280
12791281 info ! (
12801282 "Pulled {:?} diagnostic(s), skipped {:?} diagnostic(s) from {}" ,
0 commit comments