local config = require("plugins.configs.lspconfig") local on_attach = config.on_attach local capabilities = config.capabilities local custom_on_attach = function(client, bufnr) on_attach(client, bufnr) if client.name == "ts_ls" then vim.api.nvim_buf_create_user_command(bufnr, "OrganizeImports", function() local params = { command = "_typescript.organizeImports", arguments = { vim.api.nvim_buf_get_name(0) }, } vim.lsp.buf.execute_command(params) end, { desc = "Organize Imports" }) end end vim.lsp.config("ts_ls", { on_attach = custom_on_attach, capabilities = capabilities, init_options = { preferences = { disablesuggestions = true, } }, }) vim.lsp.enable("ts_ls") vim.lsp.config("terraformls", { on_attach = on_attach, capabilities = capabilities, }) vim.lsp.enable("terraformls") vim.lsp.config("tflint", { on_attach = on_attach, capabilities = capabilities, }) vim.lsp.enable("tflint") vim.lsp.config("gopls", { on_attach = on_attach, capabilities = capabilities, cmd = { "gopls" }, filetypes = { "go", "gomod", "gowork", "gotempl" }, root_markers = { "go.mod", "go.work" }, settings = { gopls = { completeUnimported = true, usePlaceholders = true, analyses = { unusedparams = true, }, }, }, }) vim.lsp.enable("gopls") vim.lsp.config("pyright", { on_attach = on_attach, capabilities = capabilities, filetypes = { "python" }, }) vim.lsp.enable("pyright") vim.lsp.config("nil_ls", { on_attach = on_attach, capabilities = capabilities, cmd = { "nil" }, filetypes = { "nix" }, settings = { ['nil'] = { testSetting = 42, formatting = { command = { "nixfmt" }, }, }, }, }) vim.lsp.enable("nil_ls")