11{
2+ self ,
23 config ,
34 pkgs ,
45 lib ,
89 inherit ( lib . options ) mkEnableOption mkOption ;
910 inherit ( lib . modules ) mkIf mkMerge ;
1011 inherit ( lib . meta ) getExe ;
11- inherit ( lib . types ) enum package ;
12+ inherit ( lib . types ) enum coercedTo ;
1213 inherit ( lib . nvim . attrsets ) mapListToAttrs ;
13- inherit ( lib . nvim . types ) mkGrammarOption diagnostics singleOrListOf ;
14+ inherit ( lib . nvim . types ) mkGrammarOption diagnostics deprecatedSingleOrListOf ;
1415 inherit ( lib . generators ) mkLuaInline ;
1516
1617 cfg = config . vim . languages . astro ;
4041 } ;
4142 } ;
4243
43- # TODO: specify packages
44- defaultFormat = "prettier" ;
45- formats = {
44+ defaultFormat = [ "prettier" ] ;
45+ formats = let
46+ parser = "${ self . packages . ${ pkgs . stdenv . system } . prettier-plugin-astro } /index.js" ;
47+ in {
4648 prettier = {
47- package = pkgs . prettier ;
48- } ;
49-
50- prettierd = {
51- package = pkgs . prettierd ;
49+ command = getExe pkgs . nodePackages . prettier ;
50+ options . ft_parsers . astro = "astro" ;
51+ prepend_args = [ "--plugin=${ parser } " ] ;
5252 } ;
5353
5454 biome = {
55- package = pkgs . biome ;
55+ command = getExe pkgs . biome ;
5656 } ;
5757 } ;
5858
59- # TODO: specify packages
6059 defaultDiagnosticsProvider = [ "eslint_d" ] ;
6160 diagnosticsProviders = {
6261 eslint_d = let
7675 } ;
7776 } ;
7877 } ;
78+
79+ formatType =
80+ deprecatedSingleOrListOf
81+ "vim.languages.astro.format.type"
82+ ( coercedTo ( enum [ "prettierd" ] ) ( _ :
83+ lib . warn
84+ "vim.languages.astro.format.type: prettierd is deprecated, use prettier instead"
85+ "prettier" )
86+ ( enum ( attrNames formats ) ) ) ;
7987in {
8088 options . vim . languages . astro = {
8189 enable = mkEnableOption "Astro language support" ;
8997 lsp = {
9098 enable = mkEnableOption "Astro LSP support" // { default = config . vim . lsp . enable ; } ;
9199 servers = mkOption {
92- type = singleOrListOf ( enum ( attrNames servers ) ) ;
100+ type = deprecatedSingleOrListOf "vim.language.astro.lsp.servers" ( enum ( attrNames servers ) ) ;
93101 default = defaultServers ;
94102 description = "Astro LSP server to use" ;
95103 } ;
@@ -99,16 +107,10 @@ in {
99107 enable = mkEnableOption "Astro formatting" // { default = config . vim . languages . enableFormat ; } ;
100108
101109 type = mkOption {
102- type = enum ( attrNames formats ) ;
110+ type = formatType ;
103111 default = defaultFormat ;
104112 description = "Astro formatter to use" ;
105113 } ;
106-
107- package = mkOption {
108- type = package ;
109- default = formats . ${ cfg. format . type } . package ;
110- description = "Astro formatter package" ;
111- } ;
112114 } ;
113115
114116 extraDiagnostics = {
@@ -140,9 +142,14 @@ in {
140142 ( mkIf cfg . format . enable {
141143 vim . formatter . conform-nvim = {
142144 enable = true ;
143- setupOpts . formatters_by_ft . astro = [ cfg . format . type ] ;
144- setupOpts . formatters . ${ cfg . format . type } = {
145- command = getExe cfg . format . package ;
145+ setupOpts = {
146+ formatters_by_ft . astro = cfg . format . type ;
147+ formatters =
148+ mapListToAttrs ( name : {
149+ inherit name ;
150+ value = formats . ${ name } ;
151+ } )
152+ cfg . format . type ;
146153 } ;
147154 } ;
148155 } )
0 commit comments