Skip to content

Commit 01b1da5

Browse files
committed
prolog lsp_server: init
1 parent 28b19c5 commit 01b1da5

3 files changed

Lines changed: 58 additions & 1 deletion

File tree

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ functions.
222222
<!-- `> bash ./supported-programs.sh` -->
223223

224224
<!-- BEGIN mdsh -->
225-
`treefmt-nix` currently supports 125 formatters:
225+
`treefmt-nix` currently supports 126 formatters:
226226

227227
* [actionlint](programs/actionlint.nix)
228228
* [aiken](programs/aiken.nix)
@@ -312,6 +312,7 @@ functions.
312312
* [php-cs-fixer](programs/php-cs-fixer.nix)
313313
* [pinact](programs/pinact.nix)
314314
* [prettier](programs/prettier.nix)
315+
* [prolog-lsp-server](programs/prolog-lsp-server.nix)
315316
* [protolint](programs/protolint.nix)
316317
* [qmlformat](programs/qmlformat.nix)
317318
* [rstfmt](programs/rstfmt.nix)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Example generated by ../examples.sh
2+
[formatter.prolog-lsp-server]
3+
command = "prolog-lsp-server"
4+
excludes = []
5+
includes = ["*.pl", "*.pro"]
6+
options = []

programs/prolog-lsp-server.nix

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
{
2+
mkFormatterModule,
3+
lib,
4+
config,
5+
pkgs,
6+
...
7+
}:
8+
let
9+
cfg = config.programs.prolog-lsp-server;
10+
11+
lsp-server = pkgs.fetchzip {
12+
name = "lsp_server";
13+
url = "https://github.com/jamesnvc/lsp_server/archive/v3.14.0.zip";
14+
sha256 = "sha256-TKJxGcz170nit1kdUXQKZi5C5jq+MsW3w5FSqTfxqow=";
15+
};
16+
17+
swiplWithFormatter = cfg.package.override {
18+
extraPacks = map (dep-path: "'file://${dep-path}'") [
19+
lsp-server
20+
];
21+
};
22+
in
23+
{
24+
meta.maintainers = [ lib.maintainers.baileylu ];
25+
26+
imports = [
27+
(mkFormatterModule {
28+
name = "prolog-lsp-server";
29+
package = "swi-prolog";
30+
includes = [
31+
"*.pl"
32+
"*.pro"
33+
];
34+
})
35+
];
36+
37+
config = lib.mkIf cfg.enable {
38+
settings.formatter.prolog-lsp-server = {
39+
# lsp_server doesn't support multiple file targets
40+
command = pkgs.writeShellApplication {
41+
name = "prolog-lsp-server";
42+
text = ''
43+
for file in "$@"; do
44+
${lib.getExe swiplWithFormatter} formatter "$file"
45+
done
46+
'';
47+
};
48+
};
49+
};
50+
}

0 commit comments

Comments
 (0)