Updated keybinds for which-key integration

This commit is contained in:
2025-01-31 17:06:59 +11:00
parent 21e9cf9f6c
commit 585d8eb7a1
18 changed files with 330 additions and 208 deletions

View File

@@ -3,29 +3,48 @@ require("haelnorr.remap")
require("haelnorr.lazy_init")
local augroup = vim.api.nvim_create_augroup
local HaelnorrGroup = augroup('Haelnorr', {})
local HaelnorrGroup = augroup("Haelnorr", {})
local autocmd = vim.api.nvim_create_autocmd
function R(name)
require("plenary.reload").reload_module(name)
require("plenary.reload").reload_module(name)
end
autocmd('LspAttach', {
group = HaelnorrGroup,
callback = function(e)
local opts = { buffer = e.buf }
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts)
vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts)
vim.keymap.set("n", "<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts)
vim.keymap.set("n", "<leader>vd", function() vim.diagnostic.open_float() end, opts)
vim.keymap.set("n", "<leader>vca", function() vim.lsp.buf.code_action() end, opts)
vim.keymap.set("n", "<leader>vrr", function() vim.lsp.buf.references() end, opts)
vim.keymap.set("n", "<leader>vrn", function() vim.lsp.buf.rename() end, opts)
vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts)
vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts)
vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts)
end
autocmd("LspAttach", {
group = HaelnorrGroup,
callback = function(e)
vim.keymap.set("n", "gd", function()
vim.lsp.buf.definition()
end, { buffer = e.buf, desc = "Goto definition" })
vim.keymap.set("n", "K", function()
vim.lsp.buf.hover()
end, { buffer = e.buf, desc = "Display hover" })
vim.keymap.set("n", "<leader>vs", function()
vim.lsp.buf.workspace_symbol()
end, { buffer = e.buf, desc = "Find symbol in workspace" })
vim.keymap.set("n", "<leader>vf", function()
vim.diagnostic.open_float()
end, { buffer = e.buf, desc = "Show diagnostics" })
vim.keymap.set("n", "<leader>va", function()
vim.lsp.buf.code_action()
end, { buffer = e.buf, desc = "Code action" })
vim.keymap.set("n", "<leader>vs", function()
vim.lsp.buf.references()
end, { buffer = e.buf, desc = "List references to symbol" })
vim.keymap.set("n", "<leader>vr", function()
vim.lsp.buf.rename()
end, { buffer = e.buf, desc = "Rename symbol" })
vim.keymap.set("i", "<C-h>", function()
vim.lsp.buf.signature_help()
end, { buffer = e.buf, desc = "Display signature" })
vim.keymap.set("n", "[d", function()
vim.diagnostic.goto_next()
end, { buffer = e.buf, desc = "Next diagnostic" })
vim.keymap.set("n", "]d", function()
vim.diagnostic.goto_prev()
end, { buffer = e.buf, desc = "Prev diagnostic" })
end,
})
vim.g.netrw_browse_split = 0

View File

@@ -27,6 +27,6 @@ return {
"Method",
},
})
vim.keymap.set("n", "<leader>pa", "<cmd>AerialToggle!<CR>")
vim.keymap.set("n", "<leader>oa", "<cmd>AerialToggle!<CR>", { desc = "Toggle Aerial" })
end,
}

View File

