183 lines
7.6 KiB
Lua
183 lines
7.6 KiB
Lua
local telescope = require("telescope.builtin")
|
|
|
|
vim.keymap.set("i", "<C-h>", "<Left>", { desc = "Move left" })
|
|
vim.keymap.set("i", "<C-l>", "<Right>", { desc = "Move right" })
|
|
vim.keymap.set("i", "<C-j>", "<Down>", { desc = "Move down" })
|
|
vim.keymap.set("i", "<C-k>", "<Up>", { desc = "Move up" })
|
|
vim.keymap.set("n", "<Esc>", ":noh<CR>", { desc = "Clear highlights" })
|
|
vim.keymap.set("n", "<leader>b", "<cmd> enew <CR>", { desc = "New buffer" })
|
|
vim.keymap.set("n", "<leader>x", "<cmd> bdelete <CR>", { desc = "Delete buffer" })
|
|
vim.keymap.set("n", "<leader>!x", "<cmd> bdelete! <CR>", { desc = "Delete buffer !" })
|
|
vim.keymap.set("n", "<Tab>", "<cmd> bn <CR>", { desc = "Next buffer" })
|
|
vim.keymap.set("n", "<S-Tab>", "<cmd> bp <CR>", { desc = "Previous buffer" })
|
|
vim.keymap.set("n", "ZZ", "<cmd> q! <CR>", { desc = "Quit without saving" })
|
|
vim.keymap.set("n", "q:", "<nop>")
|
|
vim.keymap.set('n', 'H', require('treesj').toggle)
|
|
vim.keymap.set(
|
|
'n',
|
|
'<leader>ff',
|
|
"<cmd> Telescope find_files follow=true <CR>"
|
|
)
|
|
vim.keymap.set(
|
|
'n',
|
|
'<leader>fg',
|
|
"<cmd> Telescope live_grep <CR>"
|
|
)
|
|
vim.keymap.set(
|
|
'n',
|
|
'<leader>fF',
|
|
"<cmd> Telescope find_files follow=true no_ignore=true hidden=true <CR>"
|
|
)
|
|
vim.keymap.set('n', '<leader>ft', MiniFiles.open, { desc = "Open file tree" })
|
|
-- vim.api.nvim_set_keymap('v', 'f', '<Plug>SnipRun', {silent = true})
|
|
-- vim.api.nvim_set_keymap('n', '<leader>f', '<Plug>SnipRunOperator', {silent = true})
|
|
-- vim.api.nvim_set_keymap('n', '<leader>ff', '<Plug>SnipRun', {silent = true})
|
|
vim.keymap.set('n', '<leader>rr', ":SnipRun<cr>", { desc = "Run line" })
|
|
vim.keymap.set('v', '<leader>r', ":SnipRun<cr>", { desc = "Run selection" })
|
|
|
|
vim.keymap.set('n', '<leader>N', "<cmd> Neogit <cr>", { desc = "Open Neogit" })
|
|
vim.keymap.set('n', '<a-f1>', "<cmd> Copilot <cr>", { desc = "Start Copilot" })
|
|
-- vim.keymap.set('x', 'p', 'p:let @+=@0<CR>:let @"=@0<CR>')
|
|
vim.keymap.set('x', 'p', 'P')
|
|
|
|
-- Luasnip
|
|
local ls = require("luasnip")
|
|
vim.keymap.set({ "i", "s" }, "<A-j>", function() ls.jump(1) end, { silent = true })
|
|
vim.keymap.set({ "i", "s" }, "<A-k>", function() ls.jump(-1) end, { silent = true })
|
|
|
|
-- Hop
|
|
vim.keymap.set({ 'n', 'v' }, 'f', "<cmd> HopWord <cr>", { desc = "HopWord" })
|
|
|
|
-- marks
|
|
vim.keymap.set({ 'n' }, "<A-A>", "mA", { desc = "Set mark A", remap = true })
|
|
vim.keymap.set({ 'n' }, "<A-a>", "g'A", { desc = "Jump to mark A", remap = true })
|
|
vim.keymap.set({ 'n' }, "<A-Z>", "mZ", { desc = "Set mark Z" })
|
|
vim.keymap.set({ 'n' }, "<A-z>", "g'Z", { desc = "Jump to mark Z" })
|
|
vim.keymap.set({ 'n' }, "<A-E>", "mE", { desc = "Set mark E" })
|
|
vim.keymap.set({ 'n' }, "<A-e>", "g'E", { desc = "Jump to mark E" })
|
|
vim.keymap.set({ 'n' } ,"<A-q>", "gqip", { desc = "format paragraph" })
|
|
vim.keymap.set({ 'v' } ,"<A-q>", "gq", { desc = "format vidsual selection" })
|
|
|
|
|
|
-- Global mappings.
|
|
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
|
-- Use LspAttach autocommand to only map the following keys
|
|
-- after the language server attaches to the current buffer
|
|
vim.api.nvim_create_autocmd('LspAttach', {
|
|
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
|
|
callback = function(ev)
|
|
-- Enable completion triggered by <c-x><c-o>
|
|
vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
|
|
|
|
-- Buffer local mappings.
|
|
-- See `:help vim.lsp.*` for documentation on any of the below functions
|
|
local opts = { buffer = ev.buf }
|
|
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, opts)
|
|
vim.keymap.set('n', '[[', vim.diagnostic.goto_prev, opts)
|
|
vim.keymap.set('n', ']]', vim.diagnostic.goto_next, opts)
|
|
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, opts)
|
|
|
|
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
|
|
vim.keymap.set('n', 'gd', telescope.lsp_definitions, opts)
|
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
|
|
vim.keymap.set('n', 'gi', telescope.lsp_implementations, opts)
|
|
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
|
|
vim.keymap.set('n', '<leader>D', vim.lsp.buf.type_definition, opts)
|
|
vim.keymap.set('n', '<leader>ra', vim.lsp.buf.rename, opts)
|
|
vim.keymap.set({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, opts)
|
|
vim.keymap.set('n', 'gr', telescope.lsp_references, opts)
|
|
vim.keymap.set({ 'n', 'v' }, '<leader>fm', ":Format<cr>", opts)
|
|
vim.keymap.set('n', '<MiddleMouse>', '<LeftMouse> :lua vim.lsp.buf.definition()<cr>', opts)
|
|
vim.keymap.set('n', '<RightMouse>', '<LeftMouse> :lua vim.lsp.buf.hover()<cr>', opts)
|
|
end,
|
|
})
|
|
|
|
-- Descriptions for lspconfig mappings
|
|
local wk = require("which-key")
|
|
wk.add({
|
|
{ "<leader>e", vim.diagnostic.open_float, desc = "Show diagnostics" },
|
|
{ "[[", vim.diagnostic.goto_prev, desc = "Previous diagnostic" },
|
|
{ "]]", vim.diagnostic.goto_next, desc = "Next diagnostic" },
|
|
{ "<leader>q", vim.diagnostic.setloclist, desc = "Set location list" },
|
|
{ "gD", vim.lsp.buf.declaration, desc = "Goto declaration" },
|
|
{ "gd", vim.lsp.buf.definition, desc = "Goto definition" },
|
|
{ "K", vim.lsp.buf.hover, desc = "Hover" },
|
|
{ "gi", vim.lsp.buf.implementation, desc = "Goto implementation" },
|
|
{ "<C-k>", vim.lsp.buf.signature_help, desc = "Signature help" },
|
|
{ "<leader>D", vim.lsp.buf.type_definition, desc = "Goto type definition" },
|
|
{ "<leader>ra", vim.lsp.buf.rename, desc = "Rename" },
|
|
{ "<leader>ca", vim.lsp.buf.code_action, desc = "Code action" },
|
|
{ "gr", vim.lsp.buf.references, desc = "Goto references" },
|
|
{
|
|
"<leader>fm",
|
|
function()
|
|
vim.lsp.buf.format { async = true }
|
|
end,
|
|
desc = "Format"
|
|
},
|
|
})
|
|
|
|
-- DAP
|
|
local dap = require('dap')
|
|
local dap_widgets = require('dap.ui.widgets')
|
|
local dap_sb_frames = dap_widgets.sidebar(dap_widgets.frames)
|
|
local dap_sb_scopes = dap_widgets.sidebar(dap_widgets.scopes)
|
|
local dap_sb_session = dap_widgets.sidebar(dap_widgets.sessions)
|
|
local dap_sb_threads = dap_widgets.sidebar(dap_widgets.threads)
|
|
|
|
vim.keymap.set('n', '<leader>b', dap.toggle_breakpoint, { desc = "Toggle breakpoint" })
|
|
vim.keymap.set('n', '<leader>B',
|
|
function ()
|
|
local condition = vim.fn.input("Condition: ", "")
|
|
dap.set_breakpoint(condition)
|
|
end
|
|
, { desc = "Add conditional breakpoint" })
|
|
|
|
local dapui = require("dapui")
|
|
|
|
local Hydra = require("hydra")
|
|
Hydra({
|
|
name = 'Debugger',
|
|
config = {
|
|
buffer = bufnr,
|
|
color = "pink",
|
|
invoke_on_body = true,
|
|
on_enter = function()
|
|
dapui.open()
|
|
dap.continue()
|
|
-- dap.repl.open()
|
|
end,
|
|
on_exit = function()
|
|
dapui.close()
|
|
dap.terminate()
|
|
dap_sb_frames.close()
|
|
dap_sb_scopes.close()
|
|
dap_sb_session.close()
|
|
dap_sb_threads.close()
|
|
dap.repl.close()
|
|
end,
|
|
hint = {
|
|
type = "statusline",
|
|
},
|
|
},
|
|
mode = { 'n', 'v' },
|
|
body = '<leader>gg',
|
|
heads = {
|
|
{ '<f5>', dap.continue, { desc = "Continue" } },
|
|
{ '<f4>', dap.restart, { desc = "Restart" } },
|
|
{ '<f6>', dap.step_into, { desc = "Step into" } },
|
|
{ '<f7>', dap.step_over, { desc = "Step over" } },
|
|
{ '<f8>', dap.step_out, { desc = "Step out" } },
|
|
{ '<f9>', dap.run_to_cursor, { desc = "Run to cursor" } },
|
|
{ '<f10>', dap.step_back, { desc = "Step back" } },
|
|
{ 'K', require("dapui").eval, { desc = "Hover" } },
|
|
{ '<A-j>', dap.up, { desc = "Up" } },
|
|
{ '<A-k>', dap.down, { desc = "Down" } },
|
|
-- right click to eval
|
|
{ '<rightmouse>', dapui.eval, { desc = "Eval", mode = "v" } },
|
|
{ '<rightmouse>', '<LeftMouse> :lua require("dapui").eval()<cr>', {
|
|
desc = "Eval",
|
|
} },
|
|
{ 'q', nil, { exit = true, nowait = true, desc = 'Exit' } },
|
|
}
|
|
})
|