Skip to content

Commit 65adcd3

Browse files
committed
languages/angular: init
1 parent 93aaf85 commit 65adcd3

7 files changed

Lines changed: 115 additions & 2 deletions

File tree

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545

4646
[Snoweuph](https://github.com/snoweuph)
4747

48+
- Moved all angular related stuff into its own language module.
49+
4850
- Remove `mind.nvim`. This plugin doesn't exist anymore. The original author
4951
deleted all their GitHub repositories and moved to
5052
[sourcehut](https://sr.ht/~hadronized/). Some repositories where migrated.

modules/extra/deprecations.nix

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@
4747
mkRemovedFormatPackage = lang: (mkRemovedOptionModule ["vim" "languages" lang "format" "package"] ''
4848
`vim.languages.${lang}.format.package` is removed, please use `vim.formatter.conform-nvim.formatters.<formatter_name>.command` instead.
4949
'');
50+
51+
mkRemovedEnumListOption = optionPath: removedValue: msg: {lib, ...}: {
52+
# ''
53+
# The value `${removedValue}` was removed from `${lib.concatStringsSep "." optionPath}`.
54+
# ${msg}
55+
# '';
56+
};
5057
in {
5158
imports = concatLists [
5259
[
@@ -439,5 +446,15 @@ in {
439446
Use `vim.formatter.conform-nvim.setupOpts.formatters_by_ft.<ft> = ["<formatter>", ...]` to register extra formatters per filetype.
440447
'')
441448
]
449+
450+
# 2026-07-03
451+
[
452+
(mkRemovedEnumListOption ["vim" "languages" "html" "lsp" "servers"] "angular-language-server" ''
453+
Use `languages.angular.lsp.servers` instead.
454+
'')
455+
(mkRemovedEnumListOption ["vim" "languages" "typescript" "lsp" "servers"] "angular-language-server" ''
456+
Use `languages.angular.lsp.servers` instead.
457+
'')
458+
]
442459
];
443460
}
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
{
2+
config,
3+
pkgs,
4+
lib,
5+
...
6+
}: let
7+
inherit (lib.options) literalExpression mkEnableOption mkOption;
8+
inherit (lib.modules) mkIf mkMerge;
9+
inherit (lib.types) enum listOf;
10+
inherit (lib) genAttrs elem;
11+
inherit (lib.nvim.types) mkGrammarOption;
12+
13+
cfg = config.vim.languages.angular;
14+
15+
defaultServers = ["angular-language-server"];
16+
servers = ["angular-language-server" "emmet-ls"];
17+
18+
defaultFormat = ["prettier"];
19+
formats = ["prettier" "deno"];
20+
in {
21+
options.vim.languages.angular = {
22+
enable = mkEnableOption "Angular language support";
23+
treesitter = {
24+
enable =
25+
mkEnableOption "Angular treesitter support"
26+
// {
27+
default = config.vim.languages.enableTreesitter;
28+
defaultText = literalExpression "config.vim.languages.enableTreesitter";
29+
};
30+
package = mkGrammarOption pkgs "angular";
31+
};
32+
33+
lsp = {
34+
enable =
35+
mkEnableOption "Angular LSP support"
36+
// {
37+
default = config.vim.lsp.enable;
38+
defaultText = literalExpression "config.vim.lsp.enable";
39+
};
40+
servers = mkOption {
41+
type = listOf (enum servers);
42+
default = defaultServers;
43+
description = "Angular LSP server to use";
44+
};
45+
};
46+
47+
format = {
48+
enable =
49+
mkEnableOption "Angular formatting"
50+
// {
51+
default = config.vim.languages.enableFormat;
52+
defaultText = literalExpression "config.vim.languages.enableFormat";
53+
};
54+
55+
type = mkOption {
56+
type = listOf (enum formats);
57+
default = defaultFormat;
58+
description = "Angular formatter to use";
59+
};
60+
};
61+
};
62+
63+
config = mkIf cfg.enable (mkMerge [
64+
(mkIf cfg.treesitter.enable {
65+
vim.treesitter = {
66+
enable = true;
67+
grammars = [cfg.treesitter.package];
68+
};
69+
})
70+
71+
(mkIf cfg.lsp.enable {
72+
vim.lsp = {
73+
presets = genAttrs cfg.lsp.servers (_: {enable = true;});
74+
servers = genAttrs cfg.lsp.servers (_: {
75+
filetypes = ["htmlangular"];
76+
});
77+
};
78+
})
79+
80+
(mkIf (cfg.lsp.enable && elem "angular-language-server" cfg.lsp.servers) {
81+
vim.lsp.servers.angular-language-serve.filetypes = ["typescript"];
82+
})
83+
84+
(mkIf (cfg.format.enable && !cfg.lsp.enable) {
85+
vim.formatter.conform-nvim = {
86+
enable = true;
87+
presets = genAttrs cfg.format.type (_: {enable = true;});
88+
setupOpts.formatters_by_ft.htmlangular = cfg.format.type;
89+
};
90+
})
91+
]);
92+
}

modules/plugins/languages/default.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
inherit (lib.nvim.languages) mkEnable;
44
in {
55
imports = [
6+
./angular.nix
67
./arduino.nix
78
./asm.nix
89
./astro.nix

modules/plugins/languages/html.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
cfg = config.vim.languages.html;
1616

1717
defaultServers = ["superhtml"];
18-
servers = ["superhtml" "emmet-ls" "angular-language-server" "stimulus-language-server"];
18+
servers = ["superhtml" "emmet-ls" "stimulus-language-server"];
1919

2020
defaultFormat = ["superhtml"];
2121
formats = ["superhtml" "biome" "prettier" "deno"];

modules/plugins/languages/typescript.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
cfg = config.vim.languages.typescript;
1616

1717
defaultServers = ["typescript-language-server"];
18-
servers = ["typescript-language-server" "deno" "typescript-go" "angular-language-server" "emmet-ls"];
18+
servers = ["typescript-language-server" "deno" "typescript-go" "emmet-ls"];
1919

2020
defaultFormat = ["prettier"];
2121
formats = ["prettier" "biome" "biome-check" "biome-organize-imports" "deno" "astyle"];

modules/plugins/lsp/presets/angular-language-server.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ in {
2121
enable = true;
2222
cmd = ["${pkgs.angular-language-server}/bin/ngserver" "--stdio"];
2323
root_markers = ["angular.json" "nx.json"];
24+
workspace_required = true;
2425
};
2526
};
2627
}

0 commit comments

Comments
 (0)