@@ -1,48 +1,37 @@
return {
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = { "ConformInfo" },
keys = {
{
-- Customize or remove this keymap to your liking
"<leader>f",
function()
require("conform").format({ async = true })
end,
mode = "",
desc = "Format buffer",
},
},
-- This will provide type hinting with LuaLS
---@module "conform"
---@type conform.setupOpts
opts = {
-- Define your formatters
formatters_by_ft = {
lua = { "stylua" },
python = { "isort", "black" },
javascript = { "prettierd", "prettier", stop_after_first = true },
typescript = { "prettierd", "prettier", stop_after_first = true },
typescriptreact = { "prettierd", "prettier", stop_after_first = true },
json = { "prettierd", "prettier", stop_after_first = true },
html = { "prettierd", "prettier", stop_after_first = true },
css = { "prettierd", "prettier", stop_after_first = true },
},
-- Set default options
default_format_opts = {
lsp_format = "fallback",
},
-- Set up format-on-save
format_on_save = { timeout_ms = 500 },
-- Customize formatters
formatters = {
shfmt = {
prepend_args = { "-i", "2" },
},
},
},
init = function()
-- If you want the formatexpr, here is the place to set it
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
end,
"stevearc/conform.nvim",
event = { "BufWritePre" },
cmd = { "ConformInfo" },
-- This will provide type hinting with LuaLS
---@module "conform"
---@type conform.setupOpts
opts = {
-- Define your formatters
formatters_by_ft = {
lua = { "stylua" },
python = { "isort", "black" },
javascript = { "prettierd", "prettier", stop_after_first = true },
typescript = { "prettierd", "prettier", stop_after_first = true },
typescriptreact = { "prettierd", "prettier", stop_after_first = true },
json = { "prettierd", "prettier", stop_after_first = true },
html = { "prettierd", "prettier", stop_after_first = true },
css = { "prettierd", "prettier", stop_after_first = true },
},
-- Set default options
default_format_opts = {
lsp_format = "fallback",
},
-- Set up format-on-save
format_on_save = { timeout_ms = 500 },
-- Customize formatters
formatters = {
shfmt = {
prepend_args = { "-i", "2" },
},
},
},
init = function()
-- If you want the formatexpr, here is the place to set it
vim.o.formatexpr = "v:lua.require'conform'.formatexpr()"
end,
}

View File

