108 lines
3.6 KiB
Lua
108 lines
3.6 KiB
Lua
-- ======================================================================
|
|
-- keymaps.lua — Key mappings
|
|
-- ======================================================================
|
|
|
|
local map = vim.keymap.set
|
|
|
|
-- NERDTree
|
|
map("n", "<leader>n", ":NERDTreeFocus<CR>", { silent = true, desc = "NERDTree: Focus" })
|
|
map("n", "<C-n>", ":NERDTree<CR>", { silent = true, desc = "NERDTree: Open" })
|
|
map("n", "<C-t>", ":NERDTreeToggle<CR>", { silent = true, desc = "NERDTree: Toggle" })
|
|
map("n", "<C-f>", ":NERDTreeFind<CR>", { silent = true, desc = "NERDTree: Find current file" })
|
|
|
|
-- OSC52 (vim-oscyank)
|
|
map("n", "<leader>c", "<Plug>OSCYankOperator", { desc = "OSC Yank: Operator" })
|
|
map("n", "<leader>cc", "<leader>c_", { desc = "OSC Yank: Current line" })
|
|
map("v", "<leader>c", "<Plug>OSCYankVisual", { desc = "OSC Yank: Visual selection" })
|
|
|
|
-- vim-slime
|
|
vim.g.slime_no_mappings = 1
|
|
map("x", "<C-c><C-c>", "<Plug>SlimeRegionSend", { desc = "Slime: Send region" })
|
|
map("n", "<C-c><C-c>", function()
|
|
require("utils").send_cell("^#%%")
|
|
end, { silent = true, desc = "Slime: Send cell" })
|
|
map("n", "<C-c>v", "<Plug>SlimeConfig", { desc = "Slime: Configure" })
|
|
|
|
-- Claude Code
|
|
map("n", "<leader>ac", ":ClaudeCode<CR>", { silent = true, desc = "ClaudeCode: Toggle" })
|
|
map("n", "<leader>af", ":ClaudeCodeFocus<CR>", { silent = true, desc = "ClaudeCode: Focus" })
|
|
map("v", "<leader>as", ":ClaudeCodeSend<CR>", { silent = true, desc = "ClaudeCode: Send selection" })
|
|
map("n", "<leader>ad", ":ClaudeCodeAdd ", { desc = "ClaudeCode: Add file to context" })
|
|
map("n", "<leader>aa", ":ClaudeCodeDiffAccept<CR>", { silent = true, desc = "ClaudeCode: Accept diff" })
|
|
map("n", "<leader>ar", ":ClaudeCodeDiffDeny<CR>", { silent = true, desc = "ClaudeCode: Reject diff" })
|
|
|
|
|
|
-- DAP (GDB)
|
|
local function dap_attach_or(fn)
|
|
return function(...)
|
|
local dap = require("dap")
|
|
if dap.session() then
|
|
return fn(dap, ...)
|
|
end
|
|
if vim.fn.exists(":Hazard3Attach") == 2 then
|
|
vim.cmd("Hazard3Attach")
|
|
return
|
|
end
|
|
return fn(dap, ...)
|
|
end
|
|
end
|
|
|
|
map("n", "<F5>", dap_attach_or(function(dap)
|
|
dap.continue()
|
|
end), { desc = "DAP: Continue (or Hazard3Attach)" })
|
|
|
|
map("n", "<F10>", dap_attach_or(function(dap)
|
|
dap.step_over()
|
|
end), { desc = "DAP: Step over" })
|
|
|
|
map("n", "<F11>", dap_attach_or(function(dap)
|
|
dap.step_into()
|
|
end), { desc = "DAP: Step into" })
|
|
|
|
map("n", "<F12>", dap_attach_or(function(dap)
|
|
dap.step_out()
|
|
end), { desc = "DAP: Step out" })
|
|
|
|
map("n", "<leader>db", function()
|
|
require("dap").toggle_breakpoint()
|
|
end, { desc = "DAP: Toggle breakpoint" })
|
|
|
|
map("n", "<leader>dB", function()
|
|
require("dap").set_breakpoint(vim.fn.input("Condition: "))
|
|
end, { desc = "DAP: Conditional breakpoint" })
|
|
|
|
map("n", "<leader>dr", function()
|
|
require("dap").repl.open()
|
|
end, { desc = "DAP: REPL" })
|
|
|
|
map("n", "<leader>du", function()
|
|
require("dapui").toggle()
|
|
end, { desc = "DAP: Toggle UI" })
|
|
|
|
map("n", "<leader>dR", function()
|
|
local dapui = require("dapui")
|
|
dapui.close()
|
|
dapui.open({ reset = true })
|
|
end, { desc = "DAP UI: Reset layout" })
|
|
|
|
map("n", "<leader>da", function()
|
|
require("hazard3_dap").open_disassembly()
|
|
end, { desc = "DAP: Disassembly" })
|
|
|
|
|
|
map("n", "<leader>di", dap_attach_or(function(dap)
|
|
dap.step_into({ granularity = "instruction" })
|
|
end), { desc = "DAP: Step instruction into" })
|
|
|
|
map("n", "<leader>dI", dap_attach_or(function(dap)
|
|
dap.step_over({ granularity = "instruction" })
|
|
end), { desc = "DAP: Step instruction over" })
|
|
|
|
map("n", "<leader>dx", function()
|
|
require("dap").terminate()
|
|
end, { desc = "DAP: Terminate" })
|
|
|
|
map("n", "<leader>dp", function()
|
|
require("dap").pause()
|
|
end, { desc = "DAP: Pause" })
|