Skip to content

Commit 6dba3fd

Browse files
languages/elm: init (#1432)
Signed-off-by: phanirithvij <phanirithvij2000@gmail.com> Co-authored-by: Ching Pei Yang <59727193+horriblename@users.noreply.github.com>
1 parent 750dbfa commit 6dba3fd

3 files changed

Lines changed: 81 additions & 0 deletions

File tree

docs/manual/release-notes/rl-0.9.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,12 @@ https://github.com/gorbit99/codewindow.nvim
274274
- [img-clip.nvim]'s configuration now has it's own DAG entry, separate from
275275
image-nvim.
276276
277+
[phanirithvij](https://github.com/phanirithvij):
278+
279+
[elm-language-server]: https://github.com/elm-tooling/elm-language-server
280+
281+
- Add Elm support with [elm-language-server]
282+
277283
[alv-around](https://github.com/alv-around):
278284
279285
- Fix `vim.assistant.codecompanion-nvim` lazy loading with [blink-cmp]

modules/plugins/languages/default.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ in {
1414
./cmake.nix
1515
./css.nix
1616
./elixir.nix
17+
./elm.nix
1718
./fsharp.nix
1819
./gleam.nix
1920
./glsl.nix

modules/plugins/languages/elm.nix

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
{
2+
config,
3+
pkgs,
4+
lib,
5+
...
6+
}: let
7+
inherit (builtins) attrNames;
8+
inherit (lib.options) mkEnableOption mkOption;
9+
inherit (lib.modules) mkIf mkMerge;
10+
inherit (lib.types) enum;
11+
inherit (lib.nvim.types) mkGrammarOption deprecatedSingleOrListOf;
12+
inherit (lib.meta) getExe;
13+
inherit (lib.nvim.attrsets) mapListToAttrs;
14+
15+
cfg = config.vim.languages.elm;
16+
17+
defaultServers = ["elm-language-server"];
18+
servers = {
19+
elm-language-server = {
20+
enable = true;
21+
cmd = [(getExe pkgs.elmPackages.elm-language-server)];
22+
filetypes = ["elm"];
23+
root_markers = ["elm.json"];
24+
workspace_required = false;
25+
};
26+
};
27+
in {
28+
options.vim.languages.elm = {
29+
enable = mkEnableOption "Elm language support";
30+
31+
treesitter = {
32+
enable =
33+
mkEnableOption "Elm treesitter"
34+
// {
35+
default = config.vim.languages.enableTreesitter;
36+
};
37+
package = mkGrammarOption pkgs "elm";
38+
};
39+
40+
lsp = {
41+
enable =
42+
mkEnableOption "Elm LSP support"
43+
// {
44+
default = config.vim.lsp.enable;
45+
};
46+
47+
servers = mkOption {
48+
type = deprecatedSingleOrListOf "vim.language.elm.lsp.servers" (enum (attrNames servers));
49+
default = defaultServers;
50+
description = "Elm LSP servers to use";
51+
};
52+
};
53+
};
54+
55+
config = mkIf cfg.enable (mkMerge [
56+
(mkIf cfg.treesitter.enable {
57+
vim.treesitter = {
58+
enable = true;
59+
grammars = [cfg.treesitter.package];
60+
};
61+
})
62+
63+
(mkIf cfg.lsp.enable {
64+
vim = {
65+
lsp.servers =
66+
mapListToAttrs (n: {
67+
name = n;
68+
value = servers.${n};
69+
})
70+
cfg.lsp.servers;
71+
};
72+
})
73+
]);
74+
}

0 commit comments

Comments
 (0)