nvim: the epic config restructure

This commit is contained in:
2023-07-08 15:20:43 +03:00
parent 43a54ad044
commit 9a81f16153
31 changed files with 384 additions and 495 deletions

View File

@ -0,0 +1,145 @@
-- leader
vim.g.mapleader = " "
-- visual block indenting
vim.keymap.set("v", "<", "<gv")
vim.keymap.set("v", ">", ">gv")
-- centered cursor
vim.keymap.set("n", "n", "nzz")
vim.keymap.set("n", "N", "Nzz")
vim.keymap.set("n", "J", "mzJ`z")
-- escape terminal mode
vim.keymap.set("t", "<Esc>", "<C-\\><C-n>")
-- movement
vim.keymap.set("n", "<C-h>", "<cmd>wincmd h<CR>", { desc = "Focus Left" })
vim.keymap.set("n", "<C-j>", "<cmd>wincmd j<CR>", { desc = "Focus Down" })
vim.keymap.set("n", "<C-k>", "<cmd>wincmd k<CR>", { desc = "Focus Up" })
vim.keymap.set("n", "<C-l>", "<cmd>wincmd l<CR>", { desc = "Focus Right" })
-- basics
vim.keymap.set("n", "<leader>f", "<cmd>Telescope find_files<CR>", { desc = "Find Files" })
vim.keymap.set("n", "<leader>F", "<cmd>NvimTreeToggle<CR>", { desc = "Toggle File Manager" })
-- toggle term
vim.keymap.set("n", "<leader>c", "<cmd>ToggleTermToggleAll<CR>", { desc = "Toggle All Terminals" })
-- vim.keymap.set("n", "<leader>C", "<cmd>ToggleTerm<CR>")
vim.keymap.set("n", "<leader>C", ":ToggleTerm<CR>", { desc = "Toggle Terminal" })
-- frequent actions
vim.keymap.set("n", "<leader>ar", "<cmd>source ~/.config/nvim/init.lua<CR>", { desc = "Reload Config" })
vim.keymap.set("n", "<leader>ac", "<cmd>Telescope find_files cwd=~/.config/nvim<CR>", { desc = "Find Config Files" })
vim.keymap.set("n", "<leader>an", "<cmd>NoNeckPain<CR>", { desc = "No Neck Pain" })
vim.keymap.set("n", "<leader>ag", "<cmd>Neogit<CR>", { desc = "Neogit" })
-- telescope
vim.keymap.set("n", "<leader>tt", "<cmd>Telescope<CR>", { desc = "Telescope" })
vim.keymap.set("n", "<leader>tw", "<cmd>Telescope lsp_dynamic_workspace_symbols<CR>", { desc = "Workspace Symbols" })
vim.keymap.set("n", "<leader>to", "<cmd>Telescope oldfiles<CR>", { desc = "Old Files" })
vim.keymap.set("n", "<leader>tg", "<cmd>Telescope live_grep<CR>", { desc = "Grep" })
vim.keymap.set("n", "<leader>ts", "<cmd>Telescope treesitter<CR>", { desc = "Tree Sitter" })
vim.keymap.set("n", "<leader>td", "<cmd>Telescope lsp_document_symbols<CR>", { desc = "Document Symbols" })
-- dev
vim.keymap.set("n", "<leader>gd", "<cmd>Telescope lsp_definitions<CR>", { desc = "Go To Definition" })
vim.keymap.set("n", "<leader>gi", "<cmd>Telescope lsp_implementations<CR>", { desc = "Go To Implementations" })
vim.keymap.set("n", "<leader>gr", "<cmd>Telescope lsp_references<CR>", { desc = "Go To References" })
vim.keymap.set("n", "<leader>gq", "<cmd>Telescope diagnostics<CR>", { desc = "Show Diagnostics" })
vim.keymap.set("n", "<leader>gs", "<cmd>LspRestart<CR>", { desc = "Restart LSP" })
vim.keymap.set("n", "<leader>gf", "<cmd>Format<CR>", { desc = "Format" })
vim.keymap.set("n", "<leader>ge", "<cmd>TroubleToggle<CR>", { desc = "Toggle Trouble" })
vim.keymap.set("n", "<leader>ga", function()
vim.lsp.buf.code_action()
end, { desc = "Code Actions" })
vim.keymap.set("n", "<leader>gD", function()
vim.lsp.buf.declaration()
end, { desc = "Go To Declaration" })
vim.keymap.set("n", "<leader>gk", function()
vim.lsp.buf.hover()
end, { desc = "Hover" })
vim.keymap.set("n", "<leader>gt", function()
vim.lsp.buf.type_definition()
end, { desc = "Go To Type Definition" })
vim.keymap.set("n", "<leader>gn", function()
vim.lsp.buf.rename()
end, { desc = "Rename" })
-- neotest
vim.keymap.set("n", "<leader>na", function()
require("neotest").run.attach()
end, { desc = "Attach Tests" })
vim.keymap.set("n", "<leader>nf", function()
require("neotest").run.run(vim.fn.expand("%"))
end, { desc = "Run Buffer Tests" })
vim.keymap.set("n", "<leader>nF", function()
require("neotest").run.run({ vim.fn.expand("%"), strategy = "dap" })
end, { desc = "Debug Buffer Tests" })
vim.keymap.set("n", "<leader>nl", function()
require("neotest").run.run_last()
end, { desc = "Run Last Tests" })
vim.keymap.set("n", "<leader>nL", function()
require("neotest").run.run_last({ strategy = "dap" })
end, { desc = "Debug Last Test" })
vim.keymap.set("n", "<leader>nn", function()
require("neotest").run.run()
end, { desc = "Run All Tests" })
vim.keymap.set("n", "<leader>nN", function()
require("neotest").run.run({ strategy = "dap" })
end, { desc = "Debug All Tests" })
vim.keymap.set("n", "<leader>no", function()
require("neotest").output.open({ enter = true })
end, { desc = "Show Output" })
vim.keymap.set("n", "<leader>nS", function()
require("neotest").run.stop()
end, { desc = "Stop Tests" })
vim.keymap.set("n", "<leader>ns", function()
require("neotest").summary.toggle()
end, { desc = "Toggle Summary" })
-- telekasten
vim.keymap.set("n", "<leader>z", function()
require("telekasten").panel()
end, { desc = "Telekasten" })
-- refactoring
vim.keymap.set("n", "<leader>rv", function()
require("refactoring").debug.print_var({ normal = true })
end, { desc = "Add Debug Pring" })
vim.keymap.set("n", "<leader>rc", function()
require("refactoring").debug.cleanup()
end, { desc = "Cleanup" })
vim.keymap.set("v", "<leader>rr", function()
require("refactoring").select_refactor()
end, { desc = "Select Refactor" })
-- neogen
vim.keymap.set("n", "<leader>rn", function()
require("neogen").generate()
end, { desc = "Add Documentation" })
-- dap
vim.keymap.set("n", "<leader>dc", function()
require("dap").continue()
end, { desc = "Continue" })
vim.keymap.set("n", "<leader>dn", function()
require("dap").step_over()
end, { desc = "Step Over" })
vim.keymap.set("n", "<leader>di", function()
require("dap").step_into()
end, { desc = "Step Into" })
vim.keymap.set("n", "<leader>do", function()
require("dap").step_out()
end, { desc = "Step Out" })
vim.keymap.set("n", "<leader>db", function()
require("dap").toggle_breakpoint()
end, { desc = "Toggle Breakpoint" })
vim.keymap.set("n", "<leader>dr", function()
require("dap").repl.open()
end, { desc = "Open Repl" })
vim.keymap.set("n", "<leader>dl", function()
require("dap").run_last()
end, { desc = "Run Last" })
vim.keymap.set("n", "<leader>dq", function()
require("dap").close()
end, { desc = "Quit Debug" })

