
On Windows, when using dap, python.exe will launch an extra console. If you target pythonw.exe this avoids that. Explanation source: https://stackoverflow.com/questions/9705982/pythonw-exe-or-python-exe ## What is this PR for? Modify which exe is targeted for python + dap on windows. If you use python.exe an extra console launches (eg, nvim is runnining on Wezterm, boot up dap, and as a result an external console (usually through windows terminal or built-in console terminal) will launch (dap still runs in the original window). This is avoided with pythonw.exe ## Does this PR fix an existing issue? No ## Checklist - [x] I've read the [CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md) guidelines.
131 lines
3.3 KiB
Lua
131 lines
3.3 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()
|
|
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,
|
|
},
|
|
}
|