1

Compare commits

...

2 Commits

Author SHA1 Message Date
576a1cf32a Refresh generated nvim config 2024-06-04 01:52:03 +02:00
e2bf299ee3 Update neovim module 2024-06-04 01:51:53 +02:00
7 changed files with 1150 additions and 352 deletions

View File

@ -16,6 +16,7 @@ do
["cindent"] = true, ["cindent"] = true,
["cinkeys"] = "0{,0},0),0],:,!^F,o,O,e", ["cinkeys"] = "0{,0},0),0],:,!^F,o,O,e",
["completeopt"] = { "menuone", "noselect", "noinsert" }, ["completeopt"] = { "menuone", "noselect", "noinsert" },
["confirm"] = true,
["cursorline"] = true, ["cursorline"] = true,
["encoding"] = "utf-8", ["encoding"] = "utf-8",
["expandtab"] = true, ["expandtab"] = true,
@ -38,8 +39,10 @@ do
["relativenumber"] = true, ["relativenumber"] = true,
["ruler"] = true, ["ruler"] = true,
["scrolloff"] = 10, ["scrolloff"] = 10,
["sessionoptions"] = { "buffers", "curdir", "tabpages", "winsize", "help", "globals", "skiprtp", "folds" },
["shiftwidth"] = 4, ["shiftwidth"] = 4,
["showmode"] = false, ["showmode"] = false,
["showtabline"] = 0,
["signcolumn"] = "yes", ["signcolumn"] = "yes",
["smartcase"] = true, ["smartcase"] = true,
["smartindent"] = false, ["smartindent"] = false,
@ -52,6 +55,8 @@ do
["timeoutlen"] = 50, ["timeoutlen"] = 50,
["undodir"] = "/home/lab/smchurla/.vim/undo", ["undodir"] = "/home/lab/smchurla/.vim/undo",
["undofile"] = true, ["undofile"] = true,
["undolevels"] = 10000,
["winblend"] = 30,
} }
for k, v in pairs(nixvim_options) do for k, v in pairs(nixvim_options) do
@ -103,13 +108,16 @@ require("lazy").setup({
require("nvim-autopairs").setup(opts) require("nvim-autopairs").setup(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-autopairs", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-autopairs",
["lazy"] = false, ["event"] = { "InsertEnter" },
["lazy"] = true,
["name"] = "autopairs", ["name"] = "autopairs",
["opts"] = { ["check_ts"] = true },
}, },
{ {
"bbye", "bbye",
["cmd"] = { "Bdelete", "Bwipeout" },
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/vim-bbye", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/vim-bbye",
["lazy"] = false, ["lazy"] = true,
["name"] = "bbye", ["name"] = "bbye",
}, },
{ {
@ -118,7 +126,8 @@ require("lazy").setup({
require("better_escape").setup(opts) require("better_escape").setup(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/better-escape.nvim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/better-escape.nvim",
["lazy"] = false, ["event"] = { "InsertEnter" },
["lazy"] = true,
["name"] = "better-escape", ["name"] = "better-escape",
["opts"] = { ["mapping"] = { "jk" }, ["timeout"] = 200 }, ["opts"] = { ["mapping"] = { "jk" }, ["timeout"] = 200 },
}, },
@ -128,8 +137,9 @@ require("lazy").setup({
require("clangd_extensions").setup(opts) require("clangd_extensions").setup(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/clangd_extensions.nvim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/clangd_extensions.nvim",
["lazy"] = false, ["lazy"] = true,
["name"] = "clangd-extensions", ["name"] = "clangd-extensions",
["opts"] = { ["inlay_hints"] = { ["inline"] = false } },
}, },
{ {
"cmp", "cmp",
@ -183,7 +193,8 @@ require("lazy").setup({
}, },
}, },
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-cmp", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-cmp",
["lazy"] = false, ["event"] = { "InsertEnter" },
["lazy"] = true,
["name"] = "cmp", ["name"] = "cmp",
["opts"] = function() ["opts"] = function()
local cmp = require("cmp") local cmp = require("cmp")
@ -243,7 +254,7 @@ require("lazy").setup({
elseif has_words_before() then elseif has_words_before() then
cmp.complete() cmp.complete()
else else
fallback() fallback() -- This will call the intellitab <Tab> binding
end end
end, { "i", "s" }), end, { "i", "s" }),
["<Up>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }), ["<Up>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }),
@ -257,7 +268,9 @@ require("lazy").setup({
require("colorizer").setup(opts) require("colorizer").setup(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-colorizer.lua", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-colorizer.lua",
["lazy"] = false, ["enabled"] = false,
["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "colorizer", ["name"] = "colorizer",
}, },
{ {
@ -297,9 +310,17 @@ require("lazy").setup({
require("conform").setup(opts) require("conform").setup(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/conform.nvim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/conform.nvim",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "conform", ["name"] = "conform",
["opts"] = { ["opts"] = {
["format_on_save"] = function(bufnr)
-- Disable with a global or buffer-local variable
if vim.g.disable_autoformat then
return
end
return { timeout_ms = 500, lsp_fallback = true }
end,
["formatters_by_ft"] = { ["formatters_by_ft"] = {
["c"] = { "clang-format" }, ["c"] = { "clang-format" },
["cpp"] = { "clang-format" }, ["cpp"] = { "clang-format" },
@ -323,18 +344,19 @@ require("lazy").setup({
require("flash").setup(opts) require("flash").setup(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/flash.nvim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/flash.nvim",
["lazy"] = true, ["lazy"] = false,
["name"] = "flash", ["name"] = "flash",
}, },
{ {
"gitmessenger", "gitmessenger",
["cmd"] = { "GitMessenger" },
["config"] = function(_, opts) ["config"] = function(_, opts)
for k, v in pairs(opts) do for k, v in pairs(opts) do
vim.g[k] = v vim.g[k] = v
end end
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/git-messenger.vim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/git-messenger.vim",
["lazy"] = false, ["lazy"] = true,
["name"] = "gitmessenger", ["name"] = "gitmessenger",
["opts"] = { ["opts"] = {
["git_messenger_floating_win_opts"] = { ["border"] = "rounded" }, ["git_messenger_floating_win_opts"] = { ["border"] = "rounded" },
@ -347,7 +369,8 @@ require("lazy").setup({
require("gitsigns").setup(opts) require("gitsigns").setup(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/gitsigns.nvim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/gitsigns.nvim",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "gitsigns", ["name"] = "gitsigns",
["opts"] = { ["current_line_blame"] = false }, ["opts"] = { ["current_line_blame"] = false },
}, },
@ -363,7 +386,8 @@ require("lazy").setup({
require("illuminate").configure(opts) require("illuminate").configure(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/vim-illuminate", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/vim-illuminate",
["lazy"] = false, ["event"] = { "BufreadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "illuminate", ["name"] = "illuminate",
["opts"] = { ["opts"] = {
["filetypesDenylist"] = { ["filetypesDenylist"] = {
@ -382,7 +406,8 @@ require("lazy").setup({
{ {
"intellitab", "intellitab",
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/intellitab.nvim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/intellitab.nvim",
["lazy"] = false, ["event"] = { "InsertEnter" },
["lazy"] = true,
["name"] = "intellitab", ["name"] = "intellitab",
}, },
{ {
@ -396,8 +421,17 @@ require("lazy").setup({
}, },
{ {
"lazygit", "lazygit",
["cmd"] = { "LazyGit", "LazyGitConfig", "LazyGitCurrentFile", "LazyGitFilter", "LazyGitFilterCurrentFile" },
["dependencies"] = {
{
"plenary",
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/plenary.nvim",
["lazy"] = true,
["name"] = "plenary",
},
},
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/lazygit.nvim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/lazygit.nvim",
["lazy"] = false, ["lazy"] = true,
["name"] = "lazygit", ["name"] = "lazygit",
}, },
{ {
@ -410,28 +444,29 @@ require("lazy").setup({
end end
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-lint", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-lint",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "lint", ["name"] = "lint",
["opts"] = { ["opts"] = {
["linters_by_ft"] = { ["linters_by_ft"] = {
["c"] = { "clang-tidy" }, ["c"] = { "clangtidy" },
["clojure"] = { "clj-kondo" }, ["clojure"] = { "clj-kondo" },
["cpp"] = { "clang-tidy" }, ["cpp"] = { "clangtidy" },
["h"] = { "clang-tidy" }, ["h"] = { "clangtidy" },
["hpp"] = { "clang-tidy" }, ["hpp"] = { "clangtidy" },
["java"] = { "checkstyle" }, ["java"] = { "checkstyle" },
["javascript"] = { "eslint_d" }, ["javascript"] = { "eslint_d" },
["lua"] = { "luacheck" }, ["lua"] = { "luacheck" },
["markdown"] = { "vale" }, ["markdown"] = { "vale" },
["nix"] = { "statix" }, ["nix"] = { "statix" },
["python"] = { "flake8" }, ["python"] = { "flake8" },
["rust"] = { "clippy" },
["text"] = { "vale" }, ["text"] = { "vale" },
}, },
}, },
}, },
{ {
"lspconfig", "lspconfig",
["cmd"] = { "LspInfo" },
["config"] = function(_, opts) ["config"] = function(_, opts)
local __lspOnAttach = function(client, bufnr) end local __lspOnAttach = function(client, bufnr) end
@ -448,7 +483,38 @@ require("lazy").setup({
} }
for i, server in ipairs({ for i, server in ipairs({
{ ["name"] = "clangd" }, {
["extraOptions"] = {
["capabilities"] = { ["offsetEncoding"] = { "utf-16" } },
["cmd"] = {
"clangd",
"--background-index",
"--clang-tidy",
"--header-insertion=iwyu",
"--completion-style=detailed",
"--function-arg-placeholders",
"--fallback-style=llvm",
},
["init_options"] = {
["clangdFileStatus"] = true,
["completeUnimported"] = true,
["usePlaceholders"] = true,
},
["root_dir"] = function(fname)
return require("lspconfig.util").root_pattern(
"Makefile",
"CMakeLists.txt",
".clang-format",
".clang-tidy"
)(fname) or require("lspconfig.util").root_pattern(
"compile_commands.json"
)(fname) or require("lspconfig.util").find_git_ancestor(
fname
)
end,
},
["name"] = "clangd",
},
{ ["name"] = "clojure_lsp" }, { ["name"] = "clojure_lsp" },
{ ["name"] = "cmake" }, { ["name"] = "cmake" },
{ ["name"] = "lua_ls" }, { ["name"] = "lua_ls" },
@ -480,10 +546,17 @@ require("lazy").setup({
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/neodev.nvim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/neodev.nvim",
["lazy"] = false, ["lazy"] = false,
["name"] = "neodev", ["name"] = "neodev",
["opts"] = {
["library"] = { ["enabled"] = true, ["plugins"] = true, ["runtime"] = true, ["types"] = true },
["lspconfig"] = true,
["pathStrict"] = true,
["setup_jsonls"] = false,
},
}, },
}, },
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-lspconfig", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-lspconfig",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "lspconfig", ["name"] = "lspconfig",
}, },
{ {
@ -532,12 +605,13 @@ require("lazy").setup({
}, },
{ {
"navbuddy", "navbuddy",
["cmd"] = { "Navbuddy" },
["config"] = function(_, opts) ["config"] = function(_, opts)
local actions = require("nvim-navbuddy.actions") -- ? local actions = require("nvim-navbuddy.actions") -- ?
require("nvim-navbuddy").setup(opts) require("nvim-navbuddy").setup(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-navbuddy", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-navbuddy",
["lazy"] = false, ["lazy"] = true,
["name"] = "navbuddy", ["name"] = "navbuddy",
["opts"] = { ["lsp"] = { ["auto_attach"] = true }, ["window"] = { ["border"] = "rounded" } }, ["opts"] = { ["lsp"] = { ["auto_attach"] = true }, ["window"] = { ["border"] = "rounded" } },
}, },
@ -553,7 +627,7 @@ require("lazy").setup({
}, },
{ {
"neo-tree", "neo-tree",
["cmd"] = "Neotree", ["cmd"] = { "Neotree" },
["config"] = function(_, opts) ["config"] = function(_, opts)
require("neo-tree").setup(opts) require("neo-tree").setup(opts)
end, end,
@ -585,15 +659,28 @@ require("lazy").setup({
["name"] = "neo-tree", ["name"] = "neo-tree",
["opts"] = { ["opts"] = {
["buffers"] = { ["follow_current_file"] = { ["enabled"] = true, ["leave_dirs_open"] = false } }, ["buffers"] = { ["follow_current_file"] = { ["enabled"] = true, ["leave_dirs_open"] = false } },
["enable_diagnostics"] = false,
["enable_git_status"] = true,
["filesystem"] = { ["follow_current_file"] = { ["enabled"] = true, ["leave_dirs_open"] = false } }, ["filesystem"] = { ["follow_current_file"] = { ["enabled"] = true, ["leave_dirs_open"] = false } },
["open_files_do_not_replace_types"] = { "terminal", "trouble", "qf" },
["popup_border_style"] = "rounded",
["use_default_mappings"] = false, ["use_default_mappings"] = false,
["window"] = { ["window"] = {
["mappings"] = { ["mappings"] = {
["/"] = "fuzzy_finder", ["/"] = "fuzzy_finder",
["<CR>"] = "toggle_node", ["<CR>"] = "open",
["<Esc>"] = "cancel", ["<Esc>"] = "cancel",
["<S-CR>"] = "open",
["?"] = "show_help", ["?"] = "show_help",
["R"] = "refresh",
["a"] = "add",
["c"] = "close_node",
["d"] = "delete",
["i"] = "show_file_details",
["p"] = "paste_from_clipboard",
["q"] = "close_window",
["r"] = "rename",
["x"] = "cut_to_clipboard",
["y"] = "copy_to_clipboard",
}, },
}, },
}, },
@ -683,7 +770,7 @@ require("lazy").setup({
}, },
{ {
"telescope", "telescope",
["cmd"] = "Telescope", ["cmd"] = { "Telescope" },
["config"] = function(_, opts) ["config"] = function(_, opts)
local telescope = require("telescope") local telescope = require("telescope")
telescope.setup(opts) telescope.setup(opts)
@ -747,16 +834,18 @@ require("lazy").setup({
}, },
}, },
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/todo-comments.nvim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/todo-comments.nvim",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "todo-comments", ["name"] = "todo-comments",
}, },
{ {
"toggleterm", "toggleterm",
["cmd"] = { "ToggleTerm" },
["config"] = function(_, opts) ["config"] = function(_, opts)
require("toggleterm").setup(opts) require("toggleterm").setup(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/toggleterm.nvim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/toggleterm.nvim",
["lazy"] = false, ["lazy"] = true,
["name"] = "toggleterm", ["name"] = "toggleterm",
["opts"] = { ["opts"] = {
["auto_scroll"] = true, ["auto_scroll"] = true,
@ -775,6 +864,7 @@ require("lazy").setup({
}, },
{ {
"treesitter", "treesitter",
["cmd"] = { "TSModuleInfo" },
["config"] = function(_, opts) ["config"] = function(_, opts)
-- Fix treesitter grammars/parsers on nix -- Fix treesitter grammars/parsers on nix
vim.opt.runtimepath:append( vim.opt.runtimepath:append(
@ -785,7 +875,8 @@ require("lazy").setup({
require("nvim-treesitter.configs").setup(opts) require("nvim-treesitter.configs").setup(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-treesitter", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/nvim-treesitter",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "treesitter", ["name"] = "treesitter",
["opts"] = { ["opts"] = {
["auto_install"] = false, ["auto_install"] = false,
@ -814,11 +905,12 @@ require("lazy").setup({
}, },
{ {
"trouble", "trouble",
["cmd"] = { "Trouble", "TroubleToggle" },
["config"] = function(_, opts) ["config"] = function(_, opts)
require("trouble").setup(opts) require("trouble").setup(opts)
end, end,
["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/trouble.nvim", ["dir"] = "/home/lab/smchurla/Downloads/flake-nixinator/config/neovim/store/lazy-plugins/trouble.nvim",
["lazy"] = false, ["lazy"] = true,
["name"] = "trouble", ["name"] = "trouble",
}, },
{ {
@ -864,26 +956,99 @@ require("lazy").setup({
-- Set up keybinds {{{ -- Set up keybinds {{{
do do
local __nixvim_binds = { local __nixvim_binds = {
{ ["action"] = "<CMD>w<CR>", ["key"] = "<C-s>", ["mode"] = "n", ["options"] = { {
["action"] = "v:count == 0 ? 'gj' : 'j'",
["key"] = "j",
["mode"] = "n",
["options"] = { ["desc"] = "Move cursor down", ["expr"] = true },
},
{
["action"] = "v:count == 0 ? 'gj' : 'j'",
["key"] = "<Down>",
["mode"] = "n",
["options"] = { ["desc"] = "Move cursor down", ["expr"] = true },
},
{
["action"] = "v:count == 0 ? 'gk' : 'k'",
["key"] = "k",
["mode"] = "n",
["options"] = { ["desc"] = "Move cursor up", ["expr"] = true },
},
{
["action"] = "v:count == 0 ? 'gk' : 'k'",
["key"] = "<Up>",
["mode"] = "n",
["options"] = { ["desc"] = "Move cursor up", ["expr"] = true },
},
{
["action"] = "<cmd>vertical resize -2<cr>",
["key"] = "<C-h>",
["mode"] = "n",
["options"] = { ["desc"] = "Decrease window width" },
},
{
["action"] = "<cmd>vertical resize +2<cr>",
["key"] = "<C-l>",
["mode"] = "n",
["options"] = { ["desc"] = "Increase window width" },
},
{
["action"] = "<cmd>resize -2<cr>",
["key"] = "<C-j>",
["mode"] = "n",
["options"] = { ["desc"] = "Decrease window height" },
},
{
["action"] = "<cmd>resize +2<cr>",
["key"] = "<C-k>",
["mode"] = "n",
["options"] = { ["desc"] = "Increase window height" },
},
{ ["action"] = "<cmd>m .+1<cr>==", ["key"] = "<M-j>", ["mode"] = "n", ["options"] = {
["desc"] = "Move line down",
} },
{
["action"] = "<Esc><cmd>m .+1<cr>==gi",
["key"] = "<M-j>",
["mode"] = "i",
["options"] = { ["desc"] = "Move line down" },
},
{ ["action"] = ":m '>+1<cr>gv=gv", ["key"] = "<M-j>", ["mode"] = "v", ["options"] = {
["desc"] = "Move line down",
} },
{ ["action"] = "<cmd>m .-2<cr>==", ["key"] = "<M-k>", ["mode"] = "n", ["options"] = {
["desc"] = "Move line up",
} },
{
["action"] = "<Esc><cmd>m .-2<cr>==gi",
["key"] = "<M-k>",
["mode"] = "i",
["options"] = { ["desc"] = "Move line up" },
},
{ ["action"] = ":m '<-2<cr>gv=gv", ["key"] = "<M-k>", ["mode"] = "v", ["options"] = {
["desc"] = "Move line up",
} },
{ ["action"] = "<cmd>w<cr>", ["key"] = "<C-s>", ["mode"] = "n", ["options"] = {
["desc"] = "Save current buffer", ["desc"] = "Save current buffer",
} }, } },
{ ["action"] = "<CMD>wa<CR>", ["key"] = "<C-S-s>", ["mode"] = "n", ["options"] = { { ["action"] = "<cmd>wa<cr>", ["key"] = "<C-S-s>", ["mode"] = "n", ["options"] = {
["desc"] = "Save all buffers", ["desc"] = "Save all buffers",
} }, } },
{ ["action"] = "<Esc>", ["key"] = ";", ["mode"] = "v", ["options"] = { ["desc"] = "Exit visual mode" } },
{ ["action"] = "<gv", ["key"] = "<", ["mode"] = "v", ["options"] = { ["desc"] = "Outdent" } }, { ["action"] = "<gv", ["key"] = "<", ["mode"] = "v", ["options"] = { ["desc"] = "Outdent" } },
{ ["action"] = ">gv", ["key"] = ">", ["mode"] = "v", ["options"] = { ["desc"] = "Indent" } },
{ ["action"] = "v<<Esc>", ["key"] = "<", ["mode"] = "n", ["options"] = { ["desc"] = "Outdent" } }, { ["action"] = "v<<Esc>", ["key"] = "<", ["mode"] = "n", ["options"] = { ["desc"] = "Outdent" } },
{ ["action"] = ">gv", ["key"] = ">", ["mode"] = "v", ["options"] = { ["desc"] = "Indent" } },
{ ["action"] = "v><Esc>", ["key"] = ">", ["mode"] = "n", ["options"] = { ["desc"] = "Indent" } }, { ["action"] = "v><Esc>", ["key"] = ">", ["mode"] = "n", ["options"] = { ["desc"] = "Indent" } },
{ ["action"] = "<C-d>zz", ["key"] = "<C-d>", ["mode"] = "n", ["options"] = { ["desc"] = "Jump down (centered)" } },
{ ["action"] = "<C-u>zz", ["key"] = "<C-u>", ["mode"] = "n", ["options"] = { ["desc"] = "Jump up (centered)" } },
{ ["action"] = "nzzzv", ["key"] = "n", ["mode"] = "n", ["options"] = { ["desc"] = "Next match (centered)" } },
{ ["action"] = "Nzzzv", ["key"] = "N", ["mode"] = "n", ["options"] = { ["desc"] = "Previous match (centered)" } },
{ {
["action"] = "<CMD>lua require('intellitab').indent()<CR>", ["action"] = "<cmd>lua require('intellitab').indent()<cr>",
["key"] = "<Tab>", ["key"] = "<Tab>",
["mode"] = "i", ["mode"] = "i",
["options"] = { ["desc"] = "Indent (IntelliTab)" }, ["options"] = { ["desc"] = "Indent (IntelliTab)" },
}, },
{ ["action"] = "<C-d>zz", ["key"] = "<C-d>", ["mode"] = "n", ["options"] = { ["desc"] = "Jump down (centered)" } },
{ ["action"] = "<C-u>zz", ["key"] = "<C-u>", ["mode"] = "n", ["options"] = { ["desc"] = "Jump up (centered)" } },
{ ["action"] = "nzzzv", ["key"] = "n", ["mode"] = "n", ["options"] = { ["desc"] = "Next match (centered)" } },
{ ["action"] = "Nzzzv", ["key"] = "N", ["mode"] = "n", ["options"] = { ["desc"] = "Previous match (centered)" } },
{ ["action"] = "<C-w>", ["key"] = "<C-BS>", ["mode"] = "i", ["options"] = { ["desc"] = "Delete previous word" } }, { ["action"] = "<C-w>", ["key"] = "<C-BS>", ["mode"] = "i", ["options"] = { ["desc"] = "Delete previous word" } },
{ ["action"] = "<C-w>", ["key"] = "<M-BS>", ["mode"] = "i", ["options"] = { ["desc"] = "Delete previous word" } }, { ["action"] = "<C-w>", ["key"] = "<M-BS>", ["mode"] = "i", ["options"] = { ["desc"] = "Delete previous word" } },
{ {
@ -897,148 +1062,160 @@ do
} }, } },
{ ["action"] = '"+y', ["key"] = "<C-S-c>", ["mode"] = "v", ["options"] = { ["desc"] = "Copy to clipboard" } }, { ["action"] = '"+y', ["key"] = "<C-S-c>", ["mode"] = "v", ["options"] = { ["desc"] = "Copy to clipboard" } },
{ {
["action"] = "<CMD>nohlsearch<CR>", ["action"] = "<cmd>nohlsearch<cr>",
["key"] = "<C-h>", ["key"] = "<C-h>",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Clear search highlights" }, ["options"] = { ["desc"] = "Clear search highlights" },
}, },
{ {
["action"] = "<CMD>lua vim.lsp.buf.hover()<CR>", ["action"] = "<cmd>lua vim.lsp.buf.hover()<cr>",
["key"] = "K", ["key"] = "K",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show LSP hover" }, ["options"] = { ["desc"] = "Show LSP hover" },
}, },
{ {
["action"] = "<CMD>Telescope current_buffer_fuzzy_find<CR>", ["action"] = "<cmd>Telescope current_buffer_fuzzy_find<cr>",
["key"] = "/", ["key"] = "/",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Find in current buffer" }, ["options"] = { ["desc"] = "Find in current buffer" },
}, },
{ ["action"] = "<CMD>Lazy<CR>", ["key"] = "<leader>L", ["mode"] = "n", ["options"] = { ["desc"] = "Show Lazy" } }, { ["action"] = "<cmd>Lazy<cr>", ["key"] = "<leader>L", ["mode"] = "n", ["options"] = { ["desc"] = "Show Lazy" } },
{ {
["action"] = "<CMD>Telescope buffers<CR>", ["action"] = "<cmd>w<cr>",
["key"] = "<leader><Space>",
["mode"] = "n",
["options"] = { ["desc"] = "Show open buffers" },
},
{
["action"] = "<CMD>w<CR>",
["key"] = "<leader>s", ["key"] = "<leader>s",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Save current buffer" }, ["options"] = { ["desc"] = "Save current buffer" },
}, },
{ {
["action"] = "<CMD>wa<CR>", ["action"] = "<cmd>wa<cr>",
["key"] = "<leader>S", ["key"] = "<leader>S",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Save all buffers" }, ["options"] = { ["desc"] = "Save all buffers" },
}, },
{ {
["action"] = "<CMD>Telescope find_files<CR>", ["action"] = "<cmd>edit!<cr>",
["key"] = "<leader>R",
["mode"] = "n",
["options"] = { ["desc"] = "Reload current buffer" },
},
{
["action"] = "<cmd>Telescope buffers<cr>",
["key"] = "<leader><Space>",
["mode"] = "n",
["options"] = { ["desc"] = "Show open buffers" },
},
{
["action"] = "<cmd>Telescope find_files<cr>",
["key"] = "<leader>f", ["key"] = "<leader>f",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Find file" }, ["options"] = { ["desc"] = "Find file" },
}, },
{ {
["action"] = "<CMD>Telescope vim_options<CR>", ["action"] = "<cmd>Telescope vim_options<cr>",
["key"] = "<leader>o", ["key"] = "<leader>o",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show Vim options" }, ["options"] = { ["desc"] = "Show Vim options" },
}, },
{ {
["action"] = "<CMD>Telescope undo<CR>", ["action"] = "<cmd>Telescope undo<cr>",
["key"] = "<leader>u", ["key"] = "<leader>u",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show undo history" }, ["options"] = { ["desc"] = "Show undo history" },
}, },
{ {
["action"] = "<CMD>Telescope live_grep<CR>", ["action"] = "<cmd>Telescope live_grep<cr>",
["key"] = "<leader>/", ["key"] = "<leader>/",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Find in working directory" }, ["options"] = { ["desc"] = "Find in working directory" },
}, },
{ {
["action"] = "<CMD>Telescope notify<CR>", ["action"] = "<cmd>Telescope notify<cr>",
["key"] = "<leader>n", ["key"] = "<leader>n",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show notify history" }, ["options"] = { ["desc"] = "Show notify history" },
}, },
{ {
["action"] = "<CMD>Telescope resume<CR>", ["action"] = "<cmd>Telescope resume<cr>",
["key"] = "<leader>r", ["key"] = "<leader>r",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show last telescope picker" }, ["options"] = { ["desc"] = "Show last telescope picker" },
}, },
{ {
["action"] = "<CMD>Telescope keymaps<CR>", ["action"] = "<cmd>Telescope keymaps<cr>",
["key"] = "<leader>?", ["key"] = "<leader>?",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show keymaps" }, ["options"] = { ["desc"] = "Show keymaps" },
}, },
{ {
["action"] = "<CMD>Telescope commands<CR>", ["action"] = "<cmd>Telescope commands<cr>",
["key"] = "<leader>:", ["key"] = "<leader>:",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Execute command" }, ["options"] = { ["desc"] = "Execute command" },
}, },
{ {
["action"] = "<CMD>Telescope marks<CR>", ["action"] = "<cmd>Telescope marks<cr>",
["key"] = "<leader>M", ["key"] = "<leader>M",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show marks" }, ["options"] = { ["desc"] = "Show marks" },
}, },
{ {
["action"] = "<CMD>Telescope jumplist<CR>", ["action"] = "<cmd>Telescope jumplist<cr>",
["key"] = "<leader>J", ["key"] = "<leader>J",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show jumplist" }, ["options"] = { ["desc"] = "Show jumplist" },
}, },
{ {
["action"] = "<CMD>Telescope man_pages<CR>", ["action"] = "<cmd>Telescope man_pages<cr>",
["key"] = "<leader>m", ["key"] = "<leader>m",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show manpages" }, ["options"] = { ["desc"] = "Show manpages" },
}, },
{ {
["action"] = "<CMD>Telescope help_tags<CR>", ["action"] = "<cmd>Telescope help_tags<cr>",
["key"] = "<leader>h", ["key"] = "<leader>h",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show help tags" }, ["options"] = { ["desc"] = "Show help tags" },
}, },
{ ["action"] = "+quit", ["key"] = "<leader>q", ["mode"] = "n" }, { ["action"] = "+quit", ["key"] = "<leader>q", ["mode"] = "n" },
{ ["action"] = "<CMD>quitall<CR>", ["key"] = "<leader>qq", ["mode"] = "n", ["options"] = { ["desc"] = "Quit" } }, { ["action"] = "<cmd>quitall<cr>", ["key"] = "<leader>qq", ["mode"] = "n", ["options"] = { ["desc"] = "Quit" } },
{ {
["action"] = "<CMD>quitall!<CR>", ["action"] = "<cmd>quitall!<cr>",
["key"] = "<leader>q!", ["key"] = "<leader>q!",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Quit forcefully" }, ["options"] = { ["desc"] = "Quit forcefully" },
}, },
{ ["action"] = "+buffers", ["key"] = "<leader>b", ["mode"] = "n" }, { ["action"] = "+buffers", ["key"] = "<leader>b", ["mode"] = "n" },
{ {
["action"] = "<CMD>Telescope buffers<CR>", ["action"] = "<cmd>Telescope buffers<cr>",
["key"] = "<leader>bb", ["key"] = "<leader>bb",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show open buffers" }, ["options"] = { ["desc"] = "Show open buffers" },
}, },
{ {
["action"] = "<CMD>bnext<CR>", ["action"] = "<cmd>bnext<cr>",
["key"] = "<leader>bn", ["key"] = "<leader>bn",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto next buffer" }, ["options"] = { ["desc"] = "Goto next buffer" },
}, },
{ {
["action"] = "<CMD>bprevious<CR>", ["action"] = "<cmd>bprevious<cr>",
["key"] = "<leader>bp", ["key"] = "<leader>bp",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto previous buffer" }, ["options"] = { ["desc"] = "Goto previous buffer" },
}, },
{ {
["action"] = "<CMD>Bdelete<CR>", ["action"] = "<cmd>Bdelete<cr>",
["key"] = "<leader>bd", ["key"] = "<leader>bd",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Close current buffer" }, ["options"] = { ["desc"] = "Close current buffer" },
}, },
{ ["action"] = "+windows", ["key"] = "<leader>w", ["mode"] = "n" }, { ["action"] = "+windows", ["key"] = "<leader>w", ["mode"] = "n" },
{
["action"] = "<C-w>c",
["key"] = "<leader>wd",
["mode"] = "n",
["options"] = { ["desc"] = "Close current window" },
},
{ {
["action"] = "<C-w>s", ["action"] = "<C-w>s",
["key"] = "<leader>ws", ["key"] = "<leader>ws",
@ -1052,12 +1229,6 @@ do
["options"] = { ["desc"] = "Split window vertically" }, ["options"] = { ["desc"] = "Split window vertically" },
}, },
{ ["action"] = "<C-w>=", ["key"] = "<leader>w=", ["mode"] = "n", ["options"] = { ["desc"] = "Balance windows" } }, { ["action"] = "<C-w>=", ["key"] = "<leader>w=", ["mode"] = "n", ["options"] = { ["desc"] = "Balance windows" } },
{
["action"] = "<C-w>c",
["key"] = "<leader>wd",
["mode"] = "n",
["options"] = { ["desc"] = "Close current window" },
},
{ ["action"] = "<C-w>h", ["key"] = "<leader>wh", ["mode"] = "n", ["options"] = { ["desc"] = "Goto left window" } }, { ["action"] = "<C-w>h", ["key"] = "<leader>wh", ["mode"] = "n", ["options"] = { ["desc"] = "Goto left window" } },
{ ["action"] = "<C-w>l", ["key"] = "<leader>wl", ["mode"] = "n", ["options"] = { { ["action"] = "<C-w>l", ["key"] = "<leader>wl", ["mode"] = "n", ["options"] = {
["desc"] = "Goto right window", ["desc"] = "Goto right window",
@ -1071,127 +1242,151 @@ do
} }, } },
{ ["action"] = "+toggle", ["key"] = "<leader>t", ["mode"] = "n" }, { ["action"] = "+toggle", ["key"] = "<leader>t", ["mode"] = "n" },
{ {
["action"] = "<CMD>Neotree action=show toggle=true<CR>", ["action"] = "<cmd>Neotree action=show toggle=true<cr><C-w>=",
["key"] = "<leader>tt", ["key"] = "<leader>tt",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Toggle NeoTree" }, ["options"] = { ["desc"] = "Toggle NeoTree" },
}, },
{ {
["action"] = "<CMD>Navbuddy<CR>", ["action"] = "<cmd>Navbuddy<cr>",
["key"] = "<leader>tn", ["key"] = "<leader>tn",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Toggle NavBuddy" }, ["options"] = { ["desc"] = "Toggle NavBuddy" },
}, },
{ {
["action"] = "<CMD>TroubleToggle focus=false<CR>", ["action"] = "<cmd>TroubleToggle focus=false<cr>",
["key"] = "<leader>td", ["key"] = "<leader>td",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Toggle Trouble" }, ["options"] = { ["desc"] = "Toggle Trouble" },
}, },
{
["action"] = "<cmd>ToggleAutoformat<cr>",
["key"] = "<leader>tf",
["mode"] = "n",
["options"] = { ["desc"] = "Toggle autoformat-on-save" },
},
{
["action"] = "<cmd>ToggleInlineDiagnostics<cr>",
["key"] = "<leader>tD",
["mode"] = "n",
["options"] = { ["desc"] = "Toggle inline diagnostics" },
},
{
["action"] = "<cmd>:set wrap!<cr>",
["key"] = "<leader>tw",
["mode"] = "n",
["options"] = { ["desc"] = "Toggle word-wrap" },
},
{ ["action"] = "+git", ["key"] = "<leader>g", ["mode"] = "n" }, { ["action"] = "+git", ["key"] = "<leader>g", ["mode"] = "n" },
{ {
["action"] = "<CMD>LazyGit<CR>", ["action"] = "<cmd>LazyGit<cr>",
["key"] = "<leader>gg", ["key"] = "<leader>gg",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show LazyGit" }, ["options"] = { ["desc"] = "Show LazyGit" },
}, },
{ {
["action"] = "<CMD>GitMessenger<CR>", ["action"] = "<cmd>GitMessenger<cr>",
["key"] = "<leader>gm", ["key"] = "<leader>gm",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show GitMessenger" }, ["options"] = { ["desc"] = "Show GitMessenger" },
}, },
{ {
["action"] = "<CMD>Telescope git_status<CR>", ["action"] = "<cmd>Telescope git_status<cr>",
["key"] = "<leader>gs", ["key"] = "<leader>gs",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show Git status" }, ["options"] = { ["desc"] = "Show Git status" },
}, },
{ {
["action"] = "<CMD>Telescope git_commits<CR>", ["action"] = "<cmd>Telescope git_commits<cr>",
["key"] = "<leader>gc", ["key"] = "<leader>gc",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show Git log" }, ["options"] = { ["desc"] = "Show Git log" },
}, },
{ {
["action"] = "<CMD>Telescope git_branches<CR>", ["action"] = "<cmd>Telescope git_branches<cr>",
["key"] = "<leader>gb", ["key"] = "<leader>gb",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show Git branches" }, ["options"] = { ["desc"] = "Show Git branches" },
}, },
{ {
["action"] = "<CMD>Telescope git_bcommits<CR>", ["action"] = "<cmd>Telescope git_bcommits<cr>",
["key"] = "<leader>gf", ["key"] = "<leader>gf",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show Git log for current file" }, ["options"] = { ["desc"] = "Show Git log for current file" },
}, },
{ ["action"] = "+lsp", ["key"] = "<leader>l", ["mode"] = "n" }, { ["action"] = "+lsp", ["key"] = "<leader>l", ["mode"] = "n" },
{ {
["action"] = "<CMD>Telescope lsp_references<CR>", ["action"] = "<cmd>Telescope lsp_references<cr>",
["key"] = "<leader>lr", ["key"] = "<leader>lr",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto references" }, ["options"] = { ["desc"] = "Goto references" },
}, },
{ {
["action"] = "<CMD>Telescope lsp_definitions<CR>", ["action"] = "<cmd>Telescope lsp_definitions<cr>",
["key"] = "<leader>ld", ["key"] = "<leader>ld",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto definition" }, ["options"] = { ["desc"] = "Goto definition" },
}, },
{ {
["action"] = "<CMD>Telescope lsp_implementations<CR>", ["action"] = "<cmd>Telescope lsp_implementations<cr>",
["key"] = "<leader>li", ["key"] = "<leader>li",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto implementation" }, ["options"] = { ["desc"] = "Goto implementation" },
}, },
{ {
["action"] = "<CMD>Telescope lsp_type_definitions<CR>", ["action"] = "<cmd>Telescope lsp_type_definitions<cr>",
["key"] = "<leader>lt", ["key"] = "<leader>lt",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto type definition" }, ["options"] = { ["desc"] = "Goto type definition" },
}, },
{ {
["action"] = "<CMD>Telescope lsp_incoming_calls<CR>", ["action"] = "<cmd>Telescope lsp_incoming_calls<cr>",
["key"] = "<leader>lI", ["key"] = "<leader>lI",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show incoming calls" }, ["options"] = { ["desc"] = "Show incoming calls" },
}, },
{ {
["action"] = "<CMD>Telescope lsp_outgoing_calls<CR>", ["action"] = "<cmd>Telescope lsp_outgoing_calls<cr>",
["key"] = "<leader>lO", ["key"] = "<leader>lO",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show outgoing calls" }, ["options"] = { ["desc"] = "Show outgoing calls" },
}, },
{ ["action"] = "+code", ["key"] = "<leader>c", ["mode"] = "n" }, { ["action"] = "+code", ["key"] = "<leader>c", ["mode"] = "n" },
{ {
["action"] = "<CMD>lua require('conform').format()<CR>", ["action"] = "<cmd>lua require('conform').format()<cr>",
["key"] = "<leader>cf", ["key"] = "<leader>cf",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Format current buffer" }, ["options"] = { ["desc"] = "Format current buffer" },
}, },
{ {
["action"] = "<CMD>Telescope diagnostics<CR>", ["action"] = "<cmd>lua vim.diagnostic.open_float()<cr>",
["key"] = "<leader>cd", ["key"] = "<leader>cd",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show LSP line diagnostics" },
},
{
["action"] = "<cmd>Telescope diagnostics<cr>",
["key"] = "<leader>cD",
["mode"] = "n",
["options"] = { ["desc"] = "Show diagnostics" }, ["options"] = { ["desc"] = "Show diagnostics" },
}, },
{ {
["action"] = "<CMD>lua vim.lsp.buf.rename()<CR>", ["action"] = "<cmd>lua vim.lsp.buf.rename()<cr>",
["key"] = "<leader>cr", ["key"] = "<leader>cr",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Rename LSP symbol" }, ["options"] = { ["desc"] = "Rename LSP symbol" },
}, },
{ {
["action"] = "<CMD>lua vim.lsp.buf.code_action()<CR>", ["action"] = "<cmd>lua vim.lsp.buf.code_action()<cr>",
["key"] = "<leader>ca", ["key"] = "<leader>ca",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show LSP code actions" }, ["options"] = { ["desc"] = "Show LSP code actions" },
}, },
{ {
["action"] = "<CMD>lua vim.diagnostic.open_float()<CR>", ["action"] = "<cmd>ClangdSwitchSourceHeader<cr>",
["key"] = "<leader>cD", ["key"] = "<leader>ch",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show LSP line diagnostics" }, ["options"] = { ["desc"] = "Switch C/C++ source/header" },
}, },
} }
for i, map in ipairs(__nixvim_binds) do for i, map in ipairs(__nixvim_binds) do
@ -1202,20 +1397,43 @@ end
vim.filetype.add({ ["extension"] = { ["v"] = "vlang" } }) vim.filetype.add({ ["extension"] = { ["v"] = "vlang" } })
-- Hide inline diagnostics and show border -- Toggle inline diagnostics and show border
vim.g.enable_inline_diagnostics = false
vim.diagnostic.config({ vim.diagnostic.config({
virtual_text = false, virtual_text = vim.g.enable_inline_diagnostics,
float = { border = "rounded" }, float = { border = "rounded" },
}) })
vim.api.nvim_create_user_command("ToggleInlineDiagnostics", function()
vim.g.enable_inline_diagnostics = not vim.g.enable_inline_diagnostics
vim.diagnostic.config({ virtual_text = vim.g.enable_inline_diagnostics })
require("notify")((vim.g.enable_inline_diagnostics and "Enabled" or "Disabled") .. " inline diagnostics")
end, {
desc = "Toggle inline diagnostics",
})
-- Toggle conform format_on_save
vim.g.disable_autoformat = false
vim.api.nvim_create_user_command("ToggleAutoformat", function()
vim.g.disable_autoformat = not vim.g.disable_autoformat
require("notify")((vim.g.disable_autoformat and "Disabled" or "Enabled") .. " autoformat-on-save")
end, {
desc = "Toggle autoformat-on-save",
})
-- Allow navigating popupmenu completion with Up/Down -- Allow navigating popupmenu completion with Up/Down
vim.api.nvim_set_keymap("c", "<Down>", 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true }) vim.api.nvim_set_keymap("c", "<Down>", 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true })
vim.api.nvim_set_keymap("c", "<Up>", 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true }) vim.api.nvim_set_keymap("c", "<Up>", 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true })
function _G.get_wildmenu_key(key_wildmenu, key_regular) function _G.get_wildmenu_key(key_wildmenu, key_regular)
return vim.fn.wildmenumode() ~= 0 and key_wildmenu or key_regular return vim.fn.wildmenumode() ~= 0 and key_wildmenu or key_regular
end end
-- Check LSP server config
vim.api.nvim_create_user_command("LspInspect", function()
require("notify")(vim.inspect(vim.lsp.get_active_clients()))
end, {
desc = "Print LSP server configuration",
})
-- Set up autocommands {{ -- Set up autocommands {{
do do
local __nixvim_autocommands = { local __nixvim_autocommands = {
@ -1227,9 +1445,24 @@ do
}, },
{ {
["callback"] = function() ["callback"] = function()
require("conform").format() vim.highlight.on_yank()
end, end,
["event"] = { "BufWritePre" }, ["event"] = { "TextYankPost" },
},
{
["callback"] = function()
local current_tab = vim.fn.tabpagenr()
vim.cmd("tabdo wincmd =")
vim.cmd("tabnext " .. current_tab)
end,
["event"] = { "VimResized" },
},
{
["callback"] = function()
vim.opt_local.conceallevel = 0
end,
["event"] = "FileType",
["pattern"] = { "json", "jsonc", "json5" },
}, },
} }

View File

@ -16,6 +16,7 @@ do
["cindent"] = true, ["cindent"] = true,
["cinkeys"] = "0{,0},0),0],:,!^F,o,O,e", ["cinkeys"] = "0{,0},0),0],:,!^F,o,O,e",
["completeopt"] = { "menuone", "noselect", "noinsert" }, ["completeopt"] = { "menuone", "noselect", "noinsert" },
["confirm"] = true,
["cursorline"] = true, ["cursorline"] = true,
["encoding"] = "utf-8", ["encoding"] = "utf-8",
["expandtab"] = true, ["expandtab"] = true,
@ -38,8 +39,10 @@ do
["relativenumber"] = true, ["relativenumber"] = true,
["ruler"] = true, ["ruler"] = true,
["scrolloff"] = 10, ["scrolloff"] = 10,
["sessionoptions"] = { "buffers", "curdir", "tabpages", "winsize", "help", "globals", "skiprtp", "folds" },
["shiftwidth"] = 4, ["shiftwidth"] = 4,
["showmode"] = false, ["showmode"] = false,
["showtabline"] = 0,
["signcolumn"] = "yes", ["signcolumn"] = "yes",
["smartcase"] = true, ["smartcase"] = true,
["smartindent"] = false, ["smartindent"] = false,
@ -52,6 +55,8 @@ do
["timeoutlen"] = 50, ["timeoutlen"] = 50,
["undodir"] = "/home/christoph/.vim/undo", ["undodir"] = "/home/christoph/.vim/undo",
["undofile"] = true, ["undofile"] = true,
["undolevels"] = 10000,
["winblend"] = 30,
} }
for k, v in pairs(nixvim_options) do for k, v in pairs(nixvim_options) do
@ -103,13 +108,16 @@ require("lazy").setup({
require("nvim-autopairs").setup(opts) require("nvim-autopairs").setup(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-autopairs", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-autopairs",
["lazy"] = false, ["event"] = { "InsertEnter" },
["lazy"] = true,
["name"] = "autopairs", ["name"] = "autopairs",
["opts"] = { ["check_ts"] = true },
}, },
{ {
"bbye", "bbye",
["cmd"] = { "Bdelete", "Bwipeout" },
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/vim-bbye", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/vim-bbye",
["lazy"] = false, ["lazy"] = true,
["name"] = "bbye", ["name"] = "bbye",
}, },
{ {
@ -118,7 +126,8 @@ require("lazy").setup({
require("better_escape").setup(opts) require("better_escape").setup(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/better-escape.nvim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/better-escape.nvim",
["lazy"] = false, ["event"] = { "InsertEnter" },
["lazy"] = true,
["name"] = "better-escape", ["name"] = "better-escape",
["opts"] = { ["mapping"] = { "jk" }, ["timeout"] = 200 }, ["opts"] = { ["mapping"] = { "jk" }, ["timeout"] = 200 },
}, },
@ -128,8 +137,9 @@ require("lazy").setup({
require("clangd_extensions").setup(opts) require("clangd_extensions").setup(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/clangd_extensions.nvim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/clangd_extensions.nvim",
["lazy"] = false, ["lazy"] = true,
["name"] = "clangd-extensions", ["name"] = "clangd-extensions",
["opts"] = { ["inlay_hints"] = { ["inline"] = false } },
}, },
{ {
"cmp", "cmp",
@ -183,7 +193,8 @@ require("lazy").setup({
}, },
}, },
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-cmp", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-cmp",
["lazy"] = false, ["event"] = { "InsertEnter" },
["lazy"] = true,
["name"] = "cmp", ["name"] = "cmp",
["opts"] = function() ["opts"] = function()
local cmp = require("cmp") local cmp = require("cmp")
@ -243,7 +254,7 @@ require("lazy").setup({
elseif has_words_before() then elseif has_words_before() then
cmp.complete() cmp.complete()
else else
fallback() fallback() -- This will call the intellitab <Tab> binding
end end
end, { "i", "s" }), end, { "i", "s" }),
["<Up>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }), ["<Up>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }),
@ -257,7 +268,9 @@ require("lazy").setup({
require("colorizer").setup(opts) require("colorizer").setup(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-colorizer.lua", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-colorizer.lua",
["lazy"] = false, ["enabled"] = false,
["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "colorizer", ["name"] = "colorizer",
}, },
{ {
@ -297,9 +310,17 @@ require("lazy").setup({
require("conform").setup(opts) require("conform").setup(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/conform.nvim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/conform.nvim",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "conform", ["name"] = "conform",
["opts"] = { ["opts"] = {
["format_on_save"] = function(bufnr)
-- Disable with a global or buffer-local variable
if vim.g.disable_autoformat then
return
end
return { timeout_ms = 500, lsp_fallback = true }
end,
["formatters_by_ft"] = { ["formatters_by_ft"] = {
["c"] = { "clang-format" }, ["c"] = { "clang-format" },
["cpp"] = { "clang-format" }, ["cpp"] = { "clang-format" },
@ -323,18 +344,19 @@ require("lazy").setup({
require("flash").setup(opts) require("flash").setup(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/flash.nvim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/flash.nvim",
["lazy"] = true, ["lazy"] = false,
["name"] = "flash", ["name"] = "flash",
}, },
{ {
"gitmessenger", "gitmessenger",
["cmd"] = { "GitMessenger" },
["config"] = function(_, opts) ["config"] = function(_, opts)
for k, v in pairs(opts) do for k, v in pairs(opts) do
vim.g[k] = v vim.g[k] = v
end end
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/git-messenger.vim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/git-messenger.vim",
["lazy"] = false, ["lazy"] = true,
["name"] = "gitmessenger", ["name"] = "gitmessenger",
["opts"] = { ["opts"] = {
["git_messenger_floating_win_opts"] = { ["border"] = "rounded" }, ["git_messenger_floating_win_opts"] = { ["border"] = "rounded" },
@ -347,7 +369,8 @@ require("lazy").setup({
require("gitsigns").setup(opts) require("gitsigns").setup(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/gitsigns.nvim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/gitsigns.nvim",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "gitsigns", ["name"] = "gitsigns",
["opts"] = { ["current_line_blame"] = false }, ["opts"] = { ["current_line_blame"] = false },
}, },
@ -363,7 +386,8 @@ require("lazy").setup({
require("illuminate").configure(opts) require("illuminate").configure(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/vim-illuminate", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/vim-illuminate",
["lazy"] = false, ["event"] = { "BufreadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "illuminate", ["name"] = "illuminate",
["opts"] = { ["opts"] = {
["filetypesDenylist"] = { ["filetypesDenylist"] = {
@ -382,7 +406,8 @@ require("lazy").setup({
{ {
"intellitab", "intellitab",
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/intellitab.nvim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/intellitab.nvim",
["lazy"] = false, ["event"] = { "InsertEnter" },
["lazy"] = true,
["name"] = "intellitab", ["name"] = "intellitab",
}, },
{ {
@ -396,8 +421,17 @@ require("lazy").setup({
}, },
{ {
"lazygit", "lazygit",
["cmd"] = { "LazyGit", "LazyGitConfig", "LazyGitCurrentFile", "LazyGitFilter", "LazyGitFilterCurrentFile" },
["dependencies"] = {
{
"plenary",
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/plenary.nvim",
["lazy"] = true,
["name"] = "plenary",
},
},
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/lazygit.nvim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/lazygit.nvim",
["lazy"] = false, ["lazy"] = true,
["name"] = "lazygit", ["name"] = "lazygit",
}, },
{ {
@ -410,28 +444,29 @@ require("lazy").setup({
end end
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-lint", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-lint",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "lint", ["name"] = "lint",
["opts"] = { ["opts"] = {
["linters_by_ft"] = { ["linters_by_ft"] = {
["c"] = { "clang-tidy" }, ["c"] = { "clangtidy" },
["clojure"] = { "clj-kondo" }, ["clojure"] = { "clj-kondo" },
["cpp"] = { "clang-tidy" }, ["cpp"] = { "clangtidy" },
["h"] = { "clang-tidy" }, ["h"] = { "clangtidy" },
["hpp"] = { "clang-tidy" }, ["hpp"] = { "clangtidy" },
["java"] = { "checkstyle" }, ["java"] = { "checkstyle" },
["javascript"] = { "eslint_d" }, ["javascript"] = { "eslint_d" },
["lua"] = { "luacheck" }, ["lua"] = { "luacheck" },
["markdown"] = { "vale" }, ["markdown"] = { "vale" },
["nix"] = { "statix" }, ["nix"] = { "statix" },
["python"] = { "flake8" }, ["python"] = { "flake8" },
["rust"] = { "clippy" },
["text"] = { "vale" }, ["text"] = { "vale" },
}, },
}, },
}, },
{ {
"lspconfig", "lspconfig",
["cmd"] = { "LspInfo" },
["config"] = function(_, opts) ["config"] = function(_, opts)
local __lspOnAttach = function(client, bufnr) end local __lspOnAttach = function(client, bufnr) end
@ -448,7 +483,38 @@ require("lazy").setup({
} }
for i, server in ipairs({ for i, server in ipairs({
{ ["name"] = "clangd" }, {
["extraOptions"] = {
["capabilities"] = { ["offsetEncoding"] = { "utf-16" } },
["cmd"] = {
"clangd",
"--background-index",
"--clang-tidy",
"--header-insertion=iwyu",
"--completion-style=detailed",
"--function-arg-placeholders",
"--fallback-style=llvm",
},
["init_options"] = {
["clangdFileStatus"] = true,
["completeUnimported"] = true,
["usePlaceholders"] = true,
},
["root_dir"] = function(fname)
return require("lspconfig.util").root_pattern(
"Makefile",
"CMakeLists.txt",
".clang-format",
".clang-tidy"
)(fname) or require("lspconfig.util").root_pattern(
"compile_commands.json"
)(fname) or require("lspconfig.util").find_git_ancestor(
fname
)
end,
},
["name"] = "clangd",
},
{ ["name"] = "clojure_lsp" }, { ["name"] = "clojure_lsp" },
{ ["name"] = "cmake" }, { ["name"] = "cmake" },
{ ["name"] = "lua_ls" }, { ["name"] = "lua_ls" },
@ -480,10 +546,17 @@ require("lazy").setup({
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/neodev.nvim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/neodev.nvim",
["lazy"] = false, ["lazy"] = false,
["name"] = "neodev", ["name"] = "neodev",
["opts"] = {
["library"] = { ["enabled"] = true, ["plugins"] = true, ["runtime"] = true, ["types"] = true },
["lspconfig"] = true,
["pathStrict"] = true,
["setup_jsonls"] = false,
},
}, },
}, },
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-lspconfig", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-lspconfig",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "lspconfig", ["name"] = "lspconfig",
}, },
{ {
@ -532,12 +605,13 @@ require("lazy").setup({
}, },
{ {
"navbuddy", "navbuddy",
["cmd"] = { "Navbuddy" },
["config"] = function(_, opts) ["config"] = function(_, opts)
local actions = require("nvim-navbuddy.actions") -- ? local actions = require("nvim-navbuddy.actions") -- ?
require("nvim-navbuddy").setup(opts) require("nvim-navbuddy").setup(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-navbuddy", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-navbuddy",
["lazy"] = false, ["lazy"] = true,
["name"] = "navbuddy", ["name"] = "navbuddy",
["opts"] = { ["lsp"] = { ["auto_attach"] = true }, ["window"] = { ["border"] = "rounded" } }, ["opts"] = { ["lsp"] = { ["auto_attach"] = true }, ["window"] = { ["border"] = "rounded" } },
}, },
@ -553,7 +627,7 @@ require("lazy").setup({
}, },
{ {
"neo-tree", "neo-tree",
["cmd"] = "Neotree", ["cmd"] = { "Neotree" },
["config"] = function(_, opts) ["config"] = function(_, opts)
require("neo-tree").setup(opts) require("neo-tree").setup(opts)
end, end,
@ -585,15 +659,28 @@ require("lazy").setup({
["name"] = "neo-tree", ["name"] = "neo-tree",
["opts"] = { ["opts"] = {
["buffers"] = { ["follow_current_file"] = { ["enabled"] = true, ["leave_dirs_open"] = false } }, ["buffers"] = { ["follow_current_file"] = { ["enabled"] = true, ["leave_dirs_open"] = false } },
["enable_diagnostics"] = false,
["enable_git_status"] = true,
["filesystem"] = { ["follow_current_file"] = { ["enabled"] = true, ["leave_dirs_open"] = false } }, ["filesystem"] = { ["follow_current_file"] = { ["enabled"] = true, ["leave_dirs_open"] = false } },
["open_files_do_not_replace_types"] = { "terminal", "trouble", "qf" },
["popup_border_style"] = "rounded",
["use_default_mappings"] = false, ["use_default_mappings"] = false,
["window"] = { ["window"] = {
["mappings"] = { ["mappings"] = {
["/"] = "fuzzy_finder", ["/"] = "fuzzy_finder",
["<CR>"] = "toggle_node", ["<CR>"] = "open",
["<Esc>"] = "cancel", ["<Esc>"] = "cancel",
["<S-CR>"] = "open",
["?"] = "show_help", ["?"] = "show_help",
["R"] = "refresh",
["a"] = "add",
["c"] = "close_node",
["d"] = "delete",
["i"] = "show_file_details",
["p"] = "paste_from_clipboard",
["q"] = "close_window",
["r"] = "rename",
["x"] = "cut_to_clipboard",
["y"] = "copy_to_clipboard",
}, },
}, },
}, },
@ -683,7 +770,7 @@ require("lazy").setup({
}, },
{ {
"telescope", "telescope",
["cmd"] = "Telescope", ["cmd"] = { "Telescope" },
["config"] = function(_, opts) ["config"] = function(_, opts)
local telescope = require("telescope") local telescope = require("telescope")
telescope.setup(opts) telescope.setup(opts)
@ -747,16 +834,18 @@ require("lazy").setup({
}, },
}, },
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/todo-comments.nvim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/todo-comments.nvim",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "todo-comments", ["name"] = "todo-comments",
}, },
{ {
"toggleterm", "toggleterm",
["cmd"] = { "ToggleTerm" },
["config"] = function(_, opts) ["config"] = function(_, opts)
require("toggleterm").setup(opts) require("toggleterm").setup(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/toggleterm.nvim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/toggleterm.nvim",
["lazy"] = false, ["lazy"] = true,
["name"] = "toggleterm", ["name"] = "toggleterm",
["opts"] = { ["opts"] = {
["auto_scroll"] = true, ["auto_scroll"] = true,
@ -775,6 +864,7 @@ require("lazy").setup({
}, },
{ {
"treesitter", "treesitter",
["cmd"] = { "TSModuleInfo" },
["config"] = function(_, opts) ["config"] = function(_, opts)
-- Fix treesitter grammars/parsers on nix -- Fix treesitter grammars/parsers on nix
vim.opt.runtimepath:append( vim.opt.runtimepath:append(
@ -785,7 +875,8 @@ require("lazy").setup({
require("nvim-treesitter.configs").setup(opts) require("nvim-treesitter.configs").setup(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-treesitter", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/nvim-treesitter",
["lazy"] = false, ["event"] = { "BufReadPost", "BufNewFile" },
["lazy"] = true,
["name"] = "treesitter", ["name"] = "treesitter",
["opts"] = { ["opts"] = {
["auto_install"] = false, ["auto_install"] = false,
@ -814,11 +905,12 @@ require("lazy").setup({
}, },
{ {
"trouble", "trouble",
["cmd"] = { "Trouble", "TroubleToggle" },
["config"] = function(_, opts) ["config"] = function(_, opts)
require("trouble").setup(opts) require("trouble").setup(opts)
end, end,
["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/trouble.nvim", ["dir"] = "/nix/store/8bx1xnvd173gghqaak7qyfr9ay7vxdw3-lazy-plugins/trouble.nvim",
["lazy"] = false, ["lazy"] = true,
["name"] = "trouble", ["name"] = "trouble",
}, },
{ {
@ -864,26 +956,99 @@ require("lazy").setup({
-- Set up keybinds {{{ -- Set up keybinds {{{
do do
local __nixvim_binds = { local __nixvim_binds = {
{ ["action"] = "<CMD>w<CR>", ["key"] = "<C-s>", ["mode"] = "n", ["options"] = { {
["action"] = "v:count == 0 ? 'gj' : 'j'",
["key"] = "j",
["mode"] = "n",
["options"] = { ["desc"] = "Move cursor down", ["expr"] = true },
},
{
["action"] = "v:count == 0 ? 'gj' : 'j'",
["key"] = "<Down>",
["mode"] = "n",
["options"] = { ["desc"] = "Move cursor down", ["expr"] = true },
},
{
["action"] = "v:count == 0 ? 'gk' : 'k'",
["key"] = "k",
["mode"] = "n",
["options"] = { ["desc"] = "Move cursor up", ["expr"] = true },
},
{
["action"] = "v:count == 0 ? 'gk' : 'k'",
["key"] = "<Up>",
["mode"] = "n",
["options"] = { ["desc"] = "Move cursor up", ["expr"] = true },
},
{
["action"] = "<cmd>vertical resize -2<cr>",
["key"] = "<C-h>",
["mode"] = "n",
["options"] = { ["desc"] = "Decrease window width" },
},
{
["action"] = "<cmd>vertical resize +2<cr>",
["key"] = "<C-l>",
["mode"] = "n",
["options"] = { ["desc"] = "Increase window width" },
},
{
["action"] = "<cmd>resize -2<cr>",
["key"] = "<C-j>",
["mode"] = "n",
["options"] = { ["desc"] = "Decrease window height" },
},
{
["action"] = "<cmd>resize +2<cr>",
["key"] = "<C-k>",
["mode"] = "n",
["options"] = { ["desc"] = "Increase window height" },
},
{ ["action"] = "<cmd>m .+1<cr>==", ["key"] = "<M-j>", ["mode"] = "n", ["options"] = {
["desc"] = "Move line down",
} },
{
["action"] = "<Esc><cmd>m .+1<cr>==gi",
["key"] = "<M-j>",
["mode"] = "i",
["options"] = { ["desc"] = "Move line down" },
},
{ ["action"] = ":m '>+1<cr>gv=gv", ["key"] = "<M-j>", ["mode"] = "v", ["options"] = {
["desc"] = "Move line down",
} },
{ ["action"] = "<cmd>m .-2<cr>==", ["key"] = "<M-k>", ["mode"] = "n", ["options"] = {
["desc"] = "Move line up",
} },
{
["action"] = "<Esc><cmd>m .-2<cr>==gi",
["key"] = "<M-k>",
["mode"] = "i",
["options"] = { ["desc"] = "Move line up" },
},
{ ["action"] = ":m '<-2<cr>gv=gv", ["key"] = "<M-k>", ["mode"] = "v", ["options"] = {
["desc"] = "Move line up",
} },
{ ["action"] = "<cmd>w<cr>", ["key"] = "<C-s>", ["mode"] = "n", ["options"] = {
["desc"] = "Save current buffer", ["desc"] = "Save current buffer",
} }, } },
{ ["action"] = "<CMD>wa<CR>", ["key"] = "<C-S-s>", ["mode"] = "n", ["options"] = { { ["action"] = "<cmd>wa<cr>", ["key"] = "<C-S-s>", ["mode"] = "n", ["options"] = {
["desc"] = "Save all buffers", ["desc"] = "Save all buffers",
} }, } },
{ ["action"] = "<Esc>", ["key"] = ";", ["mode"] = "v", ["options"] = { ["desc"] = "Exit visual mode" } },
{ ["action"] = "<gv", ["key"] = "<", ["mode"] = "v", ["options"] = { ["desc"] = "Outdent" } }, { ["action"] = "<gv", ["key"] = "<", ["mode"] = "v", ["options"] = { ["desc"] = "Outdent" } },
{ ["action"] = ">gv", ["key"] = ">", ["mode"] = "v", ["options"] = { ["desc"] = "Indent" } },
{ ["action"] = "v<<Esc>", ["key"] = "<", ["mode"] = "n", ["options"] = { ["desc"] = "Outdent" } }, { ["action"] = "v<<Esc>", ["key"] = "<", ["mode"] = "n", ["options"] = { ["desc"] = "Outdent" } },
{ ["action"] = ">gv", ["key"] = ">", ["mode"] = "v", ["options"] = { ["desc"] = "Indent" } },
{ ["action"] = "v><Esc>", ["key"] = ">", ["mode"] = "n", ["options"] = { ["desc"] = "Indent" } }, { ["action"] = "v><Esc>", ["key"] = ">", ["mode"] = "n", ["options"] = { ["desc"] = "Indent" } },
{ ["action"] = "<C-d>zz", ["key"] = "<C-d>", ["mode"] = "n", ["options"] = { ["desc"] = "Jump down (centered)" } },
{ ["action"] = "<C-u>zz", ["key"] = "<C-u>", ["mode"] = "n", ["options"] = { ["desc"] = "Jump up (centered)" } },
{ ["action"] = "nzzzv", ["key"] = "n", ["mode"] = "n", ["options"] = { ["desc"] = "Next match (centered)" } },
{ ["action"] = "Nzzzv", ["key"] = "N", ["mode"] = "n", ["options"] = { ["desc"] = "Previous match (centered)" } },
{ {
["action"] = "<CMD>lua require('intellitab').indent()<CR>", ["action"] = "<cmd>lua require('intellitab').indent()<cr>",
["key"] = "<Tab>", ["key"] = "<Tab>",
["mode"] = "i", ["mode"] = "i",
["options"] = { ["desc"] = "Indent (IntelliTab)" }, ["options"] = { ["desc"] = "Indent (IntelliTab)" },
}, },
{ ["action"] = "<C-d>zz", ["key"] = "<C-d>", ["mode"] = "n", ["options"] = { ["desc"] = "Jump down (centered)" } },
{ ["action"] = "<C-u>zz", ["key"] = "<C-u>", ["mode"] = "n", ["options"] = { ["desc"] = "Jump up (centered)" } },
{ ["action"] = "nzzzv", ["key"] = "n", ["mode"] = "n", ["options"] = { ["desc"] = "Next match (centered)" } },
{ ["action"] = "Nzzzv", ["key"] = "N", ["mode"] = "n", ["options"] = { ["desc"] = "Previous match (centered)" } },
{ ["action"] = "<C-w>", ["key"] = "<C-BS>", ["mode"] = "i", ["options"] = { ["desc"] = "Delete previous word" } }, { ["action"] = "<C-w>", ["key"] = "<C-BS>", ["mode"] = "i", ["options"] = { ["desc"] = "Delete previous word" } },
{ ["action"] = "<C-w>", ["key"] = "<M-BS>", ["mode"] = "i", ["options"] = { ["desc"] = "Delete previous word" } }, { ["action"] = "<C-w>", ["key"] = "<M-BS>", ["mode"] = "i", ["options"] = { ["desc"] = "Delete previous word" } },
{ {
@ -897,148 +1062,160 @@ do
} }, } },
{ ["action"] = '"+y', ["key"] = "<C-S-c>", ["mode"] = "v", ["options"] = { ["desc"] = "Copy to clipboard" } }, { ["action"] = '"+y', ["key"] = "<C-S-c>", ["mode"] = "v", ["options"] = { ["desc"] = "Copy to clipboard" } },
{ {
["action"] = "<CMD>nohlsearch<CR>", ["action"] = "<cmd>nohlsearch<cr>",
["key"] = "<C-h>", ["key"] = "<C-h>",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Clear search highlights" }, ["options"] = { ["desc"] = "Clear search highlights" },
}, },
{ {
["action"] = "<CMD>lua vim.lsp.buf.hover()<CR>", ["action"] = "<cmd>lua vim.lsp.buf.hover()<cr>",
["key"] = "K", ["key"] = "K",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show LSP hover" }, ["options"] = { ["desc"] = "Show LSP hover" },
}, },
{ {
["action"] = "<CMD>Telescope current_buffer_fuzzy_find<CR>", ["action"] = "<cmd>Telescope current_buffer_fuzzy_find<cr>",
["key"] = "/", ["key"] = "/",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Find in current buffer" }, ["options"] = { ["desc"] = "Find in current buffer" },
}, },
{ ["action"] = "<CMD>Lazy<CR>", ["key"] = "<leader>L", ["mode"] = "n", ["options"] = { ["desc"] = "Show Lazy" } }, { ["action"] = "<cmd>Lazy<cr>", ["key"] = "<leader>L", ["mode"] = "n", ["options"] = { ["desc"] = "Show Lazy" } },
{ {
["action"] = "<CMD>Telescope buffers<CR>", ["action"] = "<cmd>w<cr>",
["key"] = "<leader><Space>",
["mode"] = "n",
["options"] = { ["desc"] = "Show open buffers" },
},
{
["action"] = "<CMD>w<CR>",
["key"] = "<leader>s", ["key"] = "<leader>s",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Save current buffer" }, ["options"] = { ["desc"] = "Save current buffer" },
}, },
{ {
["action"] = "<CMD>wa<CR>", ["action"] = "<cmd>wa<cr>",
["key"] = "<leader>S", ["key"] = "<leader>S",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Save all buffers" }, ["options"] = { ["desc"] = "Save all buffers" },
}, },
{ {
["action"] = "<CMD>Telescope find_files<CR>", ["action"] = "<cmd>edit!<cr>",
["key"] = "<leader>R",
["mode"] = "n",
["options"] = { ["desc"] = "Reload current buffer" },
},
{
["action"] = "<cmd>Telescope buffers<cr>",
["key"] = "<leader><Space>",
["mode"] = "n",
["options"] = { ["desc"] = "Show open buffers" },
},
{
["action"] = "<cmd>Telescope find_files<cr>",
["key"] = "<leader>f", ["key"] = "<leader>f",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Find file" }, ["options"] = { ["desc"] = "Find file" },
}, },
{ {
["action"] = "<CMD>Telescope vim_options<CR>", ["action"] = "<cmd>Telescope vim_options<cr>",
["key"] = "<leader>o", ["key"] = "<leader>o",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show Vim options" }, ["options"] = { ["desc"] = "Show Vim options" },
}, },
{ {
["action"] = "<CMD>Telescope undo<CR>", ["action"] = "<cmd>Telescope undo<cr>",
["key"] = "<leader>u", ["key"] = "<leader>u",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show undo history" }, ["options"] = { ["desc"] = "Show undo history" },
}, },
{ {
["action"] = "<CMD>Telescope live_grep<CR>", ["action"] = "<cmd>Telescope live_grep<cr>",
["key"] = "<leader>/", ["key"] = "<leader>/",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Find in working directory" }, ["options"] = { ["desc"] = "Find in working directory" },
}, },
{ {
["action"] = "<CMD>Telescope notify<CR>", ["action"] = "<cmd>Telescope notify<cr>",
["key"] = "<leader>n", ["key"] = "<leader>n",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show notify history" }, ["options"] = { ["desc"] = "Show notify history" },
}, },
{ {
["action"] = "<CMD>Telescope resume<CR>", ["action"] = "<cmd>Telescope resume<cr>",
["key"] = "<leader>r", ["key"] = "<leader>r",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show last telescope picker" }, ["options"] = { ["desc"] = "Show last telescope picker" },
}, },
{ {
["action"] = "<CMD>Telescope keymaps<CR>", ["action"] = "<cmd>Telescope keymaps<cr>",
["key"] = "<leader>?", ["key"] = "<leader>?",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show keymaps" }, ["options"] = { ["desc"] = "Show keymaps" },
}, },
{ {
["action"] = "<CMD>Telescope commands<CR>", ["action"] = "<cmd>Telescope commands<cr>",
["key"] = "<leader>:", ["key"] = "<leader>:",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Execute command" }, ["options"] = { ["desc"] = "Execute command" },
}, },
{ {
["action"] = "<CMD>Telescope marks<CR>", ["action"] = "<cmd>Telescope marks<cr>",
["key"] = "<leader>M", ["key"] = "<leader>M",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show marks" }, ["options"] = { ["desc"] = "Show marks" },
}, },
{ {
["action"] = "<CMD>Telescope jumplist<CR>", ["action"] = "<cmd>Telescope jumplist<cr>",
["key"] = "<leader>J", ["key"] = "<leader>J",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show jumplist" }, ["options"] = { ["desc"] = "Show jumplist" },
}, },
{ {
["action"] = "<CMD>Telescope man_pages<CR>", ["action"] = "<cmd>Telescope man_pages<cr>",
["key"] = "<leader>m", ["key"] = "<leader>m",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show manpages" }, ["options"] = { ["desc"] = "Show manpages" },
}, },
{ {
["action"] = "<CMD>Telescope help_tags<CR>", ["action"] = "<cmd>Telescope help_tags<cr>",
["key"] = "<leader>h", ["key"] = "<leader>h",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show help tags" }, ["options"] = { ["desc"] = "Show help tags" },
}, },
{ ["action"] = "+quit", ["key"] = "<leader>q", ["mode"] = "n" }, { ["action"] = "+quit", ["key"] = "<leader>q", ["mode"] = "n" },
{ ["action"] = "<CMD>quitall<CR>", ["key"] = "<leader>qq", ["mode"] = "n", ["options"] = { ["desc"] = "Quit" } }, { ["action"] = "<cmd>quitall<cr>", ["key"] = "<leader>qq", ["mode"] = "n", ["options"] = { ["desc"] = "Quit" } },
{ {
["action"] = "<CMD>quitall!<CR>", ["action"] = "<cmd>quitall!<cr>",
["key"] = "<leader>q!", ["key"] = "<leader>q!",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Quit forcefully" }, ["options"] = { ["desc"] = "Quit forcefully" },
}, },
{ ["action"] = "+buffers", ["key"] = "<leader>b", ["mode"] = "n" }, { ["action"] = "+buffers", ["key"] = "<leader>b", ["mode"] = "n" },
{ {
["action"] = "<CMD>Telescope buffers<CR>", ["action"] = "<cmd>Telescope buffers<cr>",
["key"] = "<leader>bb", ["key"] = "<leader>bb",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show open buffers" }, ["options"] = { ["desc"] = "Show open buffers" },
}, },
{ {
["action"] = "<CMD>bnext<CR>", ["action"] = "<cmd>bnext<cr>",
["key"] = "<leader>bn", ["key"] = "<leader>bn",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto next buffer" }, ["options"] = { ["desc"] = "Goto next buffer" },
}, },
{ {
["action"] = "<CMD>bprevious<CR>", ["action"] = "<cmd>bprevious<cr>",
["key"] = "<leader>bp", ["key"] = "<leader>bp",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto previous buffer" }, ["options"] = { ["desc"] = "Goto previous buffer" },
}, },
{ {
["action"] = "<CMD>Bdelete<CR>", ["action"] = "<cmd>Bdelete<cr>",
["key"] = "<leader>bd", ["key"] = "<leader>bd",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Close current buffer" }, ["options"] = { ["desc"] = "Close current buffer" },
}, },
{ ["action"] = "+windows", ["key"] = "<leader>w", ["mode"] = "n" }, { ["action"] = "+windows", ["key"] = "<leader>w", ["mode"] = "n" },
{
["action"] = "<C-w>c",
["key"] = "<leader>wd",
["mode"] = "n",
["options"] = { ["desc"] = "Close current window" },
},
{ {
["action"] = "<C-w>s", ["action"] = "<C-w>s",
["key"] = "<leader>ws", ["key"] = "<leader>ws",
@ -1052,12 +1229,6 @@ do
["options"] = { ["desc"] = "Split window vertically" }, ["options"] = { ["desc"] = "Split window vertically" },
}, },
{ ["action"] = "<C-w>=", ["key"] = "<leader>w=", ["mode"] = "n", ["options"] = { ["desc"] = "Balance windows" } }, { ["action"] = "<C-w>=", ["key"] = "<leader>w=", ["mode"] = "n", ["options"] = { ["desc"] = "Balance windows" } },
{
["action"] = "<C-w>c",
["key"] = "<leader>wd",
["mode"] = "n",
["options"] = { ["desc"] = "Close current window" },
},
{ ["action"] = "<C-w>h", ["key"] = "<leader>wh", ["mode"] = "n", ["options"] = { ["desc"] = "Goto left window" } }, { ["action"] = "<C-w>h", ["key"] = "<leader>wh", ["mode"] = "n", ["options"] = { ["desc"] = "Goto left window" } },
{ ["action"] = "<C-w>l", ["key"] = "<leader>wl", ["mode"] = "n", ["options"] = { { ["action"] = "<C-w>l", ["key"] = "<leader>wl", ["mode"] = "n", ["options"] = {
["desc"] = "Goto right window", ["desc"] = "Goto right window",
@ -1071,127 +1242,151 @@ do
} }, } },
{ ["action"] = "+toggle", ["key"] = "<leader>t", ["mode"] = "n" }, { ["action"] = "+toggle", ["key"] = "<leader>t", ["mode"] = "n" },
{ {
["action"] = "<CMD>Neotree action=show toggle=true<CR>", ["action"] = "<cmd>Neotree action=show toggle=true<cr><C-w>=",
["key"] = "<leader>tt", ["key"] = "<leader>tt",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Toggle NeoTree" }, ["options"] = { ["desc"] = "Toggle NeoTree" },
}, },
{ {
["action"] = "<CMD>Navbuddy<CR>", ["action"] = "<cmd>Navbuddy<cr>",
["key"] = "<leader>tn", ["key"] = "<leader>tn",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Toggle NavBuddy" }, ["options"] = { ["desc"] = "Toggle NavBuddy" },
}, },
{ {
["action"] = "<CMD>TroubleToggle focus=false<CR>", ["action"] = "<cmd>TroubleToggle focus=false<cr>",
["key"] = "<leader>td", ["key"] = "<leader>td",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Toggle Trouble" }, ["options"] = { ["desc"] = "Toggle Trouble" },
}, },
{
["action"] = "<cmd>ToggleAutoformat<cr>",
["key"] = "<leader>tf",
["mode"] = "n",
["options"] = { ["desc"] = "Toggle autoformat-on-save" },
},
{
["action"] = "<cmd>ToggleInlineDiagnostics<cr>",
["key"] = "<leader>tD",
["mode"] = "n",
["options"] = { ["desc"] = "Toggle inline diagnostics" },
},
{
["action"] = "<cmd>:set wrap!<cr>",
["key"] = "<leader>tw",
["mode"] = "n",
["options"] = { ["desc"] = "Toggle word-wrap" },
},
{ ["action"] = "+git", ["key"] = "<leader>g", ["mode"] = "n" }, { ["action"] = "+git", ["key"] = "<leader>g", ["mode"] = "n" },
{ {
["action"] = "<CMD>LazyGit<CR>", ["action"] = "<cmd>LazyGit<cr>",
["key"] = "<leader>gg", ["key"] = "<leader>gg",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show LazyGit" }, ["options"] = { ["desc"] = "Show LazyGit" },
}, },
{ {
["action"] = "<CMD>GitMessenger<CR>", ["action"] = "<cmd>GitMessenger<cr>",
["key"] = "<leader>gm", ["key"] = "<leader>gm",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show GitMessenger" }, ["options"] = { ["desc"] = "Show GitMessenger" },
}, },
{ {
["action"] = "<CMD>Telescope git_status<CR>", ["action"] = "<cmd>Telescope git_status<cr>",
["key"] = "<leader>gs", ["key"] = "<leader>gs",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show Git status" }, ["options"] = { ["desc"] = "Show Git status" },
}, },
{ {
["action"] = "<CMD>Telescope git_commits<CR>", ["action"] = "<cmd>Telescope git_commits<cr>",
["key"] = "<leader>gc", ["key"] = "<leader>gc",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show Git log" }, ["options"] = { ["desc"] = "Show Git log" },
}, },
{ {
["action"] = "<CMD>Telescope git_branches<CR>", ["action"] = "<cmd>Telescope git_branches<cr>",
["key"] = "<leader>gb", ["key"] = "<leader>gb",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show Git branches" }, ["options"] = { ["desc"] = "Show Git branches" },
}, },
{ {
["action"] = "<CMD>Telescope git_bcommits<CR>", ["action"] = "<cmd>Telescope git_bcommits<cr>",
["key"] = "<leader>gf", ["key"] = "<leader>gf",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show Git log for current file" }, ["options"] = { ["desc"] = "Show Git log for current file" },
}, },
{ ["action"] = "+lsp", ["key"] = "<leader>l", ["mode"] = "n" }, { ["action"] = "+lsp", ["key"] = "<leader>l", ["mode"] = "n" },
{ {
["action"] = "<CMD>Telescope lsp_references<CR>", ["action"] = "<cmd>Telescope lsp_references<cr>",
["key"] = "<leader>lr", ["key"] = "<leader>lr",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto references" }, ["options"] = { ["desc"] = "Goto references" },
}, },
{ {
["action"] = "<CMD>Telescope lsp_definitions<CR>", ["action"] = "<cmd>Telescope lsp_definitions<cr>",
["key"] = "<leader>ld", ["key"] = "<leader>ld",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto definition" }, ["options"] = { ["desc"] = "Goto definition" },
}, },
{ {
["action"] = "<CMD>Telescope lsp_implementations<CR>", ["action"] = "<cmd>Telescope lsp_implementations<cr>",
["key"] = "<leader>li", ["key"] = "<leader>li",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto implementation" }, ["options"] = { ["desc"] = "Goto implementation" },
}, },
{ {
["action"] = "<CMD>Telescope lsp_type_definitions<CR>", ["action"] = "<cmd>Telescope lsp_type_definitions<cr>",
["key"] = "<leader>lt", ["key"] = "<leader>lt",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Goto type definition" }, ["options"] = { ["desc"] = "Goto type definition" },
}, },
{ {
["action"] = "<CMD>Telescope lsp_incoming_calls<CR>", ["action"] = "<cmd>Telescope lsp_incoming_calls<cr>",
["key"] = "<leader>lI", ["key"] = "<leader>lI",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show incoming calls" }, ["options"] = { ["desc"] = "Show incoming calls" },
}, },
{ {
["action"] = "<CMD>Telescope lsp_outgoing_calls<CR>", ["action"] = "<cmd>Telescope lsp_outgoing_calls<cr>",
["key"] = "<leader>lO", ["key"] = "<leader>lO",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show outgoing calls" }, ["options"] = { ["desc"] = "Show outgoing calls" },
}, },
{ ["action"] = "+code", ["key"] = "<leader>c", ["mode"] = "n" }, { ["action"] = "+code", ["key"] = "<leader>c", ["mode"] = "n" },
{ {
["action"] = "<CMD>lua require('conform').format()<CR>", ["action"] = "<cmd>lua require('conform').format()<cr>",
["key"] = "<leader>cf", ["key"] = "<leader>cf",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Format current buffer" }, ["options"] = { ["desc"] = "Format current buffer" },
}, },
{ {
["action"] = "<CMD>Telescope diagnostics<CR>", ["action"] = "<cmd>lua vim.diagnostic.open_float()<cr>",
["key"] = "<leader>cd", ["key"] = "<leader>cd",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show LSP line diagnostics" },
},
{
["action"] = "<cmd>Telescope diagnostics<cr>",
["key"] = "<leader>cD",
["mode"] = "n",
["options"] = { ["desc"] = "Show diagnostics" }, ["options"] = { ["desc"] = "Show diagnostics" },
}, },
{ {
["action"] = "<CMD>lua vim.lsp.buf.rename()<CR>", ["action"] = "<cmd>lua vim.lsp.buf.rename()<cr>",
["key"] = "<leader>cr", ["key"] = "<leader>cr",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Rename LSP symbol" }, ["options"] = { ["desc"] = "Rename LSP symbol" },
}, },
{ {
["action"] = "<CMD>lua vim.lsp.buf.code_action()<CR>", ["action"] = "<cmd>lua vim.lsp.buf.code_action()<cr>",
["key"] = "<leader>ca", ["key"] = "<leader>ca",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show LSP code actions" }, ["options"] = { ["desc"] = "Show LSP code actions" },
}, },
{ {
["action"] = "<CMD>lua vim.diagnostic.open_float()<CR>", ["action"] = "<cmd>ClangdSwitchSourceHeader<cr>",
["key"] = "<leader>cD", ["key"] = "<leader>ch",
["mode"] = "n", ["mode"] = "n",
["options"] = { ["desc"] = "Show LSP line diagnostics" }, ["options"] = { ["desc"] = "Switch C/C++ source/header" },
}, },
} }
for i, map in ipairs(__nixvim_binds) do for i, map in ipairs(__nixvim_binds) do
@ -1202,20 +1397,43 @@ end
vim.filetype.add({ ["extension"] = { ["v"] = "vlang" } }) vim.filetype.add({ ["extension"] = { ["v"] = "vlang" } })
-- Hide inline diagnostics and show border -- Toggle inline diagnostics and show border
vim.g.enable_inline_diagnostics = false
vim.diagnostic.config({ vim.diagnostic.config({
virtual_text = false, virtual_text = vim.g.enable_inline_diagnostics,
float = { border = "rounded" }, float = { border = "rounded" },
}) })
vim.api.nvim_create_user_command("ToggleInlineDiagnostics", function()
vim.g.enable_inline_diagnostics = not vim.g.enable_inline_diagnostics
vim.diagnostic.config({ virtual_text = vim.g.enable_inline_diagnostics })
require("notify")((vim.g.enable_inline_diagnostics and "Enabled" or "Disabled") .. " inline diagnostics")
end, {
desc = "Toggle inline diagnostics",
})
-- Toggle conform format_on_save
vim.g.disable_autoformat = false
vim.api.nvim_create_user_command("ToggleAutoformat", function()
vim.g.disable_autoformat = not vim.g.disable_autoformat
require("notify")((vim.g.disable_autoformat and "Disabled" or "Enabled") .. " autoformat-on-save")
end, {
desc = "Toggle autoformat-on-save",
})
-- Allow navigating popupmenu completion with Up/Down -- Allow navigating popupmenu completion with Up/Down
vim.api.nvim_set_keymap("c", "<Down>", 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true }) vim.api.nvim_set_keymap("c", "<Down>", 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true })
vim.api.nvim_set_keymap("c", "<Up>", 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true }) vim.api.nvim_set_keymap("c", "<Up>", 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true })
function _G.get_wildmenu_key(key_wildmenu, key_regular) function _G.get_wildmenu_key(key_wildmenu, key_regular)
return vim.fn.wildmenumode() ~= 0 and key_wildmenu or key_regular return vim.fn.wildmenumode() ~= 0 and key_wildmenu or key_regular
end end
-- Check LSP server config
vim.api.nvim_create_user_command("LspInspect", function()
require("notify")(vim.inspect(vim.lsp.get_active_clients()))
end, {
desc = "Print LSP server configuration",
})
-- Set up autocommands {{ -- Set up autocommands {{
do do
local __nixvim_autocommands = { local __nixvim_autocommands = {
@ -1227,9 +1445,24 @@ do
}, },
{ {
["callback"] = function() ["callback"] = function()
require("conform").format() vim.highlight.on_yank()
end, end,
["event"] = { "BufWritePre" }, ["event"] = { "TextYankPost" },
},
{
["callback"] = function()
local current_tab = vim.fn.tabpagenr()
vim.cmd("tabdo wincmd =")
vim.cmd("tabnext " .. current_tab)
end,
["event"] = { "VimResized" },
},
{
["callback"] = function()
vim.opt_local.conceallevel = 0
end,
["event"] = "FileType",
["pattern"] = { "json", "jsonc", "json5" },
}, },
} }

View File

@ -68,6 +68,7 @@ in {
file.".config/vale/.vale.ini".source = ./vale_config.ini; file.".config/vale/.vale.ini".source = ./vale_config.ini;
}; };
# TODO: Read the LazyVim config for further ideas
programs.nixvim = { programs.nixvim = {
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;
@ -87,30 +88,51 @@ in {
# extraLuaPackages = with pkgs.lua51Packages; []; # extraLuaPackages = with pkgs.lua51Packages; [];
extraPython3Packages = p: [ # extraPython3Packages = p: [
# For CHADtree # # For CHADtree
# p.pyyaml # p.pyyaml
# p.pynvim-pp # p.pynvim-pp
# p.std2 # p.std2
]; # ];
# TODO: Resize splits on window-resize
autoCmd = [ autoCmd = [
{ {
event = ["BufWritePost"]; event = ["BufWritePost"];
# pattern = "*"; callback.__raw = "function() require('lint').try_lint() end";
callback = {__raw = "function() require('lint').try_lint() end";}; }
# Now setup directly in conform
# {
# event = ["BufWritePre"];
# callback.__raw = "function() require('conform').format() end";
# }
{
event = ["TextYankPost"];
callback.__raw = "function() vim.highlight.on_yank() end";
} }
{ {
event = ["BufWritePre"]; event = ["VimResized"];
callback = {__raw = "function() require('conform').format() end";}; callback.__raw = ''
function()
local current_tab = vim.fn.tabpagenr()
vim.cmd("tabdo wincmd =")
vim.cmd("tabnext " .. current_tab)
end
'';
}
{
event = "FileType";
pattern = ["json" "jsonc" "json5"]; # Disable conceal for these filetypes
callback.__raw = "function() vim.opt_local.conceallevel = 0 end";
} }
]; ];
# TODO: Toggle wrapping # TODO: Incremental selection
# TODO: Toggle format on save
# TODO: Toggle format on paste
keymaps = import ./keybinds.nix {inherit lib mylib;}; keymaps = import ./keybinds.nix {inherit lib mylib;};
# TODO: Incremental LSP rename
# TODO: Dashboard
# TODO: Configure lazy-loading correctly with handlers
plugins.lazy = { plugins.lazy = {
enable = true; enable = true;
@ -118,24 +140,30 @@ in {
autopairs = { autopairs = {
name = "autopairs"; name = "autopairs";
pkg = pkgs.vimPlugins.nvim-autopairs; pkg = pkgs.vimPlugins.nvim-autopairs;
lazy = false; lazy = true;
event = ["InsertEnter"];
config = '' config = ''
function(_, opts) function(_, opts)
require("nvim-autopairs").setup(opts) require("nvim-autopairs").setup(opts)
end end
''; '';
opts = {
check_ts = true;
};
}; };
bbye = { bbye = {
name = "bbye"; name = "bbye";
pkg = pkgs.vimPlugins.vim-bbye; pkg = pkgs.vimPlugins.vim-bbye;
lazy = false; lazy = true;
cmd = ["Bdelete" "Bwipeout"];
}; };
better-escape = { better-escape = {
name = "better-escape"; name = "better-escape";
pkg = pkgs.vimPlugins.better-escape-nvim; pkg = pkgs.vimPlugins.better-escape-nvim;
lazy = false; lazy = true;
event = ["InsertEnter"];
config = '' config = ''
function(_, opts) function(_, opts)
require("better_escape").setup(opts) require("better_escape").setup(opts)
@ -187,15 +215,21 @@ in {
# }; # };
# }; # };
# TODO: In LazyVim require("clang_extensions").setup(opts) is called where opts is the server definition from lspconfig...
clangd-extensions = { clangd-extensions = {
name = "clangd-extensions"; name = "clangd-extensions";
pkg = pkgs.vimPlugins.clangd_extensions-nvim; pkg = pkgs.vimPlugins.clangd_extensions-nvim;
lazy = false; lazy = true;
config = '' config = ''
function(_, opts) function(_, opts)
require("clangd_extensions").setup(opts) require("clangd_extensions").setup(opts)
end end
''; '';
opts = {
inlay_hints = {
inline = false;
};
};
}; };
_cmp-async-path = { _cmp-async-path = {
@ -242,10 +276,12 @@ in {
lazy = true; lazy = true;
}; };
# TODO: Check additional completion backends
cmp = { cmp = {
name = "cmp"; name = "cmp";
pkg = pkgs.vimPlugins.nvim-cmp; pkg = pkgs.vimPlugins.nvim-cmp;
lazy = false; lazy = true;
event = ["InsertEnter"];
dependencies = [ dependencies = [
_cmp-async-path _cmp-async-path
_cmp-buffer _cmp-buffer
@ -289,7 +325,7 @@ in {
elseif has_words_before() then elseif has_words_before() then
cmp.complete() cmp.complete()
else else
fallback() fallback() -- This will call the intellitab <Tab> binding
end end
end, { "i", "s" }) end, { "i", "s" })
''; '';
@ -342,7 +378,9 @@ in {
colorizer = { colorizer = {
name = "colorizer"; name = "colorizer";
pkg = pkgs.vimPlugins.nvim-colorizer-lua; pkg = pkgs.vimPlugins.nvim-colorizer-lua;
lazy = false; enabled = false;
lazy = true;
event = ["BufReadPost" "BufNewFile"];
config = '' config = ''
function(_, opts) function(_, opts)
require("colorizer").setup(opts) require("colorizer").setup(opts)
@ -373,6 +411,7 @@ in {
name = "comment"; name = "comment";
pkg = pkgs.vimPlugins.comment-nvim; pkg = pkgs.vimPlugins.comment-nvim;
lazy = false; lazy = false;
# keys = ["<C-c>" "<C-b>"]; # TODO: This list only works in normal mode
dependencies = [ dependencies = [
_ts-context-commentstring _ts-context-commentstring
]; ];
@ -396,7 +435,8 @@ in {
conform = { conform = {
name = "conform"; name = "conform";
pkg = pkgs.vimPlugins.conform-nvim; pkg = pkgs.vimPlugins.conform-nvim;
lazy = false; lazy = true;
event = ["BufReadPost" "BufNewFile"];
config = '' config = ''
function(_, opts) function(_, opts)
require("conform").setup(opts) require("conform").setup(opts)
@ -418,6 +458,16 @@ in {
python = ["black"]; python = ["black"];
rust = ["rustfmt"]; rust = ["rustfmt"];
}; };
format_on_save.__raw = ''
function(bufnr)
-- Disable with a global or buffer-local variable
if vim.g.disable_autoformat then
return
end
return { timeout_ms = 500, lsp_fallback = true }
end
'';
}; };
}; };
@ -425,7 +475,7 @@ in {
flash = { flash = {
name = "flash"; name = "flash";
pkg = pkgs.vimPlugins.flash-nvim; pkg = pkgs.vimPlugins.flash-nvim;
lazy = true; lazy = false;
config = '' config = ''
function(_, opts) function(_, opts)
require("flash").setup(opts) require("flash").setup(opts)
@ -436,7 +486,8 @@ in {
gitmessenger = { gitmessenger = {
name = "gitmessenger"; name = "gitmessenger";
pkg = pkgs.vimPlugins.git-messenger-vim; pkg = pkgs.vimPlugins.git-messenger-vim;
lazy = false; lazy = true;
cmd = ["GitMessenger"];
config = '' config = ''
function(_, opts) function(_, opts)
for k, v in pairs(opts) do for k, v in pairs(opts) do
@ -455,7 +506,8 @@ in {
gitsigns = { gitsigns = {
name = "gitsigns"; name = "gitsigns";
pkg = pkgs.vimPlugins.gitsigns-nvim; pkg = pkgs.vimPlugins.gitsigns-nvim;
lazy = false; lazy = true;
event = ["BufReadPost" "BufNewFile"];
config = '' config = ''
function(_, opts) function(_, opts)
require("gitsigns").setup(opts) require("gitsigns").setup(opts)
@ -469,14 +521,15 @@ in {
haskell-tools = { haskell-tools = {
name = "haskell-tools"; name = "haskell-tools";
pkg = pkgs.vimPlugins.haskell-tools-nvim; pkg = pkgs.vimPlugins.haskell-tools-nvim;
lazy = false; lazy = false; # Recommended by author
# Don't call setup! # Don't call setup!
}; };
illuminate = { illuminate = {
name = "illuminate"; name = "illuminate";
pkg = pkgs.vimPlugins.vim-illuminate; pkg = pkgs.vimPlugins.vim-illuminate;
lazy = false; lazy = true;
event = ["BufreadPost" "BufNewFile"];
config = '' config = ''
function(_, opts) function(_, opts)
require("illuminate").configure(opts) require("illuminate").configure(opts)
@ -500,7 +553,8 @@ in {
intellitab = { intellitab = {
name = "intellitab"; name = "intellitab";
pkg = pkgs.vimPlugins.intellitab-nvim; pkg = pkgs.vimPlugins.intellitab-nvim;
lazy = false; lazy = true;
event = ["InsertEnter"];
}; };
lastplace = { lastplace = {
@ -517,13 +571,16 @@ in {
lazygit = { lazygit = {
name = "lazygit"; name = "lazygit";
pkg = pkgs.vimPlugins.lazygit-nvim; pkg = pkgs.vimPlugins.lazygit-nvim;
lazy = false; dependencies = [_plenary];
lazy = true;
cmd = ["LazyGit" "LazyGitConfig" "LazyGitCurrentFile" "LazyGitFilter" "LazyGitFilterCurrentFile"];
}; };
lint = { lint = {
name = "lint"; name = "lint";
pkg = pkgs.vimPlugins.nvim-lint; pkg = pkgs.vimPlugins.nvim-lint;
lazy = false; lazy = true;
event = ["BufReadPost" "BufNewFile"];
config = '' config = ''
function(_, opts) function(_, opts)
local lint = require("lint") local lint = require("lint")
@ -535,10 +592,10 @@ in {
''; '';
opts = { opts = {
linters_by_ft = { linters_by_ft = {
c = ["clang-tidy"]; c = ["clangtidy"];
h = ["clang-tidy"]; h = ["clangtidy"];
cpp = ["clang-tidy"]; cpp = ["clangtidy"];
hpp = ["clang-tidy"]; hpp = ["clangtidy"];
clojure = ["clj-kondo"]; clojure = ["clj-kondo"];
java = ["checkstyle"]; java = ["checkstyle"];
javascript = ["eslint_d"]; javascript = ["eslint_d"];
@ -546,7 +603,7 @@ in {
markdown = ["vale"]; markdown = ["vale"];
nix = ["statix"]; nix = ["statix"];
python = ["flake8"]; python = ["flake8"];
rust = ["clippy"]; # rust = ["clippy"];
text = ["vale"]; text = ["vale"];
}; };
}; };
@ -561,18 +618,69 @@ in {
require("neodev").setup(opts) require("neodev").setup(opts)
end end
''; '';
opts = {
library = {
enabled = true;
runtime = true;
types = true;
plugins = true;
};
setup_jsonls = false;
lspconfig = true;
pathStrict = true;
};
}; };
# TODO: This entire thing is rough, maybe I should look for another way...
lspconfig = { lspconfig = {
name = "lspconfig"; name = "lspconfig";
pkg = pkgs.vimPlugins.nvim-lspconfig; pkg = pkgs.vimPlugins.nvim-lspconfig;
lazy = false; lazy = true;
cmd = ["LspInfo"];
event = ["BufReadPost" "BufNewFile"];
dependencies = [ dependencies = [
_neodev _neodev # Has to be setup before lspconfig
]; ];
config = let config = let
servers = mylib.generators.toLuaObject [ servers = mylib.generators.toLuaObject [
{name = "clangd";} {
name = "clangd";
extraOptions = {
root_dir.__raw = ''
function(fname)
return require("lspconfig.util").root_pattern(
"Makefile",
"CMakeLists.txt",
".clang-format",
".clang-tidy"
)(fname) or require("lspconfig.util").root_pattern(
"compile_commands.json"
)(fname) or require("lspconfig.util").find_git_ancestor(fname)
end
'';
cmd = [
"clangd"
"--background-index"
"--clang-tidy"
"--header-insertion=iwyu"
"--completion-style=detailed"
"--function-arg-placeholders"
"--fallback-style=llvm"
];
capabilities = {
offsetEncoding = ["utf-16"];
};
init_options = {
usePlaceholders = true;
completeUnimported = true;
clangdFileStatus = true;
};
};
}
{name = "clojure_lsp";} {name = "clojure_lsp";}
{name = "cmake";} {name = "cmake";}
{name = "lua_ls";} {name = "lua_ls";}
@ -683,7 +791,8 @@ in {
navbuddy = { navbuddy = {
name = "navbuddy"; name = "navbuddy";
pkg = pkgs.vimPlugins.nvim-navbuddy; pkg = pkgs.vimPlugins.nvim-navbuddy;
lazy = false; lazy = true;
cmd = ["Navbuddy"];
config = '' config = ''
function(_, opts) function(_, opts)
local actions = require("nvim-navbuddy.actions") -- ? local actions = require("nvim-navbuddy.actions") -- ?
@ -713,6 +822,7 @@ in {
}; };
}; };
# TODO: Notification spam on filter (when searching for ignored/non-existing file)
neo-tree = { neo-tree = {
name = "neo-tree"; name = "neo-tree";
pkg = pkgs.vimPlugins.neo-tree-nvim; pkg = pkgs.vimPlugins.neo-tree-nvim;
@ -722,7 +832,7 @@ in {
_nui _nui
]; ];
lazy = true; lazy = true;
cmd = "Neotree"; cmd = ["Neotree"];
config = '' config = ''
function(_, opts) function(_, opts)
require("neo-tree").setup(opts) require("neo-tree").setup(opts)
@ -730,13 +840,42 @@ in {
''; '';
opts = { opts = {
use_default_mappings = false; use_default_mappings = false;
filesystem.follow_current_file = { popup_border_style = "rounded";
enabled = true; enable_git_status = true;
leave_dirs_open = false; enable_diagnostics = false;
open_files_do_not_replace_types = ["terminal" "trouble" "qf"];
filesystem = {
follow_current_file = {
enabled = true;
leave_dirs_open = false;
};
}; };
buffers.follow_current_file = {
enabled = true; buffers = {
leave_dirs_open = false; follow_current_file = {
enabled = true;
leave_dirs_open = false;
};
};
window = {
mappings = {
"<CR>" = "open";
"c" = "close_node";
"R" = "refresh";
"q" = "close_window";
"i" = "show_file_details";
"r" = "rename";
"d" = "delete";
"x" = "cut_to_clipboard";
"y" = "copy_to_clipboard";
"p" = "paste_from_clipboard";
"a" = "add";
"<Esc>" = "cancel";
"/" = "fuzzy_finder";
"?" = "show_help";
};
}; };
}; };
}; };
@ -838,7 +977,7 @@ in {
rustaceanvim = { rustaceanvim = {
name = "rustaceanvim"; name = "rustaceanvim";
pkg = pkgs.vimPlugins.rustaceanvim; pkg = pkgs.vimPlugins.rustaceanvim;
lazy = false; lazy = false; # Recommended by author
# Don't call setup! # Don't call setup!
}; };
@ -848,6 +987,7 @@ in {
lazy = false; lazy = false;
}; };
# TODO: Indent doesn't follow prev line correctly, don't know if sleuth issue
sleuth = { sleuth = {
name = "sleuth"; name = "sleuth";
pkg = pkgs.vimPlugins.vim-sleuth; pkg = pkgs.vimPlugins.vim-sleuth;
@ -878,11 +1018,12 @@ in {
lazy = true; lazy = true;
}; };
# TODO: Check additional telescope backends
telescope = { telescope = {
name = "telescope"; name = "telescope";
pkg = pkgs.vimPlugins.telescope-nvim; pkg = pkgs.vimPlugins.telescope-nvim;
lazy = true; lazy = true;
cmd = "Telescope"; cmd = ["Telescope"];
dependencies = [ dependencies = [
_plenary _plenary
_telescope-fzf-native _telescope-fzf-native
@ -894,6 +1035,7 @@ in {
"undo" "undo"
"ui-select" "ui-select"
"fzf" "fzf"
# "lazygit"
]; ];
in '' in ''
function(_, opts) function(_, opts)
@ -916,10 +1058,12 @@ in {
}; };
}; };
# TODO: Also recognize @todo etc. variants
todo-comments = { todo-comments = {
name = "todo-comments"; name = "todo-comments";
pkg = pkgs.vimPlugins.todo-comments-nvim; pkg = pkgs.vimPlugins.todo-comments-nvim;
lazy = false; lazy = true;
event = ["BufReadPost" "BufNewFile"];
dependencies = [ dependencies = [
_plenary _plenary
]; ];
@ -933,7 +1077,8 @@ in {
toggleterm = { toggleterm = {
name = "toggleterm"; name = "toggleterm";
pkg = pkgs.vimPlugins.toggleterm-nvim; pkg = pkgs.vimPlugins.toggleterm-nvim;
lazy = false; lazy = true;
cmd = ["ToggleTerm"];
config = '' config = ''
function(_, opts) function(_, opts)
require("toggleterm").setup(opts) require("toggleterm").setup(opts)
@ -969,7 +1114,9 @@ in {
in { in {
name = "treesitter"; name = "treesitter";
pkg = pkgs.vimPlugins.nvim-treesitter; pkg = pkgs.vimPlugins.nvim-treesitter;
lazy = false; lazy = true;
cmd = ["TSModuleInfo"];
event = ["BufReadPost" "BufNewFile"];
config = '' config = ''
function(_, opts) function(_, opts)
-- Fix treesitter grammars/parsers on nix -- Fix treesitter grammars/parsers on nix
@ -1018,10 +1165,12 @@ in {
''; '';
}; };
# TODO: Show in left pane (either neo-tree or trouble)
trouble = { trouble = {
name = "trouble"; name = "trouble";
pkg = pkgs.vimPlugins.trouble-nvim; pkg = pkgs.vimPlugins.trouble-nvim;
lazy = false; lazy = true;
cmd = ["Trouble" "TroubleToggle"];
config = '' config = ''
function(_, opts) function(_, opts)
require("trouble").setup(opts) require("trouble").setup(opts)
@ -1147,6 +1296,12 @@ in {
# enable = true; # enable = true;
# }; # };
# TODO:
# Dashboard
# dashboard = {
# enable = true;
# };
# TODO: Figure out how diff-mode works... # TODO: Figure out how diff-mode works...
# diffview = { # diffview = {
# enable = true; # enable = true;
@ -1162,19 +1317,19 @@ in {
# enable = true; # enable = true;
# }; # };
# TODO # TODO:
# Show marks in the gutter # Show marks in the gutter
# marks = { # marks = {
# enable = true; # enable = true;
# }; # };
# TODO # TODO:
# Generate doc comments # Generate doc comments
# neogen = { # neogen = {
# enable = true; # enable = true;
# }; # };
# TODO # TODO:
# Interact with test frameworks # Interact with test frameworks
# neotest = { # neotest = {
# enable = true; # enable = true;
@ -1186,7 +1341,7 @@ in {
# enable = true; # enable = true;
# }; # };
# TODO: Setup # TODO:
# LaTeX # LaTeX
# vimtex = { # vimtex = {
# enable = true; # enable = true;

View File

@ -1,13 +1,36 @@
-- Hide inline diagnostics and show border -- Toggle inline diagnostics and show border
vim.g.enable_inline_diagnostics = false
vim.diagnostic.config({ vim.diagnostic.config({
virtual_text = false, virtual_text = vim.g.enable_inline_diagnostics,
float = { border = "rounded" }, float = { border = "rounded" },
}) })
vim.api.nvim_create_user_command("ToggleInlineDiagnostics", function()
vim.g.enable_inline_diagnostics = not vim.g.enable_inline_diagnostics
vim.diagnostic.config({ virtual_text = vim.g.enable_inline_diagnostics })
require("notify")((vim.g.enable_inline_diagnostics and "Enabled" or "Disabled") .. " inline diagnostics")
end, {
desc = "Toggle inline diagnostics",
})
-- Toggle conform format_on_save
vim.g.disable_autoformat = false
vim.api.nvim_create_user_command("ToggleAutoformat", function()
vim.g.disable_autoformat = not vim.g.disable_autoformat
require("notify")((vim.g.disable_autoformat and "Disabled" or "Enabled") .. " autoformat-on-save")
end, {
desc = "Toggle autoformat-on-save",
})
-- Allow navigating popupmenu completion with Up/Down -- Allow navigating popupmenu completion with Up/Down
vim.api.nvim_set_keymap("c", "<Down>", 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true }) vim.api.nvim_set_keymap("c", "<Down>", 'v:lua.get_wildmenu_key("<right>", "<down>")', { expr = true })
vim.api.nvim_set_keymap("c", "<Up>", 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true }) vim.api.nvim_set_keymap("c", "<Up>", 'v:lua.get_wildmenu_key("<left>", "<up>")', { expr = true })
function _G.get_wildmenu_key(key_wildmenu, key_regular) function _G.get_wildmenu_key(key_wildmenu, key_regular)
return vim.fn.wildmenumode() ~= 0 and key_wildmenu or key_regular return vim.fn.wildmenumode() ~= 0 and key_wildmenu or key_regular
end end
-- Check LSP server config
vim.api.nvim_create_user_command("LspInspect", function()
require("notify")(vim.inspect(vim.lsp.get_active_clients()))
end, {
desc = "Print LSP server configuration",
})

View File

@ -1,45 +1,147 @@
{ {...}: let
lib,
mylib,
...
}: let
no-leader = [ no-leader = [
{
mode = "n";
key = "j";
action = "v:count == 0 ? 'gj' : 'j'";
options.desc = "Move cursor down";
options.expr = true;
}
{
mode = "n";
key = "<Down>";
action = "v:count == 0 ? 'gj' : 'j'";
options.desc = "Move cursor down";
options.expr = true;
}
{
mode = "n";
key = "k";
action = "v:count == 0 ? 'gk' : 'k'";
options.desc = "Move cursor up";
options.expr = true;
}
{
mode = "n";
key = "<Up>";
action = "v:count == 0 ? 'gk' : 'k'";
options.desc = "Move cursor up";
options.expr = true;
}
{
mode = "n";
key = "<C-h>";
action = "<cmd>vertical resize -2<cr>";
options.desc = "Decrease window width";
}
{
mode = "n";
key = "<C-l>";
action = "<cmd>vertical resize +2<cr>";
options.desc = "Increase window width";
}
{
mode = "n";
key = "<C-j>";
action = "<cmd>resize -2<cr>";
options.desc = "Decrease window height";
}
{
mode = "n";
key = "<C-k>";
action = "<cmd>resize +2<cr>";
options.desc = "Increase window height";
}
{
mode = "n";
key = "<M-j>";
action = "<cmd>m .+1<cr>==";
options.desc = "Move line down";
}
{
mode = "i";
key = "<M-j>";
action = "<Esc><cmd>m .+1<cr>==gi";
options.desc = "Move line down";
}
{
mode = "v";
key = "<M-j>";
action = ":m '>+1<cr>gv=gv";
options.desc = "Move line down";
}
{
mode = "n";
key = "<M-k>";
action = "<cmd>m .-2<cr>==";
options.desc = "Move line up";
}
{
mode = "i";
key = "<M-k>";
action = "<Esc><cmd>m .-2<cr>==gi";
options.desc = "Move line up";
}
{
mode = "v";
key = "<M-k>";
action = ":m '<-2<cr>gv=gv";
options.desc = "Move line up";
}
{ {
mode = "n"; mode = "n";
key = "<C-s>"; key = "<C-s>";
action = "<cmd>w<CR>"; action = "<cmd>w<cr>";
options.desc = "Save current buffer"; options.desc = "Save current buffer";
} }
{ {
mode = "n"; mode = "n";
key = "<C-S-s>"; key = "<C-S-s>";
action = "<cmd>wa<CR>"; action = "<cmd>wa<cr>";
options.desc = "Save all buffers"; options.desc = "Save all buffers";
} }
{
mode = "v";
key = ";";
action = "<Esc>";
options.desc = "Exit visual mode";
}
{ {
mode = "v"; mode = "v";
key = "<"; key = "<";
action = "<gv"; action = "<gv";
options.desc = "Outdent"; options.desc = "Outdent";
} }
{
mode = "n";
key = "<";
action = "v<<Esc>";
options.desc = "Outdent";
}
{ {
mode = "v"; mode = "v";
key = ">"; key = ">";
action = ">gv"; action = ">gv";
options.desc = "Indent"; options.desc = "Indent";
} }
{
mode = "n";
key = "<";
action = "v<<Esc>";
options.desc = "Outdent";
}
{ {
mode = "n"; mode = "n";
key = ">"; key = ">";
action = "v><Esc>"; action = "v><Esc>";
options.desc = "Indent"; options.desc = "Indent";
} }
{
mode = "i";
key = "<Tab>";
action = "<cmd>lua require('intellitab').indent()<cr>";
options.desc = "Indent (IntelliTab)";
}
{ {
mode = "n"; mode = "n";
key = "<C-d>"; key = "<C-d>";
@ -64,12 +166,7 @@
action = "Nzzzv"; action = "Nzzzv";
options.desc = "Previous match (centered)"; options.desc = "Previous match (centered)";
} }
{
mode = "i";
key = "<Tab>";
action = "<cmd>lua require('intellitab').indent()<CR>";
options.desc = "Indent (IntelliTab)";
}
{ {
mode = "i"; mode = "i";
key = "<C-BS>"; key = "<C-BS>";
@ -82,6 +179,7 @@
action = "<C-w>"; action = "<C-w>";
options.desc = "Delete previous word"; # TODO: Breaks backspace <C-v><S-i> multiline cursor? options.desc = "Delete previous word"; # TODO: Breaks backspace <C-v><S-i> multiline cursor?
} }
{ {
mode = "i"; mode = "i";
key = "<C-S-v>"; key = "<C-S-v>";
@ -100,115 +198,133 @@
action = "\"+y"; action = "\"+y";
options.desc = "Copy to clipboard"; options.desc = "Copy to clipboard";
} }
{ {
mode = "n"; mode = "n";
key = "<C-h>"; key = "<C-h>";
action = "<cmd>nohlsearch<CR>"; action = "<cmd>nohlsearch<cr>";
options.desc = "Clear search highlights"; options.desc = "Clear search highlights";
} }
{ {
mode = "n"; mode = "n";
key = "K"; key = "K";
action = "<cmd>lua vim.lsp.buf.hover()<CR>"; action = "<cmd>lua vim.lsp.buf.hover()<cr>";
options.desc = "Show LSP hover"; options.desc = "Show LSP hover";
} }
{
mode = "n";
key = "/";
action = "<cmd>Telescope current_buffer_fuzzy_find<cr>";
options.desc = "Find in current buffer";
}
]; ];
leader = [ leader = [
{ {
mode = "n"; mode = "n";
key = "<leader>L"; key = "<leader>L";
action = "<cmd>Lazy<CR>"; action = "<cmd>Lazy<cr>";
options.desc = "Show Lazy"; options.desc = "Show Lazy";
} }
{ {
mode = "n"; mode = "n";
key = "<leader><Space>"; key = "<leader>s";
action = "<cmd>Telescope buffers<CR>"; action = "<cmd>w<cr>";
options.desc = "Show open buffers"; options.desc = "Save current buffer";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>S"; key = "<leader>S";
action = "<cmd>wa<CR>"; action = "<cmd>wa<cr>";
options.desc = "Save all buffers"; options.desc = "Save all buffers";
} }
{
mode = "n";
key = "<leader>R";
action = "<cmd>edit!<cr>";
options.desc = "Reload current buffer";
}
{
mode = "n";
key = "<leader><Space>";
action = "<cmd>Telescope buffers<cr>";
options.desc = "Show open buffers";
}
{ {
mode = "n"; mode = "n";
key = "<leader>f"; key = "<leader>f";
action = "<cmd>Telescope find_files<CR>"; action = "<cmd>Telescope find_files<cr>";
options.desc = "Find file"; options.desc = "Find file";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>o"; key = "<leader>o";
action = "<cmd>Telescope vim_options<CR>"; action = "<cmd>Telescope vim_options<cr>";
options.desc = "Show Vim options"; options.desc = "Show Vim options";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>u"; key = "<leader>u";
action = "<cmd>Telescope undo<CR>"; action = "<cmd>Telescope undo<cr>";
options.desc = "Show undo history"; options.desc = "Show undo history";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>/"; key = "<leader>/";
action = "<cmd>Telescope current_buffer_fuzzy_find<CR>"; action = "<cmd>Telescope live_grep<cr>";
options.desc = "Find in current buffer";
}
{
mode = "n";
key = "<leader>n";
action = "<cmd>Telescope notify<CR>";
options.desc = "Show notify history";
}
{
mode = "n";
key = "<leader>s";
action = "<cmd>Telescope live_grep<CR>";
options.desc = "Find in working directory"; options.desc = "Find in working directory";
} }
{
mode = "n";
key = "<leader>n";
action = "<cmd>Telescope notify<cr>";
options.desc = "Show notify history";
}
{ {
mode = "n"; mode = "n";
key = "<leader>r"; key = "<leader>r";
action = "<cmd>Telescope resume<CR>"; action = "<cmd>Telescope resume<cr>";
options.desc = "Show last telescope picker"; options.desc = "Show last telescope picker";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>?"; key = "<leader>?";
action = "<cmd>Telescope keymaps<CR>"; action = "<cmd>Telescope keymaps<cr>";
options.desc = "Show keymaps"; options.desc = "Show keymaps";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>:"; key = "<leader>:";
action = "<cmd>Telescope commands<CR>"; action = "<cmd>Telescope commands<cr>";
options.desc = "Execute command"; options.desc = "Execute command";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>M"; key = "<leader>M";
action = "<cmd>Telescope marks<CR>"; action = "<cmd>Telescope marks<cr>";
options.desc = "Show marks"; options.desc = "Show marks";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>J"; key = "<leader>J";
action = "<cmd>Telescope jumplist<CR>"; action = "<cmd>Telescope jumplist<cr>";
options.desc = "Show jumplist"; options.desc = "Show jumplist";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>m"; key = "<leader>m";
action = "<cmd>Telescope man_pages<CR>"; action = "<cmd>Telescope man_pages<cr>";
options.desc = "Show manpages"; options.desc = "Show manpages";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>h"; key = "<leader>h";
action = "<cmd>Telescope help_tags<CR>"; action = "<cmd>Telescope help_tags<cr>";
options.desc = "Show help tags"; options.desc = "Show help tags";
} }
]; ];
@ -222,13 +338,13 @@
{ {
mode = "n"; mode = "n";
key = "<leader>qq"; key = "<leader>qq";
action = "<cmd>quitall<CR>"; action = "<cmd>quitall<cr>";
options.desc = "Quit"; options.desc = "Quit";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>q!"; key = "<leader>q!";
action = "<cmd>quitall!<CR>"; action = "<cmd>quitall!<cr>";
options.desc = "Quit forcefully"; options.desc = "Quit forcefully";
} }
]; ];
@ -242,25 +358,25 @@
{ {
mode = "n"; mode = "n";
key = "<leader>bb"; key = "<leader>bb";
action = "<cmd>Telescope buffers<CR>"; action = "<cmd>Telescope buffers<cr>";
options.desc = "Show open buffers"; options.desc = "Show open buffers";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>bn"; key = "<leader>bn";
action = "<cmd>bnext<CR>"; action = "<cmd>bnext<cr>";
options.desc = "Goto next buffer"; options.desc = "Goto next buffer";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>bp"; key = "<leader>bp";
action = "<cmd>bprevious<CR>"; action = "<cmd>bprevious<cr>";
options.desc = "Goto previous buffer"; options.desc = "Goto previous buffer";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>bd"; key = "<leader>bd";
action = "<cmd>Bdelete<CR>"; action = "<cmd>Bdelete<cr>";
options.desc = "Close current buffer"; options.desc = "Close current buffer";
} }
]; ];
@ -271,6 +387,14 @@
key = "<leader>w"; key = "<leader>w";
action = "+windows"; action = "+windows";
} }
{
mode = "n";
key = "<leader>wd";
action = "<C-w>c";
options.desc = "Close current window";
}
{ {
mode = "n"; mode = "n";
key = "<leader>ws"; key = "<leader>ws";
@ -289,12 +413,7 @@
action = "<C-w>="; action = "<C-w>=";
options.desc = "Balance windows"; options.desc = "Balance windows";
} }
{
mode = "n";
key = "<leader>wd";
action = "<C-w>c";
options.desc = "Close current window";
}
{ {
mode = "n"; mode = "n";
key = "<leader>wh"; key = "<leader>wh";
@ -336,27 +455,48 @@
{ {
mode = "n"; mode = "n";
key = "<leader>tt"; key = "<leader>tt";
action = "<cmd>Neotree action=show toggle=true<CR>"; action = "<cmd>Neotree action=show toggle=true<cr><C-w>=";
options.desc = "Toggle NeoTree"; options.desc = "Toggle NeoTree";
} }
# { # {
# mode = "n"; # mode = "n";
# key = "<leader>tt"; # key = "<leader>tt";
# action = "<cmd>CHADopen --nofocus<CR>"; # action = "<cmd>CHADopen --nofocus<cr>";
# options.desc = "Toggle CHADtree"; # options.desc = "Toggle CHADtree";
# } # }
{ {
mode = "n"; mode = "n";
key = "<leader>tn"; key = "<leader>tn";
action = "<cmd>Navbuddy<CR>"; action = "<cmd>Navbuddy<cr>";
options.desc = "Toggle NavBuddy"; options.desc = "Toggle NavBuddy";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>td"; key = "<leader>td";
action = "<cmd>TroubleToggle focus=false<CR>"; action = "<cmd>TroubleToggle focus=false<cr>";
options.desc = "Toggle Trouble"; options.desc = "Toggle Trouble";
} }
{
mode = "n";
key = "<leader>tf";
action = "<cmd>ToggleAutoformat<cr>";
options.desc = "Toggle autoformat-on-save";
}
{
mode = "n";
key = "<leader>tD";
action = "<cmd>ToggleInlineDiagnostics<cr>";
options.desc = "Toggle inline diagnostics";
}
{
mode = "n";
key = "<leader>tw";
action = "<cmd>:set wrap!<cr>";
options.desc = "Toggle word-wrap";
}
]; ];
leader-git = [ leader-git = [
@ -368,37 +508,38 @@
{ {
mode = "n"; mode = "n";
key = "<leader>gg"; key = "<leader>gg";
action = "<cmd>LazyGit<CR>"; action = "<cmd>LazyGit<cr>";
options.desc = "Show LazyGit"; options.desc = "Show LazyGit";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>gm"; key = "<leader>gm";
action = "<cmd>GitMessenger<CR>"; action = "<cmd>GitMessenger<cr>";
options.desc = "Show GitMessenger"; options.desc = "Show GitMessenger";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>gs"; key = "<leader>gs";
action = "<cmd>Telescope git_status<CR>"; action = "<cmd>Telescope git_status<cr>";
options.desc = "Show Git status"; options.desc = "Show Git status";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>gc"; key = "<leader>gc";
action = "<cmd>Telescope git_commits<CR>"; action = "<cmd>Telescope git_commits<cr>";
options.desc = "Show Git log"; options.desc = "Show Git log";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>gb"; key = "<leader>gb";
action = "<cmd>Telescope git_branches<CR>"; action = "<cmd>Telescope git_branches<cr>";
options.desc = "Show Git branches"; options.desc = "Show Git branches";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>gf"; key = "<leader>gf";
action = "<cmd>Telescope git_bcommits<CR>"; action = "<cmd>Telescope git_bcommits<cr>";
options.desc = "Show Git log for current file"; options.desc = "Show Git log for current file";
} }
]; ];
@ -412,37 +553,37 @@
{ {
mode = "n"; mode = "n";
key = "<leader>lr"; key = "<leader>lr";
action = "<cmd>Telescope lsp_references<CR>"; action = "<cmd>Telescope lsp_references<cr>";
options.desc = "Goto references"; options.desc = "Goto references";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>ld"; key = "<leader>ld";
action = "<cmd>Telescope lsp_definitions<CR>"; action = "<cmd>Telescope lsp_definitions<cr>";
options.desc = "Goto definition"; options.desc = "Goto definition";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>li"; key = "<leader>li";
action = "<cmd>Telescope lsp_implementations<CR>"; action = "<cmd>Telescope lsp_implementations<cr>";
options.desc = "Goto implementation"; options.desc = "Goto implementation";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>lt"; key = "<leader>lt";
action = "<cmd>Telescope lsp_type_definitions<CR>"; action = "<cmd>Telescope lsp_type_definitions<cr>";
options.desc = "Goto type definition"; options.desc = "Goto type definition";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>lI"; key = "<leader>lI";
action = "<cmd>Telescope lsp_incoming_calls<CR>"; action = "<cmd>Telescope lsp_incoming_calls<cr>";
options.desc = "Show incoming calls"; options.desc = "Show incoming calls";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>lO"; key = "<leader>lO";
action = "<cmd>Telescope lsp_outgoing_calls<CR>"; action = "<cmd>Telescope lsp_outgoing_calls<cr>";
options.desc = "Show outgoing calls"; options.desc = "Show outgoing calls";
} }
]; ];
@ -456,32 +597,40 @@
{ {
mode = "n"; mode = "n";
key = "<leader>cf"; key = "<leader>cf";
action = "<cmd>lua require('conform').format()<CR>"; action = "<cmd>lua require('conform').format()<cr>";
options.desc = "Format current buffer"; options.desc = "Format current buffer";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>cd"; key = "<leader>cd";
action = "<cmd>Telescope diagnostics<CR>"; action = "<cmd>lua vim.diagnostic.open_float()<cr>";
options.desc = "Show diagnostics"; options.desc = "Show LSP line diagnostics";
} }
{
mode = "n";
key = "<leader>cD";
action = "<cmd>Telescope diagnostics<cr>";
options.desc = "Show diagnostics";
}
{ {
mode = "n"; mode = "n";
key = "<leader>cr"; key = "<leader>cr";
action = "<cmd>lua vim.lsp.buf.rename()<CR>"; action = "<cmd>lua vim.lsp.buf.rename()<cr>";
options.desc = "Rename LSP symbol"; options.desc = "Rename LSP symbol";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>ca"; key = "<leader>ca";
action = "<cmd>lua vim.lsp.buf.code_action()<CR>"; action = "<cmd>lua vim.lsp.buf.code_action()<cr>";
options.desc = "Show LSP code actions"; options.desc = "Show LSP code actions";
} }
{ {
mode = "n"; mode = "n";
key = "<leader>cD"; key = "<leader>ch";
action = "<cmd>lua vim.diagnostic.open_float()<CR>"; action = "<cmd>ClangdSwitchSourceHeader<cr>";
options.desc = "Show LSP line diagnostics"; options.desc = "Switch C/C++ source/header";
} }
]; ];
in in

View File

@ -2,5 +2,6 @@ fork = true # Start neovide detached
frame = "none" # full, buttonless, none frame = "none" # full, buttonless, none
idle = true # Don't render frames without changes idle = true # Don't render frames without changes
title-hidden = true title-hidden = true
tabs = false
# maximized = true # maximized = true
# vsync = true # vsync = true

View File

@ -6,20 +6,22 @@
showmode = false; # Status line already shows this showmode = false; # Status line already shows this
backspace = ["indent" "eol" "start"]; backspace = ["indent" "eol" "start"];
termguicolors = true; # Required by multiple plugins termguicolors = true; # Required by multiple plugins
hidden = true; # Don't unload buffers immediately hidden = true; # Don't unload buffers immediately (required for terminal persistence)
mouse = "a"; mouse = "a";
completeopt = ["menuone" "noselect" "noinsert"]; completeopt = ["menuone" "noselect" "noinsert"];
timeoutlen = 50; timeoutlen = 50; # Controls which-key delay
pumheight = 0; pumheight = 0;
formatexpr = "v:lua.require('conform').formatexpr()"; formatexpr = "v:lua.require('conform').formatexpr()";
laststatus = 3; laststatus = 3; # Global statusline
# winblend = 30; winblend = 30; # Floating popup transparency
sessionoptions = ["buffers" "curdir" "tabpages" "winsize" "help" "globals" "skiprtp" "folds"];
showtabline = 0; # Disable tabline
# Cursor # Cursor
ruler = true; # Show cursor position in status line ruler = true; # Show cursor position in status line
number = true; number = true;
relativenumber = true; relativenumber = true;
signcolumn = "yes"; signcolumn = "yes"; # Always show to reduce window jumping
cursorline = true; cursorline = true;
scrolloff = 10; scrolloff = 10;
@ -38,7 +40,9 @@
# backup = false; # backup = false;
undofile = true; undofile = true;
undodir = "/home/christoph/.vim/undo"; undodir = "/home/christoph/.vim/undo";
undolevels = 10000;
# autochdir = true; # autochdir = true;
confirm = true;
# Search # Search
incsearch = true; # Already highlight results while typing incsearch = true; # Already highlight results while typing