feat: Add WhichKey descriptions
This commit is contained in:
parent
a8ef41ae1a
commit
479626c1ec
10 changed files with 265 additions and 90 deletions
|
|
@ -24,12 +24,12 @@ map("v", "l", "k", opts)
|
|||
map("v", ";", "l", opts)
|
||||
|
||||
-- debug
|
||||
map("n", "<F5>", ':lua require("dap").toggle_breakpoint()<CR>', opts)
|
||||
map("n", "<F6>", ':lua require("dap").step_over()<CR>', opts)
|
||||
map("n", "<F7>", ':lua require("dap").step_into()<CR>', opts)
|
||||
map("n", "<F8>", ':lua require("dapui").toggle()<CR> :lua require("dap").continue()<CR> ', opts)
|
||||
map("n", "<F9>", ':lua require("dap").continue()<CR>', opts)
|
||||
map("n", "<F10>", ':lua require("dap").close()<CR> :lua require("dapui").toggle()<CR>', opts)
|
||||
map("n", "<leader>db", ':lua require("dap").toggle_breakpoint()<CR>', { desc = "Toggle breakpoint" })
|
||||
map("n", "<leader>do", ':lua require("dap").step_over()<CR>', { desc = "Step over" })
|
||||
map("n", "<leader>di", ':lua require("dap").step_into()<CR>', { desc = "Step into" })
|
||||
map("n", "<leader>dc", ':lua require("dap").continue()<CR>', { desc = "Continue" })
|
||||
map("n", "<leader>dt", ':lua require("dapui").toggle()<CR> :lua require("dap").continue()<CR> ', { desc = "Open DAP" })
|
||||
map("n", "<leader>dq", ':lua require("dap").close()<CR> :lua require("dapui").toggle()<CR>', { desc = "Close DAP" })
|
||||
|
||||
-- file tree
|
||||
map("n", "<A-f>", ":lua require('nvim-tree.api').tree.toggle()<CR>", opts)
|
||||
|
|
@ -41,21 +41,18 @@ map("n", "<C-t>", ":lua require('toggleterm').toggle(1)<CR>", opts)
|
|||
map("n", "<F1>", ":BufferLineCyclePrev<CR>", opts)
|
||||
map("n", "<F2>", ":BufferLineCycleNext<CR>", opts)
|
||||
|
||||
-- formatting
|
||||
map("n", "<F4>", ":lua vim.lsp.buf.format { async = true }<CR>", opts)
|
||||
map("n", "<leader>a", ":Telescope lsp_definitions<CR>", opts)
|
||||
map("n", "<leader>s", ":Telescope lsp_references<CR>", opts)
|
||||
map("n", "<leader>d", ":Telescope lsp_type_definitions<CR>", opts)
|
||||
map("n", "<leader>f", ":Telescope lsp_implementations<CR>", opts)
|
||||
map("n", "<leader>q", ":lua vim.lsp.buf.code_action()<CR>", opts)
|
||||
map("n", "<leader>w", ":lua vim.lsp.buf.signature_help()<CR>", opts)
|
||||
map("n", "<leader>e", ":lua vim.lsp.buf.hover()<CR>", opts)
|
||||
map("n", "<leader>r", ":lua vim.lsp.buf.rename()<CR>", opts)
|
||||
map("n", "<leader>gq", ":lua require('telescope.builtin').git_commits()<CR>", opts)
|
||||
map("n", "<leader>gw", ":lua require('telescope.builtin').git_bcommits()<CR>", opts)
|
||||
map("n", "<leader>ge", ":lua require('telescope.builtin').git_branches()<CR>", opts)
|
||||
map("n", "<leader>gr", ":lua require('telescope.builtin').git_status()<CR>", opts)
|
||||
map("n", "<leader>ga", ":lua require('telescope.builtin').git_stash()<CR>", opts)
|
||||
-- git
|
||||
map("n", "<leader>gq", ":lua require('telescope.builtin').git_commits()<CR>", { desc = "Commits" })
|
||||
map("n", "<leader>gw", ":lua require('telescope.builtin').git_bcommits()<CR>", { desc = "Commits in branch" })
|
||||
map("n", "<leader>ge", ":lua require('telescope.builtin').git_branches()<CR>", { desc = "Branches" })
|
||||
map("n", "<leader>gr", ":lua require('telescope.builtin').git_status()<CR>", { desc = "Git status" })
|
||||
map("n", "<leader>ga", ":lua require('telescope.builtin').git_stash()<CR>", { desc = "Git stash" })
|
||||
map("n", "<leader>gg", function()
|
||||
Util.float_term({ "gitui" }, { cwd = Util.get_root() })
|
||||
end, { desc = "gitui (root dir)" })
|
||||
map("n", "<leader>gG", function()
|
||||
Util.float_term({ "gitui" })
|
||||
end, { desc = "gitui (cwd)" })
|
||||
|
||||
-- window switching
|
||||
function _G.set_terminal_maps()
|
||||
|
|
@ -76,20 +73,30 @@ map("n", "<A-l>", ":wincmd k<CR>", opts)
|
|||
map("n", "<A-;>", ":wincmd l<CR>", opts)
|
||||
|
||||
-- harpoon man
|
||||
map("n", "<C-1>", ":lua require('harpoon.ui').nav_file(1)<CR>", opts)
|
||||
map("n", "<C-2>", ":lua require('harpoon.ui').nav_file(2)<CR>", opts)
|
||||
map("n", "<C-3>", ":lua require('harpoon.ui').nav_file(3)<CR>", opts)
|
||||
map("n", "fma", ":lua require('harpoon.mark').add_file()<CR>", opts)
|
||||
map("n", "fmd", ":lua require('harpoon.mark').remove_file()<CR>", opts)
|
||||
map("n", "<leader>h1", ":lua require('harpoon.ui').nav_file(1)<CR>", { desc = "First Harpoon File" })
|
||||
map("n", "<leader>h2", ":lua require('harpoon.ui').nav_file(2)<CR>", { desc = "Second Harpoon File" })
|
||||
map("n", "<leader>h3", ":lua require('harpoon.ui').nav_file(3)<CR>", { desc = "First Harpoon File" })
|
||||
map("n", "<leader>ha", ":lua require('harpoon.mark').add_file()<CR>", { desc = "First Harpoon File" })
|
||||
map("n", "<leader>hd", ":lua require('harpoon.mark').remove_file()<CR>", { desc = "First Harpoon File" })
|
||||
map("n", "<leader>hm", ":Telescope harpoon marks<CR>", { noremap = true, silent = true, desc = "Show harpoon marks" })
|
||||
|
||||
-- telescope
|
||||
map("n", "fb", ":lua require('telescope').extensions.file_browser.file_browser{}<CR>", {})
|
||||
map("n", "ff", ":lua require('telescope.builtin').find_files()<CR>", {})
|
||||
map("n", "fg", ":lua require('telescope.builtin').live_grep()<CR>", {})
|
||||
map("n", "fh", ":lua require('telescope.builtin').help_tags()<CR>", {})
|
||||
map("n", "fp", ":lua require'telescope'.extensions.project.project{}<CR>", { noremap = true, silent = true })
|
||||
map("n", "fm", ":Telescope harpoon marks<CR>", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<leader>z", ":lua require('telescope').extensions.zoxide.list{}<CR>")
|
||||
map("n", "<leader>fb", function()
|
||||
require("telescope").extensions.file_browser.file_browser({})
|
||||
end, { desc = "File Browser" })
|
||||
map("n", "<leader>ff", function()
|
||||
require("telescope.builtin").find_files()
|
||||
end, { desc = "Find Files" })
|
||||
map("n", "<leader>fg", function()
|
||||
require("telescope.builtin").live_grep()
|
||||
end, { desc = "Live Grep" })
|
||||
map("n", "<leader>fh", function()
|
||||
require("telescope.builtin").help_tags()
|
||||
end, { desc = "Help" })
|
||||
map("n", "<leader>fp", function()
|
||||
require("telescope").extensions.project.project({})
|
||||
end, { noremap = true, silent = true, desc = "Projects" })
|
||||
map("n", "<leader>z", ":lua require('telescope').extensions.zoxide.list{}<CR>", { desc = "Zoxide" })
|
||||
|
||||
-- trouble
|
||||
map("n", "<leader>t", "<cmd>TroubleToggle<CR>", term_opts)
|
||||
|
|
@ -125,12 +132,4 @@ end)
|
|||
|
||||
-- neovide paste
|
||||
vim.g.neovide_input_use_logo = 1
|
||||
vim.api.nvim_set_keymap('i', '<C-S-V>', '<ESC>p<CR>I', { noremap = true, silent = true})
|
||||
|
||||
-- gitui
|
||||
map("n", "<leader>gg", function()
|
||||
Util.float_term({ "gitui" }, { cwd = Util.get_root() })
|
||||
end, { desc = "gitui (root dir)" })
|
||||
map("n", "<leader>gG", function()
|
||||
Util.float_term({ "gitui" })
|
||||
end, { desc = "gitui (cwd)" })
|
||||
vim.api.nvim_set_keymap("i", "<C-S-V>", "<ESC>p<CR>I", { noremap = true, silent = true })
|
||||
|
|
|
|||
99
nvim/lua/config/lsp-keymap.lua
Normal file
99
nvim/lua/config/lsp-keymap.lua
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
local M = {}
|
||||
|
||||
---@type PluginLspKeys
|
||||
M._keys = nil
|
||||
|
||||
---@return (LazyKeys|{has?:string})[]
|
||||
function M.get()
|
||||
local format = require("lazyvim.plugins.lsp.format").format
|
||||
if not M._keys then
|
||||
---@class PluginLspKeys
|
||||
-- stylua: ignore
|
||||
M._keys = {
|
||||
{ "<leader>cld", vim.diagnostic.open_float, desc = "Line Diagnostics" },
|
||||
{ "<leader>cl", "<cmd>LspInfo<cr>", desc = "Lsp Info" },
|
||||
{ "<leader>ca", "<cmd>Telescope lsp_definitions<cr>", desc = "Goto Definition", has = "definition" },
|
||||
{ "<leader>cs", "<cmd>Telescope lsp_references<cr>", desc = "References" },
|
||||
{ "gD", vim.lsp.buf.declaration, desc = "Goto Declaration" },
|
||||
{ "<leader>cf", "<cmd>Telescope lsp_implementations<cr>", desc = "Goto Implementation" },
|
||||
{ "<leader>cd", "<cmd>Telescope lsp_type_definitions<cr>", desc = "Goto Type Definition" },
|
||||
{ "<leader>ce", vim.lsp.buf.hover, desc = "Hover" },
|
||||
{ "<leader>cw", vim.lsp.buf.signature_help, desc = "Signature Help", has = "signatureHelp" },
|
||||
{ "<c-k>", vim.lsp.buf.signature_help, mode = "i", desc = "Signature Help", has = "signatureHelp" },
|
||||
{ "]d", M.diagnostic_goto(true), desc = "Next Diagnostic" },
|
||||
{ "[d", M.diagnostic_goto(false), desc = "Prev Diagnostic" },
|
||||
{ "]e", M.diagnostic_goto(true, "ERROR"), desc = "Next Error" },
|
||||
{ "[e", M.diagnostic_goto(false, "ERROR"), desc = "Prev Error" },
|
||||
{ "]w", M.diagnostic_goto(true, "WARN"), desc = "Next Warning" },
|
||||
{ "[w", M.diagnostic_goto(false, "WARN"), desc = "Prev Warning" },
|
||||
{ "<F4>", format, desc = "Format Document", has = "documentFormatting" },
|
||||
-- { "<leader>cf", format, desc = "Format Range", mode = "v", has = "documentRangeFormatting" },
|
||||
{ "<leader>cq", vim.lsp.buf.code_action, desc = "Code Action", mode = { "n", "v" }, has = "codeAction" },
|
||||
{
|
||||
"<leader>cA",
|
||||
function()
|
||||
vim.lsp.buf.code_action({
|
||||
context = {
|
||||
only = {
|
||||
"source",
|
||||
},
|
||||
diagnostics = {},
|
||||
},
|
||||
})
|
||||
end,
|
||||
desc = "Source Action",
|
||||
has = "codeAction",
|
||||
}
|
||||
}
|
||||
if require("lazyvim.util").has("inc-rename.nvim") then
|
||||
M._keys[#M._keys + 1] = {
|
||||
"<leader>cr",
|
||||
function()
|
||||
require("inc_rename")
|
||||
return ":IncRename " .. vim.fn.expand("<cword>")
|
||||
end,
|
||||
expr = true,
|
||||
desc = "Rename",
|
||||
has = "rename",
|
||||
}
|
||||
else
|
||||
M._keys[#M._keys + 1] = { "<leader>r", vim.lsp.buf.rename, desc = "Rename", has = "rename" }
|
||||
end
|
||||
end
|
||||
return M._keys
|
||||
end
|
||||
|
||||
function M.on_attach(client, buffer)
|
||||
local Keys = require("lazy.core.handler.keys")
|
||||
local keymaps = {} ---@type table<string,LazyKeys|{has?:string}>
|
||||
|
||||
for _, value in ipairs(M.get()) do
|
||||
local keys = Keys.parse(value)
|
||||
if keys[2] == vim.NIL or keys[2] == false then
|
||||
keymaps[keys.id] = nil
|
||||
else
|
||||
keymaps[keys.id] = keys
|
||||
end
|
||||
end
|
||||
|
||||
for _, keys in pairs(keymaps) do
|
||||
if not keys.has or client.server_capabilities[keys.has .. "Provider"] then
|
||||
local opts = Keys.opts(keys)
|
||||
---@diagnostic disable-next-line: no-unknown
|
||||
opts.has = nil
|
||||
opts.silent = opts.silent ~= false
|
||||
opts.buffer = buffer
|
||||
vim.keymap.set(keys.mode or "n", keys[1], keys[2], opts)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function M.diagnostic_goto(next, severity)
|
||||
local go = next and vim.diagnostic.goto_next or vim.diagnostic.goto_prev
|
||||
severity = severity and vim.diagnostic.severity[severity] or nil
|
||||
return function()
|
||||
go({ severity = severity })
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
@ -42,7 +42,27 @@ return {
|
|||
tailwindcss = {},
|
||||
cssls = {},
|
||||
html = {},
|
||||
clangd = {},
|
||||
clangd = {
|
||||
root_pattern = {
|
||||
".clangd",
|
||||
".clang-tidy",
|
||||
".clang-format",
|
||||
"compile_commands.json",
|
||||
"compile_flags.txt",
|
||||
"configure.ac",
|
||||
".git",
|
||||
"build/compile_commands.json",
|
||||
},
|
||||
filetypes = {
|
||||
"c",
|
||||
"cpp",
|
||||
"objc",
|
||||
"objcpp",
|
||||
"cuda",
|
||||
"proto",
|
||||
"cl",
|
||||
},
|
||||
},
|
||||
pyright = {},
|
||||
cmake = {},
|
||||
bashls = {},
|
||||
|
|
@ -110,6 +130,7 @@ return {
|
|||
sqlls = {},
|
||||
taplo = {},
|
||||
lemminx = {},
|
||||
opencl_ls = {},
|
||||
yamlls = {},
|
||||
lua_ls = {
|
||||
-- mason = false, -- set to false if you don't want this server to be installed with mason
|
||||
|
|
@ -140,7 +161,7 @@ return {
|
|||
-- setup formatting and keymaps
|
||||
require("lazyvim.util").on_attach(function(client, buffer)
|
||||
require("lazyvim.plugins.lsp.format").on_attach(client, buffer)
|
||||
require("lazyvim.plugins.lsp.keymaps").on_attach(client, buffer)
|
||||
require("config.lsp-keymap").on_attach(client, bufnr)
|
||||
end)
|
||||
|
||||
-- diagnostics
|
||||
|
|
@ -157,6 +178,7 @@ return {
|
|||
vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc")
|
||||
local optslsp = { noremap = false, silent = true, buffer = bufnr }
|
||||
require("lsp-inlayhints").on_attach(client, bufnr)
|
||||
-- keymaps
|
||||
end
|
||||
|
||||
local function setup(server)
|
||||
|
|
@ -225,7 +247,7 @@ return {
|
|||
nls.builtins.formatting.shfmt,
|
||||
nls.builtins.diagnostics.flake8,
|
||||
nls.builtins.formatting.autopep8,
|
||||
nls.builtins.formatting.prettierd
|
||||
nls.builtins.formatting.prettierd,
|
||||
},
|
||||
}
|
||||
end,
|
||||
|
|
|
|||
|
|
@ -5,6 +5,14 @@ return {
|
|||
colorscheme = "tokyonight-night",
|
||||
},
|
||||
},
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
cmd = "Telescope",
|
||||
keys = function() return {} end,
|
||||
config = function(opts)
|
||||
require("telescope").setup(opts)
|
||||
end,
|
||||
},
|
||||
{
|
||||
"akinsho/toggleterm.nvim",
|
||||
lazy = true,
|
||||
|
|
@ -177,4 +185,36 @@ return {
|
|||
lazy = true,
|
||||
event = "FileType typst",
|
||||
},
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
plugins = { spelling = true },
|
||||
defaults = {
|
||||
mode = { "n", "v" },
|
||||
["g"] = { name = "+goto" },
|
||||
["gz"] = { name = "+surround" },
|
||||
["]"] = { name = "+next" },
|
||||
["["] = { name = "+prev" },
|
||||
["<leader><tab>"] = { name = "+tabs" },
|
||||
["<leader>b"] = { name = "+buffer" },
|
||||
["<leader>c"] = { name = "+code" },
|
||||
["<leader>f"] = { name = "+file/find" },
|
||||
["<leader>g"] = { name = "+git" },
|
||||
["<leader>gh"] = { name = "+hunks" },
|
||||
["<leader>q"] = { name = "+quit/session" },
|
||||
["<leader>s"] = { name = "+search" },
|
||||
["<leader>u"] = { name = "+ui" },
|
||||
["<leader>w"] = { name = "+windows" },
|
||||
["<leader>x"] = { name = "+diagnostics/quickfix" },
|
||||
["<leader>h"] = { name = "+harpoon" },
|
||||
["<leader>d"] = { name = "+DAP" },
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
local wk = require("which-key")
|
||||
wk.setup(opts)
|
||||
wk.register(opts.defaults)
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue