Neovim: update which-key configuration to v3

This commit is contained in:
Marko Korhonen 2024-07-13 15:49:55 +03:00
parent 6fadc26aee
commit 661f71d1a8
Signed by: FunctionalHacker
GPG key ID: A7F78BCB859CD890
12 changed files with 95 additions and 87 deletions

View file

@ -13,6 +13,7 @@ end
vim.opt.rtp:prepend(lazypath) vim.opt.rtp:prepend(lazypath)
require("settings") require("settings")
require("keybinds")
require("neovide") require("neovide")
require("highlight_yank") require("highlight_yank")
require("lazy").setup({ require("lazy").setup({

View file

@ -23,6 +23,7 @@
"indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" },
"kanagawa.nvim": { "branch": "master", "commit": "e5f7b8a804360f0a48e40d0083a97193ee4fcc87" }, "kanagawa.nvim": { "branch": "master", "commit": "e5f7b8a804360f0a48e40d0083a97193ee4fcc87" },
"lazy.nvim": { "branch": "main", "commit": "58c6bc4ab298dc0d808d325754585f918a031919" }, "lazy.nvim": { "branch": "main", "commit": "58c6bc4ab298dc0d808d325754585f918a031919" },
"lazydev.nvim": { "branch": "main", "commit": "96d72f5eed344964e24e9561fc81522ef327b5bf" },
"lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-extra-cmds": { "branch": "main", "commit": "1bf94d631a9d35061e694ab49dbdea83172a8e51" }, "mason-extra-cmds": { "branch": "main", "commit": "1bf94d631a9d35061e694ab49dbdea83172a8e51" },
@ -30,7 +31,6 @@
"mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" },
"mason.nvim": { "branch": "main", "commit": "f96a31855fa8aea55599cea412fe611b85a874ed" }, "mason.nvim": { "branch": "main", "commit": "f96a31855fa8aea55599cea412fe611b85a874ed" },
"mini.nvim": { "branch": "main", "commit": "27de3dd4485161470ea55004fc132f2b158d1d24" }, "mini.nvim": { "branch": "main", "commit": "27de3dd4485161470ea55004fc132f2b158d1d24" },
"neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" },
"neoformat": { "branch": "master", "commit": "82864d6c7926c4f3b535a2fd7eab919b116fc969" }, "neoformat": { "branch": "master", "commit": "82864d6c7926c4f3b535a2fd7eab919b116fc969" },
"noice.nvim": { "branch": "main", "commit": "b32b9a65cef2735b2be855c8b366e2574d7e59b4" }, "noice.nvim": { "branch": "main", "commit": "b32b9a65cef2735b2be855c8b366e2574d7e59b4" },
"nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" },

View file

@ -0,0 +1,14 @@
vim.keymap.set("n", "<leader>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", "<leader>h", "<cmd>nohlsearch<cr>", { desc = "Turn off search highlight" })
vim.keymap.set("n", "<leader>co", '<cmd>silent! execute "%bd|e#|bd#"<cr>', { desc = "Close other buffers" })
vim.keymap.set("n", "<Tab>", "<cmd>bnext<cr>", { desc = "Next buffer" })
vim.keymap.set("n", "<S-Tab>", "<cmd>bprevious<cr>", { desc = "Previous buffer" })
vim.keymap.set("t", "<Esc>", "<C-\\><C-n>", { desc = "Exit terminal insert mode with esc" })

View file

@ -9,39 +9,30 @@ local diagnostic = vim.diagnostic
-- This makes them only available when LSP is running -- This makes them only available when LSP is running
function m.map_keys() function m.map_keys()
local builtin = require("telescope.builtin") local builtin = require("telescope.builtin")
require("which-key").register({
g = { require("which-key").add({
name = "Go to", { "<leader>w", group = "Workspace" },
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" },
},
["<leader>"] = {
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" } },
}) })
vim.keymap.set("n", "<leader>F", lsp.buf.format, { desc = "Format with LSP" })
vim.keymap.set("n", "<leader>ca", lsp.buf.code_action, { desc = "Code action" })
vim.keymap.set("n", "<leader>e", diagnostic.open_float, { desc = "Open diagnostics" })
vim.keymap.set("n", "<leader>k", lsp.buf.signature_help, { desc = "Signature help" })
vim.keymap.set("n", "<leader>rn", lsp.buf.rename, { desc = "Rename symbol" })
vim.keymap.set("n", "<leader>wa", lsp.buf.add_workspace_folder, { desc = "Add folder" })
vim.keymap.set("n", "<leader>wl", function()
print(vim.inspect(lsp.buf.list_workspace_folders()))
end, { desc = "List folders" })
vim.keymap.set("n", "<leader>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 end
-- Combine built-in LSP and cmp cabaibilities -- Combine built-in LSP and cmp cabaibilities

View file

@ -104,6 +104,10 @@ return {
{ name = "buffer" }, { name = "buffer" },
{ name = "spell" }, { name = "spell" },
{ name = "path" }, { name = "path" },
{
name = "lazydev",
group_index = 0, -- set group index to 0 to skip loading LuaLS completions
},
}, },
}) })

View file

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

View file

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

View file

@ -5,5 +5,8 @@ return {
config = function() config = function()
require("mini.surround").setup() require("mini.surround").setup()
require("mini.comment").setup() require("mini.comment").setup()
-- Recommended for which-key
require("mini.icons").setup()
end, end,
} }

View file

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

View file

@ -2,7 +2,6 @@
--- @type LazyPluginSpec --- @type LazyPluginSpec
return { return {
"kyazdani42/nvim-tree.lua", "kyazdani42/nvim-tree.lua",
lazy = false,
dependencies = { "kyazdani42/nvim-web-devicons" }, dependencies = { "kyazdani42/nvim-web-devicons" },
opts = { opts = {
diagnostics = { diagnostics = {

View file

@ -2,19 +2,7 @@
--- @type LazyPluginSpec --- @type LazyPluginSpec
return { return {
"luukvbaal/statuscol.nvim", "luukvbaal/statuscol.nvim",
dependencies = {
{
"lewis6991/gitsigns.nvim",
config = true,
},
},
config = function() 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") local builtin = require("statuscol.builtin")
require("statuscol").setup({ require("statuscol").setup({
relculright = true, relculright = true,

View file

@ -1,35 +1,20 @@
-- Display possible keybinds -- 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 --- @type LazyPluginSpec
return { return {
"folke/which-key.nvim", "folke/which-key.nvim",
config = function() config = function()
local wk = require("which-key") require("which-key").add({
wk.setup() { "<leader>", group = "Leader" },
{ "g", group = "Go to" },
wk.register({
h = { "<cmd>nohlsearch<cr>", "Turn off search highlight" },
b = { toggle_theme, "Toggle background between dark and light" },
co = { '<cmd>silent! execute "%bd|e#|bd#"<cr>', "Close other buffers" },
}, { prefix = "<leader>" })
wk.register({
["<Tab>"] = { "<cmd>bnext<cr>", "Next buffer" },
["<S-Tab>"] = { "<cmd>bprevious<cr>", "Previous buffer" },
}) })
-- Exit terminal insert mode with esc
vim.keymap.set("t", "<Esc>", "<C-\\><C-n>", {})
end, end,
keys = {
{
"<leader>?",
function()
require("which-key").show({ global = false })
end,
desc = "Buffer Local Keymaps (which-key)",
},
},
} }