@@ -1,8 +1,15 @@
return {
"kristijanhusak/vim-dadbod-ui",
dependencies = {
{ "tpope/vim-dadbod", lazy = true },
{ "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true }, -- Optional
{
"tpope/vim-dadbod",
lazy = true,
},
{
"kristijanhusak/vim-dadbod-completion",
ft = { "sql", "mysql", "plsql" },
lazy = true,
},
},
cmd = {
"DBUI",
@@ -11,7 +18,7 @@ return {
"DBUIFindBuffer",
},
init = function()
-- Your DBUI configuration
vim.g.db_ui_use_nerd_fonts = 1
vim.keymap.set("n", "<leader>od", "<cmd>DBUIToggle<CR>", { desc = "Toggle Dadbod UI" })
end,
}

View File

@@ -1,44 +1,47 @@
return {
"tpope/vim-fugitive",
config = function()
vim.keymap.set("n", "<leader>gs", vim.cmd.Git)
"tpope/vim-fugitive",
config = function()
vim.keymap.set("n", "<leader>g", vim.cmd.Git, { desc = "Open Git fugitive" })
local Haelnorr_Fugitive = vim.api.nvim_create_augroup("Haelnorr_Fugitive", {})
local Haelnorr_Fugitive = vim.api.nvim_create_augroup("Haelnorr_Fugitive", {})
local autocmd = vim.api.nvim_create_autocmd
autocmd("BufWinEnter", {
group = Haelnorr_Fugitive,
pattern = "*",
callback = function()
if vim.bo.ft ~= "fugitive" then
return
end
local autocmd = vim.api.nvim_create_autocmd
autocmd("BufWinEnter", {
group = Haelnorr_Fugitive,
pattern = "*",
callback = function()
if vim.bo.ft ~= "fugitive" then
return
end
local bufnr = vim.api.nvim_get_current_buf()
local opts = {buffer = bufnr, remap = false}
vim.keymap.set("n", "<leader>s", function()
vim.cmd.Git('add -A')
end, opts)
vim.keymap.set("n", "<leader>c", function()
vim.cmd.Git('commit')
end, opts)
vim.keymap.set("n", "<leader>p", function()
vim.cmd.Git('push')
end, opts)
local bufnr = vim.api.nvim_get_current_buf()
vim.keymap.set("n", "<leader>s", function()
vim.cmd.Git("add -A")
end, { buffer = bufnr, remap = false, desc = "Stage all files" })
vim.keymap.set("n", "<leader>c", function()
vim.cmd.Git("commit")
end, { buffer = bufnr, remap = false, desc = "Commit" })
vim.keymap.set("n", "<leader>p", function()
vim.cmd.Git("push")
end, { buffer = bufnr, remap = false, desc = "Push" })
-- rebase always
vim.keymap.set("n", "<leader>P", function()
vim.cmd.Git({'pull', '--rebase'})
end, opts)
-- rebase always
vim.keymap.set("n", "<leader>P", function()
vim.cmd.Git({ "pull", "--rebase" })
end, { buffer = bufnr, remap = false, desc = "Pull with rebase" })
-- NOTE: It allows me to easily set the branch i am pushing and any tracking
-- needed if i did not set the branch up correctly
vim.keymap.set("n", "<leader>t", ":Git push -u origin ", opts);
end,
})
-- NOTE: It allows me to easily set the branch i am pushing and any tracking
-- needed if i did not set the branch up correctly
vim.keymap.set(
"n",
"<leader>t",
":Git push -u origin ",
{ buffer = bufnr, remap = false, desc = "Push and set origin" }
)
end,
})
vim.keymap.set("n", "gu", "<cmd>diffget //2<CR>")
vim.keymap.set("n", "gh", "<cmd>diffget //3<CR>")
end
vim.keymap.set("n", "gu", "<cmd>diffget //2<CR>")
vim.keymap.set("n", "gh", "<cmd>diffget //3<CR>")
end,
}

View File

@@ -1,20 +1,9 @@
return {
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
local harpoon = require("harpoon")
harpoon:setup()
vim.keymap.set("n", "<leader>a", function() harpoon:list():add() end)
vim.keymap.set("n", "<A-e>", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end)
vim.keymap.set("n", "<A-h>", function() harpoon:list():select(1) end)
vim.keymap.set("n", "<A-j>", function() harpoon:list():select(2) end)
vim.keymap.set("n", "<A-k>", function() harpoon:list():select(3) end)
vim.keymap.set("n", "<A-l>", function() harpoon:list():select(4) end)
vim.keymap.set("n", "<leader><A-h>", function() harpoon:list():replace_at(1) end)
vim.keymap.set("n", "<leader><A-j>", function() harpoon:list():replace_at(2) end)
vim.keymap.set("n", "<leader><A-k>", function() harpoon:list():replace_at(3) end)
vim.keymap.set("n", "<leader><A-l>", function() harpoon:list():replace_at(4) end)
end
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
local harpoon = require("harpoon")
harpoon:setup()
end,
}

View File

@@ -1,9 +1,9 @@
return {
{
"nvim-lua/plenary.nvim",
name = "plenary"
},
{
"nvim-lua/plenary.nvim",
name = "plenary",
},
"eandrju/cellular-automaton.nvim",
"eandrju/cellular-automaton.nvim",
}

View File

@@ -20,6 +20,7 @@ return {
end
vim.tbl_map(function(type)
require("luasnip.loaders.from_" .. type).lazy_load()
vim.keymap.set("n", "<leader>ts", "<cmd>Telescope luasnip<CR>", { desc = "Search Snippets" })
end, { "vscode", "snipmate", "lua" })
end,
},

View File

@@ -1,9 +1,10 @@
return {
"iamcco/markdown-preview.nvim",
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
build = "cd app && yarn install",
init = function()
vim.g.mkdp_filetypes = { "markdown" }
end,
ft = { "markdown" },
"iamcco/markdown-preview.nvim",
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
build = "cd app && yarn install",
init = function()
vim.g.mkdp_filetypes = { "markdown" }
vim.keymap.set("n", "<leader>om", "<cmd>MarkdownPreviewToggle<CR>", { desc = "Toggle MarkdownPreview" })
end,
ft = { "markdown" },
}

View File

@@ -7,16 +7,16 @@ return {
lazy = false,
config = function()
require("refactoring").setup()
vim.keymap.set("x", "<leader>re", ":Refactor extract ")
vim.keymap.set("x", "<leader>rf", ":Refactor extract_to_file ")
vim.keymap.set("x", "<leader>re", ":Refactor extract ", { desc = "Extract selection" })
vim.keymap.set("x", "<leader>rf", ":Refactor extract_to_file ", { desc = "Extract selection to new file" })
vim.keymap.set("x", "<leader>rv", ":Refactor extract_var ")
vim.keymap.set("x", "<leader>rv", ":Refactor extract_var ", { desc = "Extract var" })
vim.keymap.set({ "n", "x" }, "<leader>ri", ":Refactor inline_var")
vim.keymap.set({ "n", "x" }, "<leader>ri", ":Refactor inline_var", { desc = "Inline var" })
vim.keymap.set("n", "<leader>rI", ":Refactor inline_func")
vim.keymap.set("n", "<leader>rI", ":Refactor inline_func", { desc = "Inline function" })
vim.keymap.set("n", "<leader>rb", ":Refactor extract_block")
vim.keymap.set("n", "<leader>rbf", ":Refactor extract_block_to_file")
vim.keymap.set("n", "<leader>rb", ":Refactor extract_block", { desc = "Extract block" })
vim.keymap.set("n", "<leader>rbf", ":Refactor extract_block_to_file", { desc = "Extract block to new file" })
end,
}

View File

@@ -13,19 +13,19 @@ return {
})
local builtin = require("telescope.builtin")
vim.keymap.set("n", "<leader>pf", builtin.find_files, {})
vim.keymap.set("n", "<C-p>", builtin.git_files, {})
vim.keymap.set("n", "<leader>pws", function()
vim.keymap.set("n", "<leader>tf", builtin.find_files, { desc = "Find files" })
vim.keymap.set("n", "<C-p>", builtin.git_files, { desc = "Find git files" })
vim.keymap.set("n", "<leader>tw", function()
local word = vim.fn.expand("<cword>")
builtin.grep_string({ search = word })
end)
vim.keymap.set("n", "<leader>pWs", function()
end, { desc = "Search files with <cword>" })
vim.keymap.set("n", "<leader>tW", function()
local word = vim.fn.expand("<cWORD>")
builtin.grep_string({ search = word })
end)
vim.keymap.set("n", "<leader>ps", function()
end, { desc = "Search files with <cWORD>" })
vim.keymap.set("n", "<leader>tg", function()
builtin.grep_string({ search = vim.fn.input("Grep > ") })
end)
vim.keymap.set("n", "<leader>vh", builtin.help_tags, {})
end, { desc = "Search files with grep" })
vim.keymap.set("n", "<leader>th", builtin.help_tags, { desc = "Search help tags" })
end,
}

