|
11 | 11 | inherit (lib.modules) mkIf mkMerge; |
12 | 12 | inherit (lib.types) enum package bool; |
13 | 13 | inherit (lib.nvim.attrsets) mapListToAttrs; |
14 | | - inherit (lib.nvim.types) deprecatedSingleOrListOf; |
| 14 | + inherit (lib.nvim.types) deprecatedSingleOrListOf diagnostics; |
15 | 15 | inherit (lib.generators) mkLuaInline; |
16 | 16 | inherit (lib.nvim.dag) entryBefore; |
17 | 17 | inherit (lib.trivial) warn; |
|
278 | 278 | ''; |
279 | 279 | }; |
280 | 280 | }; |
| 281 | + defaultDiagnosticsProvider = ["mypy"]; |
| 282 | + diagnosticsProviders = { |
| 283 | + mypy = { |
| 284 | + config = { |
| 285 | + cmd = getExe' pkgs.mypy "mypy"; |
| 286 | + }; |
| 287 | + }; |
| 288 | + }; |
281 | 289 | in { |
282 | 290 | options.vim.languages.python = { |
283 | 291 | enable = mkEnableOption "Python language support"; |
@@ -335,6 +343,15 @@ in { |
335 | 343 | ''; |
336 | 344 | }; |
337 | 345 | }; |
| 346 | + |
| 347 | + extraDiagnostics = { |
| 348 | + enable = mkEnableOption "extra Python diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; |
| 349 | + types = diagnostics { |
| 350 | + langDesc = "Python"; |
| 351 | + inherit diagnosticsProviders; |
| 352 | + inherit defaultDiagnosticsProvider; |
| 353 | + }; |
| 354 | + }; |
338 | 355 | }; |
339 | 356 |
|
340 | 357 | config = mkIf cfg.enable (mkMerge [ |
@@ -404,5 +421,15 @@ in { |
404 | 421 | vim.debugger.nvim-dap.enable = true; |
405 | 422 | vim.debugger.nvim-dap.sources.python-debugger = debuggers.${cfg.dap.debugger}.dapConfig; |
406 | 423 | }) |
| 424 | + |
| 425 | + (mkIf cfg.extraDiagnostics.enable { |
| 426 | + vim.diagnostics.nvim-lint = { |
| 427 | + enable = true; |
| 428 | + linters_by_ft.python = cfg.extraDiagnostics.types; |
| 429 | + linters = |
| 430 | + mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;}) |
| 431 | + cfg.extraDiagnostics.types); |
| 432 | + }; |
| 433 | + }) |
407 | 434 | ]); |
408 | 435 | } |
0 commit comments