feat: Add WhichKey descriptions

This commit is contained in:
Fabio Lenherr / DashieTM 2023-05-13 12:31:21 +02:00
parent a8ef41ae1a
commit 479626c1ec
10 changed files with 265 additions and 90 deletions

View file

@ -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 })

View 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

View file

@ -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,

View file

@ -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,
},
}