
## Description * mason-nvim-dap.nvim ships a `Python: Launch file` adapter which does the same thing as `Launch file` of nvim-dap-python, providing both doesn't make sense and confuses the users. * mason-nvim-dap.nvim unexpectedly overrides nvim-dap-python's adapters and breaks its venv detection. As a result, user programs are always executed in mason debugpy venv rather than the activated one. <!-- Describe the big picture of your changes to communicate to the maintainers why we should accept this pull request. --> ## Related Issue(s) Fixes #3064 <!-- If this PR fixes any issues, please link to the issue here. - Fixes #<issue_number> --> ## Screenshots <!-- Add screenshots of the changes if applicable. --> ## Checklist - [X] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines.
153 lines
3.9 KiB
Lua
153 lines
3.9 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"
|
|
-- Set to "ruff_lsp" to use the old LSP implementation version.
|
|
vim.g.lazyvim_python_ruff = "ruff"
|
|
end
|
|
|
|
local lsp = vim.g.lazyvim_python_lsp or "pyright"
|
|
local ruff = vim.g.lazyvim_python_ruff or "ruff"
|
|
|
|
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 = {
|
|
ruff = {
|
|
cmd_env = { RUFF_TRACE = "messages" },
|
|
init_options = {
|
|
settings = {
|
|
logLevel = "error",
|
|
},
|
|
},
|
|
keys = {
|
|
{
|
|
"<leader>co",
|
|
LazyVim.lsp.action["source.organizeImports"],
|
|
desc = "Organize Imports",
|
|
},
|
|
},
|
|
},
|
|
ruff_lsp = {
|
|
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,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"neovim/nvim-lspconfig",
|
|
opts = function(_, opts)
|
|
local servers = { "pyright", "basedpyright", "ruff", "ruff_lsp", ruff, lsp }
|
|
for _, server in ipairs(servers) do
|
|
opts.servers[server] = opts.servers[server] or {}
|
|
opts.servers[server].enabled = server == lsp or server == ruff
|
|
end
|
|
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()
|
|
if vim.fn.has("win32") == 1 then
|
|
require("dap-python").setup(LazyVim.get_pkg_path("debugpy", "/venv/Scripts/pythonw.exe"))
|
|
else
|
|
require("dap-python").setup(LazyVim.get_pkg_path("debugpy", "/venv/bin/python"))
|
|
end
|
|
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,
|
|
},
|
|
|
|
-- Don't mess up DAP adapters provided by nvim-dap-python
|
|
{
|
|
"jay-babu/mason-nvim-dap.nvim",
|
|
optional = true,
|
|
opts = {
|
|
handlers = {
|
|
python = function() end,
|
|
},
|
|
},
|
|
},
|
|
}
|