[kak]: Split some of the config into a separate file
This commit is contained in:
parent
9b49e2eefa
commit
cff0a2cf5b
2 changed files with 93 additions and 91 deletions
|
@ -122,72 +122,6 @@ let kakrc = pkgs.writeTextFile (rec {
|
|||
inherit lib pkgs;
|
||||
});
|
||||
|
||||
# Config for kak-lsp
|
||||
kak-lsp-config = pkgs.writeTextFile (rec {
|
||||
name = "kak-lsp.toml";
|
||||
destination = "/share/kak-lsp/${name}";
|
||||
text = let semTok = (name: value: ''
|
||||
[[semantic_tokens]]
|
||||
token = "${name}"
|
||||
face = "${value}"
|
||||
''); in ''
|
||||
|
||||
[language.rust]
|
||||
filetypes = [ "rust" ]
|
||||
roots = [ "Cargo.toml" ]
|
||||
command = "rust-analyzer"
|
||||
[language.rust.settings.rust-analyzer]
|
||||
semanticTokens = true
|
||||
diagnostics.enabled = [ "unresolved-proc-macro" ]
|
||||
cargo.loadOutDirsFromCheck = true
|
||||
procMacro.enable = false
|
||||
|
||||
[language.haskell]
|
||||
filetypes = [ "haskell" ]
|
||||
roots = [ "Setup.hs", "stack.yaml", "*.cabal" ]
|
||||
command = "haskell-language-server-wrapper"
|
||||
args = [ "--lsp" ]
|
||||
|
||||
[language.nix]
|
||||
filetypes = [ "nix" ]
|
||||
roots = [ "flake.nix", "shell.nix", ".git", ".hg" ]
|
||||
command = "rnix-lsp"
|
||||
|
||||
${lib.concatStringsSep "\n" (lib.mapAttrsToList semTok {
|
||||
"enumMember" = "variant";
|
||||
"enum" = "enum";
|
||||
"union" = "union";
|
||||
"struct" = "struct";
|
||||
"typeAlias" = "alias";
|
||||
"builtinType" = "primitive";
|
||||
"trait" = "trait";
|
||||
"interface" = "trait";
|
||||
"method" = "method";
|
||||
"function" = "function";
|
||||
"namespace" = "module";
|
||||
"boolean" = "literal";
|
||||
"character" = "literal";
|
||||
"number" = "literal";
|
||||
"string" = "string";
|
||||
"keyword" = "keyword";
|
||||
"documentation" = "comment";
|
||||
"comment" = "comment";
|
||||
"escapeSequence" = "format";
|
||||
"formatSpecifier" = "format";
|
||||
"operator" = "operator";
|
||||
"arithmetic" = "operator";
|
||||
"bitwise" = "operator";
|
||||
"comparison" = "operator";
|
||||
"logical" = "operator";
|
||||
"macro" = "macro";
|
||||
"lifetime" = "lifetime";
|
||||
"variable" = "variable";
|
||||
"attribute" = "attribute";
|
||||
"punctuation" = "punctuation";
|
||||
}) }
|
||||
'';
|
||||
});
|
||||
|
||||
in with lib; {
|
||||
|
||||
options.riley = {
|
||||
|
@ -204,31 +138,9 @@ in with lib; {
|
|||
# Custom config
|
||||
kakrc
|
||||
|
||||
] ++ (lib.optionals config.riley.kak.ide [
|
||||
|
||||
# Kakoune language server support
|
||||
(symlinkJoin {
|
||||
paths = with kakounePlugins; [
|
||||
|
||||
# The language server client
|
||||
kak-lsp
|
||||
|
||||
# Include default language servers
|
||||
rnix-lsp
|
||||
haskell-language-server
|
||||
|
||||
# Overwrite kak-lsp.toml
|
||||
kak-lsp-config
|
||||
|
||||
];
|
||||
name = "kak-lsp-${kak-lsp.version}";
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/kak-lsp --add-flags "--config $out/share/kak-lsp/kak-lsp.toml"
|
||||
'';
|
||||
})
|
||||
|
||||
]) ++ colors;
|
||||
] ++ (lib.optionals config.riley.kak.ide (import ./lsp.nix {
|
||||
inherit pkgs lib config;
|
||||
})) ++ colors;
|
||||
})
|
||||
];
|
||||
|
||||
|
|
90
modules/kak/lsp.nix
Normal file
90
modules/kak/lsp.nix
Normal file
|
@ -0,0 +1,90 @@
|
|||
{ config, pkgs, lib, ... }: with pkgs;
|
||||
|
||||
let lsp-config = (writeTextFile (rec {
|
||||
name = "kak-lsp.toml";
|
||||
destination = "/share/kak-lsp/${name}";
|
||||
text = let semTok = (name: value: ''
|
||||
[[semantic_tokens]]
|
||||
token = "${name}"
|
||||
face = "${value}"
|
||||
''); in ''
|
||||
|
||||
[language.rust]
|
||||
filetypes = [ "rust" ]
|
||||
roots = [ "Cargo.toml" ]
|
||||
command = "rust-analyzer"
|
||||
[language.rust.settings.rust-analyzer]
|
||||
semanticTokens = true
|
||||
diagnostics.enabled = [ "unresolved-proc-macro" ]
|
||||
cargo.loadOutDirsFromCheck = true
|
||||
procMacro.enable = false
|
||||
|
||||
[language.haskell]
|
||||
filetypes = [ "haskell" ]
|
||||
roots = [ "Setup.hs", "stack.yaml", "*.cabal" ]
|
||||
command = "haskell-language-server-wrapper"
|
||||
args = [ "--lsp" ]
|
||||
|
||||
[language.nix]
|
||||
filetypes = [ "nix" ]
|
||||
roots = [ "flake.nix", "shell.nix", ".git", ".hg" ]
|
||||
command = "rnix-lsp"
|
||||
|
||||
${lib.concatStringsSep "\n" (lib.mapAttrsToList semTok {
|
||||
"enumMember" = "variant";
|
||||
"enum" = "enum";
|
||||
"union" = "union";
|
||||
"struct" = "struct";
|
||||
"typeAlias" = "alias";
|
||||
"builtinType" = "primitive";
|
||||
"trait" = "trait";
|
||||
"interface" = "trait";
|
||||
"method" = "method";
|
||||
"function" = "function";
|
||||
"namespace" = "module";
|
||||
"boolean" = "literal";
|
||||
"character" = "literal";
|
||||
"number" = "literal";
|
||||
"string" = "string";
|
||||
"keyword" = "keyword";
|
||||
"documentation" = "comment";
|
||||
"comment" = "comment";
|
||||
"escapeSequence" = "format";
|
||||
"formatSpecifier" = "format";
|
||||
"operator" = "operator";
|
||||
"arithmetic" = "operator";
|
||||
"bitwise" = "operator";
|
||||
"comparison" = "operator";
|
||||
"logical" = "operator";
|
||||
"macro" = "macro";
|
||||
"lifetime" = "lifetime";
|
||||
"variable" = "variable";
|
||||
"attribute" = "attribute";
|
||||
"punctuation" = "punctuation";
|
||||
}) }
|
||||
'';
|
||||
}));
|
||||
|
||||
in [
|
||||
# Kakoune language server support
|
||||
(symlinkJoin {
|
||||
paths = with kakounePlugins; [
|
||||
|
||||
# The language server client
|
||||
kak-lsp
|
||||
|
||||
# Include default language servers
|
||||
rnix-lsp
|
||||
haskell-language-server
|
||||
|
||||
# Overwrite kak-lsp.toml
|
||||
lsp-config
|
||||
|
||||
];
|
||||
name = "kak-lsp-${kak-lsp.version}";
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
postBuild = ''
|
||||
wrapProgram $out/bin/kak-lsp --add-flags "--config $out/share/kak-lsp/kak-lsp.toml"
|
||||
'';
|
||||
})
|
||||
]
|
Loading…
Reference in a new issue