tests and terminal
This commit is contained in:
@@ -5,6 +5,10 @@ keymap.set("n", "<leader>h", "<C-w>h", { noremap = true, silent = true, desc = "
|
||||
keymap.set("n", "<leader>j", "<C-w>j", { noremap = true, silent = true, desc = "Window down" })
|
||||
keymap.set("n", "<leader>k", "<C-w>k", { noremap = true, silent = true, desc = "Window up" })
|
||||
keymap.set("n", "<leader>l", "<C-w>l", { noremap = true, silent = true, desc = "Window right" })
|
||||
keymap.set("t", "<leader>h", [[<C-\><C-n><C-w>h]], { noremap = true, silent = true, desc = "Window left" })
|
||||
keymap.set("t", "<leader>j", [[<C-\><C-n><C-w>j]], { noremap = true, silent = true, desc = "Window down" })
|
||||
keymap.set("t", "<leader>k", [[<C-\><C-n><C-w>k]], { noremap = true, silent = true, desc = "Window up" })
|
||||
keymap.set("t", "<leader>l", [[<C-\><C-n><C-w>l]], { noremap = true, silent = true, desc = "Window right" })
|
||||
|
||||
local reload = require("utils.reload")
|
||||
|
||||
@@ -38,6 +42,113 @@ keymap.set("n", "<leader>xr", "<cmd>Trouble lsp_references toggle<CR>", { norema
|
||||
keymap.set("n", "<leader>xs", "<cmd>Trouble symbols toggle focus=false<CR>", { noremap = true, silent = true, desc = "Problems document symbols" })
|
||||
keymap.set("n", "<leader>xS", "<cmd>Trouble lsp toggle focus=false win.position=right<CR>", { noremap = true, silent = true, desc = "Problems workspace symbols" })
|
||||
|
||||
local function with_toggleterm(fn)
|
||||
local ok, toggleterm = pcall(require, "plugins.config.toggleterm")
|
||||
if not ok then
|
||||
pcall(function()
|
||||
require("lazy").load({ plugins = { "toggleterm.nvim" } })
|
||||
end)
|
||||
ok, toggleterm = pcall(require, "plugins.config.toggleterm")
|
||||
end
|
||||
if not ok then
|
||||
vim.notify("toggleterm is not available", vim.log.levels.WARN)
|
||||
return
|
||||
end
|
||||
fn(toggleterm)
|
||||
end
|
||||
|
||||
keymap.set("n", "<leader>mm", function()
|
||||
with_toggleterm(function(toggleterm)
|
||||
toggleterm.toggle_shell()
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Build terminal" })
|
||||
keymap.set("t", "<leader>mm", [[<C-\><C-n><cmd>lua require("plugins.config.toggleterm").toggle_shell()<CR>]], { noremap = true, silent = true, desc = "Build terminal" })
|
||||
keymap.set("n", "<leader>mc", function()
|
||||
with_toggleterm(function(toggleterm)
|
||||
toggleterm.rerun_last()
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Build rerun last" })
|
||||
keymap.set("n", "<leader>m1", function()
|
||||
with_toggleterm(function(toggleterm)
|
||||
toggleterm.toggle_build_terminal()
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Build toggle terminal" })
|
||||
keymap.set("t", "<leader>m1", [[<C-\><C-n><cmd>lua require("plugins.config.toggleterm").toggle_build_terminal()<CR>]], { noremap = true, silent = true, desc = "Build toggle terminal" })
|
||||
keymap.set("n", "<leader>m2", function()
|
||||
with_toggleterm(function(toggleterm)
|
||||
toggleterm.toggle_test_terminal()
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Build test terminal" })
|
||||
keymap.set("t", "<leader>m2", [[<C-\><C-n><cmd>lua require("plugins.config.toggleterm").toggle_test_terminal()<CR>]], { noremap = true, silent = true, desc = "Build test terminal" })
|
||||
|
||||
local function with_neotest(fn)
|
||||
local ok, neotest = pcall(require, "neotest")
|
||||
if not ok then
|
||||
vim.notify("neotest is not available", vim.log.levels.WARN)
|
||||
return
|
||||
end
|
||||
fn(neotest)
|
||||
end
|
||||
|
||||
local function project_root_for_tests()
|
||||
local current_file = vim.api.nvim_buf_get_name(0)
|
||||
local start_path = current_file ~= "" and vim.fs.dirname(current_file) or vim.loop.cwd()
|
||||
local markers = { "CMakePresets.json", "CMakeLists.txt", ".git" }
|
||||
local found = vim.fs.find(markers, { upward = true, path = start_path })[1]
|
||||
|
||||
if found then
|
||||
return vim.fs.dirname(found)
|
||||
end
|
||||
|
||||
return vim.loop.cwd()
|
||||
end
|
||||
|
||||
keymap.set("n", "<leader>tt", function()
|
||||
with_neotest(function(neotest)
|
||||
neotest.run.run()
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Tests run nearest" })
|
||||
keymap.set("n", "<leader>tf", function()
|
||||
with_neotest(function(neotest)
|
||||
neotest.run.run(vim.fn.expand("%"))
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Tests run file" })
|
||||
keymap.set("n", "<leader>ta", function()
|
||||
with_neotest(function(neotest)
|
||||
neotest.run.run(project_root_for_tests())
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Tests run all" })
|
||||
keymap.set("n", "<leader>tg", function()
|
||||
with_toggleterm(function(toggleterm)
|
||||
toggleterm.run_tests()
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Tests run via ctest" })
|
||||
keymap.set("n", "<leader>td", function()
|
||||
with_neotest(function(neotest)
|
||||
neotest.run.run({ strategy = "dap" })
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Tests debug nearest" })
|
||||
keymap.set("n", "<leader>to", function()
|
||||
with_neotest(function(neotest)
|
||||
neotest.output.open({ enter = true, auto_close = true })
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Tests open output" })
|
||||
keymap.set("n", "<leader>tp", function()
|
||||
with_neotest(function(neotest)
|
||||
neotest.output_panel.toggle()
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Tests toggle output panel" })
|
||||
keymap.set("n", "<leader>ts", function()
|
||||
with_neotest(function(neotest)
|
||||
neotest.summary.toggle()
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Tests toggle summary" })
|
||||
keymap.set("n", "<leader>tS", function()
|
||||
with_neotest(function(neotest)
|
||||
neotest.run.stop()
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "Tests stop" })
|
||||
|
||||
vim.keymap.set("n", "gn", vim.diagnostic.goto_next, { noremap = true, silent = true })
|
||||
|
||||
local function with_dap(fn)
|
||||
@@ -163,7 +274,11 @@ keymap.set("n", "<leader>dR", "<cmd>Telescope dap configurations<CR>", { noremap
|
||||
keymap.set("n", "<leader>dK", "<cmd>Telescope dap list_breakpoints<CR>", { noremap = true, silent = true, desc = "Debug breakpoints" })
|
||||
|
||||
keymap.set("n", "<leader>cg", "<cmd>CMakeGenerate<CR>", { noremap = true, silent = true, desc = "CMake generate" })
|
||||
keymap.set("n", "<leader>cb", "<cmd>CMakeBuild<CR>", { noremap = true, silent = true, desc = "CMake build" })
|
||||
keymap.set("n", "<leader>cb", function()
|
||||
with_toggleterm(function(toggleterm)
|
||||
toggleterm.run_build()
|
||||
end)
|
||||
end, { noremap = true, silent = true, desc = "CMake build (terminal)" })
|
||||
keymap.set("n", "<leader>cB", "<cmd>CMakeBuild!<CR>", { noremap = true, silent = true, desc = "CMake clean build" })
|
||||
keymap.set("n", "<leader>cc", "<cmd>CMakeClean<CR>", { noremap = true, silent = true, desc = "CMake clean" })
|
||||
keymap.set("n", "<leader>ct", "<cmd>CMakeSelectBuildTarget<CR>", { noremap = true, silent = true, desc = "CMake select build target" })
|
||||
|
||||
Reference in New Issue
Block a user