127 lines
3.1 KiB
Lua
127 lines
3.1 KiB
Lua
if lazyvim_docs then
|
|
-- LSP Server to use for Python.
|
|
-- Set to "basedpyright" to use basedpyright instead of pyright.
|
|
vim.g.lazyvim_python_lsp = "pyright"
|
|
vim.g.lazyvim_python_ruff = "ruff_lsp"
|
|
end
|
|
|
|
local lsp = vim.g.lazyvim_python_lsp or "pyright"
|
|
local ruff = vim.g.lazyvim_python_ruff or "ruff_lsp"
|
|
|
|
return {
|
|
recommended = function()
|
|
return LazyVim.extras.wants({
|
|
ft = "python",
|
|
root = {
|
|
"pyproject.toml",
|
|
"setup.py",
|
|
"setup.cfg",
|
|
"requirements.txt",
|
|
"Pipfile",
|
|
"pyrightconfig.json",
|
|
},
|
|
})
|
|
end,
|
|
{
|
|
"nvim-treesitter/nvim-treesitter",
|
|
opts = { ensure_installed = { "ninja", "rst" } },
|
|
},
|
|
{
|
|
"neovim/nvim-lspconfig",
|
|
opts = {
|
|
servers = {
|
|
pyright = {
|
|
enabled = lsp == "pyright",
|
|
},
|
|
basedpyright = {
|
|
enabled = lsp == "basedpyright",
|
|
},
|
|
[lsp] = {
|
|
enabled = true,
|
|
},
|
|
ruff_lsp = {
|
|
enabled = ruff == "ruff_lsp",
|
|
},
|
|
ruff = {
|
|
enabled = ruff == "ruff",
|
|
},
|
|
[ruff] = {
|
|
keys = {
|
|
{
|
|
"<leader>co",
|
|
LazyVim.lsp.action["source.organizeImports"],
|
|
desc = "Organize Imports",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
setup = {
|
|
[ruff] = function()
|
|
LazyVim.lsp.on_attach(function(client, _)
|
|
-- Disable hover in favor of Pyright
|
|
client.server_capabilities.hoverProvider = false
|
|
end, ruff)
|
|
end,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"nvim-neotest/neotest",
|
|
optional = true,
|
|
dependencies = {
|
|
"nvim-neotest/neotest-python",
|
|
},
|
|
opts = {
|
|
adapters = {
|
|
["neotest-python"] = {
|
|
-- Here you can specify the settings for the adapter, i.e.
|
|
-- runner = "pytest",
|
|
-- python = ".venv/bin/python",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"mfussenegger/nvim-dap",
|
|
optional = true,
|
|
dependencies = {
|
|
"mfussenegger/nvim-dap-python",
|
|
-- stylua: ignore
|
|
keys = {
|
|
{ "<leader>dPt", function() require('dap-python').test_method() end, desc = "Debug Method", ft = "python" },
|
|
{ "<leader>dPc", function() require('dap-python').test_class() end, desc = "Debug Class", ft = "python" },
|
|
},
|
|
config = function()
|
|
require("dap-python").setup(LazyVim.get_pkg_path("debugpy", "/venv/bin/python"))
|
|
end,
|
|
},
|
|
},
|
|
|
|
{
|
|
"linux-cultist/venv-selector.nvim",
|
|
branch = "regexp", -- Use this branch for the new version
|
|
cmd = "VenvSelect",
|
|
enabled = function()
|
|
return LazyVim.has("telescope.nvim")
|
|
end,
|
|
opts = {
|
|
settings = {
|
|
options = {
|
|
notify_user_on_venv_activation = true,
|
|
},
|
|
},
|
|
},
|
|
-- Call config for python files and load the cached venv automatically
|
|
ft = "python",
|
|
keys = { { "<leader>cv", "<cmd>:VenvSelect<cr>", desc = "Select VirtualEnv", ft = "python" } },
|
|
},
|
|
|
|
{
|
|
"hrsh7th/nvim-cmp",
|
|
opts = function(_, opts)
|
|
opts.auto_brackets = opts.auto_brackets or {}
|
|
table.insert(opts.auto_brackets, "python")
|
|
end,
|
|
},
|
|
}
|