return { { "nvim-treesitter/nvim-treesitter", opts = function(_, opts) if type(opts.ensure_installed) == "table" then vim.list_extend(opts.ensure_installed, { "python", "toml" }) end end, }, { "williamboman/mason.nvim", opts = function(_, opts) if type(opts.ensure_installed) == "table" then vim.list_extend(opts.ensure_installed, { "ruff", "ruff-lsp" }) end end, }, { "nvimtools/none-ls.nvim", opts = function(_, opts) local nls = require("null-ls") table.insert(opts.sources or {}, nls.builtins.formatting.ruff) end, }, -- modified from https://www.lazyvim.org/extras/lang/python#nvim-lspconfig { "neovim/nvim-lspconfig", opts = { -- autoformat = false, servers = { ruff_lsp = { keys = { { "co", function() vim.lsp.buf.code_action({ apply = true, context = { only = { "source.organizeImports" }, diagnostics = {}, }, }) end, desc = "Organize Imports", }, }, }, }, setup = { ruff_lsp = function() require("lazyvim.util").lsp.on_attach(function(client, _) if client.name == "ruff_lsp" then -- Disable hover in favor of Pyright client.server_capabilities.hoverProvider = false end end) end, }, }, }, }