diff --git a/Makefile b/Makefile index 9c6b70d..d91ad76 100644 --- a/Makefile +++ b/Makefile @@ -48,4 +48,4 @@ install-lupan-clock: stow -d ~/.local/stow lupan-clock install-other: - stow -Rv lazygit shell tmux vis xsession + stow -Rv lazygit shell tmux nvim vis xsession diff --git a/lazygit/.config/lazygit/config.yml b/lazygit/.config/lazygit/config.yml index e63c2c1..03fa864 100644 --- a/lazygit/.config/lazygit/config.yml +++ b/lazygit/.config/lazygit/config.yml @@ -1,9 +1,9 @@ os: - edit: 'vis {{filename}}' - editAtLine: 'vis +:{{line}} {{filename}}' - editAtLineAndWait: 'vis +:{{line}} {{filename}}' + edit: 'nvim {{filename}}' + editAtLine: 'nvim +{{line}} {{filename}}' + editAtLineAndWait: 'nvim +{{line}} {{filename}}' editInTerminal: true - openDirInEditor: 'vis {{dir}}' + openDirInEditor: 'nvim {{dir}}' gui: nerdFontsVersion: "3" diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua index 2cc8f3e..40defdb 100644 --- a/nvim/.config/nvim/init.lua +++ b/nvim/.config/nvim/init.lua @@ -1 +1,4 @@ -require("lupan") +require("config.options") +require("config.remap") +require("config.lazy") +require("config.lsp") diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index 4e73346..65a44bf 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -1,75 +1,11 @@ { - "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, - "LuaSnip": { "branch": "master", "commit": "faf3c94a44508cec1b961406d36cc65113ff3b98" }, "arrow.nvim": { "branch": "master", "commit": "6e0f726f55f99332dd726a53effd6813786b6d49" }, - "blame.nvim": { "branch": "main", "commit": "b87b8c820e4cec06fbbd2f946b7b35c45906ee0c" }, - "ccc.nvim": { "branch": "main", "commit": "9d1a256e006decc574789dfc7d628ca11644d4c2" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" }, - "cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" }, - "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "conform.nvim": { "branch": "master", "commit": "f643d1b51d1d3d14c8641a46ce44f6bce73c2697" }, - "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, - "fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" }, - "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, - "gitsigns.nvim": { "branch": "main", "commit": "d0f90ef51d4be86b824b012ec52ed715b5622e51" }, - "global-note.nvim": { "branch": "main", "commit": "1e0d4bba425d971ed3ce40d182c574a25507115c" }, - "go.nvim": { "branch": "master", "commit": "a3455f48cff718a86275115523dcc735535a13aa" }, - "godoc.nvim": { "branch": "main", "commit": "356f79853dbb3b3e200064367603751895153c29" }, - "guihua.lua": { "branch": "master", "commit": "87bea7b98429405caf2a0ce4d029b027bb017c70" }, - "hererocks": { "branch": "master", "commit": "344c46ed54df9a4dbc2d2bf510dcd9a9d90497bf" }, - "hlsearch.nvim": { "branch": "main", "commit": "fdeb60b890d15d9194e8600042e5232ef8c29b0e" }, - "incline.nvim": { "branch": "main", "commit": "27040695b3bbfcd3257669037bd008d1a892831d" }, - "iswap.nvim": { "branch": "master", "commit": "e02cc91f2a8feb5c5a595767d208c54b6e3258ec" }, - "kanagawa-paper.nvim": { "branch": "master", "commit": "b0df20cca3b7087c06f241983b488190cc8e23af" }, - "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "lazyjj.nvim": { "branch": "main", "commit": "bba66a1351ff1f1bd078c8a1b00b8d12b3ed0017" }, - "leap.nvim": { "branch": "main", "commit": "08ca7ec9e859856251d56c22ea107f82f563ff3c" }, - "lsp_signature.nvim": { "branch": "master", "commit": "d50e40b3bf9324128e71b0b7e589765ce89466d2" }, - "lspsaga.nvim": { "branch": "main", "commit": "920b1253e1a26732e53fac78412f6da7f674671d" }, - "marks.nvim": { "branch": "master", "commit": "f353e8c08c50f39e99a9ed474172df7eddd89b72" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "c2682b0d9732bf52cbc34862056f143e71dc4a6d" }, - "mason-tool-installer.nvim": { "branch": "main", "commit": "93a9ff9b34c91c0cb0f7de8d5f7e4abce51d8903" }, - "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" }, - "namu.nvim": { "branch": "main", "commit": "a3a3d81d12b61a38f131253bcd3ce5e2c6599850" }, - "neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" }, - "neogit": { "branch": "master", "commit": "7fe60f9aa6eacf2eb730c4e9b83d06a36d028161" }, - "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, - "nvim-lspconfig": { "branch": "master", "commit": "3ea99227e316c5028f57a4d86a1a7fd01dd876d0" }, - "nvim-surround": { "branch": "main", "commit": "8dd9150ca7eae5683660ea20cec86edcd5ca4046" }, + "conform.nvim": { "branch": "master", "commit": "1bf8b5b9caee51507aa51eaed3da5b0f2595c6b9" }, + "flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" }, + "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, + "multicursor.nvim": { "branch": "1.0", "commit": "a6cf4e7daaf10a6b14bb7838caf779f0de5070cd" }, + "nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "0f051e9813a36481f48ca1f833897210dbcfffde" }, - "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, - "oil.nvim": { "branch": "master", "commit": "5b6068aad7d2057dd399fac73b7fb2cdf23ccd6e" }, - "orgmode": { "branch": "master", "commit": "32ef9e95f43a6e951fb931b438372546a4f0c524" }, - "persisted.nvim": { "branch": "main", "commit": "d35a3ed973e17defd8800acd46a0c893498a2671" }, - "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, - "quicker.nvim": { "branch": "master", "commit": "51d3926f183c2d98fbc237cc237ae0926839af3a" }, - "rest.nvim": { "branch": "main", "commit": "2ded89dbda1fd3c1430685ffadf2df8beb28336d" }, - "slimline.nvim": { "branch": "main", "commit": "10dd807685997d1b72b950dfb4ec1a01cb259101" }, - "snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" }, - "snipe.nvim": { "branch": "main", "commit": "2a1b738dfae8502e6162eddfc774da65ed404142" }, - "sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" }, - "tardis.nvim": { "branch": "main", "commit": "a6ee00a217529490e79d349b1f1a9cf5831180d3" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, - "telescope-git-grep.nvim": { "branch": "main", "commit": "d2e1322934e334ee9eb8e838c30f3afb3e7a730e" }, - "telescope-tabs": { "branch": "master", "commit": "9ca0800d4e9c2610d5cac4d121cde0d9fbd89a64" }, - "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, - "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "tmux.nvim": { "branch": "main", "commit": "2c1c3be0ef287073cef963f2aefa31a15c8b9cd8" }, - "toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, - "tree-sitter-nu": { "branch": "main", "commit": "100d06e29d13a8ebfc3f29173c07a5c4f2050586" }, - "tree-sitter-templ": { "branch": "master", "commit": "de35706f89beed5087670a9c4421b7794ef02411" }, - "treesj": { "branch": "main", "commit": "3b4a2bc42738a63de17e7485d4cc5e49970ddbcc" }, - "treewalker.nvim": { "branch": "main", "commit": "86ae3cf9896b43f3cfa35b962428f32fed8b5ee8" }, - "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, - "undotree": { "branch": "master", "commit": "b951b87b46c34356d44aa71886aecf9dd7f5788a" }, - "vim-ReplaceWithRegister": { "branch": "master", "commit": "a487af6efd1be3fc6fac8da47d00efc9d1f6f724" }, - "vim-dadbod": { "branch": "master", "commit": "e95afed23712f969f83b4857a24cf9d59114c2e6" }, - "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, - "vim-dadbod-ui": { "branch": "master", "commit": "2900a1617b3df1a48683d872eadbe1101146a49a" }, - "vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" }, - "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, - "whaler": { "branch": "main", "commit": "b3a4257f6225a9a6c42f33b56ca316325e395f22" }, - "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }, - "yankbank-nvim": { "branch": "main", "commit": "ded8f01bd6a7887310e14d463c8aa55eb79ec281" } + "oil.nvim": { "branch": "master", "commit": "7e1cd7703ff2924d7038476dcbc04b950203b902" }, + "snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" } } diff --git a/nvim/.config/nvim/lsp/clangd.lua b/nvim/.config/nvim/lsp/clangd.lua new file mode 100644 index 0000000..9da5296 --- /dev/null +++ b/nvim/.config/nvim/lsp/clangd.lua @@ -0,0 +1,5 @@ +return { + cmd = { "clangd" }, + filetypes = { "c", "cpp" }, + root_markers = { ".git" }, +} diff --git a/nvim/.config/nvim/lsp/gopls.lua b/nvim/.config/nvim/lsp/gopls.lua new file mode 100644 index 0000000..a5b6ee8 --- /dev/null +++ b/nvim/.config/nvim/lsp/gopls.lua @@ -0,0 +1,5 @@ +return { + cmd = { "gopls" }, + filetypes = { "go", "gomod", "gowork", "gosum", "gotmpl" }, + root_markers = { "go.mod", "go.work", ".git" }, +} diff --git a/nvim/.config/nvim/lsp/lua_ls.lua b/nvim/.config/nvim/lsp/lua_ls.lua new file mode 100644 index 0000000..54b5b82 --- /dev/null +++ b/nvim/.config/nvim/lsp/lua_ls.lua @@ -0,0 +1,5 @@ +return { + cmd = 'lua-language-server', + filetypes = { 'lua' }, + rootmarkers = { '.git' }, +} diff --git a/nvim/.config/nvim/lsp/ols.lua b/nvim/.config/nvim/lsp/ols.lua new file mode 100644 index 0000000..ce51795 --- /dev/null +++ b/nvim/.config/nvim/lsp/ols.lua @@ -0,0 +1,5 @@ +return { + cmd = { "ols" }, + filetypes = { "odin" }, + root_markers = { ".git" }, +} diff --git a/nvim/.config/nvim/lsp/typescript-language-server.lua b/nvim/.config/nvim/lsp/typescript-language-server.lua new file mode 100644 index 0000000..bef43e6 --- /dev/null +++ b/nvim/.config/nvim/lsp/typescript-language-server.lua @@ -0,0 +1,5 @@ +return { + cmd = { "typescript-language-server", "--stdio" }, + filetypes = { "javascript", "typescript", "javascriptreact", "typescriptreact" }, + root_markers = { "package.json", "tsconfig.json", ".git" }, +} diff --git a/nvim/.config/nvim/lua/config/lazy.lua b/nvim/.config/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..84e6e74 --- /dev/null +++ b/nvim/.config/nvim/lua/config/lazy.lua @@ -0,0 +1,17 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ { import = "plugins" } }) diff --git a/nvim/.config/nvim/lua/config/lsp.lua b/nvim/.config/nvim/lua/config/lsp.lua new file mode 100644 index 0000000..9f05ced --- /dev/null +++ b/nvim/.config/nvim/lua/config/lsp.lua @@ -0,0 +1,26 @@ +vim.lsp.enable({ + "clangd", + "gopls", + "lua_ls", + "ols", + "typescript-language-server", +}) + +vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("lsp-keys-complete", { clear = true }), + callback = function(event) + vim.lsp.completion.enable(true, event.data.client_id, event.data.bufnr, { + convert = function(item) + return { abbr = item.label:gsub("%b()", "") } + end, + }) + vim.keymap.set("n", "A", vim.lsp.buf.code_action) + vim.keymap.set("i", "", vim.lsp.completion.get) + vim.keymap.set("n", "k", function() + vim.diagnostic.jump({ float = true, count = -1 }) + end) + vim.keymap.set("n", "j", function() + vim.diagnostic.jump({ float = true, count = 1 }) + end) + end, +}) diff --git a/nvim/.config/nvim/lua/config/options.lua b/nvim/.config/nvim/lua/config/options.lua new file mode 100644 index 0000000..57ee25e --- /dev/null +++ b/nvim/.config/nvim/lua/config/options.lua @@ -0,0 +1,9 @@ +vim.opt.shortmess = vim.opt.shortmess + "I" + +vim.g.mapleader = " " +vim.g.maplocalleader = " \\" + +vim.opt.number = true +vim.opt.relativenumber = true + +vim.opt.timeout = false diff --git a/nvim/.config/nvim/lua/config/remap.lua b/nvim/.config/nvim/lua/config/remap.lua new file mode 100644 index 0000000..ea2d088 --- /dev/null +++ b/nvim/.config/nvim/lua/config/remap.lua @@ -0,0 +1,4 @@ +vim.keymap.set("n", "", "h") +vim.keymap.set("n", "", "k") +vim.keymap.set("n", "", "j") +vim.keymap.set("n", "", "l") diff --git a/nvim/.config/nvim/lua/lupan/autocmd.lua b/nvim/.config/nvim/lua/lupan/autocmd.lua deleted file mode 100644 index 66243e0..0000000 --- a/nvim/.config/nvim/lua/lupan/autocmd.lua +++ /dev/null @@ -1,18 +0,0 @@ --- [[ Highlight on yank ]] --- See `:help vim.highlight.on_yank()` -vim.api.nvim_create_autocmd('TextYankPost', { - desc = 'Highlight when yanking (copying) text', - group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }), - callback = function() - vim.highlight.on_yank() - end, -}) - -vim.api.nvim_create_autocmd('BufWritePre', { - desc = 'Format on saving buffer', - callback = function() - vim.lsp.buf.format() - end, - group = vim.api.nvim_create_augroup('BufWriteFormat', { clear = true }), - pattern = { '*.go', '*.lua', '*.rs' }, -}) diff --git a/nvim/.config/nvim/lua/lupan/init.lua b/nvim/.config/nvim/lua/lupan/init.lua deleted file mode 100644 index 5dacb1a..0000000 --- a/nvim/.config/nvim/lua/lupan/init.lua +++ /dev/null @@ -1,5 +0,0 @@ -require("lupan.remap") -require("lupan.lazy") -require("lupan.options") -require("lupan.autocmd") -require('lazy').setup('plugins') diff --git a/nvim/.config/nvim/lua/lupan/lazy.lua b/nvim/.config/nvim/lua/lupan/lazy.lua deleted file mode 100644 index 84ba0e6..0000000 --- a/nvim/.config/nvim/lua/lupan/lazy.lua +++ /dev/null @@ -1,13 +0,0 @@ --- Install package manager (`:help lazy.nvim.txt`) -local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' -if not vim.loop.fs_stat(lazypath) then - vim.fn.system { - 'git', - 'clone', - '--filter=blob:none', - 'https://github.com/folke/lazy.nvim.git', - '--branch=stable', - lazypath, - } -end -vim.opt.rtp:prepend(lazypath) diff --git a/nvim/.config/nvim/lua/lupan/options.lua b/nvim/.config/nvim/lua/lupan/options.lua deleted file mode 100644 index 303b07d..0000000 --- a/nvim/.config/nvim/lua/lupan/options.lua +++ /dev/null @@ -1,56 +0,0 @@ --- See `:help vim.o` - --- Disable intro message -vim.opt.shortmess = vim.opt.shortmess + 'I' - -vim.opt.showmode = false - --- Set highlight on search -vim.o.hlsearch = true -- false -vim.keymap.set('n', '', 'nohlsearch') - --- Make line numbers default -vim.wo.number = true -vim.wo.relativenumber = true - --- Enable mouse mode -vim.o.mouse = 'a' - --- Enable break indent -vim.o.breakindent = true - --- Save undo history -vim.o.undofile = true - --- Case-insensitive searching UNLESS \C or capital in search -vim.o.ignorecase = true -vim.o.smartcase = true - --- Keep signcolumn on by default -vim.wo.signcolumn = 'yes' - --- Decrease update time -vim.o.updatetime = 250 -vim.o.timeout = false - --- Set completeopt to have a better completion experience -vim.o.completeopt = 'menuone,noselect' - --- NOTE: You should make sure your terminal supports this -vim.o.termguicolors = true - -vim.o.scrolloff = 8 - -vim.o.tabstop = 8 -vim.o.softtabstop = 4 -vim.o.shiftwidth = 4 -vim.o.expandtab = true -vim.o.expandtab = true - -vim.g.lightspeed_no_default_keymaps = true - -vim.o.cursorline = true - -vim.opt.foldcolumn = '1' - -vim.opt.laststatus = 3 diff --git a/nvim/.config/nvim/lua/lupan/remap.lua b/nvim/.config/nvim/lua/lupan/remap.lua deleted file mode 100644 index d582887..0000000 --- a/nvim/.config/nvim/lua/lupan/remap.lua +++ /dev/null @@ -1,117 +0,0 @@ -vim.g.mapleader = ' ' -vim.g.maplocalleader = ' \\' - -local key = vim.keymap.set -local opts = { silent = true, noremap = true } - -key('v', '', '', { silent = true }) - --- Remap for dealing with word wrap -key('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) -key('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) - -key("n", "ut", "UndotreeToggle", { desc = "[U]undotree [t]oggle" }) - --- tabs - -key('n', 'td', function() - require('lupan.ui').tab_change_dir() -end, { desc = '[T]ab change [d]irectory' }) - -key('n', 'tD', function() - require('lupan.ui').tab_change_dir_newtab() -end, { desc = '[T]ab change [D]irectory (new tab)' }) - -key('n', 'tm', function() - require('telescope-tabs').list_tabs(require 'telescope.themes'.get_dropdown()) -end, { desc = '[T]ab change [D]irectory (new tab)' }) - -key('n', 'tt', function() - require('telescope-tabs').go_to_previous() -end, { desc = '[T]ab [t]oggle previous' }) - -for i = 1, 9, 1 do - key('n', 't' .. i, '' .. i .. 'tabnext', { desc = '[T]ab nr [' .. i .. ']' }) -end - --- translations - -key('n', 'tr', function() - require('lupan.ui').find_translation_key() -end, { desc = '[T][r]anlation key find' }) - --- Diagnostic keymaps -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous [D]iagnostic message' }) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic message' }) -vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' }) -vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) - -key('n', 'N', 'bn', { desc = '[N]ext buffer' }) -key('n', 'P', 'bp', { desc = '[P]revious buffer' }) - -key('n', 'tc', 'tabnew', { desc = '[T]ab [c]reate' }) -key('n', 'tx', 'tabclose', { desc = '[T]ab close' }) -key('n', 'tS', 'tab split', { desc = '[T]ab [s]plit' }) -key('n', 'tn', 'tabnext', { desc = '[T]ab [n]ext' }) -key('n', 'tp', 'tabprevious', { desc = '[T]ab [p]revious' }) -key('n', 'tf', 'tabfirst', { desc = '[T]ab [f]irst' }) -key('n', 'tl', 'tablast', { desc = '[T]tab [l]ast' }) - -key('v', 'J', ":m '>+1gv=gv", { desc = "Move lines down" }) -key('v', 'K', ":m '<-2gv=gv", { desc = "Move lines up" }) - --- Change window -key('n', '', 'j', opts) -key('n', '', 'k', opts) -key('n', '', 'h', opts) -key('n', '', 'l', opts) - --- Stay in key mode -key('v', '<', '', '>gv', opts) - --- Keep old value of register -key('v', 'P', '"_dP', opts) - --- LightSpeed -key('n', 'g/', 'Lightspeed_s', { desc = "Lightspeed forward search" }) -key('n', 'g?', 'Lightspeed_S', { desc = "Lightspeed backward search" }) - --- Clipboard and quickfix -key({ 'n', 'v' }, 'y', '"+y', { desc = "Yank to clipboard" }) -key('n', 'j', 'cn', { desc = "Quickfix next" }) -key('n', 'k', 'cp', { desc = "Quickfix previous" }) -key('n', 'co', 'copen', { desc = "Quickfix [O]pen" }) -key('n', 'cc', 'cclose', { desc = "Quickfix [C]lose" }) - -key('n', 's;', 'SessionSelect', { desc = '[S]ession Select' }) - --- luasnip - -vim.keymap.set({ 'i', 's' }, "", function() - local ls = require "luasnip" - if ls.expand_or_jumpable() then - ls.expand_or_jump() - end -end, { silent = true }) - -vim.keymap.set({ 'i', 's' }, "", function() - local ls = require "luasnip" - if ls.jumpable(-1) then - ls.jump(-1) - end -end, { silent = true }) - -vim.keymap.set({ 'i', 's' }, "", function() - local ls = require "luasnip" - if ls.choice_active() then - ls.change_choice(1) - end -end, { silent = true }) - -vim.keymap.set("n", "ss", "source ~/.config/nvim/after/plugin/luasnip.lua", - { desc = "[S]nippets [s]ource" }) - --- colors - -key('n', '', function() require('lupan.utils').toggle_color_scheme() end, { desc = 'Toggle background' }) diff --git a/nvim/.config/nvim/lua/lupan/ui.lua b/nvim/.config/nvim/lua/lupan/ui.lua deleted file mode 100644 index 0b1bd74..0000000 --- a/nvim/.config/nvim/lua/lupan/ui.lua +++ /dev/null @@ -1,69 +0,0 @@ -local actions = require "telescope.actions" -local action_state = require "telescope.actions.state" -local finders = require "telescope.finders" -local pickers = require "telescope.pickers" -local sorters = require "telescope.sorters" -local themes = require "telescope.themes" - -local M = {} - -local function enter(prompt_bufnr, action) - local selected = action_state.get_selected_entry() - actions.close(prompt_bufnr) - action(selected[1]) -end - -function M.tab_change_dir(opts) - opts = opts or {} - local action = opts.action or vim.cmd.tc - local prompt_title = opts.prompt_title or "Tab change directory" - local cmd = { 'find', os.getenv('HOME'), '-maxdepth', '5', '-type', 'd', '-not', '-path', '*/.git*' } - local dropdown = themes.get_dropdown(); - local picker_opts = { - prompt_title = prompt_title, - finder = finders.new_oneshot_job(cmd, {}), - sorter = sorters.get_fuzzy_file({}), - attach_mappings = function(_, map) - map({ "i", "n" }, "", function(prompt_bufnr) enter(prompt_bufnr, action) end) - return true - end - } - local change_dir = pickers.new(dropdown, picker_opts) - change_dir:find() -end - -local function tabnew_tcd(dir) - vim.cmd.tabnew(dir) - vim.cmd.tc(dir) -end - -function M.tab_change_dir_newtab() - M.tab_change_dir({ action = tabnew_tcd, prompt_title = "Tab change directory (new tab)" }) -end - -local function append_text(text) - text = string.gsub(text, "^ + %w+%.([%w%p]+) +.*", "%1") - local row, col = unpack(vim.api.nvim_win_get_cursor(0)) - vim.api.nvim_buf_set_text(0, row - 1, col, row - 1, col, { text }) -end - -function M.find_translation_key(opts) - opts = opts or {} - local action = opts.action or append_text - local prompt_title = opts.prompt_title or "Get translation key" - local cmd = { 'list-translation-keys' } - local dropdown = themes.get_dropdown(); - local picker_opts = { - prompt_title = prompt_title, - finder = finders.new_oneshot_job(cmd, {}), - sorter = sorters.get_fuzzy_file({}), - attach_mappings = function(_, map) - map({ "i", "n" }, "", function(prompt_bufnr) enter(prompt_bufnr, action) end) - return true - end - } - local find_translation_key = pickers.new(dropdown, picker_opts) - find_translation_key:find() -end - -return M diff --git a/nvim/.config/nvim/lua/lupan/utils.lua b/nvim/.config/nvim/lua/lupan/utils.lua deleted file mode 100644 index 9a46f2c..0000000 --- a/nvim/.config/nvim/lua/lupan/utils.lua +++ /dev/null @@ -1,53 +0,0 @@ -local M = {} - -local filename = os.getenv('HOME') .. '/.config/alacritty/alacritty.toml' - -local colorschemes = nil - -function M.set_color_schemes(dark, light) - colorschemes = { dark = dark, light = light } -end - -function M.terminalbg() - local ok, lines = pcall(io.lines, filename) - if ok then - for line in lines do - if string.find(line, 'light.toml') then - return "light" - end - end - end - return "dark" -end - -function M.update_color_scheme() - vim.o.background = M.terminalbg() - if colorschemes then - vim.cmd.colorscheme(colorschemes[vim.o.background]) - end -end - -function M.toggle_color_scheme() - if vim.o.background == "dark" then - vim.o.background = "light" - else - vim.o.background = "dark" - end - if colorschemes then - vim.cmd.colorscheme(colorschemes[vim.o.background]) - end -end - -local w = vim.uv.new_fs_event() - -local function watch(fname) - w:start(filename, {}, vim.schedule_wrap(function(...) - M.update_color_scheme() - w:stop() - watch(fname) - end)) -end - -watch(filename) - -return M diff --git a/nvim/.config/nvim/lua/plugins/appearance.lua b/nvim/.config/nvim/lua/plugins/appearance.lua deleted file mode 100644 index 887f9ad..0000000 --- a/nvim/.config/nvim/lua/plugins/appearance.lua +++ /dev/null @@ -1,20 +0,0 @@ -return { - { - 'thesimonho/kanagawa-paper.nvim', - config = function() - vim.cmd.colorscheme('kanagawa-paper') - end - }, - { - --- Create Color Code - 'uga-rosa/ccc.nvim', - config = function(_, opts) - require('ccc').setup(opts) - end, - cmd = { 'CccPick', 'CccHighlighterToggle' }, - keys = { - { "ct", "CccHighlighterToggle", desc = "[C]olorizer [T]oggle" }, - { "cp", "CccPick", desc = "[C]olor [P]ick" }, - }, - }, -} diff --git a/nvim/.config/nvim/lua/plugins/arrow.lua b/nvim/.config/nvim/lua/plugins/arrow.lua new file mode 100644 index 0000000..f2fc69f --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/arrow.lua @@ -0,0 +1,8 @@ +return { + "otavioschwanck/arrow.nvim", + opts = { + show_icons = false, + leader_key = "_", + buffer_leader_key = " m", + }, +} diff --git a/nvim/.config/nvim/lua/plugins/autocompletion.lua b/nvim/.config/nvim/lua/plugins/autocompletion.lua deleted file mode 100644 index 05153b1..0000000 --- a/nvim/.config/nvim/lua/plugins/autocompletion.lua +++ /dev/null @@ -1,81 +0,0 @@ -return { - 'hrsh7th/nvim-cmp', - event = 'InsertEnter', - dependencies = { - -- Snippet Engine & its associated nvim-cmp source - { - 'L3MON4D3/LuaSnip', - build = (function() - if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then - return - end - return 'make install_jsregexp' - end)(), - }, - 'saadparwaiz1/cmp_luasnip', - - -- Adds LSP completion capabilities - 'hrsh7th/cmp-nvim-lsp', - 'hrsh7th/cmp-path', - - -- Adds a number of user-friendly snippets - 'rafamadriz/friendly-snippets', - }, - config = function() - -- See `:help cmp` - local cmp = require 'cmp' - local luasnip = require 'luasnip' - require('luasnip.loaders.from_vscode').lazy_load() - require('luasnip.loaders.from_lua').lazy_load({ paths = '~/.config/nvim/snippets' }) - luasnip.config.setup {} - luasnip.filetype_extend('templ', { "html" }) - - cmp.setup { - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - -- completion = { autocomplete = false }, - completion = { completeopt = 'menu,menuone,noinsert' }, - - -- See `:help ins-completion` - mapping = cmp.mapping.preset.insert { - -- [''] = cmp.mapping.confirm({ select = true }), - [''] = cmp.mapping.select_next_item(), - [''] = cmp.mapping.select_prev_item(), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.confirm { select = true }, - [''] = cmp.mapping.complete {}, - - -- will move you to the right of each of the expansion locations. - -- is similar, except moving you backwards. - [''] = cmp.mapping(function() - if luasnip.expand_or_locally_jumpable() then - luasnip.expand_or_jump() - end - end, { 'i', 's' }), - [''] = cmp.mapping(function() - if luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - end - end, { 'i', 's' }), - }, - sources = { - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - { name = 'path' }, - }, - } - cmp.setup.filetype('sql', { - sources = { - { name = 'vim-dadbod-completion' }, - { name = 'buffer' }, - }, - }) - cmp.setup.filetype('lisp', { - sources = cmp.config.sources({ { name = 'nvlime' } }) - }) - end, -} diff --git a/nvim/.config/nvim/lua/plugins/bookmarks.lua b/nvim/.config/nvim/lua/plugins/bookmarks.lua deleted file mode 100644 index e498169..0000000 --- a/nvim/.config/nvim/lua/plugins/bookmarks.lua +++ /dev/null @@ -1,67 +0,0 @@ -return { - { - "otavioschwanck/arrow.nvim", - dependencies = { - { "nvim-tree/nvim-web-devicons" }, - }, - opts = { - show_icons = true, - leader_key = '-', -- Recommended to be a single key - buffer_leader_key = '+', -- Per Buffer Mappings - }, - keys = { - { "1", function() require("arrow.persist").go_to(1) end, desc = "Arrow go to 1" }, - { "2", function() require("arrow.persist").go_to(2) end, desc = "Arrow go to 2" }, - { "3", function() require("arrow.persist").go_to(3) end, desc = "Arrow go to 3" }, - { "4", function() require("arrow.persist").go_to(4) end, desc = "Arrow go to 4" }, - { "5", function() require("arrow.persist").go_to(5) end, desc = "Arrow go to 5" }, - { "6", function() require("arrow.persist").go_to(6) end, desc = "Arrow go to 6" }, - { "7", function() require("arrow.persist").go_to(7) end, desc = "Arrow go to 7" }, - { "8", function() require("arrow.persist").go_to(8) end, desc = "Arrow go to 8" }, - { "9", function() require("arrow.persist").go_to(9) end, desc = "Arrow go to 9" }, - }, - }, - - { - "leath-dub/snipe.nvim", - keys = { - { "_", function() require("snipe").open_buffer_menu() end, desc = "Open Snipe buffer menu" } - }, - opts = {} - }, - - { - "chentoast/marks.nvim", - event = "VeryLazy", - config = true, - keys = { - { 'ma', 'MarksListAll' }, - { 'mb', 'MarksListBuf' }, - { 'mg', 'MarksListGlobal' }, - }, - }, - - { - "bassamsdata/namu.nvim", - config = function() - require("namu").setup({ - -- Enable the modules you want - namu_symbols = { - enable = true, - options = {}, -- here you can configure namu - }, - -- Optional: Enable other modules if needed - ui_select = { enable = false }, -- vim.ui.select() wrapper - }) - -- === Suggested Keymaps: === - vim.keymap.set("n", ";", ":Namu symbols", { - desc = "Jump to LSP symbol", - silent = true, - }) - vim.keymap.set("n", ".", ":Namu workspace", { - desc = "LSP Symbols - Workspace", - silent = true, - }) - end, - } -} diff --git a/nvim/.config/nvim/lua/plugins/colorscheme.lua b/nvim/.config/nvim/lua/plugins/colorscheme.lua new file mode 100644 index 0000000..11fe2c1 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/colorscheme.lua @@ -0,0 +1,17 @@ +return { + { + "EdenEast/nightfox.nvim", + opts = { + specs = { + all = { + syntax = { + operator = "#bf8040", + }, + }, + }, + }, + init = function() + vim.cmd.colorscheme("nightfox") + end, + }, +} diff --git a/nvim/.config/nvim/lua/plugins/conform.lua b/nvim/.config/nvim/lua/plugins/conform.lua new file mode 100644 index 0000000..d2bfee5 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/conform.lua @@ -0,0 +1,12 @@ +return { + "stevearc/conform.nvim", + opts = { + formatters_by_ft = { + lua = { "stylua" }, + }, + format_on_save = { + timeout_ms = 500, + lsp_format = "fallback", + }, + }, +} diff --git a/nvim/.config/nvim/lua/plugins/convenience.lua b/nvim/.config/nvim/lua/plugins/convenience.lua deleted file mode 100644 index cd475b6..0000000 --- a/nvim/.config/nvim/lua/plugins/convenience.lua +++ /dev/null @@ -1,23 +0,0 @@ -return { - { - 'folke/which-key.nvim', - event = 'VimEnter', - opts = { - preset = 'helix', - delay = 1000, - }, - config = function(_, opts) - require('which-key').setup(opts) - - -- Document existing key chains - require('which-key').add { - { "c", group = "[C]ode/Color" }, - { "d", group = "[D]ocument" }, - { "g", group = "[G]it" }, - { "r", group = "[R]ename" }, - { "s", group = "[S]earch" }, - { "w", group = "[W]orkspace" }, - } - end, - }, -} diff --git a/nvim/.config/nvim/lua/plugins/editing.lua b/nvim/.config/nvim/lua/plugins/editing.lua deleted file mode 100644 index 057ad5c..0000000 --- a/nvim/.config/nvim/lua/plugins/editing.lua +++ /dev/null @@ -1,87 +0,0 @@ -return { - -- "gc" to comment visual regions/lines - { - 'numToStr/Comment.nvim', - opts = {} - }, - - -- Undo browsing - 'mbbill/undotree', - - -- Tabstops autodetected - 'tpope/vim-sleuth', - - { - "kylechui/nvim-surround", - version = "^3.0.0", -- Use for stability; omit to use `main` branch for the latest features - event = "VeryLazy", - config = true, - }, - - { - 'inkarkat/vim-ReplaceWithRegister', - keys = { - { 'rp', 'ReplaceWithRegisterOperator' }, - { 'rpp', 'ReplaceWithRegisterLine' }, - { 'rp', 'ReplaceWithRegisterVisual', mode = 'x' }, - }, - }, - - { - 'ggandor/leap.nvim', - opts = { - safe_labels = {}, - }, - dependencies = { - "tpope/vim-repeat", - }, - keys = { - { '\\', '(leap)', mode = { 'n', 'x', 'o' } }, - { 'gs', '(leap-from-window)', mode = { 'n', 'x', 'o' } }, - } - }, - - { - 'Wansmer/treesj', - dependencies = { 'nvim-treesitter/nvim-treesitter' }, - opts = { - use_default_keymaps = false, - }, - keys = { - { 'tg', function() require('treesj').toggle() end, desc = "[T]ree to[g]gle one-line" }, - { 'tj', function() require('treesj').join() end, desc = "[T]ree [J]oin one-line" }, - { 'ts', function() require('treesj').split() end, desc = "[T]ree [S]plit one-line" }, - }, - }, - - -- rehighlight search on n or N - { - 'nvimdev/hlsearch.nvim', - event = 'BufRead', - config = true, - }, - - { - 'mizlan/iswap.nvim', - event = 'VeryLazy', - keys = { - { 'cs', 'ISwapWith', desc = 'I[S]wap' }, - { 'cS', 'ISwap', desc = 'I[S]wapWith' }, - { 'cn', 'ISwapNodeWith', desc = 'ISwap[N]ode' }, - { 'cN', 'ISwapNode', desc = 'ISwap[N]ode' }, - }, - }, - - { - 'aaronik/treewalker.nvim', - keys = { - { 'ch', 'Treewalker Left', desc = 'Tree Left' }, - { 'cj', 'Treewalker Down', desc = 'Tree Down' }, - { 'ck', 'Treewalker Up', desc = 'Tree Up' }, - { 'cl', 'Treewalker Right', desc = 'Tree Right' }, - { 'cJ', 'Treewalker SwapDown', desc = 'Tree Swap Down' }, - { 'cK', 'Treewalker SwapUp', desc = 'Tree Swap Up' }, - }, - }, - -} diff --git a/nvim/.config/nvim/lua/plugins/file-explorer.lua b/nvim/.config/nvim/lua/plugins/file-explorer.lua deleted file mode 100644 index ec5e4d6..0000000 --- a/nvim/.config/nvim/lua/plugins/file-explorer.lua +++ /dev/null @@ -1,13 +0,0 @@ -return { - { - 'stevearc/oil.nvim', - dependencies = { "nvim-tree/nvim-web-devicons" }, - opts = { - default_file_explorer = true, - delete_to_trash = true, - }, - keys = { - { "-", "Oil", desc = "Open parent directory" }, - }, - }, -} diff --git a/nvim/.config/nvim/lua/plugins/flash.lua b/nvim/.config/nvim/lua/plugins/flash.lua new file mode 100644 index 0000000..b62701f --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/flash.lua @@ -0,0 +1,54 @@ +return { + "folke/flash.nvim", + event = "VeryLazy", + ---@type Flash.Config + opts = { + modes = { + char = { + enabled = false, + }, + }, + }, + keys = { + { + "\\", + mode = { "n", "x", "o" }, + function() + require("flash").jump() + end, + desc = "Flash", + }, + { + "=", + mode = { "n", "x", "o" }, + function() + require("flash").treesitter() + end, + desc = "Flash Treesitter", + }, + { + " r", + mode = "o", + function() + require("flash").remote() + end, + desc = "Remote Flash", + }, + { + " R", + mode = { "o", "x" }, + function() + require("flash").treesitter_search() + end, + desc = "Treesitter Search", + }, + { + "", + mode = { "c" }, + function() + require("flash").toggle() + end, + desc = "Toggle Flash Search", + }, + }, +} diff --git a/nvim/.config/nvim/lua/plugins/git.lua b/nvim/.config/nvim/lua/plugins/git.lua deleted file mode 100644 index e7f0bc3..0000000 --- a/nvim/.config/nvim/lua/plugins/git.lua +++ /dev/null @@ -1,74 +0,0 @@ -return { - -- Git - { - 'NeogitOrg/neogit', - dependencies = { - 'nvim-lua/plenary.nvim', - 'sindrets/diffview.nvim', - 'nvim-telescope/telescope.nvim', - }, - opts = { - graph_style = 'unicode', - use_per_project_settings = false, - }, - keys = { - { - 'go', - function() require('neogit').open() end, - desc = 'Neo[g]it [O]pen' - }, - { - 'g.', - function() require('neogit').open({ cwd = '%:p:h' }) end, - desc = 'Neo[g]it open in current file repository' - }, - { - 'gh', - function() require('diffview').file_history() end, - desc = '[G]it [H]istory', - }, - { - 'g%', - function() require('diffview').file_history(nil, { '%' }) end, - desc = '[G]it history for [%] current file' - }, - }, - }, - - { - 'FabijanZulj/blame.nvim', - config = true, - cmd = 'BlameToggle', - keys = { - { 'bt', 'BlameToggle', desc = 'Git [B]lame [T]oggle' }, - }, - }, - - { - -- Adds git releated signs to the gutter, as well as utilities for managing changes - 'lewis6991/gitsigns.nvim', - opts = { - -- See `:help gitsigns.txt` - signs = { - add = { text = '+' }, - change = { text = '~' }, - delete = { text = '_' }, - topdelete = { text = '‾' }, - changedelete = { text = '~' }, - }, - on_attach = function(bufnr) - local gs = require('gitsigns') - vim.keymap.set('n', 'gp', gs.prev_hunk, - { buffer = bufnr, desc = '[G]o to [P]revious Hunk' }) - vim.keymap.set('n', 'gn', gs.next_hunk, - { buffer = bufnr, desc = '[G]o to [N]ext Hunk' }) - vim.keymap.set('n', 'ph', gs.preview_hunk, - { buffer = bufnr, desc = '[P]review [H]unk' }) - vim.keymap.set('n', 'sA', gs.stage_hunk, - { buffer = bufnr, desc = '[S]tage Hunk' }) - vim.keymap.set('n', 'HD', function() gs.diffthis('~') end, - { buffer = bufnr, desc = '[H]unk [D]iff' }) - end, - }, - }, -} diff --git a/nvim/.config/nvim/lua/plugins/global-note.lua b/nvim/.config/nvim/lua/plugins/global-note.lua deleted file mode 100644 index f23b770..0000000 --- a/nvim/.config/nvim/lua/plugins/global-note.lua +++ /dev/null @@ -1,12 +0,0 @@ -return { - 'backdround/global-note.nvim', - keys = { - { - "tn", - function() - require('global-note').toggle_note() - end, - desc = '[T]oggle global [N]ote', - }, - }, -} diff --git a/nvim/.config/nvim/lua/plugins/go.lua b/nvim/.config/nvim/lua/plugins/go.lua deleted file mode 100644 index ad4831c..0000000 --- a/nvim/.config/nvim/lua/plugins/go.lua +++ /dev/null @@ -1,13 +0,0 @@ -return { - "ray-x/go.nvim", - dependencies = { - "ray-x/guihua.lua", - "neovim/nvim-lspconfig", - "nvim-treesitter/nvim-treesitter", - }, - config = function(_, opts) - require("go").setup(opts) - end, - event = { "CmdlineEnter" }, - ft = { "go", 'gomod' }, -} diff --git a/nvim/.config/nvim/lua/plugins/godoc.lua b/nvim/.config/nvim/lua/plugins/godoc.lua deleted file mode 100644 index da8656c..0000000 --- a/nvim/.config/nvim/lua/plugins/godoc.lua +++ /dev/null @@ -1,24 +0,0 @@ -return { - { - 'fredrikaverpil/godoc.nvim', - version = '*', - dependencies = { - { 'nvim-telescope/telescope.nvim' }, - { - 'nvim-treesitter/nvim-treesitter', - opts = { - ensure_installed = { 'go' }, - }, - }, - }, - event = 'VeryLazy', - cmd = 'GoDoc', - keys = { - { 'gd', 'GoDoc', desc = '[G]o[D]oc' }, - }, - build = 'go install github.com/lotusirous/gostdsym/stdsym@latest', - opts = { - picker = { type = 'telescope' }, - }, - }, -} diff --git a/nvim/.config/nvim/lua/plugins/http.lua b/nvim/.config/nvim/lua/plugins/http.lua deleted file mode 100644 index 6ce5c05..0000000 --- a/nvim/.config/nvim/lua/plugins/http.lua +++ /dev/null @@ -1,16 +0,0 @@ -return { - { - "rest-nvim/rest.nvim", - dependencies = { - "nvim-treesitter/nvim-treesitter", - opts = function(_, opts) - opts.ensure_installed = opts.ensure_installed or {} - table.insert(opts.ensure_installed, "http") - end, - }, - ft = 'http', - keys = { - { 'S', 'Rest run', ft = 'http' }, - }, - }, -} diff --git a/nvim/.config/nvim/lua/plugins/jj.lua b/nvim/.config/nvim/lua/plugins/jj.lua deleted file mode 100644 index cddcd23..0000000 --- a/nvim/.config/nvim/lua/plugins/jj.lua +++ /dev/null @@ -1,9 +0,0 @@ -return { - { - 'swaits/lazyjj.nvim', - dependencies = 'nvim-lua/plenary.nvim', - opts = { - mapping = 'gj' - } - }, -} diff --git a/nvim/.config/nvim/lua/plugins/line.lua b/nvim/.config/nvim/lua/plugins/line.lua deleted file mode 100644 index d584a83..0000000 --- a/nvim/.config/nvim/lua/plugins/line.lua +++ /dev/null @@ -1,25 +0,0 @@ -vim.opt.fillchars = { - stl = "─", -} - -return { - { - "sschleemilch/slimline.nvim", - opts = { - spaces = { - components = "─", - left = "─", - right = "─", - }, - }, - }, - - { - 'b0o/incline.nvim', - config = function() - require('incline').setup() - end, - -- Optional: Lazy load Incline - event = 'VeryLazy', - }, -} diff --git a/nvim/.config/nvim/lua/plugins/lsp.lua b/nvim/.config/nvim/lua/plugins/lsp.lua deleted file mode 100644 index 2e9facf..0000000 --- a/nvim/.config/nvim/lua/plugins/lsp.lua +++ /dev/null @@ -1,167 +0,0 @@ -return { - { - 'neovim/nvim-lspconfig', - version = '*', - dependencies = { - -- Automatically install LSPs and related tools to stdpath for neovim - 'williamboman/mason.nvim', - 'williamboman/mason-lspconfig.nvim', - 'WhoIsSethDaniel/mason-tool-installer.nvim', - 'folke/neodev.nvim', - - -- Useful status updates for LSP. - { 'j-hui/fidget.nvim', opts = {} }, - }, - config = function() - vim.api.nvim_create_autocmd('LspAttach', { - group = vim.api.nvim_create_augroup('my-lsp-attach', { clear = true }), - callback = function(event) - local map = function(keys, func, desc) - vim.keymap.set('n', keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc }) - end - - map('rn', 'Lspsaga rename', '[R]e[n]ame') - map('ca', vim.lsp.buf.code_action, '[C]ode [A]ction') - map('K', 'Lspsaga hover_doc', 'Hover Documentation') - map('K', vim.lsp.buf.signature_help, 'Signature Documentation') - - -- Highlight references under cursor (clear highlight when cursor moves). - local client = vim.lsp.get_client_by_id(event.data.client_id) - if client and client.server_capabilities.documentHighlightProvider then - vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { - buffer = event.buf, - callback = function() - local clients = vim.lsp.get_clients({ bufnr = event.buf }) - for _, cl in ipairs(clients) do - if cl.name == 'unocss' then - return -- skip highlight if unocss is attached (workaround) - end - end - vim.lsp.buf.document_highlight() - end - }) - - vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { - buffer = event.buf, - callback = vim.lsp.buf.clear_references, - }) - end - end, - }) - - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities()) - - local servers = { - clangd = {}, - gopls = {}, - -- pyright = {}, - rust_analyzer = {}, - ts_ls = {}, - - lua_ls = { - settings = { - Lua = { - runtime = { version = 'LuaJIT' }, - workspace = { checkThirdParty = false }, - telemetry = { enable = false }, - completion = { - callSnippet = 'Replace', - }, - }, - }, - }, - - html = {}, - htmx = {}, - unocss = {}, - } - - require 'lspconfig'.html.setup { - filetypes = { "html", "templ" }, - } - - require 'lspconfig'.htmx.setup { - filetypes = { "html", "templ" }, - } - - require 'lspconfig'.unocss.setup { - filetypes = { "html", "templ" }, - } - - -- Setup neovim lua configuration - require('neodev').setup() - - require('mason').setup() - - local ensure_installed = vim.tbl_keys(servers or {}) - vim.list_extend(ensure_installed, { - 'stylua', -- Used to format lua code - }) - require('mason-tool-installer').setup { ensure_installed = ensure_installed } - - require('mason-lspconfig').setup { - handlers = { - function(server_name) - local server = servers[server_name] or {} - -- This handles overriding only values explicitly passed - -- by the server configuration above. Useful when disabling - -- certain features of an LSP (for example, turning off formatting for tsserver) - server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) - require('lspconfig')[server_name].setup(server) - end, - }, - } - end, - }, - - { - 'nvimdev/lspsaga.nvim', - dependencies = { - 'nvim-treesitter/nvim-treesitter', - 'nvim-tree/nvim-web-devicons', - }, - opts = { - lightbulb = { enable = false } - }, - config = function(_, opts) - require('lspsaga').setup(opts) - vim.keymap.set('n', 'la', 'Lspsaga code_action', { desc = "[L]spsaga code [A]ction" }) - vim.keymap.set('n', 'lb', 'Lspsaga show_buf_diagnostics', - { desc = "[L]spsaga [B]uffer diagnostics" }) - vim.keymap.set('n', 'lc', 'Lspsaga show_cursor_diagnostics', - { desc = "[L]spsaga [C]ursor diagnostics" }) - vim.keymap.set('n', 'ld', 'Lspsaga goto_definition', { desc = "[L]spsaga goto [D]efinition" }) - vim.keymap.set('n', 'lD', 'Lspsaga goto_type_definition', - { desc = "[L]spsaga goto type [D]efinition" }) - vim.keymap.set('n', 'lf', 'Lspsaga finder', { desc = "[L]spsaga [F]inder" }) - vim.keymap.set('n', 'lI', 'Lspsaga finder imp', { desc = "[L]spsaga finder [I]mplementations" }) - vim.keymap.set('n', 'li', 'Lspsaga incoming_calls', { desc = "[L]spsaga [I]ncomping calls" }) - vim.keymap.set('n', 'll', 'Lspsaga show_line_diagnostics', - { desc = "[L]spsaga [L]ine diagnostics" }) - vim.keymap.set('n', 'lo', 'Lspsaga outgoing_calls', { desc = "[L]spsaga [O]utgoing calls" }) - vim.keymap.set('n', 'lO', 'Lspsaga outline', { desc = "[L]spsaga [O]utline" }) - vim.keymap.set('n', 'lp', 'Lspsaga peek_definition', { desc = "[L]spsaga [P]eek definition" }) - vim.keymap.set('n', 'lP', 'Lspsaga peek_type_definition', - { desc = "[L]spsaga [P]eek type definition" }) - vim.keymap.set('n', 'lw', 'Lspsaga show_workspace_diagnostics', - { desc = "[L]spsaga [W]orkspace diagnostics" }) - vim.keymap.set({ 'n', 't' }, '', 'Lspsaga term_toggle', { desc = "[L]spsaga [T]erm toggle" }) - end, - }, - - { - "folke/trouble.nvim", - dependencies = { "nvim-tree/nvim-web-devicons" }, - opts = {}, - cmd = 'Trouble' - }, - - { - "ray-x/lsp_signature.nvim", - event = "InsertEnter", - opts = { - -- cfg options - }, - } -} diff --git a/nvim/.config/nvim/lua/plugins/multicursor.lua b/nvim/.config/nvim/lua/plugins/multicursor.lua new file mode 100644 index 0000000..4735709 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/multicursor.lua @@ -0,0 +1,76 @@ +return { + "jake-stewart/multicursor.nvim", + branch = "1.0", + config = function() + local mc = require("multicursor-nvim") + mc.setup() + + local set = vim.keymap.set + + -- Add or skip cursor above/below the main cursor. + set({ "n", "x" }, "", function() + mc.lineAddCursor(-1) + end) + set({ "n", "x" }, "", function() + mc.lineAddCursor(1) + end) + set({ "n", "x" }, "", function() + mc.lineSkipCursor(-1) + end) + set({ "n", "x" }, "", function() + mc.lineSkipCursor(1) + end) + + -- Add or skip adding a new cursor by matching word/selection + set({ "n", "x" }, "", function() + mc.matchAddCursor(1) + end) + set({ "n", "x" }, "", function() + mc.matchSkipCursor(1) + end) + set({ "n", "x" }, "", function() + mc.matchAddCursor(-1) + end) + set({ "n", "x" }, "", function() + mc.matchSkipCursor(-1) + end) + + -- Add and remove cursors with control + left click. + set("n", "", mc.handleMouse) + set("n", "", mc.handleMouseDrag) + set("n", "", mc.handleMouseRelease) + + -- Disable and enable cursors. + set({ "n", "x" }, "", mc.toggleCursor) + + -- Mappings defined in a keymap layer only apply when there are + -- multiple cursors. This lets you have overlapping mappings. + mc.addKeymapLayer(function(layerSet) + -- Select a different cursor as the main one. + layerSet({ "n", "x" }, "", mc.prevCursor) + layerSet({ "n", "x" }, "", mc.nextCursor) + + -- Delete the main cursor. + layerSet({ "n", "x" }, "x", mc.deleteCursor) + + -- Enable and clear cursors using escape. + layerSet("n", "", function() + if not mc.cursorsEnabled() then + mc.enableCursors() + else + mc.clearCursors() + end + end) + end) + + -- Customize how cursors look. + local hl = vim.api.nvim_set_hl + hl(0, "MultiCursorCursor", { reverse = true }) + hl(0, "MultiCursorVisual", { link = "Visual" }) + hl(0, "MultiCursorSign", { link = "SignColumn" }) + hl(0, "MultiCursorMatchPreview", { link = "Search" }) + hl(0, "MultiCursorDisabledCursor", { reverse = true }) + hl(0, "MultiCursorDisabledVisual", { link = "Visual" }) + hl(0, "MultiCursorDisabledSign", { link = "SignColumn" }) + end, +} diff --git a/nvim/.config/nvim/lua/plugins/odin.lua b/nvim/.config/nvim/lua/plugins/odin.lua deleted file mode 100644 index ca89a31..0000000 --- a/nvim/.config/nvim/lua/plugins/odin.lua +++ /dev/null @@ -1,49 +0,0 @@ -require 'lspconfig'.ols.setup {} - -vim.api.nvim_create_user_command("FormatDisable", function(args) - if args.bang then - -- FormatDisable! will disable formatting just for this buffer - vim.b.disable_autoformat = true - else - vim.g.disable_autoformat = true - end -end, { - desc = "Disable autoformat-on-save", - bang = true, -}) -vim.api.nvim_create_user_command("FormatEnable", function() - vim.b.disable_autoformat = false - vim.g.disable_autoformat = false -end, { - desc = "Re-enable autoformat-on-save", -}) - -return { - { - "stevearc/conform.nvim", - opts = { - -- notify_on_error = false, - -- Odinfmt gets its configuration from odinfmt.json. It defaults - -- writing to stdout but needs to be told to read from stdin. - formatters = { - odinfmt = { - -- Change where to find the command if it isn't in your path. - command = "odinfmt", - args = { "-stdin" }, - stdin = true, - }, - }, - -- and instruct conform to use odinfmt. - formatters_by_ft = { - odin = { "odinfmt" }, - }, - format_on_save = function(bufnr) - -- Disable with a global or buffer-local variable - if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then - return - end - return { timeout_ms = 500, lsp_format = "fallback" } - end, - }, - } -} diff --git a/nvim/.config/nvim/lua/plugins/oil.lua b/nvim/.config/nvim/lua/plugins/oil.lua new file mode 100644 index 0000000..45a9bb5 --- /dev/null +++ b/nvim/.config/nvim/lua/plugins/oil.lua @@ -0,0 +1,8 @@ +return { + "stevearc/oil.nvim", + opts = {}, + lazy = false, + keys = { + { "-", "Oil", desc = "Oil file manager" }, + }, +} diff --git a/nvim/.config/nvim/lua/plugins/persisted.lua b/nvim/.config/nvim/lua/plugins/persisted.lua deleted file mode 100644 index 61dfa0e..0000000 --- a/nvim/.config/nvim/lua/plugins/persisted.lua +++ /dev/null @@ -1,14 +0,0 @@ -return { - "olimorris/persisted.nvim", - lazy = false, -- make sure the plugin is always loaded at startup - opts = { - autoload = true, - ignored_dirs = { - "~/.config", - "~/tmp", - "/tmp", - { "~", exact = true }, - { "/", exact = true }, - }, - }, -} diff --git a/nvim/.config/nvim/lua/plugins/quicker.lua b/nvim/.config/nvim/lua/plugins/quicker.lua deleted file mode 100644 index 2ae144d..0000000 --- a/nvim/.config/nvim/lua/plugins/quicker.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - 'stevearc/quicker.nvim', - event = "FileType qf", - ---@module "quicker" - ---@type quicker.SetupOptions - opts = {}, -} diff --git a/nvim/.config/nvim/lua/plugins/snacks.lua b/nvim/.config/nvim/lua/plugins/snacks.lua index f68e391..8ef4e94 100644 --- a/nvim/.config/nvim/lua/plugins/snacks.lua +++ b/nvim/.config/nvim/lua/plugins/snacks.lua @@ -1,171 +1,276 @@ return { - { - "folke/snacks.nvim", - priority = 1000, - lazy = false, - ---@type snacks.Config - opts = { - bigfile = { enabled = true }, - dashboard = { enabled = false }, - explorer = { enabled = true }, - indent = { enabled = true }, - input = { enabled = true }, - notifier = { - enabled = true, - timeout = 3000, - }, - picker = { enabled = true }, - quickfile = { enabled = true }, - scope = { enabled = true }, - scroll = { enabled = false }, - statuscolumn = { enabled = true }, - words = { enabled = true }, - styles = { - notification = { - -- wo = { wrap = true } -- Wrap notifications - } - }, - zen = { - win = { width = 180, backdrop = { transparent = false } }, - on_open = function() - vim.opt.laststatus = 1 - require('incline').disable() - vim.system({ 'hyprctl', 'dispatch', 'fullscreen' }) - vim.system({ 'awesome-client', 'client.focus.fullscreen = true' }) - end, - on_close = function() - vim.opt.laststatus = 3 - require('incline').enable() - vim.system({ 'hyprctl', 'dispatch', 'fullscreen' }) - vim.system({ 'awesome-client', 'client.focus.fullscreen = false' }) - end - } - }, - keys = { - -- Top Pickr & Explorer - { "", function() Snacks.picker.smart() end, desc = "Smart Find Files" }, - { ",", function() Snacks.picker.buffers() end, desc = "Buffers" }, - { "/", function() Snacks.picker.grep() end, desc = "Grep" }, - { ":", function() Snacks.picker.command_history() end, desc = "Command History" }, - { "n", function() Snacks.picker.notifications() end, desc = "Notification History" }, - { "e", function() Snacks.explorer() end, desc = "File Explorer" }, - -- find - { "fb", function() Snacks.picker.buffers() end, desc = "Buffers" }, - { "fc", function() Snacks.picker.files({ cwd = vim.fn.stdpath("config") }) end, desc = "Find Config File" }, - { "ff", function() Snacks.picker.files() end, desc = "Find Files" }, - { "fg", function() Snacks.picker.git_files() end, desc = "Find Git Files" }, - { "fp", function() Snacks.picker.projects() end, desc = "Projects" }, - { "fr", function() Snacks.picker.recent() end, desc = "Recent" }, - -- git - { "gb", function() Snacks.picker.git_branches() end, desc = "Git Branches" }, - { "gl", function() Snacks.picker.git_log() end, desc = "Git Log" }, - { "gL", function() Snacks.picker.git_log_line() end, desc = "Git Log Line" }, - { "gs", function() Snacks.picker.git_status() end, desc = "Git Status" }, - { "gS", function() Snacks.picker.git_stash() end, desc = "Git Stash" }, - { "gd", function() Snacks.picker.git_diff() end, desc = "Git Diff (Hunks)" }, - { "gf", function() Snacks.picker.git_log_file() end, desc = "Git Log File" }, - { "gg", function() Snacks.picker.git_grep() end, desc = "Git Grep" }, - -- Grep - { "sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" }, - { "sB", function() Snacks.picker.grep_buffers() end, desc = "Grep Open Buffers" }, - { "sg", function() Snacks.picker.grep() end, desc = "Grep" }, - { "sw", function() Snacks.picker.grep_word() end, desc = "Visual selection or word", mode = { "n", "x" } }, - { "so", function() Snacks.picker.grep({ cwd = "/usr/lib/odin" }) end, desc = "Grep" }, - { "sO", function() Snacks.picker.files({ cwd = "/usr/lib/odin" }) end, desc = "Grep" }, - { "sX", function() Snacks.picker.grep({ cwd = "/usr/include/xcb" }) end, desc = "Grep" }, - -- search - { 's"', function() Snacks.picker.registers() end, desc = "Registers" }, - { 's/', function() Snacks.picker.search_history() end, desc = "Search History" }, - { "sa", function() Snacks.picker.autocmds() end, desc = "Autocmds" }, - { "sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" }, - { "sc", function() Snacks.picker.command_history() end, desc = "Command History" }, - { "sC", function() Snacks.picker.commands() end, desc = "Commands" }, - { "sd", function() Snacks.picker.diagnostics() end, desc = "Diagnostics" }, - { "sD", function() Snacks.picker.diagnostics_buffer() end, desc = "Buffer Diagnostics" }, - { "sh", function() Snacks.picker.help() end, desc = "Help Pages" }, - { "sH", function() Snacks.picker.highlights() end, desc = "Highlights" }, - { "si", function() Snacks.picker.icons() end, desc = "Icons" }, - { "sj", function() Snacks.picker.jumps() end, desc = "Jumps" }, - { "sk", function() Snacks.picker.keymaps() end, desc = "Keymaps" }, - { "sl", function() Snacks.picker.loclist() end, desc = "Location List" }, - { "sm", function() Snacks.picker.marks() end, desc = "Marks" }, - { "sM", function() Snacks.picker.man() end, desc = "Man Pages" }, - { "sp", function() Snacks.picker.lazy() end, desc = "Search for Plugin Spec" }, - { "sq", function() Snacks.picker.qflist() end, desc = "Quickfix List" }, - { "sR", function() Snacks.picker.resume() end, desc = "Resume" }, - { "su", function() Snacks.picker.undo() end, desc = "Undo History" }, - { "uC", function() Snacks.picker.colorschemes() end, desc = "Colorschemes" }, - -- LSP - { "gd", function() Snacks.picker.lsp_definitions() end, desc = "Goto Definition" }, - { "gD", function() Snacks.picker.lsp_declarations() end, desc = "Goto Declaration" }, - { "gr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" }, - { "gI", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" }, - { "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" }, - { "ss", function() Snacks.picker.lsp_symbols() end, desc = "LSP Symbols" }, - { "sS", function() Snacks.picker.lsp_workspace_symbols() end, desc = "LSP Workspace Symbols" }, - -- Other - { "z", function() Snacks.zen() end, desc = "Toggle Zen Mode" }, - { "Z", function() Snacks.zen.zoom() end, desc = "Toggle Zoom" }, - { "'", function() Snacks.scratch() end, desc = "Toggle Scratch Buffer" }, - { "S", function() Snacks.scratch.select() end, desc = "Select Scratch Buffer" }, - { "n", function() Snacks.notifier.show_history() end, desc = "Notification History" }, - { "bd", function() Snacks.bufdelete() end, desc = "Delete Buffer" }, - { "cR", function() Snacks.rename.rename_file() end, desc = "Rename File" }, - { "gB", function() Snacks.gitbrowse() end, desc = "Git Browse", mode = { "n", "v" } }, - { "gG", function() Snacks.lazygit() end, desc = "Lazygit" }, - { "un", function() Snacks.notifier.hide() end, desc = "Dismiss All Notifications" }, - { "bl", function() Snacks.git.blame_line() end, desc = "Git Blame Line" }, - { "", function() Snacks.terminal() end, desc = "Toggle Terminal" }, - { "", function() Snacks.terminal() end, desc = "which_key_ignore" }, - { "]]", function() Snacks.words.jump(vim.v.count1) end, desc = "Next Reference", mode = { "n", "t" } }, - { "[[", function() Snacks.words.jump(-vim.v.count1) end, desc = "Prev Reference", mode = { "n", "t" } }, - { - "N", - desc = "Neovim News", - function() - Snacks.win({ - file = vim.api.nvim_get_runtime_file("doc/news.txt", false)[1], - width = 0.6, - height = 0.6, - wo = { - spell = false, - wrap = false, - signcolumn = "yes", - statuscolumn = " ", - conceallevel = 3, - }, - }) - end, - } - }, - init = function() - vim.api.nvim_create_autocmd("User", { - pattern = "VeryLazy", - callback = function() - -- Setup some globals for debugging (lazy-loaded) - _G.dd = function(...) - Snacks.debug.inspect(...) - end - _G.bt = function() - Snacks.debug.backtrace() - end - vim.print = _G.dd -- Override print to use snacks for `:=` command + "folke/snacks.nvim", + priority = 1000, + lazy = false, + keys = { + { + "", + function() + Snacks.picker.smart() + end, + desc = "Smart Find Files", + }, + { + "a", + function() + Snacks.picker.buffers() + end, + desc = "Buffers", + }, + { + "r", + function() + Snacks.picker.recent() + end, + desc = "Recent files", + }, + { + "R", + function() + Snacks.picker.resume() + end, + desc = "Resume", + }, + { + "b", + function() + Snacks.picker.lines() + end, + desc = "Buffer lines", + }, + { + "B", + function() + Snacks.picker.grep_buffers() + end, + desc = "Grep Open Buffers", + }, + { + "f", + function() + Snacks.picker.files() + end, + desc = "Find Files", + }, + { + "s", + function() + Snacks.picker.grep() + end, + desc = "Grep", + }, + { + "S", + function() + Snacks.picker.git_status() + end, + desc = "Git Status", + }, + { + "g", + function() + Snacks.picker.git_files() + end, + desc = "Find Git Files", + }, + { + "G", + function() + Snacks.picker.git_grep() + end, + desc = "Git Grep", + }, + { + "l", + function() + Snacks.lazygit() + end, + desc = "Lazygit", + }, + { + "L", + function() + Snacks.lazygit.log_file() + end, + desc = "Lazygit log file", + }, + { + "n", + function() + Snacks.notifier.show_history() + end, + desc = "Notification History", + }, + { + "N", + function() + Snacks.picker.notifications() + end, + desc = "Notifications", + }, + { + "C", + function() + Snacks.picker.commands() + end, + desc = "Commands", + }, + { + "h", + function() + Snacks.picker.keymaps() + end, + desc = "Keymaps", + }, + { + ":", + function() + Snacks.picker.command_history() + end, + desc = "Command History", + }, + { + '"', + function() + Snacks.picker.registers() + end, + desc = "Registers", + }, + { + "$", + function() + Snacks.rename.rename_file() + end, + desc = "Rename File", + }, + { + "z", + function() + Snacks.zen.zoom() + end, + desc = "Toggle Zoom", + }, + -- LSP + { + "gd", + function() + Snacks.picker.lsp_definitions() + end, + desc = "Goto Definition", + }, + { + "gD", + function() + Snacks.picker.lsp_declarations() + end, + desc = "Goto Declaration", + }, + { + "gr", + function() + Snacks.picker.lsp_references() + end, + nowait = true, + desc = "References", + }, + { + "gI", + function() + Snacks.picker.lsp_implementations() + end, + desc = "Goto Implementation", + }, + { + "gy", + function() + Snacks.picker.lsp_type_definitions() + end, + desc = "Goto T[y]pe Definition", + }, + { + "w", + function() + Snacks.picker.lsp_symbols() + end, + desc = "LSP Symbols", + }, + { + "d", + function() + Snacks.picker.diagnostics_buffer() + end, + desc = "Buffer Diagnostics", + }, + { + "D", + function() + Snacks.picker.diagnostics() + end, + desc = "Diagnostics", + }, + { + "W", + function() + Snacks.picker.lsp_workspace_symbols() + end, + desc = "LSP Workspace Symbols", + }, + -- Terminal + { + "", + function() + Snacks.terminal() + end, + mode = { "n", "t" }, + desc = "Toggle Terminal", + }, + { + "", + function() + Snacks.terminal() + end, + mode = { "n", "t" }, + desc = "which_key_ignore", + }, + }, + init = function() + vim.api.nvim_create_autocmd("User", { + pattern = "VeryLazy", + callback = function() + -- Setup some globals for debugging (lazy-loaded) + _G.dd = function(...) + Snacks.debug.inspect(...) + end + _G.bt = function() + Snacks.debug.backtrace() + end - -- Create some toggle mappings - Snacks.toggle.option("spell", { name = "Spelling" }):map("us") - Snacks.toggle.option("wrap", { name = "Wrap" }):map("uw") - Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("uL") - Snacks.toggle.diagnostics():map("ud") - Snacks.toggle.line_number():map("ul") - Snacks.toggle.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 }):map( - "uc") - Snacks.toggle.treesitter():map("uT") - Snacks.toggle.option("background", { off = "light", on = "dark", name = "Dark Background" }):map("ub") - Snacks.toggle.inlay_hints():map("uh") - Snacks.toggle.indent():map("ug") - Snacks.toggle.dim():map("uD") - end, - }) - end, - } + -- Override print to use snacks for `:=` command + if vim.fn.has("nvim-0.11") == 1 then + vim._print = function(_, ...) + dd(...) + end + else + vim.print = _G.dd + end + + -- Create some toggle mappings + Snacks.toggle.option("spell", { name = "Spelling" }):map("us") + Snacks.toggle.option("wrap", { name = "Wrap" }):map("uw") + Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("uL") + Snacks.toggle.diagnostics():map("ud") + Snacks.toggle.line_number():map("ul") + Snacks.toggle + .option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 }) + :map("uc") + Snacks.toggle.treesitter():map("uT") + Snacks.toggle + .option("background", { off = "light", on = "dark", name = "Dark Background" }) + :map("ub") + Snacks.toggle.inlay_hints():map("uh") + Snacks.toggle.indent():map("ug") + Snacks.toggle.dim():map("uD") + end, + }) + end, } diff --git a/nvim/.config/nvim/lua/plugins/sql.lua b/nvim/.config/nvim/lua/plugins/sql.lua deleted file mode 100644 index f051654..0000000 --- a/nvim/.config/nvim/lua/plugins/sql.lua +++ /dev/null @@ -1,17 +0,0 @@ -return { - 'kristijanhusak/vim-dadbod-ui', - dependencies = { - { 'tpope/vim-dadbod', lazy = true }, - { 'kristijanhusak/vim-dadbod-completion', ft = { 'sql', 'mysql', 'plsql' }, lazy = true }, - }, - cmd = { - 'DBUI', - 'DBUIToggle', - 'DBUIAddConnection', - 'DBUIFindBuffer', - }, - init = function() - -- Your DBUI configuration - vim.g.db_ui_use_nerd_fonts = 1 - end, -} diff --git a/nvim/.config/nvim/lua/plugins/tardis.lua b/nvim/.config/nvim/lua/plugins/tardis.lua deleted file mode 100644 index f9ef471..0000000 --- a/nvim/.config/nvim/lua/plugins/tardis.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - 'fredeeb/tardis.nvim', - dependencies = { 'nvim-lua/plenary.nvim' }, - config = true, -} diff --git a/nvim/.config/nvim/lua/plugins/telescope-tabs.lua b/nvim/.config/nvim/lua/plugins/telescope-tabs.lua deleted file mode 100644 index 333b57f..0000000 --- a/nvim/.config/nvim/lua/plugins/telescope-tabs.lua +++ /dev/null @@ -1,28 +0,0 @@ -local function get_tab_idx(tab_id) - for i, tabnr in ipairs(vim.api.nvim_list_tabpages()) do - if tabnr == tab_id then - return i - end - end - return -1 -end - -return { - 'LukasPietzschmann/telescope-tabs', - dependencies = { 'nvim-telescope/telescope.nvim' }, - lazy = true, - config = function() - require 'telescope-tabs'.setup { - entry_formatter = function(tab_id, buffer_ids, file_names, file_paths, is_current) - local cwd = vim.fn.getcwd(-1, get_tab_idx(tab_id)) - local entry_string = table.concat(file_names, ', ') - return string.format('%d: %s %s%s', tab_id, cwd, entry_string, is_current and ' <' or '') - end, - entry_ordinal = function(tab_id, buffer_ids, file_names, file_paths, is_current) - local cwd = vim.fn.getcwd(-1, get_tab_idx(tab_id)) - local entry_string = table.concat(file_names, ', ') - return string.format('%s %s', cwd, entry_string) - end, - } - end -} diff --git a/nvim/.config/nvim/lua/plugins/telescope.lua b/nvim/.config/nvim/lua/plugins/telescope.lua deleted file mode 100644 index eb63565..0000000 --- a/nvim/.config/nvim/lua/plugins/telescope.lua +++ /dev/null @@ -1,71 +0,0 @@ -return { - { -- Fuzzy Finder (files, lsp, etc) - 'nvim-telescope/telescope.nvim', - event = 'VimEnter', - branch = '0.1.x', - dependencies = { - 'nvim-lua/plenary.nvim', - { -- If encountering errors, see telescope-fzf-native README for install instructions - 'nvim-telescope/telescope-fzf-native.nvim', - build = 'make', - cond = function() - return vim.fn.executable 'make' == 1 - end, - }, - { 'nvim-telescope/telescope-ui-select.nvim' }, - - - -- change directory with telescope from a list of directories - { - "SalOrak/whaler", - opts = { - directories = { "/home/lupan/src" }, - oneoff_directories = { "/home/lupan/dotfiles" }, - auto_file_explorer = false, - auto_cwd = true, - } - }, - - -- Icons, requires Nerd font. - { 'nvim-tree/nvim-web-devicons' }, - - 'davvid/telescope-git-grep.nvim', - }, - config = function() - local telescope = require 'telescope' - -- To list available key bindings inside given telescope picker: - -- - Insert mode: - -- - Normal mode: ? - telescope.setup { - extensions = { - ['ui-select'] = { - require('telescope.themes').get_dropdown(), - }, - whaler = { - directories = { "/home/lupan/src" }, - oneoff_directories = { "/home/lupan/dotfiles" }, - auto_file_explorer = false, - auto_cwd = true, - } - }, - } - - pcall(telescope.load_extension, 'fzf') - pcall(telescope.load_extension, 'ui-select') - pcall(telescope.load_extension, 'whaler') - pcall(telescope.load_extension, 'git_grep') - - -- See `:help telescope.builtin` - local builtin = require 'telescope.builtin' - vim.keymap.set('n', 'sT', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) - vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) - - vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) - vim.keymap.set('n', 'sL', function() telescope.extensions.whaler.whaler() end, - { desc = '[S]earch with wha[L]er' }) - vim.keymap.set('n', 'gw', function() telescope.extensions.git_grep.grep() end, - { desc = '[G]it grep current [W]ord' }) - end, - } - -} diff --git a/nvim/.config/nvim/lua/plugins/tmux.lua b/nvim/.config/nvim/lua/plugins/tmux.lua deleted file mode 100644 index eb2918c..0000000 --- a/nvim/.config/nvim/lua/plugins/tmux.lua +++ /dev/null @@ -1,25 +0,0 @@ -return { - { - 'aserowy/tmux.nvim', - opts = { - navigation = { - enable_default_keybindings = false, - }, - resize = { - enable_default_keybindings = false, - }, - }, - keys = { - { '', [[lua require("tmux").move_left()]] }, - { '', [[lua require("tmux").move_bottom()]] }, - { '', [[lua require("tmux").move_top()]] }, - { '', [[lua require("tmux").move_right()]] }, - { '', [[lua require("tmux").next_window()]] }, - { '', [[lua require("tmux").previous_window()]] }, - { '', [[lua require("tmux").resize_left()]] }, - { '', [[lua require("tmux").resize_bottom()]] }, - { '', [[lua require("tmux").resize_top()]] }, - { '', [[lua require("tmux").resize_right()]] }, - }, - }, -} diff --git a/nvim/.config/nvim/lua/plugins/toggleterm.lua b/nvim/.config/nvim/lua/plugins/toggleterm.lua deleted file mode 100644 index b27d67e..0000000 --- a/nvim/.config/nvim/lua/plugins/toggleterm.lua +++ /dev/null @@ -1,9 +0,0 @@ -return { - 'akinsho/toggleterm.nvim', - version = '*', - config = true, - keys = { - { '', 'ToggleTerm size=25', mode = { 'n', 'i', 't', }, }, - { '', [[]], mode = 't' }, - } -} diff --git a/nvim/.config/nvim/lua/plugins/treesitter.lua b/nvim/.config/nvim/lua/plugins/treesitter.lua index 07803a8..6931ecb 100644 --- a/nvim/.config/nvim/lua/plugins/treesitter.lua +++ b/nvim/.config/nvim/lua/plugins/treesitter.lua @@ -1,95 +1,12 @@ return { - - { -- Highlight, edit, and navigate code - 'nvim-treesitter/nvim-treesitter', - dependencies = { - 'nvim-treesitter/nvim-treesitter-textobjects', - 'nvim-orgmode/orgmode', -- as configured together - 'vrischmann/tree-sitter-templ', - "nushell/tree-sitter-nu", -- additional parser - }, - build = ':TSUpdate', - config = function() - -- See `:help nvim-treesitter` - local org = require('orgmode') - - ---@diagnostic disable-next-line: missing-fields - require('nvim-treesitter.configs').setup { - ensure_installed = { 'c', 'commonlisp', 'cpp', 'go', 'haskell', 'lua', 'python', 'rust', 'tsx', 'templ', 'typescript', 'vimdoc', 'vim' }, - auto_install = false, - highlight = { - enable = true, - additional_vim_regex_highlighting = { 'org' }, - }, - indent = { enable = true }, - incremental_selection = { - enable = true, - keymaps = { - init_selection = '', - node_incremental = '', - scope_incremental = '', - node_decremental = '', - }, - }, - textobjects = { - select = { - enable = true, - lookahead = true, - keymaps = { - ['aa'] = '@parameter.outer', - ['ia'] = '@parameter.inner', - ['af'] = '@function.outer', - ['if'] = '@function.inner', - ['ac'] = '@class.outer', - ['ic'] = '@class.inner', - ['al'] = '@call.outer', - ['il'] = '@call.inner', - ['ao'] = '@loop.outer', - ['io'] = '@loop.inner', - ['ad'] = '@conditional.outer', - ['id'] = '@conditional.inner', - ['ar'] = '@return.outer', - ['ir'] = '@return.inner', - ['as'] = '@statement.outer', - ['ag'] = '@assignment.outer', - ['ig'] = '@assignment.inner', - }, - }, - move = { - enable = true, - set_jumps = true, - goto_next_start = { - [']m'] = '@function.outer', - [']]'] = '@class.outer', - }, - goto_next_end = { - [']M'] = '@function.outer', - [']['] = '@class.outer', - }, - goto_previous_start = { - ['[m'] = '@function.outer', - ['[['] = '@class.outer', - }, - goto_previous_end = { - ['[M'] = '@function.outer', - ['[]'] = '@class.outer', - }, - }, - swap = { - enable = true, - swap_next = { - ['a'] = '@parameter.inner', - }, - swap_previous = { - ['A'] = '@parameter.inner', - }, - }, - }, - } - org.setup({ - org_agenda_files = { '~/org/*.org' }, - org_default_notes_file = '~/org/capture.org', - }) - end, - } + "nvim-treesitter/nvim-treesitter", + branch = "master", + lazy = false, + build = ":TSUpdate", + main = "nvim-treesitter.configs", + opts = { + highlight = { + enable = true, + }, + }, } diff --git a/nvim/.config/nvim/lua/plugins/yankbank.lua b/nvim/.config/nvim/lua/plugins/yankbank.lua deleted file mode 100644 index e2fcec2..0000000 --- a/nvim/.config/nvim/lua/plugins/yankbank.lua +++ /dev/null @@ -1,12 +0,0 @@ -return { - "ptdewey/yankbank-nvim", - dependencies = "kkharji/sqlite.lua", - config = function() - require('yankbank').setup({ - persist_type = "sqlite", - }) - end, - keys = { - { "yb", "YankBank", desc = "Yank[B]ank" }, - }, -} diff --git a/nvim/.config/nvim/snippets/go/snippets.lua b/nvim/.config/nvim/snippets/go/snippets.lua deleted file mode 100644 index 689c82c..0000000 --- a/nvim/.config/nvim/snippets/go/snippets.lua +++ /dev/null @@ -1,3 +0,0 @@ -return { - s("tr", { t "i18n.T(ctx, \"", i(1), t "\")" }) -} diff --git a/nvim/.config/nvim/snippets/lua/snippets.lua b/nvim/.config/nvim/snippets/lua/snippets.lua deleted file mode 100644 index 42aa20e..0000000 --- a/nvim/.config/nvim/snippets/lua/snippets.lua +++ /dev/null @@ -1,3 +0,0 @@ -return { - s("ct", t "-- TODO: ") -} diff --git a/shell/.config/shellconfig/aliases.sh b/shell/.config/shellconfig/aliases.sh index 0dd61dd..f1a7ffa 100644 --- a/shell/.config/shellconfig/aliases.sh +++ b/shell/.config/shellconfig/aliases.sh @@ -1,4 +1,4 @@ -alias v=vis +alias v=nvim alias ll='ls -l' alias tl='tmux list-sessions' alias rgh='rg -.' @@ -60,5 +60,5 @@ tai() { } vf() { - vis "+fzf-files auto-files $@" + nvim $(fzf --multi) }