From 1af12636cd4f519a9c0110179d03e99caa236ecd Mon Sep 17 00:00:00 2001 From: Snoweuph Date: Sat, 24 Jan 2026 00:18:32 +0100 Subject: [PATCH] language/just: formatter --- docs/manual/release-notes/rl-0.9.md | 4 ++++ modules/plugins/languages/just.nix | 37 +++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/docs/manual/release-notes/rl-0.9.md b/docs/manual/release-notes/rl-0.9.md index c38d2421..234ddfa0 100644 --- a/docs/manual/release-notes/rl-0.9.md +++ b/docs/manual/release-notes/rl-0.9.md @@ -144,3 +144,7 @@ [Machshev](https://github.com/machshev): - Added `ruff` and `ty` LSP support for Python under `programs.python`. + +[Snoweuph](https://github.com/snoweuph) + +- Added Formatting support to the `just` language through its builtin formatter. diff --git a/modules/plugins/languages/just.nix b/modules/plugins/languages/just.nix index 7645f255..1d12e7a8 100644 --- a/modules/plugins/languages/just.nix +++ b/modules/plugins/languages/just.nix @@ -23,6 +23,18 @@ root_markers = [".git" "justfile"]; }; }; + + defaultFormat = ["just"]; + + formats = { + just = { + command = getExe pkgs.just; + args = [ + "--unstable" + "--fmt" + ]; + }; + }; in { options.vim.languages.just = { enable = mkEnableOption "Just support"; @@ -42,6 +54,16 @@ in { description = "Just LSP server to use"; }; }; + + format = { + enable = mkEnableOption "Justfile formatting" // {default = config.vim.languages.enableFormat;}; + + type = mkOption { + description = "Justfile formatter to use"; + type = listOf (enum (attrNames formats)); + default = defaultFormat; + }; + }; }; config = mkIf cfg.enable (mkMerge [ @@ -60,5 +82,20 @@ in { }) cfg.lsp.servers; }) + + (mkIf cfg.format.enable { + vim.formatter.conform-nvim = { + enable = true; + setupOpts = { + formatters_by_ft.just = cfg.format.type; + formatters = + mapListToAttrs (name: { + inherit name; + value = formats.${name}; + }) + cfg.format.type; + }; + }; + }) ]); }