View File

@@ -7,6 +7,6 @@ return {
opts = {},
config = function()
require("todo-comments").setup()
vim.keymap.set("n", "<leader>ts", ":TodoTelescope cwd=")
vim.keymap.set("n", "<leader>tt", ":TodoTelescope cwd=", { desc = "Search Todos" })
end,
}

View File

@@ -1,19 +1,19 @@
return {
{
"folke/trouble.nvim",
opts = {},
cmd = "Trouble",
keys = {
{
"<leader>tt",
"<cmd>Trouble diagnostics toggle<cr>",
desc = "Diagnostics (Trouble)",
},
{
"<leader>tq",
"<cmd>Trouble qflist toggle<cr>",
desc = "Quickfix List (Trouble)",
},
},
},
{
"folke/trouble.nvim",
opts = {},
cmd = "Trouble",
keys = {
{
"<leader>ot",
"<cmd>Trouble diagnostics toggle<cr>",
desc = "Toggle Diagnostics (Trouble)",
},
{
"<leader>oq",
"<cmd>Trouble qflist toggle<cr>",
desc = "Toggle Quickfix List (Trouble)",
},
},
},
}

View File

@@ -1,9 +1,7 @@
return {
"mbbill/undotree",
"mbbill/undotree",
config = function()
vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle)
end
config = function()
vim.keymap.set("n", "<leader>ou", vim.cmd.UndotreeToggle, { desc = "Toggle Undotree" })
end,
}

View File

