svelte: isolate prettier formatter wiring and fix plugin runtime packaging

This commit is contained in:
suiiii 2026-04-12 21:06:23 +02:00
commit a6d2346e34
No known key found for this signature in database
GPG key ID: 2F1ACB1232E35B05
3 changed files with 43 additions and 9 deletions

View file

@ -8,7 +8,7 @@
inherit (builtins) attrNames;
inherit (lib.options) mkEnableOption mkOption literalExpression;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.meta) getExe;
inherit (lib.meta) getExe getExe';
inherit (lib.types) enum coercedTo;
inherit (lib.nvim.types) mkGrammarOption diagnostics deprecatedSingleOrListOf;
inherit (lib.nvim.attrsets) mapListToAttrs;
@ -16,6 +16,14 @@
cfg = config.vim.languages.svelte;
formatterNames = {
prettier = "prettier_svelte";
biome = "biome";
};
mapFormatterName = name: formatterNames.${name};
configuredFormatters = map mapFormatterName cfg.format.type;
defaultServers = ["svelte"];
servers = {
svelte = {
@ -56,13 +64,12 @@
defaultFormat = ["prettier"];
formats = let
prettierPlugin = inputs.self.packages.${pkgs.stdenv.system}.prettier-plugin-svelte;
prettierPluginPath = "${prettierPlugin}/lib/node_modules/prettier-plugin-svelte/plugin.js";
prettierWithSvelte = inputs.self.packages.${pkgs.stdenv.system}.prettier-plugin-svelte;
in {
prettier = {
command = getExe pkgs.prettier;
prettier_svelte = {
command = getExe' prettierWithSvelte "prettier";
options.ft_parsers.svelte = "svelte";
prepend_args = ["--plugin=${prettierPluginPath}"];
prepend_args = ["--plugin=${prettierWithSvelte}/lib/node_modules/prettier-plugin-svelte/plugin.js"];
};
biome = {
@ -98,7 +105,7 @@
lib.warn
"vim.languages.svelte.format.type: prettierd is deprecated, use prettier instead"
"prettier")
(enum (attrNames formats)));
(enum (attrNames formatterNames)));
in {
options.vim.languages.svelte = {
enable = mkEnableOption "Svelte language support";
@ -179,13 +186,13 @@ in {
vim.formatter.conform-nvim = {
enable = true;
setupOpts = {
formatters_by_ft.svelte = cfg.format.type;
formatters_by_ft.svelte = configuredFormatters;
formatters =
mapListToAttrs (name: {
inherit name;
value = formats.${name};
})
cfg.format.type;
configuredFormatters;
};
};
})