|
|
|
|
@@ -1,5 +1,3 @@
|
|
|
|
|
vim.g.mapleader = " "
|
|
|
|
|
|
|
|
|
|
local function smart_quit()
|
|
|
|
|
local bufnr = vim.api.nvim_get_current_buf()
|
|
|
|
|
local modified = vim.api.nvim_buf_get_option(bufnr, "modified")
|
|
|
|
|
@@ -27,122 +25,77 @@ end
|
|
|
|
|
|
|
|
|
|
local wk = require("which-key")
|
|
|
|
|
|
|
|
|
|
wk.setup({})
|
|
|
|
|
|
|
|
|
|
wk.register({
|
|
|
|
|
["<leader>"] = {
|
|
|
|
|
|
|
|
|
|
[";"] = { "<cmd>Alpha<CR>", "Dashboard" },
|
|
|
|
|
["w"] = { "<cmd>w!<CR>", "Save" },
|
|
|
|
|
["q"] = { "<cmd>smart_quit()<CR>", "Quit" },
|
|
|
|
|
["/"] = { "<Plug>(comment_toggle_linewise_current)", "Comment toggle current line" },
|
|
|
|
|
["c"] = { "<cmd>BufferKill<CR>", "Close Buffer" },
|
|
|
|
|
["f"] = { find_project_files, "Find File" },
|
|
|
|
|
["h"] = { "<cmd>nohlsearch<CR>", "No Highlight" },
|
|
|
|
|
["t"] = { "<cmd>TodoTelescope keywords=TODO,FIX<CR>", "Find TODO,FIX" },
|
|
|
|
|
b = {
|
|
|
|
|
name = "Buffers",
|
|
|
|
|
j = { "<cmd>BufferLinePick<cr>", "Jump" },
|
|
|
|
|
f = { "<cmd>Telescope buffers<cr>", "Find" },
|
|
|
|
|
b = { "<cmd>BufferLineCyclePrev<cr>", "Previous" },
|
|
|
|
|
n = { "<cmd>BufferLineCycleNext<cr>", "Next" },
|
|
|
|
|
-- w = { "<cmd>BufferWipeout<cr>", "Wipeout" }, -- TODO: implement this for bufferline
|
|
|
|
|
e = {
|
|
|
|
|
"<cmd>BufferLinePickClose<cr>",
|
|
|
|
|
"Pick which buffer to close",
|
|
|
|
|
},
|
|
|
|
|
h = { "<cmd>BufferLineCloseLeft<cr>", "Close all to the left" },
|
|
|
|
|
l = {
|
|
|
|
|
"<cmd>BufferLineCloseRight<cr>",
|
|
|
|
|
"Close all to the right",
|
|
|
|
|
},
|
|
|
|
|
D = {
|
|
|
|
|
"<cmd>BufferLineSortByDirectory<cr>",
|
|
|
|
|
"Sort by directory",
|
|
|
|
|
},
|
|
|
|
|
L = {
|
|
|
|
|
"<cmd>BufferLineSortByExtension<cr>",
|
|
|
|
|
"Sort by language",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
-- " Available Debug Adapters:
|
|
|
|
|
-- " https://microsoft.github.io/debug-adapter-protocol/implementors/adapters/
|
|
|
|
|
-- " Adapter configuration and installation instructions:
|
|
|
|
|
-- " https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation
|
|
|
|
|
-- " Debug Adapter protocol:
|
|
|
|
|
-- " https://microsoft.github.io/debug-adapter-protocol/
|
|
|
|
|
-- " Debugging
|
|
|
|
|
g = {
|
|
|
|
|
name = "Git",
|
|
|
|
|
g = { Lazygit_toggle, "Lazygit" },
|
|
|
|
|
j = { "<cmd>lua require 'gitsigns'.next_hunk({navigation_message = false})<cr>", "Next Hunk" },
|
|
|
|
|
k = { "<cmd>lua require 'gitsigns'.prev_hunk({navigation_message = false})<cr>", "Prev Hunk" },
|
|
|
|
|
l = { "<cmd>lua require 'gitsigns'.blame_line()<cr>", "Blame" },
|
|
|
|
|
p = { "<cmd>lua require 'gitsigns'.preview_hunk()<cr>", "Preview Hunk" },
|
|
|
|
|
r = { "<cmd>lua require 'gitsigns'.reset_hunk()<cr>", "Reset Hunk" },
|
|
|
|
|
R = { "<cmd>lua require 'gitsigns'.reset_buffer()<cr>", "Reset Buffer" },
|
|
|
|
|
s = { "<cmd>lua require 'gitsigns'.stage_hunk()<cr>", "Stage Hunk" },
|
|
|
|
|
u = {
|
|
|
|
|
"<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>",
|
|
|
|
|
"Undo Stage Hunk",
|
|
|
|
|
},
|
|
|
|
|
o = { "<cmd>Telescope git_status<cr>", "Open changed file" },
|
|
|
|
|
b = { "<cmd>Telescope git_branches<cr>", "Checkout branch" },
|
|
|
|
|
c = { "<cmd>Telescope git_commits<cr>", "Checkout commit" },
|
|
|
|
|
C = {
|
|
|
|
|
"<cmd>Telescope git_bcommits<cr>",
|
|
|
|
|
"Checkout commit(for current file)",
|
|
|
|
|
},
|
|
|
|
|
d = {
|
|
|
|
|
"<cmd>Gitsigns diffthis HEAD<cr>",
|
|
|
|
|
"Git Diff",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
l = {
|
|
|
|
|
name = "LSP",
|
|
|
|
|
a = { "<cmd>lua vim.lsp.buf.code_action()<cr>", "Code Action" },
|
|
|
|
|
d = { "<cmd>Telescope diagnostics bufnr=0 theme=get_ivy<cr>", "Buffer Diagnostics" },
|
|
|
|
|
w = { "<cmd>Telescope diagnostics<cr>", "Diagnostics" },
|
|
|
|
|
-- f = { require("lvim.lsp.utils").format, "Format" },
|
|
|
|
|
i = { "<cmd>LspInfo<cr>", "Info" },
|
|
|
|
|
I = { "<cmd>Mason<cr>", "Mason Info" },
|
|
|
|
|
j = {
|
|
|
|
|
vim.diagnostic.goto_next,
|
|
|
|
|
"Next Diagnostic",
|
|
|
|
|
},
|
|
|
|
|
k = {
|
|
|
|
|
vim.diagnostic.goto_prev,
|
|
|
|
|
"Prev Diagnostic",
|
|
|
|
|
},
|
|
|
|
|
l = { vim.lsp.codelens.run, "CodeLens Action" },
|
|
|
|
|
q = { vim.diagnostic.setloclist, "Quickfix" },
|
|
|
|
|
r = { vim.lsp.buf.rename, "Rename" },
|
|
|
|
|
s = { "<cmd>Telescope lsp_document_symbols<cr>", "Document Symbols" },
|
|
|
|
|
S = {
|
|
|
|
|
"<cmd>Telescope lsp_dynamic_workspace_symbols<cr>",
|
|
|
|
|
"Workspace Symbols",
|
|
|
|
|
},
|
|
|
|
|
e = { "<cmd>Telescope quickfix<cr>", "Telescope Quickfix" },
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a = { "<cmd>lua require('telescope.builtin').lsp_code_actions()<cr>", "Code Actions" },
|
|
|
|
|
d = { "<cmd>lua require('telescope.builtin').lsp_document_diagnostics()<cr>", "LSP Diagnostics" },
|
|
|
|
|
k = { "<cmd>lua vim.lsp.buf.signature_help()<cr>", "Signature Help" },
|
|
|
|
|
P = { "<cmd>lua require'telescope'.extensions.projects.projects{}<cr>", "Signature Help" },
|
|
|
|
|
}
|
|
|
|
|
wk.setup({
|
|
|
|
|
preset = "classic",
|
|
|
|
|
delay = 0,
|
|
|
|
|
triggers = {
|
|
|
|
|
{ "<auto>", mode = "nxso" },
|
|
|
|
|
{ " ", mode = "n" }, -- literal space character
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
wk.register(
|
|
|
|
|
{
|
|
|
|
|
["/"] = { "<Plug>(comment_toggle_linewise_visual)", "Comment toggle linewise (visual)" },
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
mode = "v", -- VISUAL mode
|
|
|
|
|
prefix = "<leader>",
|
|
|
|
|
buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
|
|
|
|
|
silent = true, -- use `silent` when creating keymaps
|
|
|
|
|
noremap = true, -- use `noremap` when creating keymaps
|
|
|
|
|
nowait = true, -- use `nowait` when creating keymaps
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
wk.add({
|
|
|
|
|
-- Single key mappings
|
|
|
|
|
{ "<leader>;", "<cmd>Alpha<CR>", desc = "Dashboard" },
|
|
|
|
|
{ "<leader>w", "<cmd>w!<CR>", desc = "Save" },
|
|
|
|
|
{ "<leader>q", smart_quit, desc = "Quit" },
|
|
|
|
|
{ "<leader>/", "<Plug>(comment_toggle_linewise_current)", desc = "Comment toggle current line" },
|
|
|
|
|
{ "<leader>c", "<cmd>BufferKill<CR>", desc = "Close Buffer" },
|
|
|
|
|
{ "<leader>f", find_project_files, desc = "Find File" },
|
|
|
|
|
{ "<leader>h", "<cmd>nohlsearch<CR>", desc = "No Highlight" },
|
|
|
|
|
{ "<leader>t", "<cmd>TodoTelescope keywords=TODO,FIX<CR>", desc = "Find TODO,FIX" },
|
|
|
|
|
|
|
|
|
|
-- Buffers group
|
|
|
|
|
{ "<leader>b", group = "Buffers" },
|
|
|
|
|
{ "<leader>bj", "<cmd>BufferLinePick<cr>", desc = "Jump" },
|
|
|
|
|
{ "<leader>bf", "<cmd>Telescope buffers<cr>", desc = "Find" },
|
|
|
|
|
{ "<leader>bb", "<cmd>BufferLineCyclePrev<cr>", desc = "Previous" },
|
|
|
|
|
{ "<leader>bn", "<cmd>BufferLineCycleNext<cr>", desc = "Next" },
|
|
|
|
|
{ "<leader>be", "<cmd>BufferLinePickClose<cr>", desc = "Pick which buffer to close" },
|
|
|
|
|
{ "<leader>bh", "<cmd>BufferLineCloseLeft<cr>", desc = "Close all to the left" },
|
|
|
|
|
{ "<leader>bl", "<cmd>BufferLineCloseRight<cr>", desc = "Close all to the right" },
|
|
|
|
|
{ "<leader>bD", "<cmd>BufferLineSortByDirectory<cr>", desc = "Sort by directory" },
|
|
|
|
|
{ "<leader>bL", "<cmd>BufferLineSortByExtension<cr>", desc = "Sort by language" },
|
|
|
|
|
|
|
|
|
|
-- Git group
|
|
|
|
|
{ "<leader>g", group = "Git" },
|
|
|
|
|
{ "<leader>gg", Lazygit_toggle, desc = "Lazygit" },
|
|
|
|
|
{ "<leader>gj", "<cmd>lua require 'gitsigns'.next_hunk({navigation_message = false})<cr>", desc = "Next Hunk" },
|
|
|
|
|
{ "<leader>gk", "<cmd>lua require 'gitsigns'.prev_hunk({navigation_message = false})<cr>", desc = "Prev Hunk" },
|
|
|
|
|
{ "<leader>gl", "<cmd>lua require 'gitsigns'.blame_line()<cr>", desc = "Blame" },
|
|
|
|
|
{ "<leader>gp", "<cmd>lua require 'gitsigns'.preview_hunk()<cr>", desc = "Preview Hunk" },
|
|
|
|
|
{ "<leader>gr", "<cmd>lua require 'gitsigns'.reset_hunk()<cr>", desc = "Reset Hunk" },
|
|
|
|
|
{ "<leader>gR", "<cmd>lua require 'gitsigns'.reset_buffer()<cr>", desc = "Reset Buffer" },
|
|
|
|
|
{ "<leader>gs", "<cmd>lua require 'gitsigns'.stage_hunk()<cr>", desc = "Stage Hunk" },
|
|
|
|
|
{ "<leader>gu", "<cmd>lua require 'gitsigns'.undo_stage_hunk()<cr>", desc = "Undo Stage Hunk" },
|
|
|
|
|
{ "<leader>go", "<cmd>Telescope git_status<cr>", desc = "Open changed file" },
|
|
|
|
|
{ "<leader>gb", "<cmd>Telescope git_branches<cr>", desc = "Checkout branch" },
|
|
|
|
|
{ "<leader>gc", "<cmd>Telescope git_commits<cr>", desc = "Checkout commit" },
|
|
|
|
|
{ "<leader>gC", "<cmd>Telescope git_bcommits<cr>", desc = "Checkout commit(for current file)" },
|
|
|
|
|
{ "<leader>gd", "<cmd>Gitsigns diffthis HEAD<cr>", desc = "Git Diff" },
|
|
|
|
|
|
|
|
|
|
-- LSP group
|
|
|
|
|
{ "<leader>l", group = "LSP" },
|
|
|
|
|
{ "<leader>la", "<cmd>lua vim.lsp.buf.code_action()<cr>", desc = "Code Action" },
|
|
|
|
|
{ "<leader>ld", "<cmd>Telescope diagnostics bufnr=0 theme=get_ivy<cr>", desc = "Buffer Diagnostics" },
|
|
|
|
|
{ "<leader>lw", "<cmd>Telescope diagnostics<cr>", desc = "Diagnostics" },
|
|
|
|
|
{ "<leader>li", "<cmd>LspInfo<cr>", desc = "Info" },
|
|
|
|
|
{ "<leader>lI", "<cmd>Mason<cr>", desc = "Mason Info" },
|
|
|
|
|
{ "<leader>lj", vim.diagnostic.goto_next, desc = "Next Diagnostic" },
|
|
|
|
|
{ "<leader>lk", vim.diagnostic.goto_prev, desc = "Prev Diagnostic" },
|
|
|
|
|
{ "<leader>ll", vim.lsp.codelens.run, desc = "CodeLens Action" },
|
|
|
|
|
{ "<leader>lq", vim.diagnostic.setloclist, desc = "Quickfix" },
|
|
|
|
|
{ "<leader>lr", vim.lsp.buf.rename, desc = "Rename" },
|
|
|
|
|
{ "<leader>ls", "<cmd>Telescope lsp_document_symbols<cr>", desc = "Document Symbols" },
|
|
|
|
|
{ "<leader>lS", "<cmd>Telescope lsp_dynamic_workspace_symbols<cr>", desc = "Workspace Symbols" },
|
|
|
|
|
{ "<leader>le", "<cmd>Telescope quickfix<cr>", desc = "Telescope Quickfix" },
|
|
|
|
|
|
|
|
|
|
-- Direct LSP shortcuts
|
|
|
|
|
{ "<leader>a", "<cmd>lua require('telescope.builtin').lsp_code_actions()<cr>", desc = "Code Actions" },
|
|
|
|
|
{ "<leader>d", "<cmd>lua require('telescope.builtin').lsp_document_diagnostics()<cr>", desc = "LSP Diagnostics" },
|
|
|
|
|
{ "<leader>k", "<cmd>lua vim.lsp.buf.signature_help()<cr>", desc = "Signature Help" },
|
|
|
|
|
{ "<leader>P", "<cmd>lua require'telescope'.extensions.projects.projects{}<cr>", desc = "Projects" },
|
|
|
|
|
|
|
|
|
|
-- Visual mode mappings
|
|
|
|
|
{ "<leader>/", "<Plug>(comment_toggle_linewise_visual)", desc = "Comment toggle linewise (visual)", mode = "v" },
|
|
|
|
|
})
|
|
|
|
|
|