164 lines
6.9 KiB
Lua
164 lines
6.9 KiB
Lua
local s = vim.keymap.set
|
|
local telescope = require("telescope.builtin")
|
|
local dap = require('dap')
|
|
local dapui = require("dapui")
|
|
|
|
s("i", "<C-h>", "<Left>", { desc = "Move left" })
|
|
s("i", "<C-l>", "<Right>", { desc = "Move right" })
|
|
s("i", "<C-j>", "<Down>", { desc = "Move down" })
|
|
s("i", "<C-k>", "<Up>", { desc = "Move up" })
|
|
s("n", "<Esc>", ":noh<CR>", { desc = "Clear highlights" })
|
|
s("n", "<leader>!x", "<cmd> bdelete! <CR>", { desc = "Delete buffer !" })
|
|
|
|
s("n", "<leader>x", "<cmd> BufferClose <CR>", { desc = "Delete buffer" })
|
|
s("n", "<leader>X", "<cmd> BufferCloseAllButPinned <CR>", { desc = "Delete all buffers except pinned" })
|
|
s("n", "<a-c-j>", "<cmd> BufferMoveNext <CR>", { desc = "Move buffer forward" })
|
|
s("n", "<a-c-k>", "<cmd> BufferMovePrevious <CR>", { desc = "Move buffer backward" })
|
|
s("n", "<a-j>", "<cmd> BufferNext <CR>", { desc = "Next buffer" })
|
|
s("n", "<a-k>", "<cmd> BufferPrevious <CR>", { desc = "Previous buffer" })
|
|
s('n', '<leader>p', "<cmd> BufferPin <cr>", { desc = "Pin/Unpin buffer" })
|
|
|
|
s('n', '<c-c><c-c>', '<cmd>wq<CR>', { desc = 'Write and exit'} )
|
|
s("n", "ZZ", "<cmd> q! <CR>", { desc = "Quit without saving" })
|
|
s("n", "q:", "<nop>")
|
|
s('n', 'H', require('treesj').toggle)
|
|
s('n', '<leader>ff', "<cmd> Telescope find_files follow=true <CR>")
|
|
s('v', '<leader>ff', '"hy<ESC>:Telescope find_files follow=true default_text=<c-r>h<CR>', default_opts)
|
|
s('n', '<leader>fg', "<cmd> Telescope live_grep <CR>")
|
|
s('v', '<leader>fg', '"hy<ESC>:Telescope live_grep default_text=<c-r>h<CR>', default_opts)
|
|
s('n', '<leader>fF', "<cmd> Telescope find_files follow=true no_ignore=true hidden=true <CR>")
|
|
s('n', '<leader>ft', MiniFiles.open, { desc = "Open file tree" })
|
|
s('n', '<leader>N', "<cmd> Neogit <cr>", { desc = "Open Neogit" })
|
|
-- s('x', 'p', 'p:let @+=@0<CR>:let @"=@0<CR>')
|
|
s('x', 'p', 'P')
|
|
s('n', 'gh', ":Ouroboros<cr>", { desc = "Go to header/implementation" })
|
|
|
|
-- Luasnip
|
|
local ls = require("luasnip")
|
|
s({ "i", "s" }, "<A-j>", function() ls.jump(1) end, { silent = true })
|
|
s({ "i", "s" }, "<A-k>", function() ls.jump(-1) end, { silent = true })
|
|
|
|
-- Hop
|
|
s({ 'n', 'v' }, 'f', "<cmd> HopWord <cr>", { desc = "HopWord" })
|
|
|
|
-- marks
|
|
for _, key in ipairs({"A", "Z", "E", "Q", "S", "D"}) do
|
|
s({ 'n' }, "<A-" .. key .. ">", "m" .. key, { desc = "Set mark " .. key })
|
|
s({ 'n' }, "<A-" .. string.lower(key) .. ">", "g'" .. key, { desc = "Jump to mark " .. key })
|
|
end
|
|
|
|
s("n", "<leader>tw", "<cmd> set wrap! <cr>", { desc = "toggle line wrap" })
|
|
|
|
local toggle_lsp_virtual_text = function ()
|
|
vim.diagnostic.config({
|
|
virtual_text = not vim.diagnostic.config().virtual_text
|
|
})
|
|
end
|
|
s("n", "<leader>tv", toggle_lsp_virtual_text, { desc = "toggle virtual text for diagnostics" })
|
|
|
|
|
|
function copy_filename_and_line ()
|
|
local filename = vim.fn.expand("%")
|
|
local line = vim.fn.line(".")
|
|
local text = filename .. ":" .. line
|
|
vim.fn.setreg("+", text)
|
|
vim.print(text)
|
|
end
|
|
|
|
s({ 'n' }, "y<c-g>", copy_filename_and_line, { desc = "Copy filename and line"})
|
|
|
|
|
|
function moveCursorToMouse()
|
|
local mousePos = vim.fn.getmousepos()
|
|
vim.fn.setpos(".", { 0, mousePos.line, mousePos.column, 0 })
|
|
end
|
|
|
|
function dap_or(func)
|
|
return function ()
|
|
if dap.session() then
|
|
dapui.eval()
|
|
else
|
|
func()
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
vim.api.nvim_create_autocmd('LspAttach', {
|
|
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
|
|
callback = function(ev)
|
|
vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
|
|
|
|
local opts = { buffer = ev.buf }
|
|
s('n', '<leader>e', vim.diagnostic.open_float, { buffer = ev.buf, desc = "Show diagnostics" })
|
|
s('n', '[[', vim.diagnostic.goto_prev, { buffer = ev.buf, desc = "Previous diagnostic" })
|
|
s('n', ']]', vim.diagnostic.goto_next, { buffer = ev.buf, desc = "Next diagnostic" })
|
|
s( 'n', ']e',
|
|
function ()
|
|
vim.diagnostic.goto_next({severity=vim.diagnostic.severity.ERROR, wrap = true})
|
|
end,
|
|
{ buffer = ev.buf, desc = "Next error" }
|
|
)
|
|
s( 'n', '[e',
|
|
function ()
|
|
vim.diagnostic.goto_prev({severity=vim.diagnostic.severity.ERROR, wrap = true})
|
|
end,
|
|
{ buffer = ev.buf, desc = "Previous error" }
|
|
)
|
|
s('n', '<leader>q', vim.diagnostic.setloclist, { buffer = ev.buf, desc = "Set location list" })
|
|
s('n', 'gD', vim.lsp.buf.declaration, { buffer = ev.buf, desc = "Goto declaration" })
|
|
s('n', 'gd', telescope.lsp_definitions, { buffer = ev.buf, desc = "Goto definition" })
|
|
s( {'n', 'v'}, 'K', vim.lsp.buf.hover, { buffer = ev.buf, desc = "lsp Hover" })
|
|
s( {'n', 'v'}, '<c-k>', dap_or(vim.lsp.buf.signature_help), { buffer = ev.buf, desc = "dap eval" })
|
|
s(
|
|
{'n', 'v'}, '<RightMouse>',
|
|
function() moveCursorToMouse() dap_or(vim.lsp.buf.hover)() end,
|
|
{ buffer = ev.buf, desc = "Hover" }
|
|
)
|
|
s('n', 'gi', telescope.lsp_implementations, { buffer = ev.buf, desc = "Goto implementation" })
|
|
-- s('n', '<c-k>', vim.lsp.buf.signature_help, { buffer = ev.buf, desc = "Signature help" })
|
|
s('n', '<leader>D', vim.lsp.buf.type_definition, { buffer = ev.buf, desc = "Goto type definition" })
|
|
s({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, { buffer = ev.buf, desc = "Code action" })
|
|
s('n', 'gr', telescope.lsp_references, { buffer = ev.buf, desc = "Goto references" })
|
|
s({ 'n', 'v' }, '<leader>fm', ":Format<cr>", { buffer = ev.buf, desc = "Format" })
|
|
s({ 'v' }, '<leader>fl', ":!aligner.py<cr>", { buffer = ev.buf, desc = "Format signature" })
|
|
s('n', '<MiddleMouse>', '<LeftMouse> :lua vim.lsp.buf.definition()<cr>',
|
|
{ buffer = ev.buf, desc = "Goto definition" })
|
|
end,
|
|
})
|
|
|
|
function continue()
|
|
if dap.session() then
|
|
if dap.status() == "stopped" then
|
|
dap.continue()
|
|
end
|
|
dap.continue()
|
|
else
|
|
launchjs()
|
|
dap.continue()
|
|
end
|
|
end
|
|
|
|
local pb = require('persistent-breakpoints.api')
|
|
s('n', '<leader>b', pb.toggle_breakpoint, { desc = "Toggle breakpoint" })
|
|
s('n', '<leader>l', pb.set_log_point, { desc = "Set logpoint" })
|
|
s('n', '<leader>B', pb.set_conditional_breakpoint , { desc = "Add conditional breakpoint" })
|
|
s('n', '<leader>w', dapui.elements.watches.add, { desc = "Add watch" })
|
|
s('v', '<leader>w', dapui.elements.watches.add, { desc = "Add watch" })
|
|
s('n', '<f2>', dapui.toggle, { desc = "Toggle debygger UI" })
|
|
s('n', '<f3>', dap.pause, { desc = "Pause" })
|
|
s('n', '<f5>', continue, { desc = "Continue" })
|
|
s('n', '<f4>', dap.restart, { desc = "Restart" })
|
|
s('n', '<f6>', dap.step_into, { desc = "Step into" })
|
|
s('n', '<f7>', dap.step_over, { desc = "Step over" })
|
|
s('n', '<f8>', dap.step_out, { desc = "Step out" })
|
|
s('n', '<f9>', dap.run_to_cursor, { desc = "Run to cursor" })
|
|
s('n', '<f10>', dap.step_back, { desc = "Step back" })
|
|
s('n', '<A-u>', dap.up, { desc = "Up" })
|
|
s('n', '<A-d>', dap.down, { desc = "Down" })
|
|
-- s('n', '<rightmouse>', dapui.eval, { desc = "Eval" })
|
|
-- s('n', '<rightmouse>', '<LeftMouse> :lua require("dapui").eval()<cr>', { desc = "Eval" })
|
|
s('n', '<f12>', function()
|
|
dapui.close()
|
|
dap.terminate()
|
|
end, { desc = "Close debugger" })
|