From 661f71d1a8cef25a3bc988c0a85d13dfaff0edbb Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Sat, 13 Jul 2024 15:49:55 +0300 Subject: [PATCH] Neovim: update which-key configuration to v3 --- home/.config/nvim/init.lua | 1 + home/.config/nvim/lazy-lock.json | 2 +- home/.config/nvim/lua/keybinds.lua | 14 ++++++ home/.config/nvim/lua/lsp_utils.lua | 55 +++++++++------------ home/.config/nvim/lua/plugins/cmp.lua | 4 ++ home/.config/nvim/lua/plugins/gitsigns.lua | 22 +++++++++ home/.config/nvim/lua/plugins/lazydev.lua | 15 ++++++ home/.config/nvim/lua/plugins/mini.lua | 3 ++ home/.config/nvim/lua/plugins/neodev.lua | 14 ------ home/.config/nvim/lua/plugins/nvim-tree.lua | 1 - home/.config/nvim/lua/plugins/statuscol.lua | 12 ----- home/.config/nvim/lua/plugins/which-key.lua | 39 +++++---------- 12 files changed, 95 insertions(+), 87 deletions(-) create mode 100644 home/.config/nvim/lua/keybinds.lua create mode 100644 home/.config/nvim/lua/plugins/gitsigns.lua create mode 100644 home/.config/nvim/lua/plugins/lazydev.lua delete mode 100644 home/.config/nvim/lua/plugins/neodev.lua diff --git a/home/.config/nvim/init.lua b/home/.config/nvim/init.lua index ff8ce68..a23743b 100644 --- a/home/.config/nvim/init.lua +++ b/home/.config/nvim/init.lua @@ -13,6 +13,7 @@ end vim.opt.rtp:prepend(lazypath) require("settings") +require("keybinds") require("neovide") require("highlight_yank") require("lazy").setup({ diff --git a/home/.config/nvim/lazy-lock.json b/home/.config/nvim/lazy-lock.json index 8d54d1f..f6f4a22 100644 --- a/home/.config/nvim/lazy-lock.json +++ b/home/.config/nvim/lazy-lock.json @@ -23,6 +23,7 @@ "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, "kanagawa.nvim": { "branch": "master", "commit": "e5f7b8a804360f0a48e40d0083a97193ee4fcc87" }, "lazy.nvim": { "branch": "main", "commit": "58c6bc4ab298dc0d808d325754585f918a031919" }, + "lazydev.nvim": { "branch": "main", "commit": "96d72f5eed344964e24e9561fc81522ef327b5bf" }, "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, "mason-extra-cmds": { "branch": "main", "commit": "1bf94d631a9d35061e694ab49dbdea83172a8e51" }, @@ -30,7 +31,6 @@ "mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" }, "mason.nvim": { "branch": "main", "commit": "f96a31855fa8aea55599cea412fe611b85a874ed" }, "mini.nvim": { "branch": "main", "commit": "27de3dd4485161470ea55004fc132f2b158d1d24" }, - "neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" }, "neoformat": { "branch": "master", "commit": "82864d6c7926c4f3b535a2fd7eab919b116fc969" }, "noice.nvim": { "branch": "main", "commit": "b32b9a65cef2735b2be855c8b366e2574d7e59b4" }, "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua new file mode 100644 index 0000000..84e17e5 --- /dev/null +++ b/home/.config/nvim/lua/keybinds.lua @@ -0,0 +1,14 @@ +vim.keymap.set("n", "b", function() + local current_theme = vim.fn.eval("&background") + if current_theme == "dark" then + vim.cmd("set background=light") + else + vim.cmd("set background=dark") + end +end, { desc = "Toggle background between dark and light" }) + +vim.keymap.set("n", "h", "nohlsearch", { desc = "Turn off search highlight" }) +vim.keymap.set("n", "co", 'silent! execute "%bd|e#|bd#"', { desc = "Close other buffers" }) +vim.keymap.set("n", "", "bnext", { desc = "Next buffer" }) +vim.keymap.set("n", "", "bprevious", { desc = "Previous buffer" }) +vim.keymap.set("t", "", "", { desc = "Exit terminal insert mode with esc" }) diff --git a/home/.config/nvim/lua/lsp_utils.lua b/home/.config/nvim/lua/lsp_utils.lua index b99e501..bc17a3a 100644 --- a/home/.config/nvim/lua/lsp_utils.lua +++ b/home/.config/nvim/lua/lsp_utils.lua @@ -9,39 +9,30 @@ local diagnostic = vim.diagnostic -- This makes them only available when LSP is running function m.map_keys() local builtin = require("telescope.builtin") - require("which-key").register({ - g = { - name = "Go to", - d = { builtin.lsp_definitions, "Definition" }, - D = { lsp.buf.declaration, "Declaration" }, - t = { lsp.buf.type_definition, "Type definition" }, - i = { builtin.lsp_implementations, "Implementation" }, - r = { builtin.lsp_references, "References" }, - s = { builtin.lsp_document_symbols, "Symbols" }, - }, - [""] = { - name = "Leader", - w = { - name = "Workspace", - a = { lsp.buf.add_workspace_folder, "Add folder" }, - r = { lsp.buf.remove_workspace_folder, "Remove folder" }, - l = { - function() - print(vim.inspect(lsp.buf.list_workspace_folders())) - end, - "List folders", - }, - }, - k = { lsp.buf.signature_help, "Signature help" }, - rn = { lsp.buf.rename, "Rename symbol" }, - ca = { lsp.buf.code_action, "Code action" }, - e = { diagnostic.open_float, "Open diagnostics" }, - F = { lsp.buf.format, "Format with LSP" }, - }, - K = { lsp.buf.hover, "Hover" }, - ["["] = { d = { diagnostic.goto_prev, "Previous diagnostic" } }, - ["]"] = { d = { diagnostic.goto_next, "Next diagnostic" } }, + + require("which-key").add({ + { "w", group = "Workspace" }, }) + + vim.keymap.set("n", "F", lsp.buf.format, { desc = "Format with LSP" }) + vim.keymap.set("n", "ca", lsp.buf.code_action, { desc = "Code action" }) + vim.keymap.set("n", "e", diagnostic.open_float, { desc = "Open diagnostics" }) + vim.keymap.set("n", "k", lsp.buf.signature_help, { desc = "Signature help" }) + vim.keymap.set("n", "rn", lsp.buf.rename, { desc = "Rename symbol" }) + vim.keymap.set("n", "wa", lsp.buf.add_workspace_folder, { desc = "Add folder" }) + vim.keymap.set("n", "wl", function() + print(vim.inspect(lsp.buf.list_workspace_folders())) + end, { desc = "List folders" }) + vim.keymap.set("n", "wr", lsp.buf.remove_workspace_folder, { desc = "Remove folder" }) + vim.keymap.set("n", "K", lsp.buf.hover, { desc = "Hover" }) + vim.keymap.set("n", "[d", diagnostic.goto_prev, { desc = "Previous diagnostic" }) + vim.keymap.set("n", "]d", diagnostic.goto_next, { desc = "Next diagnostic" }) + vim.keymap.set("n", "gD", lsp.buf.declaration, { desc = "Declaration" }) + vim.keymap.set("n", "gd", builtin.lsp_definitions, { desc = "Definition" }) + vim.keymap.set("n", "gi", builtin.lsp_implementations, { desc = "Implementation" }) + vim.keymap.set("n", "gr", builtin.lsp_references, { desc = "References" }) + vim.keymap.set("n", "gs", builtin.lsp_document_symbols, { desc = "Symbols" }) + vim.keymap.set("n", "gt", lsp.buf.type_definition, { desc = "Type definition" }) end -- Combine built-in LSP and cmp cabaibilities diff --git a/home/.config/nvim/lua/plugins/cmp.lua b/home/.config/nvim/lua/plugins/cmp.lua index 8af7348..72538fa 100644 --- a/home/.config/nvim/lua/plugins/cmp.lua +++ b/home/.config/nvim/lua/plugins/cmp.lua @@ -104,6 +104,10 @@ return { { name = "buffer" }, { name = "spell" }, { name = "path" }, + { + name = "lazydev", + group_index = 0, -- set group index to 0 to skip loading LuaLS completions + }, }, }) diff --git a/home/.config/nvim/lua/plugins/gitsigns.lua b/home/.config/nvim/lua/plugins/gitsigns.lua new file mode 100644 index 0000000..6e620bc --- /dev/null +++ b/home/.config/nvim/lua/plugins/gitsigns.lua @@ -0,0 +1,22 @@ +--- @type LazyPluginSpec +return { + "lewis6991/gitsigns.nvim", + config = true, + lazy = false, + keys = { + { + "[h", + function() + require("gitsigns").prev_hunk() + end, + desc = "Previous hunk", + }, + { + "]h", + function() + require("gitsigns").next_hunk() + end, + desc = "Next hunk", + }, + }, +} diff --git a/home/.config/nvim/lua/plugins/lazydev.lua b/home/.config/nvim/lua/plugins/lazydev.lua new file mode 100644 index 0000000..4e9b1b5 --- /dev/null +++ b/home/.config/nvim/lua/plugins/lazydev.lua @@ -0,0 +1,15 @@ +-- Neovim setup for init.lua and plugin development with full signature help, docs and completion for the nvim lua API. +--- @type LazyPluginSpec +return { + { + "folke/lazydev.nvim", + ft = "lua", -- only load on lua files + opts = { + library = { + -- See the configuration section for more details + -- Load luvit types when the `vim.uv` word is found + { path = "luvit-meta/library", words = { "vim%.uv" } }, + }, + }, + }, +} diff --git a/home/.config/nvim/lua/plugins/mini.lua b/home/.config/nvim/lua/plugins/mini.lua index cc4f78a..1c2c25a 100644 --- a/home/.config/nvim/lua/plugins/mini.lua +++ b/home/.config/nvim/lua/plugins/mini.lua @@ -5,5 +5,8 @@ return { config = function() require("mini.surround").setup() require("mini.comment").setup() + + -- Recommended for which-key + require("mini.icons").setup() end, } diff --git a/home/.config/nvim/lua/plugins/neodev.lua b/home/.config/nvim/lua/plugins/neodev.lua deleted file mode 100644 index c925081..0000000 --- a/home/.config/nvim/lua/plugins/neodev.lua +++ /dev/null @@ -1,14 +0,0 @@ --- Neovim setup for init.lua and plugin development with full signature help, docs and completion for the nvim lua API. -return { - "folke/neodev.nvim", - --- @type LuaDevOptions - opts = { - override = function(root_dir, library) - local dotfiles_path = tostring(vim.fn.expand("~/git/dotfiles")) - if string.find(root_dir, dotfiles_path, 1, true) then - library.enabled = true - library.plugins = { "nvim-dap-ui" } - end - end, - }, -} diff --git a/home/.config/nvim/lua/plugins/nvim-tree.lua b/home/.config/nvim/lua/plugins/nvim-tree.lua index bacd3a9..fb18539 100644 --- a/home/.config/nvim/lua/plugins/nvim-tree.lua +++ b/home/.config/nvim/lua/plugins/nvim-tree.lua @@ -2,7 +2,6 @@ --- @type LazyPluginSpec return { "kyazdani42/nvim-tree.lua", - lazy = false, dependencies = { "kyazdani42/nvim-web-devicons" }, opts = { diagnostics = { diff --git a/home/.config/nvim/lua/plugins/statuscol.lua b/home/.config/nvim/lua/plugins/statuscol.lua index 38a75a5..c889001 100644 --- a/home/.config/nvim/lua/plugins/statuscol.lua +++ b/home/.config/nvim/lua/plugins/statuscol.lua @@ -2,19 +2,7 @@ --- @type LazyPluginSpec return { "luukvbaal/statuscol.nvim", - dependencies = { - { - "lewis6991/gitsigns.nvim", - config = true, - }, - }, config = function() - local gitsigns = require("gitsigns") - require("which-key").register({ - ["["] = { h = { gitsigns.prev_hunk, "Previous hunk" } }, - ["]"] = { h = { gitsigns.next_hunk, "Next hunk" } }, - }) - local builtin = require("statuscol.builtin") require("statuscol").setup({ relculright = true, diff --git a/home/.config/nvim/lua/plugins/which-key.lua b/home/.config/nvim/lua/plugins/which-key.lua index 12fd3d2..481adc1 100644 --- a/home/.config/nvim/lua/plugins/which-key.lua +++ b/home/.config/nvim/lua/plugins/which-key.lua @@ -1,35 +1,20 @@ -- Display possible keybinds --- Here I have also defined some generic keybinds --- Plugin specific keybinds are set up in plugin configuration file - -local function toggle_theme() - local current_theme = vim.fn.eval("&background") - if current_theme == "dark" then - vim.cmd("set background=light") - else - vim.cmd("set background=dark") - end -end - --- @type LazyPluginSpec return { "folke/which-key.nvim", config = function() - local wk = require("which-key") - wk.setup() - - wk.register({ - h = { "nohlsearch", "Turn off search highlight" }, - b = { toggle_theme, "Toggle background between dark and light" }, - co = { 'silent! execute "%bd|e#|bd#"', "Close other buffers" }, - }, { prefix = "" }) - - wk.register({ - [""] = { "bnext", "Next buffer" }, - [""] = { "bprevious", "Previous buffer" }, + require("which-key").add({ + { "", group = "Leader" }, + { "g", group = "Go to" }, }) - - -- Exit terminal insert mode with esc - vim.keymap.set("t", "", "", {}) end, + keys = { + { + "?", + function() + require("which-key").show({ global = false }) + end, + desc = "Buffer Local Keymaps (which-key)", + }, + }, }