{ config, lib, ... }: 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; }; }; eslint = { on_attach = config.fn.lspconfig-eslint-on-attach.lambda; flags = { allow_incremental_sync = false; debounce_text_changes = 1000; }; }; 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 = { }; }; plugins.language-server.typescript-tools = { enable = true; serverSettings = { filetypes = [ "javascript" "javascriptreact" "typescript" "typescriptreact" "vue" ]; settings = { tsserver_max_memory = "auto"; tsserver_plugins = [ "@vue/typescript-plugin" ]; }; }; }; }