Skip to content

Commit 30b3372

Browse files
committed
languages/angular: init
1 parent 5e11495 commit 30b3372

7 files changed

Lines changed: 116 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: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
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.lists) optional;
12+
inherit (lib.nvim.types) mkGrammarOption;
13+
14+
cfg = config.vim.languages.angular;
15+
16+
defaultServers = ["angular-language-server"];
17+
servers = ["angular-language-server" "emmet-ls"];
18+
19+
defaultFormat = ["prettier"];
20+
formats = ["prettier" "deno"];
21+
in {
22+
options.vim.languages.angular = {
23+
enable = mkEnableOption "Angular language support";
24+
treesitter = {
25+
enable =
26+
mkEnableOption "Angular treesitter support"
27+
// {
28+
default = config.vim.languages.enableTreesitter;
29+
defaultText = literalExpression "config.vim.languages.enableTreesitter";
30+
};
31+
package = mkGrammarOption pkgs "angular";
32+
};
33+
34+
lsp = {
35+
enable =
36+
mkEnableOption "Angular LSP support"
37+
// {
38+
default = config.vim.lsp.enable;
39+
defaultText = literalExpression "config.vim.lsp.enable";
40+
};
41+
servers = mkOption {
42+
type = listOf (enum servers);
43+
default = defaultServers;
44+
description = "Angular LSP server to use";
45+
};
46+
};
47+
48+
format = {
49+
enable =
50+
mkEnableOption "Angular formatting"
51+
// {
52+
default = config.vim.languages.enableFormat;
53+
defaultText = literalExpression "config.vim.languages.enableFormat";
54+
};
55+
56+
type = mkOption {
57+
type = listOf (enum formats);
58+
default = defaultFormat;
59+
description = "Angular formatter to use";
60+
};
61+
};
62+
};
63+
64+
config = mkIf cfg.enable (mkMerge [
65+
(mkIf cfg.treesitter.enable {
66+
vim.treesitter = {
67+
enable = true;
68+
grammars = [cfg.treesitter.package];
69+
};
70+
})
71+
72+
(mkIf cfg.lsp.enable {
73+
vim.lsp = {
74+
presets = genAttrs cfg.lsp.servers (_: {enable = true;});
75+
servers = genAttrs cfg.lsp.servers (_: {
76+
filetypes = ["htmlangular"];
77+
});
78+
};
79+
})
80+
81+
(mkIf (cfg.lsp.enable && elem "angular-language-server" cfg.lsp.servers) {
82+
vim.lsp.servers.angular-language-serve.filetypes = ["typescript"];
83+
})
84+
85+
(mkIf (cfg.format.enable && !cfg.lsp.enable) {
86+
vim.formatter.conform-nvim = {
87+
enable = true;
88+
presets = genAttrs cfg.format.type (_: {enable = true;});
89+
setupOpts.formatters_by_ft.htmlangular = cfg.format.type;
90+
};
91+
})
92+
]);
93+
}

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
@@ -19,6 +19,7 @@ in {
1919
enable = true;
2020
cmd = [(getExe pkgs.angular-language-server) "--stdio"];
2121
root_markers = ["angular.json" "nx.json"];
22+
workspace_required = true;
2223
};
2324
};
2425
}

0 commit comments

Comments
 (0)