75 lines
2.8 KiB
Lua
75 lines
2.8 KiB
Lua
|
-- https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation#python
|
||
|
-- https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings
|
||
|
return function()
|
||
|
local dap = require("dap")
|
||
|
local utils = require("modules.utils.dap")
|
||
|
local is_windows = require("core.global").is_windows
|
||
|
local debugpy_root = require("mason-registry").get_package("debugpy"):get_install_path()
|
||
|
|
||
|
dap.adapters.python = function(callback, config)
|
||
|
if config.request == "attach" then
|
||
|
local port = (config.connect or config).port
|
||
|
local host = (config.connect or config).host or "127.0.0.1"
|
||
|
callback({
|
||
|
type = "server",
|
||
|
port = assert(port, "`connect.port` is required for a python `attach` configuration"),
|
||
|
host = host,
|
||
|
options = { source_filetype = "python" },
|
||
|
})
|
||
|
else
|
||
|
callback({
|
||
|
type = "executable",
|
||
|
command = is_windows and debugpy_root .. "/venv/Scripts/pythonw.exe"
|
||
|
or debugpy_root .. "/venv/bin/python",
|
||
|
args = { "-m", "debugpy.adapter" },
|
||
|
options = { source_filetype = "python" },
|
||
|
})
|
||
|
end
|
||
|
end
|
||
|
dap.configurations.python = {
|
||
|
{
|
||
|
-- The first three options are required by nvim-dap
|
||
|
type = "python", -- the type here established the link to the adapter definition: `dap.adapters.python`
|
||
|
request = "launch",
|
||
|
name = "Debug",
|
||
|
-- Options below are for debugpy, see https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings for supported options
|
||
|
console = "integratedTerminal",
|
||
|
program = utils.input_file_path(),
|
||
|
pythonPath = function()
|
||
|
local venv = vim.env.CONDA_PREFIX
|
||
|
if venv then
|
||
|
return is_windows and venv .. "/Scripts/pythonw.exe" or venv .. "/bin/python"
|
||
|
else
|
||
|
return is_windows and "pythonw.exe" or "python3"
|
||
|
end
|
||
|
end,
|
||
|
},
|
||
|
{
|
||
|
-- NOTE: This setting is for people using venv
|
||
|
type = "python",
|
||
|
request = "launch",
|
||
|
name = "Debug (using venv)",
|
||
|
-- Options below are for debugpy, see https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings for supported options
|
||
|
console = "integratedTerminal",
|
||
|
program = utils.input_file_path(),
|
||
|
pythonPath = function()
|
||
|
-- Prefer the venv that is defined by the designated environment variable.
|
||
|
local cwd, venv = vim.fn.getcwd(), os.getenv("VIRTUAL_ENV")
|
||
|
local python = venv and (is_windows and venv .. "/Scripts/pythonw.exe" or venv .. "/bin/python") or ""
|
||
|
if vim.fn.executable(python) == 1 then
|
||
|
return python
|
||
|
end
|
||
|
|
||
|
-- Otherwise, fall back to check if there are any local venvs available.
|
||
|
venv = vim.fn.isdirectory(cwd .. "/venv") == 1 and cwd .. "/venv" or cwd .. "/.venv"
|
||
|
python = is_windows and venv .. "/Scripts/pythonw.exe" or venv .. "/bin/python"
|
||
|
if vim.fn.executable(python) == 1 then
|
||
|
return python
|
||
|
else
|
||
|
return is_windows and "pythonw.exe" or "python3"
|
||
|
end
|
||
|
end,
|
||
|
},
|
||
|
}
|
||
|
end
|