Skip to content

Commit 6245473

Browse files
authored
Merge pull request #907 from anil9/clojure-lsp
languages/clojure: init
2 parents b45f051 + c774577 commit 6245473

File tree

7 files changed

+95
-0
lines changed

7 files changed

+95
-0
lines changed

docs/release-notes/rl-0.8.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,3 +407,11 @@
407407
- Add [img-clip.nvim] plugin in `vim.utility.images.img-clip` with `enable` and
408408
`setupOpts`
409409
- Add `vim.utility.images.img-clip.enable = isMaximal` in configuration.nix
410+
411+
[anil9](https://github.com/anil9):
412+
413+
[clojure-lsp]: https://github.com/clojure-lsp/clojure-lsp
414+
[conjure]: https://github.com/Olical/conjure
415+
416+
- Add Clojure support under `vim.languages.clojure` using [clojure-lsp]
417+
- Add code evaluation environment [conjure] under `vim.repl.conjure`

modules/modules.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"minimap"
3434
"notes"
3535
"projects"
36+
"repl"
3637
"rich-presence"
3738
"runner"
3839
"session"
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
{
2+
config,
3+
pkgs,
4+
lib,
5+
...
6+
}: let
7+
inherit (lib.options) mkEnableOption mkOption;
8+
inherit (lib.modules) mkIf mkMerge;
9+
inherit (lib.meta) getExe;
10+
inherit (lib.lists) isList;
11+
inherit (lib.types) either listOf package str;
12+
inherit (lib.nvim.types) mkGrammarOption;
13+
inherit (lib.nvim.lua) expToLua;
14+
15+
cfg = config.vim.languages.clojure;
16+
in {
17+
options.vim.languages.clojure = {
18+
enable = mkEnableOption "Clojure language support";
19+
20+
treesitter = {
21+
enable = mkEnableOption "Clojure treesitter" // {default = config.vim.languages.enableTreesitter;};
22+
package = mkGrammarOption pkgs "clojure";
23+
};
24+
25+
lsp = {
26+
enable = mkEnableOption "Clojure LSP support" // {default = config.vim.lsp.enable;};
27+
package = mkOption {
28+
type = either package (listOf str);
29+
default = pkgs.clojure-lsp;
30+
description = "Clojure LSP";
31+
};
32+
};
33+
};
34+
35+
config = mkIf cfg.enable (mkMerge [
36+
(mkIf cfg.lsp.enable {
37+
vim.lsp.lspconfig.enable = true;
38+
vim.lsp.lspconfig.sources.clojure-lsp = ''
39+
lspconfig.clojure_lsp.setup {
40+
capabilities = capabilities;
41+
on_attach = default_on_attach;
42+
cmd = ${
43+
if isList cfg.lsp.package
44+
then expToLua cfg.lsp.package
45+
else ''{"${getExe cfg.lsp.package}"}''
46+
};
47+
}
48+
'';
49+
})
50+
51+
(mkIf cfg.treesitter.enable {
52+
vim.treesitter.enable = true;
53+
vim.treesitter.grammars = [cfg.treesitter.package];
54+
})
55+
]);
56+
}

modules/plugins/languages/default.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ in {
99
./cue.nix
1010
./dart.nix
1111
./clang.nix
12+
./clojure.nix
1213
./css.nix
1314
./elixir.nix
1415
./fsharp.nix
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
config,
3+
pkgs,
4+
lib,
5+
...
6+
}: let
7+
inherit (lib.options) mkEnableOption;
8+
inherit (lib.modules) mkIf;
9+
10+
cfg = config.vim.repl.conjure;
11+
in {
12+
options.vim.repl.conjure = {
13+
enable = mkEnableOption "Conjure";
14+
};
15+
16+
config = mkIf cfg.enable {
17+
vim.startPlugins = [pkgs.vimPlugins.conjure];
18+
};
19+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
imports = [
3+
./conjure.nix
4+
];
5+
}

modules/plugins/repl/default.nix

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
imports = [
3+
./conjure
4+
];
5+
}

0 commit comments

Comments
 (0)