Updates neovim config

This commit is contained in:
Dennis Schoepf 2025-05-06 19:24:01 +02:00
parent 074bccdb21
commit 117ccbf4b5
5 changed files with 323 additions and 203 deletions

View file

@ -1,8 +1,9 @@
local opts = { noremap = true, silent = true, expr = true } local opts = { noremap = true, silent = true, expr = true }
-- Non-leader general keybindings
vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", opts) vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", opts)
vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", opts) vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", opts)
vim.keymap.set("n", "<C-d>", "<C-d>zz") vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Move down" })
vim.keymap.set("n", "<C-u>", "<C-u>zz") vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Move up" })
vim.keymap.set("n", "n", "nzzzv") vim.keymap.set("n", "n", "nzzzv", { desc = "Move to next occurence" })
vim.keymap.set("n", "N", "Nzzzv") vim.keymap.set("n", "N", "Nzzzv", { desc = "Move to next occurence" })

View file

@ -15,11 +15,8 @@ if not (vim.uv or vim.loop).fs_stat(lazypath) then
end end
vim.opt.rtp:prepend(lazypath) vim.opt.rtp:prepend(lazypath)
local opts = { noremap = true, silent = true, expr = true }
vim.g.mapleader = " " vim.g.mapleader = " "
vim.g.maplocalleader = " " vim.g.maplocalleader = " "
vim.keymap.set("", "<Space>", "<Nop>", opts)
local options = { local options = {
backup = false, -- creates a backup file backup = false, -- creates a backup file

View file

@ -13,9 +13,17 @@ vim.diagnostic.config({
vim.api.nvim_create_autocmd("LspAttach", { vim.api.nvim_create_autocmd("LspAttach", {
callback = function(args) callback = function(args)
local opts = { buffer = args.buf } vim.keymap.set(
"n",
vim.keymap.set("n", "<leader>e", "<cmd>lua vim.diagnostic.open_float()<cr>", opts) "<leader>e",
vim.keymap.set("n", "<leader>ca", "<cmd>lua vim.lsp.buf.code_action()<cr>", opts) "<cmd>lua vim.diagnostic.open_float()<cr>",
{ buffer = args.buf, desc = "Show diagnostics on current line" }
)
vim.keymap.set(
"n",
"<leader>ca",
"<cmd>lua vim.lsp.buf.code_action()<cr>",
{ buffer = args.buf, desc = "Code actions for current line" }
)
end, end,
}) })

View file

@ -14,64 +14,167 @@ return {
lazy = false, lazy = false,
opts = { opts = {
bigfile = { enabled = true }, bigfile = { enabled = true },
dashboard = {
enabled = false,
sections = {
{ section = "keys", gap = 1, padding = 1 },
{ section = "startup" },
{
section = "terminal",
cmd = "pokemon-colorscripts -r --no-title; sleep .1",
random = 10,
pane = 2,
indent = 8,
height = 30,
},
},
},
git = { enabled = true }, git = { enabled = true },
gitbrowse = { enabled = true }, gitbrowse = {
enabled = true,
what = "commit",
},
indent = { enabled = true }, indent = { enabled = true },
input = { enabled = true },
lazygit = { lazygit = {
enabled = true, enabled = true,
configure = true, configure = true,
}, },
notifier = { enabled = true },
picker = { picker = {
enabled = true, enabled = true,
prompt = "λ ", prompt = "λ ",
preset = "ivy",
layout = { position = "bottom" },
}, },
statuscolumn = { enabled = true }, statuscolumn = { enabled = true },
zen = { enabled = true }, zen = { enabled = true },
}, },
-- stylua: ignore
keys = { keys = {
-- Git -- Git
{ "<leader>gg", function() Snacks.lazygit() end, desc = "Lazygit" }, {
{ "<leader>gb", function() Snacks.git.blame_line() end, desc = "Show git blame for current line" }, "<leader>gg",
{ "<leader>gl", function() Snacks.gitbrowse() end, desc = "Open link to line at git remote" }, function()
Snacks.lazygit()
end,
desc = "Lazygit",
},
{
"<leader>gb",
function()
Snacks.git.blame_line()
end,
desc = "Show git blame for current line",
},
{
"<leader>gl",
function()
Snacks.gitbrowse()
end,
desc = "Open link to line at git remote",
},
-- Zen Mode -- Zen Mode
{ "<leader>z", function() Snacks.zen() end, desc = "Toggle Zen Mode" }, {
"<leader>z",
function()
Snacks.zen()
end,
desc = "Toggle Zen Mode",
},
-- Picker -- Picker
{ "<leader>", function() end, desc = "" }, {
{ "<leader>.", function() Snacks.picker.files() end, desc = "" }, "<leader>.",
{ "<leader><leader>", function() Snacks.picker.git_files() end, desc = "Git files" }, function()
Snacks.picker.files()
end,
desc = "",
},
{
"<leader><leader>",
function()
Snacks.picker.git_files()
end,
desc = "Git files",
},
-- Find -- Find
{ "<leader>fr", function() Snacks.picker.recent() end, desc = "Recent" }, {
{ "<leader>fp", function() Snacks.picker.projects() end, desc = "Projects" }, "<leader>fr",
function()
Snacks.picker.recent()
end,
desc = "Recent",
},
{
"<leader>fp",
function()
Snacks.picker.projects()
end,
desc = "Projects",
},
-- Search -- Search
{ "<leader>ss", function() Snacks.picker.grep() end, desc = "Grep" }, {
{ "<leader>sw", function() Snacks.picker.grep_word() end, desc = "Visual selection or word", mode = { "n", "x" } }, "<leader>ss",
{ "<leader>su", function() Snacks.picker.undo() end, desc = "Undo History" }, function()
Snacks.picker.grep()
end,
desc = "Grep",
},
{
"<leader>sw",
function()
Snacks.picker.grep_word()
end,
desc = "Visual selection or word",
mode = { "n", "x" },
},
{
"<leader>su",
function()
Snacks.picker.undo()
end,
desc = "Undo History",
},
-- Diagnostics -- Diagnostics
{ "<leader>td", function() Snacks.picker.diagnostics_buffer() end, desc = "Buffer Diagnostics" }, {
{ "<leader>ta", function() Snacks.picker.diagnostics() end, desc = "Diagnostics" }, "<leader>td",
function()
Snacks.picker.diagnostics_buffer()
end,
desc = "Buffer Diagnostics",
},
{
"<leader>ta",
function()
Snacks.picker.diagnostics()
end,
desc = "Diagnostics",
},
-- LSP -- LSP
{ "gd", function() Snacks.picker.lsp_definitions({ filter = { filter = filter_lsp_definitions } }) end, desc = "Goto Definition" }, {
{ "gD", function() Snacks.picker.lsp_declarations() end, desc = "Goto Declaration" }, "gd",
{ "grr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" }, function()
{ "gI", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" }, Snacks.picker.lsp_definitions({ filter = { filter = filter_lsp_definitions } })
{ "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" }, end,
desc = "Goto Definition",
},
{
"gD",
function()
Snacks.picker.lsp_declarations()
end,
desc = "Goto Declaration",
},
{
"grr",
function()
Snacks.picker.lsp_references()
end,
nowait = true,
desc = "References",
},
{
"gI",
function()
Snacks.picker.lsp_implementations()
end,
desc = "Goto Implementation",
},
{
"gy",
function()
Snacks.picker.lsp_type_definitions()
end,
desc = "Goto T[y]pe Definition",
},
{
"<leader>on",
function()
Snacks.notifier.show_history()
end,
desc = "Open notification history",
},
}, },
} }

View file

@ -3,158 +3,169 @@ local utils = require("dnsc.utils")
return { return {
"folke/which-key.nvim", "folke/which-key.nvim",
event = "VeryLazy", event = "VeryLazy",
opts = { config = function()
icons = { mappings = false }, local wk = require("which-key")
},
keys = { ---@class wk.Opts
{ "<leader>o", group = "open", mode = "n" }, local opts = {
{ "<leader>ot", ":e ~/notes/todo.txt<cr>", desc = "Open todos", mode = "n" }, icons = { mappings = false },
{ "<leader>od", ":80 vsplit | :VimwikiMakeDiaryNote<cr>", desc = "Open diary note in split", mode = "n" }, win = { border = "rounded" },
{ "<leader>b", group = "buffer", mode = "n" }, }
{ "<leader>b,", "<Cmd>BufferMovePrevious<CR>", desc = "Move buffer back", mode = "n" },
{ wk.setup(opts)
"<leader>b.", wk.add({
"<Cmd>BufferMoveNext<CR>", { "<leader>o", group = "+open", mode = "n" },
desc = "Move buffer forward", { "<leader>ot", ":e ~/notes/todo.txt<cr>", desc = "Open tasks", mode = "n" },
mode = "n", { "<leader>od", ":80 vsplit | :VimwikiMakeDiaryNote<cr>", desc = "Open daily note", mode = "n" },
},
{ { "<leader>b", group = "+buffer", mode = "n" },
"<leader>bD", { "<leader>b,", "<Cmd>BufferMovePrevious<CR>", desc = "Move buffer backwards", mode = "n" },
"<cmd>BufferCloseAllButCurrent<cr>", {
desc = "Delete all buffers but current", "<leader>b.",
mode = "n", "<Cmd>BufferMoveNext<CR>",
}, desc = "Move buffer forward",
{ mode = "n",
"<leader>bd", },
"<Cmd>BufferClose<CR>", {
desc = "Delete current buffer", "<leader>bD",
mode = "n", "<cmd>BufferCloseAllButCurrent<cr>",
}, desc = "Delete all buffers but current",
{ mode = "n",
"<leader>bh", },
"<Cmd>BufferPrevious<CR>", {
desc = "Go to previous buffer", "<leader>bd",
mode = "n", "<Cmd>BufferClose<CR>",
}, desc = "Delete current buffer",
{ mode = "n",
"<leader>bl", },
"<Cmd>BufferNext<CR>", {
desc = "Go to next buffer", "<leader>bh",
mode = "n", "<Cmd>BufferPrevious<CR>",
}, desc = "Go to previous buffer",
{ "<leader>bp", "<cmd>BufferPick<cr>", desc = "Pick a buffer", mode = "n" }, mode = "n",
{ },
"<leader>bx", {
"<cmd>BufferCloseAllButPinned<cr>", "<leader>bl",
desc = "Delete all buffers", "<Cmd>BufferNext<CR>",
mode = "n", desc = "Go to next buffer",
}, mode = "n",
{ "<leader>c", group = "code/compile", mode = "n" }, },
{ { "<leader>bp", "<cmd>BufferPick<cr>", desc = "Pick a buffer", mode = "n" },
"<leader>cr", {
function() "<leader>bx",
utils.compile_project() "<cmd>BufferCloseAllButPinned<cr>",
end, desc = "Delete all buffers",
desc = "Run current project", mode = "n",
mode = "n", },
},
{ { "<leader>c", group = "+code", mode = "n" },
"<leader>q", {
"<cmd>wq<cr>", "<leader>cr",
desc = "Close window and buffer", function()
mode = "n", utils.compile_project()
}, end,
{ "<leader>f", group = "file", mode = "n" }, desc = "Compile project",
{ mode = "n",
"<leader>fn", },
"<cmd>enew<cr>",
desc = "Create a new file", { "<leader>f", group = "+file", mode = "n" },
mode = "n", {
}, "<leader>fn",
{ "<cmd>enew<cr>",
"<leader>fs", desc = "Create a new file",
"<cmd>w<cr>", mode = "n",
desc = "Save currently opened file", },
mode = "n", {
}, "<leader>fs",
{ "<leader>q", "<cmd>qa!<cr>", desc = "Leave neovim", mode = "n" }, "<cmd>w<cr>",
{ "<leader>s", group = "search", mode = "n" }, desc = "Save currently opened file",
{ "<leader>t", group = "diagnostics (lsp)", mode = "n" }, mode = "n",
{ "<leader>ta", "<cmd>TodoQuickFix<cr>", desc = "Show all todo comments", mode = "n" }, },
{ "<leader>w", group = "window", mode = "n" },
{ { "<leader>qq", "<cmd>qa!<cr>", desc = "Leave neovim", mode = "n" },
"<leader>w+",
":vertical resize +4<CR>", { "<leader>s", group = "+search", mode = "n" },
desc = "Increase window size", { "<leader>g", group = "+git", mode = "n" },
mode = "n",
}, { "<leader>t", group = "+diagnostics", mode = "n" },
{ { "<leader>ta", "<cmd>TodoQuickFix<cr>", desc = "Show all todo comments", mode = "n" },
"<leader>w-",
":vertical resize -4<CR>", { "<leader>w", group = "+window", mode = "n" },
desc = "Decrease window size", {
mode = "n", "<leader>w+",
}, ":vertical resize +4<CR>",
{ desc = "Increase window size",
"<leader>wx", mode = "n",
"<C-W>q", },
desc = "Close active window", {
mode = "n", "<leader>w-",
}, ":vertical resize -4<CR>",
{ desc = "Decrease window size",
"<leader>wx", mode = "n",
":bd<CR>", },
desc = "Kill active window and buffer", {
mode = "n", "<leader>wx",
}, "<C-W>q",
{ desc = "Close active window",
"<leader>wh", mode = "n",
"<C-W>h", },
desc = "Move to window on left", {
mode = "n", "<leader>wx",
}, ":bd<CR>",
{ desc = "Kill active window and buffer",
"<leader>wj", mode = "n",
"<C-W>j", },
desc = "Move to window on bottom", {
mode = "n", "<leader>wh",
}, "<C-W>h",
{ desc = "Move to window on left",
"<leader>wk", mode = "n",
"<C-W>k", },
desc = "Move to window on top", {
mode = "n", "<leader>wj",
}, "<C-W>j",
{ desc = "Move to window on bottom",
"<leader>wl", mode = "n",
"<C-W>l", },
desc = "Move to window on right", {
mode = "n", "<leader>wk",
}, "<C-W>k",
{ desc = "Move to window on top",
"<leader>ws", mode = "n",
"<cmd>sp<cr>", },
desc = "Split windows horizontally", {
mode = "n", "<leader>wl",
}, "<C-W>l",
{ desc = "Move to window on right",
"<leader>wv", mode = "n",
"<cmd>vsp<cr>", },
desc = "Split windows vertically", {
mode = "n", "<leader>ws",
}, "<cmd>sp<cr>",
{ desc = "Split windows horizontally",
"<leader>wd", mode = "n",
"<cmd>bd<cr>", },
desc = "Delete buffer and window", {
mode = "n", "<leader>wv",
}, "<cmd>vsp<cr>",
{ "<leader>x", group = "config", mode = "n" }, desc = "Split windows vertically",
{ mode = "n",
"<leader>xn", },
"<cmd>set number relativenumber<cr>", {
desc = "Show relative numbers", "<leader>wd",
mode = "n", "<cmd>bd<cr>",
}, desc = "Delete buffer and window",
{ "<leader>xr", "<cmd>source $MYVIMRC<cr>", desc = "Reload config", mode = "n" }, mode = "n",
}, },
{ "<leader>x", group = "+config", mode = "n" },
{
"<leader>xn",
"<cmd>set number relativenumber<cr>",
desc = "Show relative numbers",
mode = "n",
},
{ "<leader>xr", "<cmd>source $MYVIMRC<cr>", desc = "Reload config", mode = "n" },
})
end,
} }