{ 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 = {}; }; }