return { "neovim/nvim-lspconfig", config = function() vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) vim.keymap.set("n", "gr", function() vim.lsp.buf.references() end, opts) vim.keymap.set("n", "", function() vim.diagnostic.open_float() end, opts) vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts) vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) vim.keymap.set("n", "ca", vim.lsp.buf.code_action, opts) vim.keymap.set("v", "ca", vim.lsp.buf.code_action, opts) local python_utils = require("functions.python") local python_path = python_utils.get_python_path() vim.lsp.config("ruff", { settings = { interpreter = python_path }, }) vim.lsp.enable("ruff") vim.lsp.config("basedpyright", { settings = { python = { pythonPath = python_path }, basedpyright = { analysis = { typeCheckingMode = "standard", }, }, }, }) vim.lsp.enable("basedpyright") vim.lsp.config("bashls", { cmd = { "bash-language-server", "start" }, filetypes = { "bash", "sh" }, }) vim.lsp.enable("bashls") end, }