mirror of
https://github.com/Smaug123/nix-dotfiles
synced 2025-10-09 08:28:41 +00:00
More python stuff
This commit is contained in:
@@ -272,7 +272,7 @@
|
||||
vimdiffAlias = true;
|
||||
withPython3 = true;
|
||||
|
||||
extraLuaConfig = builtins.readFile ./nvim/build-utils.lua + "\n" + builtins.readFile ./nvim/dotnet.lua + "\n" + builtins.replaceStrings ["%PYTHONENV%"] ["${pythonEnv}"] (builtins.readFile ./nvim/init.lua);
|
||||
extraLuaConfig = builtins.readFile ./nvim/build-utils.lua + "\n" + builtins.readFile ./nvim/dotnet.lua + "\n" + builtins.replaceStrings ["%PYTHONENV%"] ["${pythonEnv}"] (builtins.readFile ./nvim/init.lua) + "\n" + builtins.readFile ./nvim/python.lua;
|
||||
|
||||
package = nixpkgs.neovim-nightly;
|
||||
};
|
||||
|
69
home-manager/nvim/python.lua
Normal file
69
home-manager/nvim/python.lua
Normal file
@@ -0,0 +1,69 @@
|
||||
local function pytest_on_line(_, _, _) end
|
||||
local function pytest_on_complete(_, code, _)
|
||||
if code ~= 0 then
|
||||
print("Exit code " .. code)
|
||||
end
|
||||
end
|
||||
|
||||
function RunPythonTestAtCursor()
|
||||
local api = vim.api
|
||||
|
||||
-- Get the current buffer and cursor position
|
||||
local bufnr = api.nvim_get_current_buf()
|
||||
local line_nr = api.nvim_win_get_cursor(0)[1]
|
||||
local filename = api.nvim_buf_get_name(bufnr)
|
||||
|
||||
-- Read the file content
|
||||
local lines = api.nvim_buf_get_lines(bufnr, 0, -1, false)
|
||||
|
||||
-- Find the test function
|
||||
local test_name = nil
|
||||
for i = line_nr, 1, -1 do
|
||||
local line = lines[i]
|
||||
if line:match("^def test_") then
|
||||
test_name = line:match("^def (%S+)%(")
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if test_name then
|
||||
-- Run pytest for the found test function
|
||||
local context = BuildUtils.create_window()
|
||||
BuildUtils.run(
|
||||
"pytest",
|
||||
{ filename .. "::" .. test_name },
|
||||
"Run PyTest (" .. test_name .. ")",
|
||||
context,
|
||||
pytest_on_line,
|
||||
pytest_on_complete
|
||||
)
|
||||
else
|
||||
print("No test function found at or above line " .. line_nr)
|
||||
end
|
||||
end
|
||||
|
||||
function RunPythonTestsInFile()
|
||||
local file_path = vim.fn.expand("%:p")
|
||||
local context = BuildUtils.create_window()
|
||||
BuildUtils.run("pytest", { file_path }, "Run PyTest", context, pytest_on_line, pytest_on_complete)
|
||||
end
|
||||
|
||||
function RunAllPythonTests()
|
||||
local context = BuildUtils.create_window()
|
||||
BuildUtils.run("pytest", {}, "Run PyTest", context, pytest_on_line, pytest_on_complete)
|
||||
end
|
||||
|
||||
do
|
||||
local whichkey = require("which-key")
|
||||
whichkey.register({
|
||||
p = {
|
||||
name = "Python-related commands",
|
||||
t = {
|
||||
"Run Python tests",
|
||||
f = { RunPythonTestsInFile, "Run Python tests in the current file" },
|
||||
a = { RunAllPythonTests, "Run all Python tests" },
|
||||
c = { RunPythonTestAtCursor, "Run the Python test under the cursor" },
|
||||
},
|
||||
},
|
||||
}, { prefix = vim.api.nvim_get_var("maplocalleader") })
|
||||
end
|
@@ -3,6 +3,7 @@ local venv_selector = require("venv-selector")
|
||||
venv_selector.setup({
|
||||
changed_venv_hooks = { venv_selector.hooks.pyright },
|
||||
name = { "venv", ".venv" },
|
||||
search_venv_managers = true,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("VimEnter", {
|
||||
|
Reference in New Issue
Block a user