View File

@ -0,0 +1,38 @@
-- sensible settings
vim.opt.autoread = true
vim.opt.clipboard = "unnamedplus"
vim.opt.conceallevel = 0
vim.opt.hlsearch = false
vim.opt.laststatus = 3
vim.opt.lazyredraw = true
vim.opt.mouse = "a"
vim.opt.nu = true
vim.opt.rnu = true
vim.opt.scrolloff = 10
vim.opt.shortmess = "aoOtI"
vim.opt.shortmess = "c"
vim.opt.showcmd = true
vim.opt.showmode = false
vim.opt.sw = 4
vim.opt.swapfile = false
vim.opt.timeoutlen = 500
vim.opt.ts = 4
-- trigger autoread on file change
vim.api.nvim_create_autocmd({ "FocusGained", "BufEnter", "CursorHold", "CursorHoldI" }, {
pattern = "*",
command = "if mode() != 'c' | checktime | endif",
})
-- org agenda command so I can do nvim +Agenda to open agenda
vim.api.nvim_create_user_command("Agenda", function()
require("orgmode").action("agenda.prompt")
end, {})
-- highlight selected area on yank
vim.api.nvim_create_autocmd("TextYankPost", {
pattern = "*",
callback = function()
require("vim.highlight").on_yank({ "IncSearch", 1000 })
end,
})

View File

@ -0,0 +1,13 @@
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup("plugins")