system/neovim/configs/language-server.nix

61 lines
1.7 KiB
Nix

{ config, lib, pkgs, ... }:
let inherit (lib.nix2lua) call; in
{
fn.lspconfig-eslint-on-attach = {
args = [ "client" "bufnr" ];
content = { bufnr, ... }: {
vim.augroup.eslint-fix = {
event = "BufWritePre";
buffer = bufnr;
command = "silent! EslintFixAll";
};
};
};
plugins.language-server.lspconfig.serverSettings = {
nil_ls = { };
rust_analyzer = {
settings.rust-analyzer = {
"server.path" = "rust-analyzer";
"updates.prompt" = false;
"updates.checkOnStartup" = false;
"checkOnSave.enable" = true;
"checkOnSave.command" = "clippy";
"cargo.autoreload" = true;
};
};
tsserver = rec {
filetypes = [ "javascript" "javascriptreact" "typescript" "typescriptreact" "vue" ];
cmd = "${pkgs.nodePackages.typescript-language-server}/bin/typescript-language-server --stdio";
init_options = {
plugins = [
{
name = "@vue/typescript-plugin";
location = "./node_modules/@vue/typescript-plugin";
languages = filetypes;
}
];
tsserver.fallbackPath = "${pkgs.nodePackages.typescript}/lib/node_modules/typescript/lib";
};
};
eslint = {
on_attach = config.fn.lspconfig-eslint-on-attach.lambda;
};
volar = {
init_options = {
typescript.tsdk = "./node_modules/typescript/lib";
};
};
ltex = {
language = "en-US";
languageToolHttpServerUri = "http://localhost:8081";
};
pylsp = { };
denols = {
root_dir = call "${config.plugin.nvim-lspconfig.varName}.util.root_pattern" [ "deno.json" "deno.jsonc" ];
};
jdtls = { cmd = [ "jdtls" ]; };
jsonls = {};
};
}