Skip to content

Commit

Permalink
plugins/lsp/jsonnet-ls: init
Browse files Browse the repository at this point in the history
  • Loading branch information
MattSturgeon committed Jun 14, 2024
1 parent db93eff commit ea5078f
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 0 deletions.
7 changes: 7 additions & 0 deletions plugins/lsp/language-servers/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -248,6 +248,13 @@ let
];
settings = cfg: { json = cfg; };
}
{
name = "jsonnet-ls";
description = "jsonnet language server";
package = pkgs.jsonnet-language-server;
serverName = "jsonnet_ls";
settingsOptions = import ./jsonnet-ls-settings.nix { inherit lib helpers; };
}
{
name = "julials";
description = "julials for Julia";
Expand Down
77 changes: 77 additions & 0 deletions plugins/lsp/language-servers/jsonnet-ls-settings.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
{ lib, helpers }:
# Options:
# - https://github.com/grafana/jsonnet-language-server/tree/main/editor/vim
# - https://github.com/grafana/jsonnet-language-server/blob/main/pkg/server/configuration.go
# - https://github.com/google/go-jsonnet/blob/master/internal/formatter/jsonnetfmt.go#L55
with lib;
{
ext_vars = helpers.defaultNullOpts.mkAttrsOf types.str { } ''
External variables.
'';

formatting = {
Indent = helpers.defaultNullOpts.mkUnsignedInt 2 ''
The number of spaces for each level of indenation.
'';

MaxBlankLines = helpers.defaultNullOpts.mkUnsignedInt 2 ''
Max allowed number of consecutive blank lines.
'';

StringStyle =
helpers.defaultNullOpts.mkEnum
[
"double"
"single"
"leave"
]
"single"
''
Whether strings should use double quotes `"`, single quotes `'`, or be left as-is.
'';

CommentStyle =
helpers.defaultNullOpts.mkEnum
[
"hash"
"slash"
"leave"
]
"slash"
''
Whether comments should use hash `#`, slash `//`, or be left as-is.
'';

PrettyFieldNames = helpers.defaultNullOpts.mkBool true ''
Causes fields to only be wrapped in `'''` when needed.
'';

PadArrays = helpers.defaultNullOpts.mkBool false ''
Causes arrays to be written like `[ this ]` instead of `[this]`.
'';

PadObjects = helpers.defaultNullOpts.mkBool true ''
Causes objects to be written like `{ this }` instead of `{this}`.
'';

SortImports = helpers.defaultNullOpts.mkBool true ''
Causes imports at the top of the file to be sorted in groups by filename.
'';

UseImplicitPlus = helpers.defaultNullOpts.mkBool true ''
Removes plus sign where it is not required.
'';

StripEverything = helpers.defaultNullOpts.mkBool false ''
Removes all comments and newlines.
'';

StripComments = helpers.defaultNullOpts.mkBool false ''
Removes all comments.
'';

StripAllButComments = helpers.defaultNullOpts.mkBool false ''
Removes everything, other than comments.
'';
};
}
1 change: 1 addition & 0 deletions tests/test-sources/plugins/lsp/_lsp.nix
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@
htmx.enable = true;
java-language-server.enable = true;
jsonls.enable = true;
jsonnet-ls.enable = true;
julials.enable = true;
kotlin-language-server.enable = true;
leanls.enable = true;
Expand Down
25 changes: 25 additions & 0 deletions tests/test-sources/plugins/lsp/language-servers/jsonnet.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
example = {
plugins.lsp = {
enable = true;

servers.jsonnet-ls = {
enable = true;

settings = {
Indent = 4;
MaxBlankLines = 10;
StringStyle = "single";
CommentStyle = "leave";
PrettyFieldNames = true;
PadArrays = false;
PadObjects = true;
SortImports = false;
UseImplicitPlus = true;
StripEverything = false;
StripComments = false;
};
};
};
};
}

0 comments on commit ea5078f

Please sign in to comment.