@@ -11,4 +11,143 @@ return {
desc = "Buffer Local Keymaps (which-key)",
},
},
config = function()
local harpoon = require("harpoon")
require("which-key").add({
{ "<leader>t", group = "Telescope" },
{ "<leader>o", group = "Open plugin", icon = { icon = "", color = "yellow" } },
{ "<leader>r", group = "Refactoring", mode = { "n", "x" } },
{ "<leader>v", group = "LSP Actions", icon = { icon = "󰅡" } },
-- Harpoon
-- Quick jumps and show list
{
"<A-e>",
function()
harpoon.ui:toggle_quick_menu(harpoon:list())
end,
},
{
"<A-h>",
function()
harpoon:list():select(1)
end,
},
{
"<A-j>",
function()
harpoon:list():select(2)
end,
},
{
"<A-k>",
function()
harpoon:list():select(3)
end,
},
{
"<A-l>",
function()
harpoon:list():select(4)
end,
},
-- Add files
{
"<leader>a",
function()
harpoon:list():add()
end,
desc = "Harpoon current file",
mode = "n",
icon = { icon = "󱡅", color = "blue" },
},
{
"<leader><A-h>",
function()
harpoon:list():replace_at(1)
end,
desc = "Harpoon at file 1",
mode = "n",
icon = { icon = "󱡅", color = "blue" },
},
{
"<leader><A-j>",
function()
harpoon:list():replace_at(2)
end,
desc = "Harpoon at file 2",
mode = "n",
icon = { icon = "󱡅", color = "blue" },
},
{
"<leader><A-k>",
function()
harpoon:list():replace_at(3)
end,
desc = "Harpoon at file 3",
mode = "n",
icon = { icon = "󱡅", color = "blue" },
},
{
"<leader><A-l>",
function()
harpoon:list():replace_at(4)
end,
desc = "Harpoon at file 4",
mode = "n",
icon = { icon = "󱡅", color = "blue" },
},
-- Custom binds
{
"<leader>y",
[["+y]],
desc = "Yank to system clipboard",
mode = { "n", "v" },
icon = { icon = "", color = "yellow" },
},
{
"<leader>Y",
[["+Y]],
desc = "Yank line to system clipboard",
mode = "n",
icon = { icon = "", color = "yellow" },
},
{
"<leader>p",
[["_dP]],
desc = "Paste over selection, preserving buffer",
mode = "x",
icon = { icon = "", color = "yellow" },
},
{
"<leader>d",
[["_d]],
desc = "Delete, preserving buffer",
mode = { "n", "v" },
icon = { icon = "", color = "red" },
},
{
"<leader>x",
"<cmd>!chmod +x %<CR>",
silent = true,
desc = "Make file executable",
icon = { icon = "", color = "red" },
},
-- Conform
{
"<leader>f",
function()
require("conform").format({ async = true })
end,
mode = "n",
desc = "Format file",
icon = { icon = "󰉼", color = "yellow" },
},
})
end,
}

View File

@@ -1,7 +1,4 @@
vim.g.mapleader = " "
-- directory viewer
-- has been replaced with Oil.nvim, keybind "-"
-- vim.keymap.set("n", "<leader>pv", vim.cmd.Ex)
-- move highlighted lines up and down
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
@@ -13,38 +10,17 @@ vim.keymap.set("n", "<C-u>", "<C-u>zz")
vim.keymap.set("n", "n", "nzzzv")
vim.keymap.set("n", "N", "Nzzzv")
-- pastes without replacing buffer
vim.keymap.set("x", "<leader>p", [["_dP]])
-- yanks to system clipboard
vim.keymap.set({ "n", "v" }, "<leader>y", [["+y]])
vim.keymap.set("n", "<leader>Y", [["+Y]])
-- deletes without replacing buffer
vim.keymap.set({ "n", "v" }, "<leader>d", [["_d]])
-- formats file using LSP
-- vim.keymap.set("n", "<leader>f", vim.lsp.buf.format)
vim.keymap.set("", "<leader>f", function()
require("conform").format({ async = true }, function(err)
if not err then
local mode = vim.api.nvim_get_mode().mode
if vim.startswith(string.lower(mode), "v") then
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Esc>", true, false, true), "n", true)
end
end
end)
end, { desc = "Format code" })
vim.keymap.set("n", "<C-k>", "<cmd>cnext<CR>zz")
vim.keymap.set("n", "<C-j>", "<cmd>cprev<CR>zz")
vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz")
vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz")
vim.keymap.set("n", "<leader>k", "<cmd>lnext<CR>zz", { desc = "Quickfix next" })
vim.keymap.set("n", "<leader>j", "<cmd>lprev<CR>zz", { desc = "Quickfix prev" })
vim.keymap.set("n", "<leader>s", [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]])
vim.keymap.set("n", "<leader>x", "<cmd>!chmod +x %<CR>", { silent = true })
vim.keymap.set("n", "<leader>o", "o<Esc>k")
vim.keymap.set(
"n",
"<leader>s",
[[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]],
{ desc = "Find and replace word" }
)
vim.keymap.set("n", "<C-Q>", function()
if vim.inspect(vim.opt.colorcolumn:get()) == "{}" then