Skip to content

Commit 676bbae

Browse files
committed
languages/glsl: init
1 parent d8df1e8 commit 676bbae

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

docs/release-notes/rl-0.8.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,12 +394,14 @@
394394
[oil-git-status]: https://github.com/refractalize/oil-git-status.nvim
395395
[neocmakelsp]: https://github.com/neocmakelsp/neocmakelsp
396396
[arduino-language-server]: https://github.com/arduino/arduino-language-server
397+
[glsl_analyzer]: https://github.com/nolanderc/glsl_analyzer
397398

398399
- Fix gitsigns null-ls issue.
399400
- Add [everforest] theme support.
400401
- Add [oil-git-status] support to [oil] module.
401402
- Add CMake support with [neocmakelsp].
402403
- Add Arduino support with [arduino-language-server].
404+
- Add GLSL support with [glsl_analyzer].
403405

404406
[Haskex](https://github.com/haskex):
405407

modules/plugins/languages/default.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ in {
1616
./elixir.nix
1717
./fsharp.nix
1818
./gleam.nix
19+
./glsl.nix
1920
./go.nix
2021
./hcl.nix
2122
./helm.nix

modules/plugins/languages/glsl.nix

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

0 commit comments

Comments
 (0)